Javascript sound - loop bez brejkanja

Znači, ako koristim klasični loop kod neke trake…to ne radi glatko, nego ima jedan mali prekid koji mi jako smeta.

Kako ga izbjeći?

Ja napravih ovako, ali to sigurno nije elegantno rješenje:

		var loop=[BackgroundLoop,BackgroundLoop2];
		BackgroundLoop.play();
		var step=0;
		setInterval(function()
			{
			step++;
			if(step==2)step=0;
			loop[step].play();
			},20020)

Primjetite da su BackgroundLoop i BackgroundLoop2 različiti elementi čiji je src ista sound traka!
Ovako mogu pustiti drugu traku, neposredno prije završetka prve…i onda se ne osjeti prijelaz.

Kako to elegantnije napraviti?

BackgroundLoop.play();
backgroundLoop.onended = function() {
      backgroundLoop2.play();
}

Tako sam prvo i radio , ali taj onended jednostavno trigira mrvicu prekasno…

dodaj onda timeout u njega

timeout pomaze, no svejedno ce ti se nekad dogodit da “zabrejka”, “preskace” i sl, buduci da se JS izvrsava u browseru, a sve ovisi o brzini i zauzetosti CPU-a i RAMA u tom trenutku izvođenja.

To ti je klasika, slicno kao youtube … valjda si i sam primjetio da bez obzira na brzinu konekcije, kad imas otvoreno masu prozora u browseru i pozadinskih programa … da zna mjuza stekat :smiley:

Kako mislis da dodam timeout u njega??

Ja sam za sound uvijek koristio:
http://www.schillmania.com/projects/soundmanager2/

Evo jedan moj ekperiment sa ovim pluginom :slight_smile:
http://91.235.171.29/~dizaj/piano/

I ja sam isto koristio soundmanager…ali preglednik mora podržavati flash za tako nešto. A ovdje imam situaciju da stvar mora raditi na uređajima koji ne podržavaju flash…

Pa ne baš.
Koristi HTML5 audio ako je dostupan. Ako nije - onda Flash.

Upravu si…nisam to niti razmatrao. Meni su to odbili čim su vidjeli da se učitava .swf file. A ja sam primjer koda imao još iz starih vremena, pa niti nisam imao pojma kako radi…

Nego, složih loop petlju pomoću tog sm2, i opet imam break kod prijelaza. Pomislih čak da mi se uvukla ta pauza u samu traku, ali ako je pustim u winamp playeru sa repeat opcijom …onda ide fino kontinuirano u krug…

Prokopaj malo po sm2 dokumentaciji.
http://www.schillmania.com/projects/soundmanager2/doc/

Ima tu puno toga za naštelavanje.

Ali također i sam mp3 može biti exportan na više načina.
Npr. ako radiš zvukove (muziku) sa FL studiom on baš ima Looping Mode.
http://www.image-line.com/support/FLHelp/html/fformats_save_wavmidmp3.htm

BackgroundLoop.play();
backgroundLoop.onended = function() {
     setTimeout(function() { 
          backgroundLoop2.play();
     }, /* odredi interval koliko kasni */); 
}

EDIT: Fail, ja razmisljan kako onended krene rano umjesto kasno

Hehe, da fail :smile: