Extra "ports" of juce-based plugins using the distrho build system
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
3.0KB

  1. <Cabbage>
  2. form caption("HRTF 3D") size(365, 275)
  3. image pos(0, 0), size(365, 236), colour(50, 20, 0), shape("rounded"), outline("white"), line(4)
  4. xypad bounds(6, 6, 250, 224), channel("Az", "Elev"), text("X=Azimuth : Y=Elev."), rangex(-180, 180, 0), rangey(-40, 90, 0)
  5. checkbox bounds(265, 6, 80, 12), channel("TestSound"), FontColour("white"), value(1), text("Test Sound"), colour(yellow)
  6. combobox bounds(265, 20, 90,25), channel("type"), value(2), text("hrtfmove", "hrtfmove2")
  7. hslider bounds(265, 50, 90,55), channel("L_R_In"), range(0, 1.00, 0), caption("L/R In")
  8. combobox bounds(265,110, 90,60), channel("overlap"), value(3), text("1", "2", "4", "8", "16", "32", "64"), caption("Overlap")
  9. hslider bounds(265, 175, 90, 55), channel("radius"), range(1, 30, 9), caption("Radius")
  10. image bounds(5,245, 215, 20), colour(100,100,100,80), plant("credit"), line(0){
  11. label bounds(0.03, 0.1, .95, .7), text("Author: Iain McCurdy |2012|"), fontcolour("white")
  12. </Cabbage>
  13. <CsoundSynthesizer>
  14. <CsOptions>
  15. -d -n
  16. </CsOptions>
  17. <CsInstruments>
  18. sr = 44100 ;SAMPLE RATE
  19. ksmps = 1 ;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE
  20. nchnls = 2 ;NUMBER OF CHANNELS (2=STEREO)
  21. 0dbfs = 1
  22. ;Author: Iain McCurdy (2012)
  23. instr 1
  24. kAz chnget "Az" ;READ WIDGETS...
  25. kElev chnget "Elev" ;
  26. ktype chnget "type" ;
  27. kL_R_In chnget "L_R_In" ;
  28. koverlap chnget "overlap" ;
  29. kradius chnget "radius" ;
  30. kTestSound chnget "TestSound"
  31. if kTestSound=1 then ; generate a test sound...
  32. aL pinkish 0.3 ; generate some pink noise
  33. koct rspline 8,12,0.3,1 ; randomly moving pitch (oct format)
  34. aL reson aL,cpsoct(koct),cpsoct(koct)*0.2,1 ; reson filter it
  35. aR = aL ; right channel same as the left
  36. else
  37. aL,aR ins ;READ STEREO AUDIO INPUT
  38. endif
  39. asrc ntrpol aL,aR,kL_R_In
  40. kporttime linseg 0,0.001,0.02 ;PORTAMENTO TIME RISES UP QUICKLY FROM ZERO TO A HELD VALUE
  41. ;kAz portk kAz,kporttime ;SMOOTH RT CHANGES OF AZIMUTH
  42. ;kElev portk kElev,kporttime ;SMOOTH RT CHANGES OF ELEVATION
  43. kswitch changed koverlap,kradius ;IF 'OVERLAP' OR 'RADIUS' CHANGE, GENERATE A TRIGGER
  44. if kswitch==1 then ;IF A CHANGE TRIGGER HAS BEEN GENERATED...
  45. reinit update ;REINITIALISE FROM LABEL 'update'
  46. endif ;END OF CONDITIONAL BRANCH
  47. update: ;A LABEL. REINITIALISATION BEGINS FROM HERE
  48. ioverlap = 2 ^ (i(koverlap) - 1) ;DERIVE OVERLAP VALUE (1,2,4,8 etc.) FROM COMBOBOX INDEX VALUES (1,2,3,4 etc.)
  49. if ktype==1 then ;IF 'hrtfmove' SELECTED USING COMBOBOX...
  50. aleft, aright hrtfmove asrc, kAz, kElev, "hrtf-44100-left.dat","hrtf-44100-right.dat",ioverlap, i(kradius);, isr] ;APPLY hrtfmove2 OPCODE TO AUDIO SOURCE FROM INSTR 1
  51. else ;IF 'hrtfmove2' SELECTED USING COMBOBOX...
  52. aleft, aright hrtfmove2 asrc, kAz, kElev, "hrtf-44100-left.dat","hrtf-44100-right.dat",ioverlap, i(kradius);, isr] ;APPLY hrtfmove2 OPCODE TO AUDIO SOURCE FROM INSTR 1
  53. endif ;END OF CONDITIONAL BRANCH
  54. rireturn
  55. outs aleft, aright ;SEND AUDIO TO OUTPUTS
  56. endin
  57. </CsInstruments>
  58. <CsScore>
  59. i 1 0 [3600*24*7]
  60. </CsScore>
  61. </CsoundSynthesizer>