clear 1000,2000 dim vol_next(100),w_no(100),b(100,8) screen 0 window 0,0,511,255 f = 41: 'Ÿ O4 C = 41+1ƒXƒeƒbƒv@11kHz count = 0 'Ÿ ”gŒ`ƒf[ƒ^“Ç‚Ýž‚Ý *read_data read vol_next(count),w_no(count) for i=1 to 8:read b(count,i):next if vol_next(count) >=0 then count = count + 1:goto *read_data 'Ÿ ”gŒ`ƒf[ƒ^ ' –Ú•W‰¹—Ê, ”g‚Ì”, (”{‰¹\¬: x1 ` x8) data 100, 20, 100, 0, 0, 0, 0, 0, 0, 2 data 127, 20, 50, 0, 60, 0, 30, 0, 15, 2 data 80, 20, 30, 10, 50, 10, 20, 8, 10, 8 data 80, 100, 20, 20, 40, 25, 15, 20, 10, 5 data 0, 50, 10, 30, 30, 30, 5, 20, 1, 0 data -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 'Ÿ PCMŠÖ˜A‚̉Šú‰» gosub *init_PCM vol = 0 'Ÿ ”gŒ`‡¬ *main_loop for i=0 to count-1 vol_step = (vol_next(i)-vol)/w_no(i)/f a = 0 for j=1 to 8 a = a + b(i,j) next for j=1 to w_no(i) for k=0 to f s = 0 for l=1 to 8 s = s + xsin(k*l/f)*b(i,l) next l s = s / a pcm_data = s*vol+128 gosub *set_data gosub *display_graph vol = vol + vol_step next k next j next i *main_loop_next 'Ÿ ƒTƒEƒ“ƒhƒƒ‚ƒŠ‚É“o˜^ gosub *set_PCM 'Ÿ ‰‰‘t effect "@1 Ll300 O4 CDEFGAB>C" end '----------------------------------------------------- *init_PCM 'Ÿ 8bit 11kHz playinit "DSP" userdata 0,0, "STARTPCM, 8, 1, 0, 90, 84",0 pcm_temp$ = "" pcm_counter = 0 i_old = 128 return '----------------------------------------------------- *set_data pcm_temp$ = pcm_temp$+right$(hex$(int(pcm_data),1),2) pcm_counter = pcm_counter + 1 if pcm_counter = 64 then userdata pcm_temp$ pcm_temp$ = "" pcm_counter = 0 endif return '------------------------------------------------------ *set_PCM userdata pcm_temp$ userdata "ENDPCM" userdata "ENDARRANGE" targ read userdata end dsp all on @del,6 return '----------------------------------------- *display_graph disp_i = (disp_i + 1)and 511 line (disp_i,0)-(disp_i,255),-1 line (disp_i,256-i_old)-(disp_i,256-pcm_data) i_old=pcm_data scroll 0,disp_i-353,0 return