wavesurfer[i*2]
Czym jest i? Bo nigdzie nie widać, abyś je deklarował.
Możesz zrobić coś takiego:
var wavesurfer = [];
wavesurfer.push(WaveSurfer.create({
container: waveform1,
waveColor: '#5C6366',
progressColor: 'white',
height: 100,
normalize: 1
}));
for (var i = 0, len = wavesurfer.length; i < len; i++)
{
wavesurfer[i].load("audio/before" + song + ".mp3");
}
Zamiast song wewnątrz pętli, może podstaw i - jeśli chodzi Ci o kolejny numer piosenki.
I możesz również zrobić pętle, która będzie umieszcza obiekty WaveSurfer wewnątrz tablicy (zamiast ręcznie push'ować), tylko wcześniej musisz wiedzieć ile tych player'ów będziesz miał i napisać funkcje, która będzie je dynamicznie tworzyć. Bo teraz tworzony jest 1 obiekt player'a (tak to rozumiem), który w pętli (wykonującej się raz) wczytuje jakąś piosenkę. Ale najpierw trzeba utworzyć kilka tych obiektów player'ów, aby pętla wczytująca piosenki miała sens.
Doczytałem się na stronie tego pluginu, że propertis container ma mieć jako atrybut element HTML, w którym trzymasz (chyba) ten odtwarzacz:
container: '#waveform',
U Ciebie natomiast jest to zmienna waveform1, którą też nie widać abyś gdzieś tworzył (być może dlatego w konsoli masz błąd Container element not found)). Jeśli masz w HTMLu kilka takich elementów waveformX (gdzie X oznacza ich kolejny numer). To nadaj im jakąś klasę, a następnie w JavaScript w pętli użyj tych elementów waveformX do tworzenia kolejnych obiektów poprzez konstruktor WaveSurfer.