80 layers=8 90 DIM layer$(layers,12),reply$(layers,2),wavperc$(layers),start(layers),currentwav(layers),begun(layers) 100 url$="" 110 RESTORE 180 120 FOR loop=1 TO layers 130 READ start(loop),layer$(loop,0) 140 FOR loop2=1 TO VAL(layer$(loop,0)) 150 READ filename$:layer$(loop,loop2)=url$+filename$+".wav" 160 NEXT 170 NEXT 180 DATA 0,11,h1,h2,h3,h4,h5,h6,t20,t20,t30,t30,t60 190 DATA 1500,12,h1,h2,h3,h4,h5,h6,t20,t20,t30,t30,t45,t60 200 DATA 4000,11,h1,h2,h3,h4,h5,h6,t20,t30,t30,t45,t60 210 DATA 10500,9,b1,b2,b3,b4,b5,b6,t20,t30,t30 220 DATA 12000,9,b1,b2,b3,b4,b5,b6,t20,t20,t30 230 DATA 15000,10,b1,b2,b3,b4,b5,b6,t20,t30,t30,t45 240 DATA 18000,11,n1x,n2x,n3x,n4x,n5x,n6x,n7x,t45,t45,t60,t60 250 DATA 20000,11,w1,w2,w3,w4,w5,w6,w7,w8,t45,t60,t120 260 a=0 270 FOR loop=1 TO layers:reply$(loop,1)="_":reply$(loop,2)="-":NEXT 280 290 REPEAT 300 FOR check=1 TO layers:REM This check is for whether a new sound should begin 310 IF a=0 THEN TIME=0 320 flag=FALSE:IF TIME<start(check) THEN reply$(check,1)="_":reply$(check,2)="-":GOTO 410 330 begun(check)=1 340 IF a=start(check) OR reply$(check,1)=reply$(check,2) THEN flag=TRUE 350 IF flag=TRUE THEN n=VAL(layer$(check,0)):n_wav=RND(n):currentwav(check)=n_wav 360 IF flag=TRUE THEN SYS "mciSendString", "close wav"+STR$(check), 0, 0, 0 370 IF flag=TRUE THEN SYS "mciSendString", "open """ + layer$(check,currentwav(check)) + """ alias wav"+STR$(check), 0, 0, 0 380 IF flag=TRUE THEN SYS "mciSendString", "play wav"+STR$(check), 0, 0, 0 390 REMIF flag=TRUE THEN PRINTTAB(5,check);"Playing layer ";check 400 REMpause=GET 410 NEXT
|
|
10 REM http://bb4w.wikispaces.com/Playing+multiple+WAV+files 20 ON ERROR ON:COLOUR9:OSCLI "FONT "+"Consolas"+","+"14":PRINTTAB(0,5):REPORT:PRINT" at line ";ERL:END 30 MODE 30:OFF 40 SYS "ShowWindow", @hwnd%, 3 : REM. SW_MAXIMIZE 50 COLOUR15:OSCLI "FONT Myriad Pro,20" 60 PRINT"Display on?";:REPEAT:disp$=GET$:UNTIL disp$="Y" OR disp$="y" OR disp$="N" OR disp$="n":CLS 70 display=TRUE:IF disp$="N" OR disp$="n" THEN display=FALSE 80 layers=8 90 DIM layer$(layers,12),reply$(layers,2),wavperc$(layers),start(layers),currentwav(layers),begun(layers) 100 url$="" 110 RESTORE 180 120 FOR loop=1 TO layers 130 READ start(loop),layer$(loop,0) 140 FOR loop2=1 TO VAL(layer$(loop,0)) 150 READ filename$:layer$(loop,loop2)=url$+filename$+".wav" 160 NEXT 170 NEXT 180 DATA 0,11,h1,h2,h3,h4,h5,h6,t20,t20,t30,t30,t60 190 DATA 1500,12,h1,h2,h3,h4,h5,h6,t20,t20,t30,t30,t45,t60 200 DATA 4000,11,h1,h2,h3,h4,h5,h6,t20,t30,t30,t45,t60 210 DATA 10500,9,b1,b2,b3,b4,b5,b6,t20,t30,t30 220 DATA 12000,9,b1,b2,b3,b4,b5,b6,t20,t20,t30 230 DATA 15000,10,b1,b2,b3,b4,b5,b6,t20,t30,t30,t45 240 DATA 18000,11,n1x,n2x,n3x,n4x,n5x,n6x,n7x,t45,t45,t60,t60 250 DATA 20000,11,w1,w2,w3,w4,w5,w6,w7,w8,t45,t60,t120 260 a=0 270 FOR loop=1 TO layers:reply$(loop,1)="_":reply$(loop,2)="-":NEXT 280 290 REPEAT 300 FOR check=1 TO layers:REM This check is for whether a new sound should begin 310 IF a=0 THEN TIME=0 320 flag=FALSE:IF TIME<start(check) THEN reply$(check,1)="_":reply$(check,2)="-":GOTO 410 330 begun(check)=1 340 IF a=start(check) OR reply$(check,1)=reply$(check,2) THEN flag=TRUE 350 IF flag=TRUE THEN n=VAL(layer$(check,0)):n_wav=RND(n):currentwav(check)=n_wav 360 IF flag=TRUE THEN SYS "mciSendString", "close wav"+STR$(check), 0, 0, 0 370 IF flag=TRUE THEN SYS "mciSendString", "open """ + layer$(check,currentwav(check)) + """ alias wav"+STR$(check), 0, 0, 0 380 IF flag=TRUE THEN SYS "mciSendString", "play wav"+STR$(check), 0, 0, 0 390 REMIF flag=TRUE THEN PRINTTAB(5,check);"Playing layer ";check 400 REMpause=GET 410 NEXT 420 430 a=a+1 440 FOR calc=1 TO layers:REM This calculates how far each layer is through each sound & displays the results (omitted if display not required) 450 reply$(calc,1) = STRING$(16, CHR$(0)) 460 reply$(calc,2) = STRING$(16, CHR$(0)) 470 SYS "mciSendString", "status wav"+STR$(calc)+" length", reply$(calc,1), LEN(reply$(calc,1)), 0 480 SYS "mciSendString", "status wav"+STR$(calc)+" position", reply$(calc,2), LEN(reply$(calc,2)), 0 490 IF display=FALSE THEN 570 500 IF begun(calc)=1 THEN wavperc=INT((VAL(reply$(calc,2))/VAL(reply$(calc,1)))*100) ELSE wavperc=0 510 wavperc$(calc)=LEFT$(STR$(wavperc),4) 520 COLOUR15:PRINTTAB(3,1);INT((TIME/100)/60);"’";INT(TIME/100) MOD 60;"”";SPC(10);TAB(10,1);TIME 530 PRINTTAB((calc-1)*15+3,4);calc;" (";start(calc);")" 540 IF begun(calc)=1 THEN PRINTTAB((calc-1)*15+3,5);LEFT$(layer$(calc,currentwav(calc)),LEN(layer$(calc,currentwav(calc)))-4);SPC(10) 550 VDU19,calc,16,INT(VAL(wavperc$(calc))*2.55),INT(((VAL(wavperc$(calc)))-100)*-2.55),0:COLOURcalc:PRINTTAB((calc-1)*15+3,6);wavperc$(calc);"%";SPC(10) 560 REMPRINTTAB((calc-1)*15+2,4);calc;" (";start(calc);")";TAB((calc-1)*15+2,5);reply$(calc,1);" : ";reply$(calc,2);SPC(10) 570 NEXT 580 REMPRINT"";a;"|";SPC(5);reply$(1,1);" : ";reply$(1,2);SPC(10);reply$(2,1);" : ";reply$(2,2);SPC(10);reply$(3,1);" : ";reply$(3,2) 590 600 610 UNTIL FALSE
|
|