;Port Audio ;WARNING!!! ;it is recommended to use -f flag when soundcard it supports native ASIO driver (20,24 or 32 bit) -+I -+P -m0 -d -+O -f sr = 48000 kr = 2400 ksmps = 20 nchnls = 2 ;4 #define MAXDEL #500# gifont init 9 giUpsliders init 12 ;Sliders graphic update/second ;GUI generation FLpanel "Orecchio elettronico di Tomatis [Ver 0.1]", 800,600, 100,50 FLlabel 11, gifont, 0, 5, 5, 5 iM FLbox "Input Micro", 1,gifont,14,80,10,10,33 iT FLbox "Input Tape ", 1,gifont,14,80,10,10,58 FLsetTextColor 128,0,0,iM FLsetTextColor 0,0,128,iT gkSel,gihsel FLbutBank 3, 1, 2, 25, 50, 100,25, -105 FLsetVal_i 0,gihsel gkGainMic,giMicGain FLslider "Micro gain l/r (db)", -24,12,0,15, -1, 155+40,16, 130,30 FLsetVal_i 0,giMicGain FLsetBox 6,giMicGain FLsetAlign 7,giMicGain FLsetColor2 255,0,0,giMicGain gkGainTape,giTapeGain FLslider "Tape gain l/r (db)", -24,12,0,15, -1, 155+40,16, 130,55 FLsetVal_i 0,giTapeGain FLsetBox 6,giTapeGain FLsetAlign 9,giTapeGain FLsetColor2 0,0,255,giTapeGain ;V-meters gkselect,iSe FLbutton "Static/Dinamic peak", 1, 0, 2, 13, 20, 682, 90-50, -105 FLsetBox 6,iSe FLsetAlign 4,iSe iVMhw0 FLbox "L", 1,gifont,14,10,10,330,33 iVMhw1 FLbox "R", 1,gifont,14,10,10,330,57 gk1M,gih1M FLslider " ", 0,32767,0,1, -1, 350,15,345,30-5 ;L gk3M,gih3M FLslider " ", 0,32767,0,1, -1, 350,15, 345,55+5 ;R ih2M FLvalue " ", 60, 25, 720,18-5 gk2M,gih2M FLslider " ", 0,32767,0,3, ih2M, 350,15, 345,15-5 ih4M FLvalue " ", 60, 25, 720,58+5 gk4M,gih4M FLslider " ", 0,32767,0,3, ih4M, 350,15, 345,70+5 gk6M,gih6M FLslider " ", 0, 1,0, 1, -1, 15-5,25-10, 345+350,30-5 gk5M,gih5M FLslider " ", 0, 1,0, 1, -1, 15-5,25-10, 345+350,55+5 FLsetBox 1, ih4M FLsetBox 1, ih2M FLsetTextSize 14, iVMhw0 FLsetTextSize 14, iVMhw1 FLsetBox 0, ih2M FLsetBox 0, gih2M FLsetBox 6, gih1M FLsetBox 0, ih4M FLsetBox 0, gih4M FLsetBox 6, gih3M FLsetBox 0, gih6M FLsetBox 0, gih5M FLsetColor2 100, 55, 100, gih1M FLsetColor2 100, 10, 255, gih2M FLsetColor2 100, 55, 100, gih3M FLsetColor2 100, 100, 255, gih4M FLsetColor2 255, 100, 100, gih6M FLsetColor2 255, 100, 100, gih5M ih1 FLvalue " ", 54, 25, 20+12, 120+30 ih2 FLvalue " ", 54, 25, 20+150+25+12, 120+30 ih3 FLvalue " ", 54, 25, 320+12, 120+30 ih4 FLvalue " ", 54, 25, 20+450+25+12, 120+30 ih5 FLvalue " ", 54, 25, 620+12, 120+30 ih6 FLvalue " ", 54, 25, 70,340 ;ih7 FLvalue " ", 54, 25, 495+120, 230+30+15 ;iboxch1 FLbox "Channel 1",6,1,11,290,210,20+425,130+20 ;iboxch2 FLbox "Channel 2",6,1,11,290,210,155,130+20 FLcolor 100,100,100 gkCutOff,ginit1 FLknob "Low-pass pre-filter (cut-off)", 20,20000, 0, 1, ih1, 80, 20,130+50 FLsetVal_i 20000,ginit1 FLsetBox 1, ih1 FLcolor 128,50,50 gkLpCh1,ginit2 FLknob "Channel 1 Attenuator low", 20,10000, 0, 1, ih2, 60, 20+150+25,130+50 FLsetVal_i 20,ginit2 FLsetBox 1, ih2 gkHpCh1,ginit3 FLknob "Channel 1 attenuator high", 20,20000, 0, 1, ih3, 60, 20+300,130+50 FLsetVal_i 20000,ginit3 FLsetBox 1, ih3 FLcolor 0,128,0 gkLpCh2,ginit4 FLknob "Channel 2 Attenuator low", 20,20000, 0, 1, ih4, 60, 20+450+25,130+50 FLsetVal_i 20,ginit4 FLsetBox 1, ih4 gkHpCh2,ginit5 FLknob "Channel 2 Attenuator high", 20,20000, 0, 1, ih5, 60, 20+600,130+50 FLsetVal_i 20000,ginit5 FLsetBox 1, ih5 FLcolor -1 ;Precessione e Delay gkdlt,ginit6 FLslider "Delay", 0,$MAXDEL,0,15,-1, 500,25,20+150+25,30+350 FLsetVal_i 0,ginit6 FLsetBox 1, ginit6 FLsetTextColor 128,128,128,ginit6 FLsetTextSize 18,ginit6 FLsetColor2 128,128,128,ginit6 FLsetAlign 2,ginit6 gkthreshold,gihthreshold FLslider "Threshold Precession", 0,32767,0,15,-1, 500,25,20+150+25,80+350 FLsetVal_i 0,gihthreshold FLsetBox 1, gihthreshold FLsetTextColor 128,128,128,gihthreshold FLsetTextSize 18,gihthreshold FLsetColor2 128,128,128,gihthreshold FLsetAlign 2,gihthreshold gkRescaleCh1,gihresc1 FLslider "Channel 1 Conduzione Ossea", 0,1,0,1, -1, 200,15,20+150+25,300 gkRescaleCh2,gihresc2 FLslider "Channel 2 Conduzione Aerea", 0,1,0,1, -1, 200,15, 20+450+25,300 FLsetColor2 128,50,50,gihresc1 FLsetColor2 0,128,0,gihresc2 FLsetBox 6,gihresc1 FLsetBox 6,gihresc2 FLsetTextColor 128,50,50,gihresc1 FLsetTextSize 14,gihresc1 FLsetTextColor 0,128,0,gihresc2 FLsetTextSize 14,gihresc2 FLcolor 14,114,114 gkPortTime,gihPortTime FLknob "Portamento Time/Ms", 1,2000, 0, 1, ih6, 60, 70,370 FLsetVal_i 1,gihPortTime FLsetBox 1,ih6 FLcolor -1 gkexit, iex FLbutton "@9plus", 1, 0, 1, 70, 70, 10, 520, +105, 110, 0, 3600 FLsetTextSize 14,iex FLsetBox 4, iex FLpanel_end FLrun instr 1 ;Mic input if gkSel = 1 kgoto tape aMic_L, aMic_R ins gaSig_L = aMic_L*ampdb(gkGainMic) gaSig_R = aMic_R*ampdb(gkGainMic) kgoto end tape: schedk 1,+105,2,0,3600 turnoff end: endin instr 2 ;Tape record input if gkSel = 0 kgoto mic aTape_L,aTape_R diskin "BROWSE_FILE",.5,0,1 gaSig_L = aTape_L*ampdb(gkGainTape) gaSig_R = aTape_R*ampdb(gkGainTape) kgoto end mic: schedk 1,+105,1,0,3600 turnoff end: endin instr 3 ;V-meter and more informations FLsetVal_i 0,gih1M FLsetVal_i 0,gih2M FLsetVal_i 0,gih3M FLsetVal_i 0,gih4M FLsetVal_i 0,gih5M FLsetVal_i 0,gih6M ;turnoffk gkSMT ;if gkSMT = 1 kgoto nonclip2 iresetpeak = 1.5 ktrig metro giUpsliders kvalL max_k gaSig_L, ktrig, 0 kvalR max_k gaSig_R, ktrig, 0 kpeakL peak kvalL kpeakR peak kvalR if gkselect == 1 kgoto contin reset: timout 0, iresetpeak, contin kpeakL = 0 kpeakR = 0 kclipL = 0 kclipR = 0 reinit reset contin: if kpeakL < 32767 kgoto nonclip1 kclipL = 1 FLsetVal ktrig, kclipL, gih6M nonclip1: if kpeakR < 32767 kgoto nonclip2 kclipR = 1 FLsetVal ktrig, kclipR, gih5M nonclip2: FLsetVal ktrig, kvalL, gih1M FLsetVal ktrig, kpeakL, gih2M FLsetVal ktrig, kvalR, gih3M FLsetVal ktrig, kpeakR, gih4M FLsetVal ktrig, kclipL, gih6M FLsetVal ktrig, kclipR, gih5M ;Precessione ;gkPrecessione tonek (kvalL > gkthreshold ? 1 :0),10 gkPrecessione portk (kvalL > gkthreshold ? 1 :0),gkPortTime*.001 FLsetVal ktrig, gkPrecessione, gihresc1 FLsetVal ktrig, 1-gkPrecessione, gihresc2 endin instr 4 ;kfreq1 tonek gkCutOff,10 ;kfreq2 tonek gkLpCh1,10 ;kfreq3 tonek gkHpCh1,10 ;kfreq4 tonek gkLpCh2,10 ;kfreq5 tonek gkHpCh2,10 ;Filtro programmabile passa basso aFilterProg_L butterlp gaSig_L, gkCutOff;kfreq1 aFilterProg_R butterlp gaSig_R, gkCutOff;kfreq1 ;filtri ch1 Conduzione Ossea aFilterCh1_L butterhp aFilterProg_L, gkLpCh1 aOssea_L butterlp aFilterCh1_L, gkHpCh1 aFilterCh1_R butterhp aFilterProg_R, gkLpCh1;kfreq3 aOssea_R butterlp aFilterCh1_R, gkHpCh1 ;kfreq4 ;filtri ch2 Conduzione Aerea aFilterCh2_L butterhp aFilterProg_L, gkLpCh2 aAerea_L butterlp aFilterCh2_L, gkHpCh2 aFilterCh2_R butterhp aFilterProg_R, gkLpCh2;kfreq3 aAerea_R butterlp aFilterCh2_R, gkHpCh2 ;kfreq4 aAerea_L vdelay aAerea_L,gkdlt,$MAXDEL aAerea_R vdelay aAerea_R,gkdlt,$MAXDEL /* aOutOssea_L = ((aOssea_L*gkPrecessione) + (aAerea_L*(1-gkPrecessione))) aOutOssea_R = ((aOssea_R*gkPrecessione) + (aAerea_R*(1-gkPrecessione))) aOutAerea_L = ((aAerea_L*gkPrecessione) + (aOssea_L*(1-gkPrecessione))) aOutAerea_R = ((aAerea_R*gkPrecessione) + (aOssea_R*(1-gkPrecessione))) */ aOutOssea_L = (aOssea_L*gkPrecessione) + (aAerea_L*(1-gkPrecessione)) aOutOssea_R = (aOssea_R*gkPrecessione) + (aAerea_R*(1-gkPrecessione)) aOutAerea_L = (aOssea_L*gkPrecessione) + (aAerea_L*(1-gkPrecessione)) aOutAerea_R = (aOssea_R*gkPrecessione) + (aAerea_R*(1-gkPrecessione)) outs aOutOssea_L,aOutOssea_L ;outq1 aOutOssea_L ;outq2 aOutOssea_R ;outq3 aOutAerea_L ;outq4 aOutAerea_R endin instr 110 timout 0, 1,end reinit exit goto end exit: exitnow end: endin i1 0 [3600*3] ;Max performance time i3 0 [3600*3] i4 0 [3600*3] e