cyfaust 0.1.0__cp311-cp311-macosx_15_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. cyfaust/CMakeLists.txt +93 -0
  2. cyfaust/__init__.py +0 -0
  3. cyfaust/__main__.py +819 -0
  4. cyfaust/box.pxd +46 -0
  5. cyfaust/box.pyx +2459 -0
  6. cyfaust/common.pxd +5 -0
  7. cyfaust/common.pyx +61 -0
  8. cyfaust/cyfaust.cpython-311-darwin.so +0 -0
  9. cyfaust/faust_box.pxd +298 -0
  10. cyfaust/faust_box_oo.pyx +66 -0
  11. cyfaust/faust_gui.pxd +261 -0
  12. cyfaust/faust_interp.pxd +160 -0
  13. cyfaust/faust_player.pxd +80 -0
  14. cyfaust/faust_signal.pxd +257 -0
  15. cyfaust/gui_statics.cpp +15 -0
  16. cyfaust/interp.pyx +673 -0
  17. cyfaust/player.cpp +32519 -0
  18. cyfaust/player.pyx +191 -0
  19. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUBase.cpp +2327 -0
  20. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUBase.h +1019 -0
  21. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUDispatch.cpp +423 -0
  22. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUDispatch.h +82 -0
  23. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUInputElement.cpp +151 -0
  24. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUInputElement.h +119 -0
  25. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUOutputElement.cpp +62 -0
  26. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUOutputElement.h +66 -0
  27. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUPlugInDispatch.cpp +615 -0
  28. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUPlugInDispatch.h +128 -0
  29. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUScopeElement.cpp +512 -0
  30. cyfaust/resources/architecture/AU/AUPublic/AUBase/AUScopeElement.h +544 -0
  31. cyfaust/resources/architecture/AU/AUPublic/AUBase/ComponentBase.cpp +370 -0
  32. cyfaust/resources/architecture/AU/AUPublic/AUBase/ComponentBase.h +340 -0
  33. cyfaust/resources/architecture/AU/AUPublic/AUEffectBase/AUEffectBase.cpp +463 -0
  34. cyfaust/resources/architecture/AU/AUPublic/AUEffectBase/AUEffectBase.h +391 -0
  35. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUInstrumentBase.cpp +837 -0
  36. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUInstrumentBase.h +267 -0
  37. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUMIDIBase.cpp +495 -0
  38. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUMIDIBase.h +213 -0
  39. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/LockFreeFIFO.h +168 -0
  40. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MIDIControlHandler.h +92 -0
  41. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MusicDeviceBase.cpp +354 -0
  42. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MusicDeviceBase.h +126 -0
  43. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthElement.cpp +419 -0
  44. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthElement.h +227 -0
  45. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthEvent.h +145 -0
  46. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNote.cpp +138 -0
  47. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNote.h +186 -0
  48. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNoteList.cpp +93 -0
  49. cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNoteList.h +232 -0
  50. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBaseHelper.cpp +134 -0
  51. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBaseHelper.h +80 -0
  52. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBuffer.cpp +217 -0
  53. cyfaust/resources/architecture/AU/AUPublic/Utility/AUBuffer.h +267 -0
  54. cyfaust/resources/architecture/AU/AUPublic/Utility/AUMIDIDefs.h +136 -0
  55. cyfaust/resources/architecture/AU/AUPublic/Utility/AUSilentTimeout.h +93 -0
  56. cyfaust/resources/architecture/AU/English.lproj/InfoPlist.strings +0 -0
  57. cyfaust/resources/architecture/AU/FaustAU.exp +2 -0
  58. cyfaust/resources/architecture/AU/FaustAU.xcodeproj/project.pbxproj +968 -0
  59. cyfaust/resources/architecture/AU/FaustAU.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  60. cyfaust/resources/architecture/AU/FaustAUCustomView.plist +14 -0
  61. cyfaust/resources/architecture/AU/Info.plist +47 -0
  62. cyfaust/resources/architecture/AU/PublicUtility/CAAtomic.h +305 -0
  63. cyfaust/resources/architecture/AU/PublicUtility/CAAtomicStack.h +239 -0
  64. cyfaust/resources/architecture/AU/PublicUtility/CAAudioChannelLayout.cpp +153 -0
  65. cyfaust/resources/architecture/AU/PublicUtility/CAAudioChannelLayout.h +199 -0
  66. cyfaust/resources/architecture/AU/PublicUtility/CAAutoDisposer.h +508 -0
  67. cyfaust/resources/architecture/AU/PublicUtility/CABufferList.cpp +264 -0
  68. cyfaust/resources/architecture/AU/PublicUtility/CABufferList.h +319 -0
  69. cyfaust/resources/architecture/AU/PublicUtility/CAByteOrder.h +161 -0
  70. cyfaust/resources/architecture/AU/PublicUtility/CADebugMacros.cpp +88 -0
  71. cyfaust/resources/architecture/AU/PublicUtility/CADebugMacros.h +580 -0
  72. cyfaust/resources/architecture/AU/PublicUtility/CADebugPrintf.cpp +89 -0
  73. cyfaust/resources/architecture/AU/PublicUtility/CADebugPrintf.h +115 -0
  74. cyfaust/resources/architecture/AU/PublicUtility/CADebugger.cpp +77 -0
  75. cyfaust/resources/architecture/AU/PublicUtility/CADebugger.h +56 -0
  76. cyfaust/resources/architecture/AU/PublicUtility/CAException.h +83 -0
  77. cyfaust/resources/architecture/AU/PublicUtility/CAGuard.cpp +339 -0
  78. cyfaust/resources/architecture/AU/PublicUtility/CAGuard.h +133 -0
  79. cyfaust/resources/architecture/AU/PublicUtility/CAHostTimeBase.cpp +110 -0
  80. cyfaust/resources/architecture/AU/PublicUtility/CAHostTimeBase.h +231 -0
  81. cyfaust/resources/architecture/AU/PublicUtility/CALogMacros.h +140 -0
  82. cyfaust/resources/architecture/AU/PublicUtility/CAMath.h +68 -0
  83. cyfaust/resources/architecture/AU/PublicUtility/CAMutex.cpp +345 -0
  84. cyfaust/resources/architecture/AU/PublicUtility/CAMutex.h +163 -0
  85. cyfaust/resources/architecture/AU/PublicUtility/CAReferenceCounted.h +87 -0
  86. cyfaust/resources/architecture/AU/PublicUtility/CAStreamBasicDescription.cpp +795 -0
  87. cyfaust/resources/architecture/AU/PublicUtility/CAStreamBasicDescription.h +409 -0
  88. cyfaust/resources/architecture/AU/PublicUtility/CAThreadSafeList.h +255 -0
  89. cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnit.cpp +191 -0
  90. cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnit.h +100 -0
  91. cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnitTypes.h +59 -0
  92. cyfaust/resources/architecture/AU/PublicUtility/CAXException.cpp +49 -0
  93. cyfaust/resources/architecture/AU/PublicUtility/CAXException.h +338 -0
  94. cyfaust/resources/architecture/AU/SectionPatternLight.tiff +0 -0
  95. cyfaust/resources/architecture/AU/Source/AUSource/FaustAU.h +38 -0
  96. cyfaust/resources/architecture/AU/Source/AUSource/FaustAU.r +153 -0
  97. cyfaust/resources/architecture/AU/Source/AUSource/FaustAUVersion.h +64 -0
  98. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Bargraph.h +18 -0
  99. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Bargraph.m +21 -0
  100. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Button.h +20 -0
  101. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Button.m +56 -0
  102. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomView.h +87 -0
  103. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomView.m +834 -0
  104. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomViewFactory.h +13 -0
  105. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomViewFactory.m +22 -0
  106. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Knob.h +81 -0
  107. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Knob.m +199 -0
  108. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Slider.h +18 -0
  109. cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Slider.m +21 -0
  110. cyfaust/resources/architecture/AU/version.plist +16 -0
  111. cyfaust/resources/architecture/VST/Info.plist +28 -0
  112. cyfaust/resources/architecture/VST/PkgInfo +1 -0
  113. cyfaust/resources/architecture/VST/README +11 -0
  114. cyfaust/resources/architecture/VST/VST.xcode/project.pbxproj +655 -0
  115. cyfaust/resources/architecture/alsa-console.cpp +246 -0
  116. cyfaust/resources/architecture/alsa-gtk.cpp +220 -0
  117. cyfaust/resources/architecture/alsa-qt.cpp +229 -0
  118. cyfaust/resources/architecture/api/DspFaust.cpp +612 -0
  119. cyfaust/resources/architecture/api/DspFaust.h +511 -0
  120. cyfaust/resources/architecture/api/README.md +237 -0
  121. cyfaust/resources/architecture/api/doc/Generic.md +38 -0
  122. cyfaust/resources/architecture/au-effect.cpp +487 -0
  123. cyfaust/resources/architecture/au-instrument.cpp +573 -0
  124. cyfaust/resources/architecture/bench.cpp +91 -0
  125. cyfaust/resources/architecture/c-jack-gtk.c +227 -0
  126. cyfaust/resources/architecture/ca-gtk.cpp +284 -0
  127. cyfaust/resources/architecture/ca-qt.cpp +424 -0
  128. cyfaust/resources/architecture/cpal.rs +195 -0
  129. cyfaust/resources/architecture/csound.cpp +245 -0
  130. cyfaust/resources/architecture/csvplot.cpp +227 -0
  131. cyfaust/resources/architecture/daisy/Makefile +14 -0
  132. cyfaust/resources/architecture/daisy/README.md +50 -0
  133. cyfaust/resources/architecture/daisy/ex_faust.cpp +173 -0
  134. cyfaust/resources/architecture/dssi.cpp +1262 -0
  135. cyfaust/resources/architecture/dummy-mem.cpp +186 -0
  136. cyfaust/resources/architecture/dummy.cpp +294 -0
  137. cyfaust/resources/architecture/faust/au/AUUI.h +404 -0
  138. cyfaust/resources/architecture/faust/audio/alsa-dsp.h +693 -0
  139. cyfaust/resources/architecture/faust/audio/android-dsp.h +583 -0
  140. cyfaust/resources/architecture/faust/audio/audio.h +115 -0
  141. cyfaust/resources/architecture/faust/audio/channels.h +122 -0
  142. cyfaust/resources/architecture/faust/audio/coreaudio-dsp.h +1543 -0
  143. cyfaust/resources/architecture/faust/audio/coreaudio-ios-dsp.h +743 -0
  144. cyfaust/resources/architecture/faust/audio/dummy-audio.h +255 -0
  145. cyfaust/resources/architecture/faust/audio/esp32-dsp.h +284 -0
  146. cyfaust/resources/architecture/faust/audio/fpe.h +164 -0
  147. cyfaust/resources/architecture/faust/audio/jack-dsp.h +534 -0
  148. cyfaust/resources/architecture/faust/audio/juce-dsp.h +119 -0
  149. cyfaust/resources/architecture/faust/audio/netjack-dsp.h +354 -0
  150. cyfaust/resources/architecture/faust/audio/oboe-dsp.h +308 -0
  151. cyfaust/resources/architecture/faust/audio/ofaudio-dsp.h +155 -0
  152. cyfaust/resources/architecture/faust/audio/opensles-android-dsp.h +631 -0
  153. cyfaust/resources/architecture/faust/audio/osc-dsp.h +120 -0
  154. cyfaust/resources/architecture/faust/audio/portaudio-dsp.h +236 -0
  155. cyfaust/resources/architecture/faust/audio/rtaudio-dsp.h +241 -0
  156. cyfaust/resources/architecture/faust/audio/samAudio.h +140 -0
  157. cyfaust/resources/architecture/faust/audio/teensy-dsp.h +171 -0
  158. cyfaust/resources/architecture/faust/dsp/cmajor-cpp-dsp.h +253 -0
  159. cyfaust/resources/architecture/faust/dsp/cmajorpatch-dsp.h +483 -0
  160. cyfaust/resources/architecture/faust/dsp/cpp-dsp-adapter.h +38 -0
  161. cyfaust/resources/architecture/faust/dsp/dsp-adapter.h +836 -0
  162. cyfaust/resources/architecture/faust/dsp/dsp-bench.h +611 -0
  163. cyfaust/resources/architecture/faust/dsp/dsp-checker.h +115 -0
  164. cyfaust/resources/architecture/faust/dsp/dsp-combiner.h +810 -0
  165. cyfaust/resources/architecture/faust/dsp/dsp-compute-adapter.h +159 -0
  166. cyfaust/resources/architecture/faust/dsp/dsp-multi.h +702 -0
  167. cyfaust/resources/architecture/faust/dsp/dsp-multifun.h +90 -0
  168. cyfaust/resources/architecture/faust/dsp/dsp-optimizer.h +511 -0
  169. cyfaust/resources/architecture/faust/dsp/dsp-tools.h +229 -0
  170. cyfaust/resources/architecture/faust/dsp/dsp.h +321 -0
  171. cyfaust/resources/architecture/faust/dsp/fastmath.cpp +301 -0
  172. cyfaust/resources/architecture/faust/dsp/faust-dynamic-engine.cpp +494 -0
  173. cyfaust/resources/architecture/faust/dsp/faust-dynamic-engine.h +386 -0
  174. cyfaust/resources/architecture/faust/dsp/faust-engine.h +75 -0
  175. cyfaust/resources/architecture/faust/dsp/faust-poly-engine.h +638 -0
  176. cyfaust/resources/architecture/faust/dsp/interpreter-dsp-c.h +288 -0
  177. cyfaust/resources/architecture/faust/dsp/interpreter-dsp.h +362 -0
  178. cyfaust/resources/architecture/faust/dsp/interpreter-machine-dsp.h +233 -0
  179. cyfaust/resources/architecture/faust/dsp/libfaust-box-c.h +817 -0
  180. cyfaust/resources/architecture/faust/dsp/libfaust-box.h +889 -0
  181. cyfaust/resources/architecture/faust/dsp/libfaust-c.h +116 -0
  182. cyfaust/resources/architecture/faust/dsp/libfaust-signal-c.h +649 -0
  183. cyfaust/resources/architecture/faust/dsp/libfaust-signal.h +731 -0
  184. cyfaust/resources/architecture/faust/dsp/llvm-dsp-adapter.h +160 -0
  185. cyfaust/resources/architecture/faust/dsp/llvm-dsp-c.h +524 -0
  186. cyfaust/resources/architecture/faust/dsp/llvm-dsp.h +575 -0
  187. cyfaust/resources/architecture/faust/dsp/llvm-machine-dsp.h +215 -0
  188. cyfaust/resources/architecture/faust/dsp/one-sample-dsp.h +477 -0
  189. cyfaust/resources/architecture/faust/dsp/poly-dsp.h +1079 -0
  190. cyfaust/resources/architecture/faust/dsp/poly-interpreter-dsp.h +143 -0
  191. cyfaust/resources/architecture/faust/dsp/poly-llvm-dsp.h +249 -0
  192. cyfaust/resources/architecture/faust/dsp/poly-wasm-dsp.h +257 -0
  193. cyfaust/resources/architecture/faust/dsp/proxy-dsp.h +108 -0
  194. cyfaust/resources/architecture/faust/dsp/proxy-osc-dsp.h +109 -0
  195. cyfaust/resources/architecture/faust/dsp/rnbo-dsp.h +187 -0
  196. cyfaust/resources/architecture/faust/dsp/sound-player.h +428 -0
  197. cyfaust/resources/architecture/faust/dsp/timed-dsp.h +279 -0
  198. cyfaust/resources/architecture/faust/dsp/wasm-dsp-imp.h +188 -0
  199. cyfaust/resources/architecture/faust/dsp/wasm-dsp.h +309 -0
  200. cyfaust/resources/architecture/faust/dsp/ysfx-dsp.h +188 -0
  201. cyfaust/resources/architecture/faust/export.h +61 -0
  202. cyfaust/resources/architecture/faust/gui/APIUI.h +726 -0
  203. cyfaust/resources/architecture/faust/gui/BelaOSCUI.h +170 -0
  204. cyfaust/resources/architecture/faust/gui/CGlue.h +667 -0
  205. cyfaust/resources/architecture/faust/gui/CInterface.h +142 -0
  206. cyfaust/resources/architecture/faust/gui/ControlSequenceUI.h +197 -0
  207. cyfaust/resources/architecture/faust/gui/ControlUI.h +137 -0
  208. cyfaust/resources/architecture/faust/gui/DaisyControlUI.h +283 -0
  209. cyfaust/resources/architecture/faust/gui/DaisyPatchInitControlUI.h +254 -0
  210. cyfaust/resources/architecture/faust/gui/DecoratorUI.h +115 -0
  211. cyfaust/resources/architecture/faust/gui/Esp32ControlUI.h +341 -0
  212. cyfaust/resources/architecture/faust/gui/Esp32Reader.h +102 -0
  213. cyfaust/resources/architecture/faust/gui/Esp32SensorUI.h +137 -0
  214. cyfaust/resources/architecture/faust/gui/FUI.h +147 -0
  215. cyfaust/resources/architecture/faust/gui/GTKUI.h +1414 -0
  216. cyfaust/resources/architecture/faust/gui/GUI.h +465 -0
  217. cyfaust/resources/architecture/faust/gui/JSONControl.h +48 -0
  218. cyfaust/resources/architecture/faust/gui/JSONUI.h +722 -0
  219. cyfaust/resources/architecture/faust/gui/JSONUIDecoder.h +589 -0
  220. cyfaust/resources/architecture/faust/gui/JuceGUI.h +2061 -0
  221. cyfaust/resources/architecture/faust/gui/JuceOSCUI.h +163 -0
  222. cyfaust/resources/architecture/faust/gui/JuceParameterUI.h +158 -0
  223. cyfaust/resources/architecture/faust/gui/JuceReader.h +103 -0
  224. cyfaust/resources/architecture/faust/gui/JuceStateUI.h +88 -0
  225. cyfaust/resources/architecture/faust/gui/LayoutUI.h +423 -0
  226. cyfaust/resources/architecture/faust/gui/LibsndfileReader.h +366 -0
  227. cyfaust/resources/architecture/faust/gui/MapUI.h +370 -0
  228. cyfaust/resources/architecture/faust/gui/MemoryReader.h +111 -0
  229. cyfaust/resources/architecture/faust/gui/MetaDataUI.h +357 -0
  230. cyfaust/resources/architecture/faust/gui/MidiUI.h +939 -0
  231. cyfaust/resources/architecture/faust/gui/OCVUI.h +688 -0
  232. cyfaust/resources/architecture/faust/gui/OSCUI.h +219 -0
  233. cyfaust/resources/architecture/faust/gui/PathBuilder.h +228 -0
  234. cyfaust/resources/architecture/faust/gui/PresetUI.h +337 -0
  235. cyfaust/resources/architecture/faust/gui/PrintCUI.h +152 -0
  236. cyfaust/resources/architecture/faust/gui/PrintUI.h +121 -0
  237. cyfaust/resources/architecture/faust/gui/QTUI.h +1891 -0
  238. cyfaust/resources/architecture/faust/gui/RosCI.h +493 -0
  239. cyfaust/resources/architecture/faust/gui/RosUI.h +488 -0
  240. cyfaust/resources/architecture/faust/gui/SaveUI.h +163 -0
  241. cyfaust/resources/architecture/faust/gui/SimpleParser.h +583 -0
  242. cyfaust/resources/architecture/faust/gui/SoundUI.h +217 -0
  243. cyfaust/resources/architecture/faust/gui/Soundfile.h +342 -0
  244. cyfaust/resources/architecture/faust/gui/Styles/Blue.qrc +5 -0
  245. cyfaust/resources/architecture/faust/gui/Styles/Blue.qss +177 -0
  246. cyfaust/resources/architecture/faust/gui/Styles/Default.qrc +5 -0
  247. cyfaust/resources/architecture/faust/gui/Styles/Default.qss +117 -0
  248. cyfaust/resources/architecture/faust/gui/Styles/Grey.qrc +5 -0
  249. cyfaust/resources/architecture/faust/gui/Styles/Grey.qss +174 -0
  250. cyfaust/resources/architecture/faust/gui/Styles/Salmon.qrc +5 -0
  251. cyfaust/resources/architecture/faust/gui/Styles/Salmon.qss +171 -0
  252. cyfaust/resources/architecture/faust/gui/UI.h +87 -0
  253. cyfaust/resources/architecture/faust/gui/ValueConverter.h +543 -0
  254. cyfaust/resources/architecture/faust/gui/WaveReader.h +364 -0
  255. cyfaust/resources/architecture/faust/gui/console.h +322 -0
  256. cyfaust/resources/architecture/faust/gui/httpdUI.h +372 -0
  257. cyfaust/resources/architecture/faust/gui/meta.h +39 -0
  258. cyfaust/resources/architecture/faust/gui/mspUI.h +580 -0
  259. cyfaust/resources/architecture/faust/gui/qrcodegen.h +269 -0
  260. cyfaust/resources/architecture/faust/gui/qrcodegen.impl.h +1025 -0
  261. cyfaust/resources/architecture/faust/gui/ring-buffer.h +414 -0
  262. cyfaust/resources/architecture/faust/midi/RtMidi.cpp +3054 -0
  263. cyfaust/resources/architecture/faust/midi/RtMidi.h +1034 -0
  264. cyfaust/resources/architecture/faust/midi/bela-midi.h +266 -0
  265. cyfaust/resources/architecture/faust/midi/daisy-midi.h +116 -0
  266. cyfaust/resources/architecture/faust/midi/esp32-midi.h +185 -0
  267. cyfaust/resources/architecture/faust/midi/gramophone-midi.h +107 -0
  268. cyfaust/resources/architecture/faust/midi/iplug2-midi.h +148 -0
  269. cyfaust/resources/architecture/faust/midi/jack-midi.h +247 -0
  270. cyfaust/resources/architecture/faust/midi/juce-midi.h +275 -0
  271. cyfaust/resources/architecture/faust/midi/midi.h +475 -0
  272. cyfaust/resources/architecture/faust/midi/rt-midi.h +315 -0
  273. cyfaust/resources/architecture/faust/midi/teensy-midi.h +89 -0
  274. cyfaust/resources/architecture/faust/misc.h +106 -0
  275. cyfaust/resources/architecture/faust/sound-file.h +132 -0
  276. cyfaust/resources/architecture/faust/unity/AudioPluginInterface.h +301 -0
  277. cyfaust/resources/architecture/faust/vst/faust.h +141 -0
  278. cyfaust/resources/architecture/faust/vst/voice.h +43 -0
  279. cyfaust/resources/architecture/faust/vst/vstui.h +524 -0
  280. cyfaust/resources/architecture/faustvst.cpp +3435 -0
  281. cyfaust/resources/architecture/faustvstqt.h +91 -0
  282. cyfaust/resources/architecture/gen-json.cpp +76 -0
  283. cyfaust/resources/architecture/jack-console.cpp +267 -0
  284. cyfaust/resources/architecture/jack-gtk-ros.cpp +139 -0
  285. cyfaust/resources/architecture/jack-gtk.cpp +282 -0
  286. cyfaust/resources/architecture/jack-internal.cpp +560 -0
  287. cyfaust/resources/architecture/jack-qt-chain-footer.cpp +87 -0
  288. cyfaust/resources/architecture/jack-qt-chain-header.cpp +92 -0
  289. cyfaust/resources/architecture/jack-qt.cpp +281 -0
  290. cyfaust/resources/architecture/jack.rs +171 -0
  291. cyfaust/resources/architecture/juce/README.md +84 -0
  292. cyfaust/resources/architecture/juce/juce-plugin.cpp +809 -0
  293. cyfaust/resources/architecture/juce/juce-standalone.cpp +413 -0
  294. cyfaust/resources/architecture/juce/plugin/plugin-llvm.jucer +184 -0
  295. cyfaust/resources/architecture/juce/plugin/plugin.jucer +159 -0
  296. cyfaust/resources/architecture/juce/standalone/standalone-llvm.jucer +216 -0
  297. cyfaust/resources/architecture/juce/standalone/standalone.jucer +191 -0
  298. cyfaust/resources/architecture/ladspa.cpp +543 -0
  299. cyfaust/resources/architecture/latexheader.tex +65 -0
  300. cyfaust/resources/architecture/lv2.cpp +2090 -0
  301. cyfaust/resources/architecture/lv2qtgui.h +62 -0
  302. cyfaust/resources/architecture/lv2ui.cpp +1966 -0
  303. cyfaust/resources/architecture/max-msp/README.md +109 -0
  304. cyfaust/resources/architecture/max-msp/faustgen-wrapper-poly.maxpat +184 -0
  305. cyfaust/resources/architecture/max-msp/faustgen-wrapper.maxpat +163 -0
  306. cyfaust/resources/architecture/max-msp/max-msp.cpp +734 -0
  307. cyfaust/resources/architecture/max-msp/max-msp64.cpp +789 -0
  308. cyfaust/resources/architecture/max-msp/py2max/README.md +277 -0
  309. cyfaust/resources/architecture/max-msp/py2max/py2max/__init__.py +3 -0
  310. cyfaust/resources/architecture/max-msp/py2max/py2max/common.py +7 -0
  311. cyfaust/resources/architecture/max-msp/py2max/py2max/core.py +1387 -0
  312. cyfaust/resources/architecture/max-msp/py2max/py2max/maxclassdb.py +318 -0
  313. cyfaust/resources/architecture/max-msp/py2max/py2max/utils.py +20 -0
  314. cyfaust/resources/architecture/max-msp/rnbo.py +1591 -0
  315. cyfaust/resources/architecture/max-msp/sndfile/sndfile.h +857 -0
  316. cyfaust/resources/architecture/max-msp/ui.js +230 -0
  317. cyfaust/resources/architecture/max-msp/wrapper-poly.maxpat +153 -0
  318. cyfaust/resources/architecture/max-msp/wrapper.maxpat +131 -0
  319. cyfaust/resources/architecture/minimal-bench.cpp +100 -0
  320. cyfaust/resources/architecture/minimal-effect.c +149 -0
  321. cyfaust/resources/architecture/minimal-effect.cpp +70 -0
  322. cyfaust/resources/architecture/minimal-fixed-point.cpp +195 -0
  323. cyfaust/resources/architecture/minimal-static.cpp +160 -0
  324. cyfaust/resources/architecture/minimal.c +103 -0
  325. cyfaust/resources/architecture/minimal.cpp +84 -0
  326. cyfaust/resources/architecture/minimal.rs +223 -0
  327. cyfaust/resources/architecture/module.cpp +91 -0
  328. cyfaust/resources/architecture/octave.cpp +471 -0
  329. cyfaust/resources/architecture/oscio-gtk.cpp +115 -0
  330. cyfaust/resources/architecture/oscio-qt.cpp +121 -0
  331. cyfaust/resources/architecture/owl.cpp +345 -0
  332. cyfaust/resources/architecture/pa-gtk.cpp +119 -0
  333. cyfaust/resources/architecture/pa-qt.cpp +261 -0
  334. cyfaust/resources/architecture/path-printer.cpp +100 -0
  335. cyfaust/resources/architecture/plot.cpp +128 -0
  336. cyfaust/resources/architecture/portaudio.rs +192 -0
  337. cyfaust/resources/architecture/puredata.cpp +636 -0
  338. cyfaust/resources/architecture/ra-qt.cpp +238 -0
  339. cyfaust/resources/architecture/sam/fast_pow2.h +69 -0
  340. cyfaust/resources/architecture/sam/fastexp.h +140 -0
  341. cyfaust/resources/architecture/sam/samFaustDSP.cpp +125 -0
  342. cyfaust/resources/architecture/sam/samFaustDSP.h +107 -0
  343. cyfaust/resources/architecture/scheduler.cpp +1391 -0
  344. cyfaust/resources/architecture/sndfile.cpp +291 -0
  345. cyfaust/resources/architecture/supercollider.cpp +611 -0
  346. cyfaust/resources/architecture/teensy/README.md +13 -0
  347. cyfaust/resources/architecture/teensy/teensy.cpp +214 -0
  348. cyfaust/resources/architecture/teensy/teensy.h +71 -0
  349. cyfaust/resources/architecture/thread.h +373 -0
  350. cyfaust/resources/architecture/vcvrack/README.md +78 -0
  351. cyfaust/resources/architecture/vcvrack/template/.gitignore +6 -0
  352. cyfaust/resources/architecture/vcvrack/template/Makefile +22 -0
  353. cyfaust/resources/architecture/vcvrack/template/res/FaustModule.svg +299 -0
  354. cyfaust/resources/architecture/vcvrack/template/src/FaustModule.cpp +942 -0
  355. cyfaust/resources/architecture/vst.cpp +947 -0
  356. cyfaust/resources/libraries/aanl.lib +900 -0
  357. cyfaust/resources/libraries/all.lib +36 -0
  358. cyfaust/resources/libraries/analyzers.lib +980 -0
  359. cyfaust/resources/libraries/basics.lib +2681 -0
  360. cyfaust/resources/libraries/compressors.lib +1341 -0
  361. cyfaust/resources/libraries/delays.lib +401 -0
  362. cyfaust/resources/libraries/demos.lib +1556 -0
  363. cyfaust/resources/libraries/dx7.lib +1036 -0
  364. cyfaust/resources/libraries/effect.lib +1645 -0
  365. cyfaust/resources/libraries/envelopes.lib +666 -0
  366. cyfaust/resources/libraries/examples/README.md +13 -0
  367. cyfaust/resources/libraries/examples/ambisonics/fourSourcesToOcto.dsp +20 -0
  368. cyfaust/resources/libraries/examples/ambisonics/oneSourceToStereo.dsp +12 -0
  369. cyfaust/resources/libraries/examples/analysis/FFT.dsp +26 -0
  370. cyfaust/resources/libraries/examples/analysis/dbmeter.dsp +19 -0
  371. cyfaust/resources/libraries/examples/analysis/spectralLevel.dsp +8 -0
  372. cyfaust/resources/libraries/examples/analysis/spectralTiltLab.dsp +20 -0
  373. cyfaust/resources/libraries/examples/analysis/vumeter.dsp +18 -0
  374. cyfaust/resources/libraries/examples/autodiff/delay/diff.dsp +2 -0
  375. cyfaust/resources/libraries/examples/autodiff/delay/gt.dsp +2 -0
  376. cyfaust/resources/libraries/examples/autodiff/gain/diff.dsp +7 -0
  377. cyfaust/resources/libraries/examples/autodiff/gain/gt.dsp +1 -0
  378. cyfaust/resources/libraries/examples/autodiff/gain_dc/diff.dsp +7 -0
  379. cyfaust/resources/libraries/examples/autodiff/gain_dc/gt.dsp +4 -0
  380. cyfaust/resources/libraries/examples/autodiff/gain_exp/diff.dsp +9 -0
  381. cyfaust/resources/libraries/examples/autodiff/gain_exp/gt.dsp +1 -0
  382. cyfaust/resources/libraries/examples/autodiff/gain_pow/diff.dsp +9 -0
  383. cyfaust/resources/libraries/examples/autodiff/gain_pow/gt.dsp +1 -0
  384. cyfaust/resources/libraries/examples/autodiff/gain_pow_trig/diff.dsp +12 -0
  385. cyfaust/resources/libraries/examples/autodiff/gain_pow_trig/gt.dsp +1 -0
  386. cyfaust/resources/libraries/examples/autodiff/gain_sq/diff.dsp +7 -0
  387. cyfaust/resources/libraries/examples/autodiff/gain_sq/gt.dsp +1 -0
  388. cyfaust/resources/libraries/examples/autodiff/mem/diff.dsp +1 -0
  389. cyfaust/resources/libraries/examples/autodiff/mem/gt.dsp +1 -0
  390. cyfaust/resources/libraries/examples/autodiff/noise.dsp +2 -0
  391. cyfaust/resources/libraries/examples/autodiff/noop.dsp +2 -0
  392. cyfaust/resources/libraries/examples/autodiff/one_zero/diff.dsp +2 -0
  393. cyfaust/resources/libraries/examples/autodiff/one_zero/gt.dsp +2 -0
  394. cyfaust/resources/libraries/examples/autodiff/ramp.dsp +1 -0
  395. cyfaust/resources/libraries/examples/autodiff/recursion/diff.dsp +2 -0
  396. cyfaust/resources/libraries/examples/autodiff/recursion/gt.dsp +1 -0
  397. cyfaust/resources/libraries/examples/autodiff/recursion/target.dsp +13 -0
  398. cyfaust/resources/libraries/examples/autodiff/tremolo/diff.dsp +14 -0
  399. cyfaust/resources/libraries/examples/autodiff/tremolo/diffable.lib +7 -0
  400. cyfaust/resources/libraries/examples/autodiff/tremolo/gt.dsp +11 -0
  401. cyfaust/resources/libraries/examples/delayEcho/echo.dsp +15 -0
  402. cyfaust/resources/libraries/examples/delayEcho/quadEcho.dsp +21 -0
  403. cyfaust/resources/libraries/examples/delayEcho/smoothDelay.dsp +26 -0
  404. cyfaust/resources/libraries/examples/delayEcho/stereoEcho.dsp +16 -0
  405. cyfaust/resources/libraries/examples/delayEcho/tapiir.dsp +44 -0
  406. cyfaust/resources/libraries/examples/dynamic/compressor.dsp +8 -0
  407. cyfaust/resources/libraries/examples/dynamic/distortion.dsp +8 -0
  408. cyfaust/resources/libraries/examples/dynamic/gateCompressor.dsp +10 -0
  409. cyfaust/resources/libraries/examples/dynamic/noiseGate.dsp +8 -0
  410. cyfaust/resources/libraries/examples/dynamic/volume.dsp +15 -0
  411. cyfaust/resources/libraries/examples/filtering/APF.dsp +13 -0
  412. cyfaust/resources/libraries/examples/filtering/BPF.dsp +13 -0
  413. cyfaust/resources/libraries/examples/filtering/DNN.dsp +25 -0
  414. cyfaust/resources/libraries/examples/filtering/HPF.dsp +13 -0
  415. cyfaust/resources/libraries/examples/filtering/LPF.dsp +13 -0
  416. cyfaust/resources/libraries/examples/filtering/bandFilter.dsp +44 -0
  417. cyfaust/resources/libraries/examples/filtering/cryBaby.dsp +4 -0
  418. cyfaust/resources/libraries/examples/filtering/diodeLadder.dsp +12 -0
  419. cyfaust/resources/libraries/examples/filtering/filterBank.dsp +6 -0
  420. cyfaust/resources/libraries/examples/filtering/graphicEqLab.dsp +10 -0
  421. cyfaust/resources/libraries/examples/filtering/highShelf.dsp +13 -0
  422. cyfaust/resources/libraries/examples/filtering/korg35HPF.dsp +13 -0
  423. cyfaust/resources/libraries/examples/filtering/korg35LPF.dsp +13 -0
  424. cyfaust/resources/libraries/examples/filtering/lfBoost.dsp +40 -0
  425. cyfaust/resources/libraries/examples/filtering/lowBoost.dsp +40 -0
  426. cyfaust/resources/libraries/examples/filtering/lowCut.dsp +40 -0
  427. cyfaust/resources/libraries/examples/filtering/lowShelf.dsp +13 -0
  428. cyfaust/resources/libraries/examples/filtering/moogHalfLadder.dsp +12 -0
  429. cyfaust/resources/libraries/examples/filtering/moogLadder.dsp +12 -0
  430. cyfaust/resources/libraries/examples/filtering/moogVCF.dsp +6 -0
  431. cyfaust/resources/libraries/examples/filtering/multibandFilter.dsp +14 -0
  432. cyfaust/resources/libraries/examples/filtering/notch.dsp +13 -0
  433. cyfaust/resources/libraries/examples/filtering/oberheim.dsp +14 -0
  434. cyfaust/resources/libraries/examples/filtering/oberheimBPF.dsp +13 -0
  435. cyfaust/resources/libraries/examples/filtering/oberheimBSF.dsp +13 -0
  436. cyfaust/resources/libraries/examples/filtering/oberheimHPF.dsp +13 -0
  437. cyfaust/resources/libraries/examples/filtering/oberheimLPF.dsp +13 -0
  438. cyfaust/resources/libraries/examples/filtering/parametricEqLab.dsp +10 -0
  439. cyfaust/resources/libraries/examples/filtering/parametricEqualizer.dsp +6 -0
  440. cyfaust/resources/libraries/examples/filtering/peakNotch.dsp +13 -0
  441. cyfaust/resources/libraries/examples/filtering/peakingEQ.dsp +13 -0
  442. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrder.dsp +14 -0
  443. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderBPF.dsp +13 -0
  444. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderHPF.dsp +13 -0
  445. cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderLPF.dsp +13 -0
  446. cyfaust/resources/libraries/examples/filtering/sallenKeyOnePole.dsp +13 -0
  447. cyfaust/resources/libraries/examples/filtering/sallenKeyOnePoleHPF.dsp +12 -0
  448. cyfaust/resources/libraries/examples/filtering/sallenKeyOnePoleLPF.dsp +12 -0
  449. cyfaust/resources/libraries/examples/filtering/spectralTilt.dsp +8 -0
  450. cyfaust/resources/libraries/examples/filtering/vcfWahLab.dsp +12 -0
  451. cyfaust/resources/libraries/examples/filtering/vocoder.dsp +8 -0
  452. cyfaust/resources/libraries/examples/filtering/wahPedal.dsp +6 -0
  453. cyfaust/resources/libraries/examples/gameaudio/bubble.dsp +42 -0
  454. cyfaust/resources/libraries/examples/gameaudio/door.dsp +58 -0
  455. cyfaust/resources/libraries/examples/gameaudio/fire.dsp +46 -0
  456. cyfaust/resources/libraries/examples/gameaudio/insects.dsp +148 -0
  457. cyfaust/resources/libraries/examples/gameaudio/rain.dsp +27 -0
  458. cyfaust/resources/libraries/examples/gameaudio/wind.dsp +23 -0
  459. cyfaust/resources/libraries/examples/generator/filterOsc.dsp +8 -0
  460. cyfaust/resources/libraries/examples/generator/noise.dsp +52 -0
  461. cyfaust/resources/libraries/examples/generator/noiseMetadata.dsp +74 -0
  462. cyfaust/resources/libraries/examples/generator/osc.dsp +17 -0
  463. cyfaust/resources/libraries/examples/generator/osci.dsp +17 -0
  464. cyfaust/resources/libraries/examples/generator/sawtoothLab.dsp +8 -0
  465. cyfaust/resources/libraries/examples/generator/virtualAnalog.dsp +8 -0
  466. cyfaust/resources/libraries/examples/generator/virtualAnalogLab.dsp +10 -0
  467. cyfaust/resources/libraries/examples/misc/UITester.dsp +71 -0
  468. cyfaust/resources/libraries/examples/misc/autopan.dsp +59 -0
  469. cyfaust/resources/libraries/examples/misc/capture.dsp +24 -0
  470. cyfaust/resources/libraries/examples/misc/drumkit.dsp +36 -0
  471. cyfaust/resources/libraries/examples/misc/guitarix.dsp +184 -0
  472. cyfaust/resources/libraries/examples/misc/matrix.dsp +17 -0
  473. cyfaust/resources/libraries/examples/misc/midiTester.dsp +122 -0
  474. cyfaust/resources/libraries/examples/misc/mixer.dsp +27 -0
  475. cyfaust/resources/libraries/examples/misc/statespace.dsp +39 -0
  476. cyfaust/resources/libraries/examples/misc/switcher.dsp +20 -0
  477. cyfaust/resources/libraries/examples/misc/tester.dsp +32 -0
  478. cyfaust/resources/libraries/examples/misc/tester2.dsp +31 -0
  479. cyfaust/resources/libraries/examples/old/README.md +5 -0
  480. cyfaust/resources/libraries/examples/old/freeverb.dsp +109 -0
  481. cyfaust/resources/libraries/examples/old/rewriting/Makefile +21 -0
  482. cyfaust/resources/libraries/examples/old/rewriting/fact.dsp +3 -0
  483. cyfaust/resources/libraries/examples/old/rewriting/fold.dsp +61 -0
  484. cyfaust/resources/libraries/examples/old/rewriting/mesh.dsp +43 -0
  485. cyfaust/resources/libraries/examples/old/rewriting/mesh.pd +37 -0
  486. cyfaust/resources/libraries/examples/old/rewriting/sample.pd +12 -0
  487. cyfaust/resources/libraries/examples/old/rewriting/serial.dsp +7 -0
  488. cyfaust/resources/libraries/examples/old/rewriting/sum.dsp +55 -0
  489. cyfaust/resources/libraries/examples/old/rewriting/test.pd +48 -0
  490. cyfaust/resources/libraries/examples/phasing/flanger.dsp +8 -0
  491. cyfaust/resources/libraries/examples/phasing/phaser.dsp +8 -0
  492. cyfaust/resources/libraries/examples/phasing/phaserFlangerLab.dsp +12 -0
  493. cyfaust/resources/libraries/examples/physicalModeling/brass.dsp +8 -0
  494. cyfaust/resources/libraries/examples/physicalModeling/brassMIDI.dsp +8 -0
  495. cyfaust/resources/libraries/examples/physicalModeling/churchBell.dsp +8 -0
  496. cyfaust/resources/libraries/examples/physicalModeling/clarinet.dsp +8 -0
  497. cyfaust/resources/libraries/examples/physicalModeling/clarinetMIDI.dsp +8 -0
  498. cyfaust/resources/libraries/examples/physicalModeling/djembeMIDI.dsp +8 -0
  499. cyfaust/resources/libraries/examples/physicalModeling/elecGuitarMIDI.dsp +10 -0
  500. cyfaust/resources/libraries/examples/physicalModeling/englishBell.dsp +8 -0
  501. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/NLFeks.dsp +91 -0
  502. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/NLFfm.dsp +70 -0
  503. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/README +125 -0
  504. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bass.dsp +84 -0
  505. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bass.h +91 -0
  506. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/blowBottle.dsp +102 -0
  507. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bowed.dsp +114 -0
  508. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/brass.dsp +103 -0
  509. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/clarinet.dsp +110 -0
  510. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/flute.dsp +116 -0
  511. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/fluteStk.dsp +121 -0
  512. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/glassHarmonica.dsp +131 -0
  513. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/harpsi.dsp +90 -0
  514. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/harpsichord.h +185 -0
  515. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/instrument.h +114 -0
  516. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/modalBar.dsp +122 -0
  517. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/modalBar.h +48 -0
  518. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/audio-out.pd +33 -0
  519. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/bottle.pd +10 -0
  520. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/clarinets.pd +15 -0
  521. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/audio-out.pd +33 -0
  522. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/bass.pd +162 -0
  523. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/canon.pd +55 -0
  524. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/flute.pd +343 -0
  525. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/pachelbel.mid +0 -0
  526. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/audio-out.pd +33 -0
  527. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/daisy.mid +0 -0
  528. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/daisy.pd +45 -0
  529. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/piano.pd +205 -0
  530. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/voiceForm.pd +340 -0
  531. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/audio-out.pd +33 -0
  532. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/blowHole.pd +330 -0
  533. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/piano.pd +205 -0
  534. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/take5.mid +0 -0
  535. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/take5.pd +45 -0
  536. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/audio-out.pd +33 -0
  537. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/harpsi.pd +204 -0
  538. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/turkish-march.mid +0 -0
  539. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/turkish-march.pd +31 -0
  540. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/audio-out.pd +33 -0
  541. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/bass.pd +162 -0
  542. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/modalBar.pd +258 -0
  543. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/piano.pd +205 -0
  544. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/what-a-friend.pd +52 -0
  545. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/what_a_friend.mid +0 -0
  546. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/flutes.pd +15 -0
  547. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fm.pd +10 -0
  548. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/glassBare.pd +10 -0
  549. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/harpsichord-poly.pd +10 -0
  550. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/ironBare.pd +10 -0
  551. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/midi-in.pd +111 -0
  552. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/modal.pd +10 -0
  553. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/osc.pd +26 -0
  554. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/piano-poly.pd +10 -0
  555. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/plucked.pd +20 -0
  556. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/saxophone.pd +10 -0
  557. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/tibetan.pd +10 -0
  558. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/trumpet.pd +10 -0
  559. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/violin.pd +10 -0
  560. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/voiceSynth.pd +10 -0
  561. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/woodenBare.pd +10 -0
  562. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/phonemes.h +189 -0
  563. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/piano.dsp +255 -0
  564. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/piano.h +751 -0
  565. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/saxophony.dsp +114 -0
  566. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/sitar.dsp +48 -0
  567. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/tibetanBowl.dsp +155 -0
  568. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/tunedBar.dsp +123 -0
  569. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/uniBar.dsp +100 -0
  570. cyfaust/resources/libraries/examples/physicalModeling/faust-stk/voiceForm.dsp +125 -0
  571. cyfaust/resources/libraries/examples/physicalModeling/fds/1dDampedWaveEquation.dsp +43 -0
  572. cyfaust/resources/libraries/examples/physicalModeling/fds/2dKirchhoffThinPlate.dsp +75 -0
  573. cyfaust/resources/libraries/examples/physicalModeling/fds/BowedString.dsp +61 -0
  574. cyfaust/resources/libraries/examples/physicalModeling/fds/ControllableNonPhysicalString.dsp +72 -0
  575. cyfaust/resources/libraries/examples/physicalModeling/fds/HammeredString.dsp +74 -0
  576. cyfaust/resources/libraries/examples/physicalModeling/fds/PianoHammeredString.dsp +85 -0
  577. cyfaust/resources/libraries/examples/physicalModeling/fds/StiffString.dsp +54 -0
  578. cyfaust/resources/libraries/examples/physicalModeling/flute.dsp +8 -0
  579. cyfaust/resources/libraries/examples/physicalModeling/fluteMIDI.dsp +8 -0
  580. cyfaust/resources/libraries/examples/physicalModeling/frenchBell.dsp +8 -0
  581. cyfaust/resources/libraries/examples/physicalModeling/germanBell.dsp +8 -0
  582. cyfaust/resources/libraries/examples/physicalModeling/guitarMIDI.dsp +8 -0
  583. cyfaust/resources/libraries/examples/physicalModeling/karplus.dsp +8 -0
  584. cyfaust/resources/libraries/examples/physicalModeling/marimbaMIDI.dsp +10 -0
  585. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator.dsp +58 -0
  586. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator2.dsp +62 -0
  587. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator3.dsp +65 -0
  588. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/01_ParamControl/paramOsc.dsp +63 -0
  589. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/02_AudioParamControl/audioParamOsc.dsp +63 -0
  590. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/03_HammerTime/hammerOsc.dsp +71 -0
  591. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/04_Gravity/bouncingOsc.dsp +64 -0
  592. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/05_PluckedOscillator/pluckedOsc.dsp +57 -0
  593. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/06_BowedOscillator/bowedOsc.dsp +65 -0
  594. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/07_NonLinearOscillator/nlOsc.dsp +78 -0
  595. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/08_TwoMassChain/2massChain.dsp +75 -0
  596. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/09_TinyString/tinyString.dsp +101 -0
  597. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/10_PluckedString/pluckedString.dsp +678 -0
  598. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/11_BowedString/bowedString.dsp +671 -0
  599. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/12_TriangleMesh/triangleMesh.dsp +448 -0
  600. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/13_Construction/construction.dsp +1036 -0
  601. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/14_Polyphonic/polyTriangle.dsp +79 -0
  602. cyfaust/resources/libraries/examples/physicalModeling/mi-faust/15_PhysicalLFO/physicalLFO.dsp +107 -0
  603. cyfaust/resources/libraries/examples/physicalModeling/modularInterpInstrMIDI.dsp +8 -0
  604. cyfaust/resources/libraries/examples/physicalModeling/nylonGuitarMIDI.dsp +8 -0
  605. cyfaust/resources/libraries/examples/physicalModeling/old/harpe.dsp +45 -0
  606. cyfaust/resources/libraries/examples/physicalModeling/old/karplus.dsp +34 -0
  607. cyfaust/resources/libraries/examples/physicalModeling/old/karplus32.dsp +47 -0
  608. cyfaust/resources/libraries/examples/physicalModeling/russianBell.dsp +8 -0
  609. cyfaust/resources/libraries/examples/physicalModeling/standardBell.dsp +8 -0
  610. cyfaust/resources/libraries/examples/physicalModeling/violin.dsp +8 -0
  611. cyfaust/resources/libraries/examples/physicalModeling/violinMIDI.dsp +8 -0
  612. cyfaust/resources/libraries/examples/physicalModeling/vocalBP.dsp +8 -0
  613. cyfaust/resources/libraries/examples/physicalModeling/vocalBPMIDI.dsp +8 -0
  614. cyfaust/resources/libraries/examples/physicalModeling/vocalFOF.dsp +8 -0
  615. cyfaust/resources/libraries/examples/physicalModeling/vocalFOFMIDI.dsp +8 -0
  616. cyfaust/resources/libraries/examples/pitchShifting/pitchShifter.dsp +20 -0
  617. cyfaust/resources/libraries/examples/psychoacoustic/harmonicExciter.dsp +10 -0
  618. cyfaust/resources/libraries/examples/quantizing/quantizedChords.dsp +49 -0
  619. cyfaust/resources/libraries/examples/reverb/dattorro.dsp +8 -0
  620. cyfaust/resources/libraries/examples/reverb/fdnRev.dsp +8 -0
  621. cyfaust/resources/libraries/examples/reverb/freeverb.dsp +8 -0
  622. cyfaust/resources/libraries/examples/reverb/greyhole.dsp +8 -0
  623. cyfaust/resources/libraries/examples/reverb/jprev.dsp +8 -0
  624. cyfaust/resources/libraries/examples/reverb/reverbDesigner.dsp +12 -0
  625. cyfaust/resources/libraries/examples/reverb/reverbTester.dsp +8 -0
  626. cyfaust/resources/libraries/examples/reverb/zitaRev.dsp +8 -0
  627. cyfaust/resources/libraries/examples/reverb/zitaRevFDN.dsp +8 -0
  628. cyfaust/resources/libraries/examples/smartKeyboard/acGuitar.dsp +100 -0
  629. cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/elecGuitarEffect.dsp +8 -0
  630. cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/myEffect.dsp +5 -0
  631. cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/reverb.dsp +5 -0
  632. cyfaust/resources/libraries/examples/smartKeyboard/bells.dsp +80 -0
  633. cyfaust/resources/libraries/examples/smartKeyboard/bowed.dsp +87 -0
  634. cyfaust/resources/libraries/examples/smartKeyboard/brass.dsp +82 -0
  635. cyfaust/resources/libraries/examples/smartKeyboard/clarinet.dsp +113 -0
  636. cyfaust/resources/libraries/examples/smartKeyboard/crazyGuiro.dsp +96 -0
  637. cyfaust/resources/libraries/examples/smartKeyboard/drums.dsp +74 -0
  638. cyfaust/resources/libraries/examples/smartKeyboard/dubDub.dsp +87 -0
  639. cyfaust/resources/libraries/examples/smartKeyboard/elecGuitar.dsp +67 -0
  640. cyfaust/resources/libraries/examples/smartKeyboard/fm.dsp +78 -0
  641. cyfaust/resources/libraries/examples/smartKeyboard/frog.dsp +74 -0
  642. cyfaust/resources/libraries/examples/smartKeyboard/harp.dsp +84 -0
  643. cyfaust/resources/libraries/examples/smartKeyboard/midiOnly.dsp +62 -0
  644. cyfaust/resources/libraries/examples/smartKeyboard/multiSynth.dsp +75 -0
  645. cyfaust/resources/libraries/examples/smartKeyboard/toy.dsp +71 -0
  646. cyfaust/resources/libraries/examples/smartKeyboard/trumpet.dsp +59 -0
  647. cyfaust/resources/libraries/examples/smartKeyboard/turenas.dsp +114 -0
  648. cyfaust/resources/libraries/examples/smartKeyboard/violin.dsp +91 -0
  649. cyfaust/resources/libraries/examples/smartKeyboard/violin2.dsp +84 -0
  650. cyfaust/resources/libraries/examples/smartKeyboard/vocal.dsp +43 -0
  651. cyfaust/resources/libraries/examples/spat/panpot.dsp +17 -0
  652. cyfaust/resources/libraries/examples/spat/spat.dsp +25 -0
  653. cyfaust/resources/libraries/fds.lib +535 -0
  654. cyfaust/resources/libraries/filter.lib +1710 -0
  655. cyfaust/resources/libraries/filters.lib +3125 -0
  656. cyfaust/resources/libraries/hoa.lib +1081 -0
  657. cyfaust/resources/libraries/instruments.lib +263 -0
  658. cyfaust/resources/libraries/interpolators.lib +675 -0
  659. cyfaust/resources/libraries/math.lib +602 -0
  660. cyfaust/resources/libraries/maths.lib +798 -0
  661. cyfaust/resources/libraries/maxmsp.lib +237 -0
  662. cyfaust/resources/libraries/mi.lib +528 -0
  663. cyfaust/resources/libraries/misceffects.lib +998 -0
  664. cyfaust/resources/libraries/music.lib +496 -0
  665. cyfaust/resources/libraries/noises.lib +487 -0
  666. cyfaust/resources/libraries/oscillator.lib +450 -0
  667. cyfaust/resources/libraries/oscillators.lib +1838 -0
  668. cyfaust/resources/libraries/phaflangers.lib +235 -0
  669. cyfaust/resources/libraries/physmodels.lib +3990 -0
  670. cyfaust/resources/libraries/platform.lib +59 -0
  671. cyfaust/resources/libraries/quantizers.lib +310 -0
  672. cyfaust/resources/libraries/reducemaps.lib +235 -0
  673. cyfaust/resources/libraries/reverbs.lib +686 -0
  674. cyfaust/resources/libraries/routes.lib +262 -0
  675. cyfaust/resources/libraries/sf.lib +53 -0
  676. cyfaust/resources/libraries/signals.lib +570 -0
  677. cyfaust/resources/libraries/soundfiles.lib +234 -0
  678. cyfaust/resources/libraries/spats.lib +173 -0
  679. cyfaust/resources/libraries/stdfaust.lib +38 -0
  680. cyfaust/resources/libraries/synths.lib +322 -0
  681. cyfaust/resources/libraries/tonestacks.lib +427 -0
  682. cyfaust/resources/libraries/tubes.lib +5039 -0
  683. cyfaust/resources/libraries/vaeffects.lib +984 -0
  684. cyfaust/resources/libraries/version.lib +22 -0
  685. cyfaust/resources/libraries/wdmodels.lib +2276 -0
  686. cyfaust/resources/libraries/webaudio.lib +402 -0
  687. cyfaust/signal.pxd +44 -0
  688. cyfaust/signal.pyx +1993 -0
  689. cyfaust-0.1.0.dist-info/METADATA +355 -0
  690. cyfaust-0.1.0.dist-info/RECORD +693 -0
  691. cyfaust-0.1.0.dist-info/WHEEL +5 -0
  692. cyfaust-0.1.0.dist-info/entry_points.txt +3 -0
  693. cyfaust-0.1.0.dist-info/licenses/LICENSE +26 -0
@@ -0,0 +1,947 @@
1
+ /************************************************************************
2
+
3
+ IMPORTANT NOTE : this file contains two clearly delimited sections :
4
+ the ARCHITECTURE section (in two parts) and the USER section. Each section
5
+ is governed by its own copyright and license. Please check individually
6
+ each section for license and copyright information.
7
+ *************************************************************************/
8
+
9
+ /*******************BEGIN ARCHITECTURE SECTION (part 1/2)****************/
10
+
11
+ /************************************************************************
12
+ ************************************************************************
13
+ FAUST VSTi Architecture File
14
+ Copyright (C) 2013 by Yan Michalevsy
15
+ All rights reserved.
16
+ ----------------------------BSD License------------------------------
17
+ Redistribution and use in source and binary forms, with or without
18
+ modification, are permitted provided that the following conditions
19
+ are met:
20
+
21
+ * Redistributions of source code must retain the above copyright
22
+ notice, this list of conditions and the following disclaimer.
23
+ * Redistributions in binary form must reproduce the above
24
+ copyright notice, this list of conditions and the following
25
+ disclaimer in the documentation and/or other materials provided
26
+ with the distribution.
27
+ * Neither the name of Julius Smith nor the names of its
28
+ contributors may be used to endorse or promote products derived
29
+ from this software without specific prior written permission.
30
+
31
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
34
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
35
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
36
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
37
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
39
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
41
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
42
+ OF THE POSSIBILITY OF SUCH DAMAGE.
43
+
44
+ ----------------------------VST SDK----------------------------------
45
+ In order to compile a VST (TM) plugin with this architecture file
46
+ you will need the proprietary VST SDK from Steinberg. Please check
47
+ the corresponding license.
48
+
49
+ ************************************************************************
50
+ ************************************************************************/
51
+
52
+ /********************************************************************
53
+ * vsti-poly.cpp - Polyphonic VSTi-2.4 wrapper for the FAUST language.
54
+ *
55
+ * Usage: faust -a vst.cpp myfaustprog.dsp
56
+ *
57
+ * By Yan Michalevsky (http://www.stanford.edu/~yanm2/)
58
+ * based on vsti-mono.cpp by
59
+ * Julius Smith (http://ccrma.stanford.edu/~jos/), based on vst.cpp
60
+ * by Remy Muller <remy.muller at ircam.fr>
61
+ * (http://www.smartelectronix.com/~mdsp/). Essentially, vst.cpp was
62
+ * first edited to look more like the "again" programming sample that
63
+ * comes with the VST-2.4 SDK from Steinberg. Next, features from the
64
+ * "vstxsynth" program sample were added to give simple MIDI synth
65
+ * support analogous to that of faust2pd, except that only one voice
66
+ * is supported. (If the Faust patch has any input signals, this
67
+ * architecture file should reduce to vst2p4.cpp --- i.e., basic VST
68
+ * plugin support.) As with faust2pd, to obtain MIDI control via
69
+ * NoteOn/Off, Velocity, and KeyNumber, there must be a button named
70
+ * "gate" and sliders (or numeric entries) named "gain" and "freq" in
71
+ * the Faust patch specified in myfaustprog.dsp.
72
+ *
73
+ * NOTES:
74
+ * Relies on automatically generated slider GUI for VST plugins.
75
+ * - Horizontal and vertical sliders mapped to "vstSlider"
76
+ * - Numeric Entries similarly converted to "vstSlider"
77
+ * - No support for bar graphs or additional numeric and text displays
78
+ * - Tested on the Muse Receptor Pro 1.0, System Version 1.6.20070717,
79
+ * using Visual C++ 2008 Express Edition
80
+ * (part of the Microsoft Visual Studio 2008, Beta 2)
81
+ * - Reference:
82
+ * http://ccrma.stanford.edu/realsimple/faust/Generating_VST_Plugin_Faust.html
83
+ *
84
+ * Initial work on the polyphonic VSTi architecture was done as part
85
+ * of Music 420B class in Stanford University and in summarized in
86
+ * http://stanford.edu/~yanm2/files/mus420b.pdf
87
+ *
88
+ * FAUST
89
+ * Copyright (C) 2003-2007 GRAME, Centre National de Creation Musicale
90
+ * http://www.grame.fr/
91
+ *
92
+ ********************************************************************/
93
+
94
+ // Suggestion: Faust could replace all leading comments in this file
95
+ // by the following shorter comment:
96
+
97
+ /********************************************************************
98
+ * C++ source generated by the following command line:
99
+ *
100
+ * faust -a vsti-poly.cpp name.dsp -o name-vsti.cpp
101
+ *
102
+ ********************************************************************/
103
+
104
+ // (where the filenames could be really right, and the path to vsti-poly.cpp
105
+ // could be included as well.)
106
+
107
+ #include <stdlib.h>
108
+ #include <stdlib.h>
109
+ #include <stdio.h>
110
+ #include <string.h>
111
+ #include <limits.h>
112
+ #include <math.h>
113
+ #include <errno.h>
114
+ #include <time.h>
115
+ #include <fcntl.h>
116
+ #include <assert.h>
117
+ #include <cstdio>
118
+ #include <string>
119
+ #include <cstring>
120
+ #include <algorithm>
121
+ #include <vector>
122
+ #include <map>
123
+ #include <list>
124
+
125
+ // #define DEBUG
126
+
127
+ #ifdef DEBUG
128
+ #define TRACE(x) x
129
+ #else
130
+ #define TRACE(x)
131
+ #endif
132
+
133
+ using namespace std;
134
+
135
+ struct Meta : std::map<const char*, const char*>
136
+ {
137
+ void declare(const char* key, const char* value) { (*this)[key] = value; }
138
+
139
+ const char* get(const char* key, const char* defaultString)
140
+ {
141
+ if (this->find(key) != this->end()) {
142
+ return (*this)[key];
143
+ } else {
144
+ return defaultString;
145
+ }
146
+ }
147
+ };
148
+
149
+ /******************************************************************************
150
+ *******************************************************************************
151
+ *
152
+ * VECTOR INTRINSICS
153
+ *
154
+ *******************************************************************************
155
+ *******************************************************************************/
156
+
157
+ <<includeIntrinsic>>
158
+
159
+ /******************************************************************************
160
+ *******************************************************************************
161
+ *
162
+ * USER INTERFACE
163
+ *
164
+ *******************************************************************************
165
+ *******************************************************************************/
166
+
167
+
168
+ /******************************************************************************
169
+ *******************************************************************************
170
+ *
171
+ * FAUST DSP
172
+ *
173
+ *******************************************************************************
174
+ *****************************************************************************/
175
+
176
+ #include "faust/vst/vstui.h"
177
+ #include "faust/dsp/dsp.h"
178
+
179
+ /********************END ARCHITECTURE SECTION (part 1/2)****************/
180
+
181
+ /**************************BEGIN USER SECTION **************************/
182
+
183
+ <<includeclass>>
184
+
185
+ #include "faust/vst/voice.h"
186
+
187
+ /***************************END USER SECTION ***************************/
188
+
189
+ /*******************BEGIN ARCHITECTURE SECTION (part 2/2)***************/
190
+
191
+ /*****************************************************************************
192
+ *
193
+ * VST wrapper
194
+ *
195
+ ****************************************************************************/
196
+
197
+ #include "audioeffectx.h"
198
+
199
+ ///////////////////////////////////////////////////////////////////
200
+ // Constants
201
+ ///////////////////////////////////////////////////////////////////
202
+
203
+ #define MAX_NOUTS (2)
204
+
205
+ //----------------------------------------------------------------------------
206
+ // Faust class prototype
207
+ //----------------------------------------------------------------------------
208
+ #include "faust/vst/faust.h"
209
+ /*--------------------------------------------------------------------------*/
210
+
211
+ //----------------------------------------------------------------------------
212
+ // Class Implementations
213
+ //----------------------------------------------------------------------------
214
+
215
+ #define kNumPrograms (1)
216
+
217
+ AudioEffect* createEffectInstance(audioMasterCallback audioMaster)
218
+ {
219
+ TRACE( fprintf(stderr, "Faust VSTi: Creating VST instance\n") );
220
+
221
+ // The dsp and its UI need to be allocated now because
222
+ // AudioEffectX wants the no. parameters available as an instance argument:
223
+ mydsp* dspi = new mydsp();
224
+ vstUI* dspUIi = new vstUI();
225
+ dspi->buildUserInterface(dspUIi);
226
+
227
+ TRACE( fprintf(stderr,"=== Faust vsti: created\n") ); // look for this in the system log
228
+
229
+ return new Faust(audioMaster, dspi, dspUIi);
230
+ }
231
+
232
+ //-----------------------------------------------------------------------------
233
+ // Faust
234
+ //-----------------------------------------------------------------------------
235
+ Faust::Faust(audioMasterCallback audioMaster, dsp* dspi, vstUI* dspUIi)
236
+ : AudioEffectX(audioMaster, kNumPrograms, dspUIi->GetNumParams()),
237
+ m_dsp(dspi), m_dspUI(dspUIi),
238
+ m_voices(MAX_POLYPHONY, (Voice*)NULL),
239
+ m_playingVoices(),
240
+ m_freeVoices(),
241
+ m_prevVoice(-1),
242
+ m_tempOutputs(NULL),
243
+ m_tempOutputSize(INITIAL_TEMP_OUTPUT_SIZE),
244
+ m_currentNotes(),
245
+ m_currentVelocities(),
246
+ m_currentDeltas()
247
+ {
248
+ #ifdef DEBUG
249
+ fprintf(stderr,"=== Faust vsti: classInit:\n");
250
+ #endif
251
+
252
+ mydsp::classInit((int)getSampleRate()); // Ask AudioEffect for sample-rate
253
+
254
+ setProgram(0);
255
+ setProgramName("Default");
256
+
257
+ if (audioMaster) {
258
+ setNumInputs(m_dsp->getNumInputs());
259
+ setNumOutputs(m_dsp->getNumOutputs());
260
+ canProcessReplacing();
261
+ if (m_dsp->getNumInputs() == 0) {
262
+ isSynth(); // at least let's hope so!
263
+ if (m_dsp->getNumOutputs() < 1) {
264
+ fprintf(stderr,"*** faust: vsti: No signal inputs or outputs, "
265
+ "and Faust has no MIDI outputs!\n");
266
+ }
267
+ }
268
+ const char* ID = getMetadata("id", "FAUST");
269
+ if (ID[0] == 0) {
270
+ setUniqueID(m_dspUI->makeID());
271
+ } else {
272
+ setUniqueID((ID[0]<<24)+(ID[1]<<16)+(ID[2]<<8)+ID[3]);
273
+ }
274
+ }
275
+
276
+ // Initialize all members related to polyphonic performance
277
+ TRACE( fprintf(stderr, "Faust VSTi: Initializing voices and temporary output buffers\n") );
278
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
279
+ m_voices[i] = new Voice((int)getSampleRate());
280
+ m_freeVoices.push_back(i);
281
+ }
282
+
283
+ TRACE( fprintf(stderr, "Faust VSTi: Allocating %d temporary output "
284
+ "buffers\n", m_dsp->getNumOutputs()) );
285
+ m_tempOutputs = (FAUSTFLOAT**) malloc(sizeof(FAUSTFLOAT*) * m_dsp->getNumOutputs());
286
+ for (int i = 0; i < m_dsp->getNumOutputs(); ++i) {
287
+ m_tempOutputs[i] = (FAUSTFLOAT*) malloc(sizeof(FAUSTFLOAT) * m_tempOutputSize);
288
+ }
289
+
290
+ initProcess();
291
+ if (m_dsp->getNumInputs() == 0) {
292
+ suspend(); // Synths start out quiet
293
+ }
294
+ }
295
+
296
+ //----------------------------------------------------------------------------
297
+ Faust::~Faust()
298
+ {
299
+ TRACE( fprintf(stderr, "Calling Faust VST destructor\n") );
300
+
301
+ for (int i = 0; i < m_dsp->getNumOutputs(); ++i) {
302
+ free(m_tempOutputs[i]);
303
+ }
304
+ free(m_tempOutputs);
305
+
306
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
307
+ delete m_voices[i];
308
+ m_voices[i] = NULL;
309
+ }
310
+
311
+ delete m_dspUI;
312
+ delete m_dsp;
313
+ }
314
+
315
+ //-----------------------------------------------------------------------------
316
+ void Faust::setProgram(VstInt32 program)
317
+ // Override this method of AudioEffect in order to set
318
+ // local instance variables corresponding to the current MIDI program.
319
+ // Here there is only one program.
320
+ {
321
+ if (program < 0 || program >= kNumPrograms) {
322
+ fprintf(stderr,
323
+ "*** Faust vsti: setting program to %d is OUT OF RANGE\n",
324
+ program);
325
+ return;
326
+ }
327
+
328
+ #ifdef DEBUG
329
+ fprintf(stderr,"=== Faust vsti: setting program to %d\n",program);
330
+ #endif
331
+
332
+ curProgram = program; // curProgram defined in audioeffect.h
333
+ }
334
+
335
+ //----------------------------------------------------------------------------
336
+ void Faust::setProgramName(const char* name)
337
+ {
338
+ vst_strncpy(programName, name, kVstMaxProgNameLen);
339
+ }
340
+
341
+ //----------------------------------------------------------------------------
342
+ void Faust::getProgramName(char *name)
343
+ {
344
+ vst_strncpy(name, programName, kVstMaxProgNameLen);
345
+ }
346
+
347
+ //----------------------------------------------------------------------------
348
+ void Faust::getParameterLabel(VstInt32 index, char *label)
349
+ {
350
+ const char* unit = "";
351
+ if (index < numParams) {
352
+ unit = m_dspUI->getControlMetadata(index, "unit", "");
353
+ }
354
+
355
+ vst_strncpy(label, unit, kVstMaxParamStrLen); // parameter units in Name
356
+
357
+ TRACE( fprintf(stderr, "Called getParameterLabel for parameter %d, returning %s\n",
358
+ index, label) );
359
+ }
360
+
361
+ //----------------------------------------------------------------------------
362
+ void Faust::getParameterDisplay(VstInt32 index, char *text)
363
+ {
364
+ if (index < numParams) {
365
+ m_dspUI->GetDisplay(index,text); // get displayed float value as text
366
+ } else {
367
+ vst_strncpy(text, "IndexOutOfRange", kVstMaxParamStrLen);
368
+ }
369
+ }
370
+
371
+ //----------------------------------------------------------------------------
372
+ void Faust::getParameterName(VstInt32 index, char *label)
373
+ {
374
+ if (index < numParams) {
375
+ m_dspUI->GetName(index,label); // parameter name, including units
376
+ } else {
377
+ vst_strncpy(label, "IndexOutOfRange", kVstMaxParamStrLen);
378
+ }
379
+ }
380
+
381
+ //----------------------------------------------------------------------------
382
+ bool Faust::getParameterProperties(VstInt32 index, VstParameterProperties* properties)
383
+ {
384
+ if (index < 0 || index >= m_dspUI->GetNumParams()) {
385
+ TRACE( fprintf(stderr, "Faust VSTi: Invalid parameter index %d\n",
386
+ index) );
387
+ return false;
388
+ }
389
+
390
+ TRACE( fprintf(stderr, "Faust VSTi: getParameterProperties called with index %d\n",
391
+ index) );
392
+
393
+ if (index == m_dspUI->gateIndex) {
394
+ properties->flags |= kVstParameterIsSwitch;
395
+ }
396
+
397
+ getParameterName(index, properties->label);
398
+
399
+ // TODO: set parameter range
400
+ const vstSlider* slider = dynamic_cast<const vstSlider*>(m_dspUI);
401
+ if (NULL != slider) {
402
+ // has min-max range
403
+ properties->minInteger = slider->getMinValue();
404
+ properties->maxInteger = slider->getMaxValue();
405
+ properties->stepInteger = slider->getStep();
406
+ }
407
+
408
+ return true;
409
+ }
410
+
411
+ //----------------------------------------------------------------------------
412
+ void Faust::setParameter(VstInt32 index, float value)
413
+ {
414
+ if (index >= numParams || index < 0) {
415
+ TRACE( fprintf(stderr, "Faust VSTi: Invalid parameter index %d\n",
416
+ index) );
417
+ return;
418
+ }
419
+
420
+ m_dspUI->SetValue(index, value);
421
+
422
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
423
+ TRACE( fprintf(stderr, "Setting parameter %d for voice %d to value %f\n",
424
+ index, i, value) );
425
+ m_voices[i]->SetValue(index, value);
426
+ }
427
+ }
428
+
429
+ //----------------------------------------------------------------------------
430
+ float Faust::getParameter(VstInt32 index)
431
+ {
432
+ return (index >= 0 && index < numParams) ? m_dspUI->GetValue(index) : 0.0f;
433
+ }
434
+
435
+ //-----------------------------------------------------------------------------
436
+ bool Faust::getInputProperties(VstInt32 index, VstPinProperties* properties)
437
+ {
438
+ if(index < 0 || index >= m_dsp->getNumInputs()) {
439
+ return false;
440
+ }
441
+
442
+ sprintf (properties->label, "Grame Faust DSP input: %d",index);
443
+ sprintf (properties->shortLabel, "In %d",index);
444
+ properties->flags = kVstPinIsActive;
445
+ if (m_dsp->getNumInputs() == 2) {
446
+ properties->flags |= kVstPinIsStereo;
447
+ }
448
+
449
+ return true;
450
+ }
451
+
452
+ //-----------------------------------------------------------------------------
453
+ bool Faust::getOutputProperties(VstInt32 index, VstPinProperties* properties)
454
+ {
455
+ if(index < 0 || m_dsp->getNumOutputs() < 1) {
456
+ return false;
457
+ }
458
+
459
+ sprintf (properties->label, "Grame Faust DSP output: %d",index);
460
+ sprintf (properties->shortLabel, "Out %d",index);
461
+ properties->flags = kVstPinIsActive;
462
+ if (m_dsp->getNumOutputs() == 2) {
463
+ properties->flags |= kVstPinIsStereo;
464
+ }
465
+ return true;
466
+ }
467
+
468
+ //----------------------------------------------------------------------------
469
+ bool Faust::getProgramNameIndexed(VstInt32 category, VstInt32 index,
470
+ char* text)
471
+ {
472
+ if (index < kNumPrograms) {
473
+ vst_strncpy(text, programName, kVstMaxProgNameLen);
474
+ return true;
475
+ }
476
+ return false;
477
+ }
478
+
479
+ //-----------------------------------------------------------------------------
480
+ const char* Faust::getMetadata(const char* key, const char* defaultString)
481
+ {
482
+ Meta meta;
483
+ mydsp* tmp = new mydsp;
484
+ tmp->metadata(&meta);
485
+ const char* res = meta.get(key, defaultString);
486
+ delete tmp;
487
+ return res;
488
+ }
489
+
490
+ //-----------------------------------------------------------------------------
491
+ bool Faust::getEffectName(char* name)
492
+ {
493
+ const char* effectName = getMetadata("name", "Effect Name goes here");
494
+ vst_strncpy(name, effectName, kVstMaxEffectNameLen);
495
+ return true;
496
+ }
497
+
498
+ //-----------------------------------------------------------------------------
499
+ bool Faust::getVendorString(char* text)
500
+ {
501
+ const char* vendorString = getMetadata("author", "Vendor String goes here");
502
+ vst_strncpy(text, vendorString, kVstMaxVendorStrLen);
503
+ return true;
504
+ }
505
+
506
+ //-----------------------------------------------------------------------------
507
+ bool Faust::getProductString(char* text)
508
+ {
509
+ const char* productString = getMetadata("name", "Product String goes here");
510
+ vst_strncpy (text, productString, kVstMaxProductStrLen);
511
+ return true;
512
+ }
513
+
514
+ //-----------------------------------------------------------------------------
515
+ VstInt32 Faust::getVendorVersion()
516
+ {
517
+ const char* versionString = getMetadata("version", "0.0");
518
+ return (VstInt32)atof(versionString);
519
+ }
520
+
521
+ //-----------------------------------------------------------------------------
522
+ VstInt32 Faust::canDo(const char* text)
523
+ {
524
+ if (!strcmp (text, "receiveVstEvents")) {
525
+ return 1;
526
+ }
527
+
528
+ if (!strcmp (text, "receiveVstMidiEvent")) {
529
+ return 1;
530
+ }
531
+
532
+ if (!strcmp (text, "midiProgramNames")) {
533
+ return 1;
534
+ }
535
+
536
+ return -1; // explicitly can't do; 0 => don't know
537
+ }
538
+
539
+ //----------------------------------------------------------------------------
540
+ VstInt32 Faust::getNumMidiInputChannels()
541
+ {
542
+ return 1; // one MIDI-in channel
543
+ }
544
+
545
+ //----------------------------------------------------------------------------
546
+ VstInt32 Faust::getNumMidiOutputChannels()
547
+ {
548
+ return 0; // no MIDI-outs
549
+ }
550
+
551
+ //----------------------------------------------------------------------------
552
+ VstInt32 Faust::getMidiProgramName(VstInt32 channel, MidiProgramName* mpn)
553
+ {
554
+ VstInt32 prg = mpn->thisProgramIndex;
555
+ if (prg < 0 || prg > 0) return 0;
556
+ fillProgram (channel, prg, mpn);
557
+ return 1; // we have only 1 "MIDI program"
558
+ }
559
+
560
+ //------------------------------------------------------------------------
561
+ VstInt32 Faust::getCurrentMidiProgram(VstInt32 channel, MidiProgramName* mpn)
562
+ {
563
+ // There is only one MIDI program here, so return it regardless of MIDI channel:
564
+ if (channel < 0 || channel >= 16 || !mpn) return -1;
565
+ VstInt32 prg = 0;
566
+ mpn->thisProgramIndex = prg;
567
+ fillProgram (channel, prg, mpn);
568
+ return prg;
569
+ }
570
+
571
+ //------------------------------------------------------------------------
572
+ void Faust::fillProgram(VstInt32 channel, VstInt32 prg, MidiProgramName* mpn)
573
+ // Fill mpn struct for given channel. Here there should be only one.
574
+ {
575
+ mpn->midiBankMsb = mpn->midiBankLsb = -1;
576
+ mpn->reserved = 0;
577
+ mpn->flags = 0;
578
+ vst_strncpy (mpn->name, programName, kVstMaxProgNameLen);
579
+ mpn->midiProgram = (char)prg; // prg should only be 0
580
+ mpn->parentCategoryIndex = -1;
581
+ }
582
+
583
+ //------------------------------------------------------------------------
584
+ VstInt32 Faust::getMidiProgramCategory(VstInt32 channel, MidiProgramCategory* cat)
585
+ // VST host wants to fill cat struct for given channel. We have only one category.
586
+ {
587
+ cat->parentCategoryIndex = -1; // -1:no parent category
588
+ cat->flags = 0; // reserved, none defined yet, zero.
589
+ VstInt32 category = cat->thisCategoryIndex;
590
+ vst_strncpy (cat->name, "Faust Patch", kVstMaxProgNameLen);
591
+ return 1; // one category
592
+ }
593
+
594
+ //***********************************************************************
595
+
596
+ //----------------------------------------------------------------------------
597
+ void Faust::setSampleRate(float sampleRate)
598
+ {
599
+ AudioEffect::setSampleRate(sampleRate);
600
+ m_dsp->init((int)getSampleRate()); // in case AudioEffect altered it
601
+
602
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
603
+ m_voices[i]->m_dsp.init((int)getSampleRate());
604
+ }
605
+ }
606
+
607
+ //----------------------------------------------------------------------------
608
+ void Faust::initProcess()
609
+ {
610
+ currentVelocity = currentNote = currentDelta = 0;
611
+ m_dsp->init((int)getSampleRate());
612
+
613
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
614
+ m_voices[i]->m_dsp.init((int)getSampleRate());
615
+ }
616
+ }
617
+
618
+ //----------------------------------------------------------------------------
619
+ void Faust::processReplacing(FAUSTFLOAT** inputs, FAUSTFLOAT** outputs, VstInt32 sampleFrames)
620
+ {
621
+ AVOIDDENORMALS;
622
+ #ifdef DEBUG
623
+ // fprintf(stderr,"=== Faust vsti: processReplacing . . .\n");
624
+ #endif
625
+
626
+ if (m_dsp->getNumInputs() > 0) {
627
+ // We're an effect . . . keep going:
628
+ m_dsp->compute(sampleFrames, inputs, outputs);
629
+ }
630
+ else {
631
+ // We're a synth . . .
632
+ synthProcessReplacing(inputs, outputs, sampleFrames);
633
+ }
634
+ }
635
+
636
+ //----------------------------------------------------------------------------
637
+ inline float midiToFreq(int note)
638
+ {
639
+ return 440.0f*powf(2.0f,(((float)note)-69.0f)/12.0f);
640
+ }
641
+
642
+ //----------------------------------------------------------------------------
643
+ void Faust::synthProcessReplacing(FAUSTFLOAT** inputs, FAUSTFLOAT** outputs,
644
+ VstInt32 sampleFrames)
645
+ {
646
+ float* outptr[MAX_NOUTS] = {NULL,};
647
+ int i;
648
+ int nouts = m_dsp->getNumOutputs();
649
+
650
+ if (nouts > MAX_NOUTS) {
651
+ TRACE( fprintf(stderr, "VSTi: nouts > MAX_NOUTS. Number of outputs (%d) exceeds limit. "
652
+ "Truncated to maximum.\n", nouts) );
653
+ nouts = MAX_NOUTS;
654
+ }
655
+
656
+ // we're synthesizing . . .
657
+ if (m_currentNotes.size() > 0) {
658
+ int previousDelta = 0;
659
+ while (m_currentNotes.size() > 0) { // a new note
660
+ currentDelta = m_currentDeltas.front();
661
+ // but waiting out a timestamp delay . . .
662
+ if (currentDelta >= sampleFrames) {
663
+ // start time is after this chunk
664
+ for(std::list<VstInt32>::iterator it = m_currentDeltas.begin(); it != m_currentDeltas.end(); ++it) {
665
+ *it -= sampleFrames;
666
+ }
667
+ compute(inputs, outputs, sampleFrames);
668
+ return;
669
+ }
670
+ else {
671
+ m_currentDeltas.pop_front();
672
+ currentNote = m_currentNotes.front();
673
+ m_currentNotes.pop_front();
674
+ currentVelocity = m_currentVelocities.front();
675
+ m_currentVelocities.pop_front();
676
+ if (currentVelocity > 0) { // Note on
677
+ // Reserve a free voice for the played
678
+ int currentVoice;
679
+ if (m_freeVoices.size() > 0) {
680
+ currentVoice = m_freeVoices.front();
681
+ m_freeVoices.pop_front();
682
+ struct voice_node *n = new voice_node;
683
+ n->note = currentNote;
684
+ n->voice = currentVoice;
685
+ m_playingVoices.push_back(n);
686
+ }
687
+ else {
688
+ voice_node *front = m_playingVoices.front();
689
+ currentVoice = front->voice;
690
+ float freq = midiToFreq(front->note);
691
+ m_voices[currentVoice]->setPrevFreq(freq);
692
+ front->note = currentNote;
693
+ m_playingVoices.pop_front();
694
+ m_playingVoices.push_back(front);
695
+ }
696
+ memset(outptr, 0, sizeof(outptr));
697
+ // Before the note starts
698
+ assert(nouts <= MAX_NOUTS);
699
+ for (i = 0; i < nouts; i++) {
700
+ outptr[i] = outputs[i] + previousDelta; // leaving caller's pointers alone
701
+ }
702
+ compute(inputs, outptr, currentDelta - previousDelta);
703
+ // Note start
704
+ float freq = midiToFreq(currentNote);
705
+ m_voices[currentVoice]->setFreq(freq); // Hz - requires Faust control-signal "freq"
706
+ float gain = currentVelocity/127.0f;
707
+ m_voices[currentVoice]->setGain(gain); // 0-1 - requires Faust control-signal "gain"
708
+ m_voices[currentVoice]->setGate(1.0f); // 0 or 1 - requires Faust control-signal "gate"
709
+ }
710
+ else { // Note off
711
+ // Find the voice to be turned off
712
+ int currentVoice;
713
+ bool voiceFound = false;
714
+ std::list<voice_node*>::iterator voice_iter = m_playingVoices.begin();
715
+ for (; voice_iter != m_playingVoices.end(); voice_iter++) {
716
+ if (currentNote == (*voice_iter)->note) {
717
+ currentVoice = (*voice_iter)->voice;
718
+ TRACE( fprintf(stderr, "=== Faust VSTi: Found matching voice for note %d: %d\n", currentNote, currentVoice) );
719
+ if (std::find(m_releasedVoices.begin(), m_releasedVoices.end(), currentVoice) == m_releasedVoices.end()) {
720
+ m_releasedVoices.push_back(currentVoice);
721
+ voiceFound = true;
722
+ }
723
+ }
724
+ }
725
+ memset(outptr, 0, sizeof(outptr));
726
+ // Before the note ends
727
+ for (i = 0; i < nouts; i++) {
728
+ outptr[i] = outputs[i] + previousDelta; // leaving caller's pointers alone
729
+ }
730
+ compute(inputs, outptr, currentDelta - previousDelta);
731
+ // Note end
732
+ if (voiceFound) {
733
+ m_voices[currentVoice]->setGate(0);
734
+ }
735
+ }
736
+ previousDelta = currentDelta;
737
+ }
738
+ }
739
+ memset(outptr, 0, sizeof(outptr));
740
+ // Compute the left over time
741
+ int count = sampleFrames - currentDelta;
742
+ // Left over time in chunk
743
+ for (i = 0; i < nouts; i++) {
744
+ outptr[i] = outputs[i] + currentDelta; // leaving caller's pointers alone
745
+ }
746
+ compute(inputs, outptr, count);
747
+ }
748
+ else {
749
+ compute(inputs, outputs, sampleFrames);
750
+ }
751
+
752
+ }
753
+
754
+ //----------------------------------------------------------------------------
755
+ void Faust::compute(FAUSTFLOAT** inputs, FAUSTFLOAT** outputs,
756
+ VstInt32 sampleFrames)
757
+ {
758
+ const unsigned int output_buffer_size = sizeof(FAUSTFLOAT) * sampleFrames;
759
+
760
+ // Clear the buffers
761
+ for (int i = 0; i < m_dsp->getNumOutputs(); ++i) {
762
+ for (int frame = 0; frame < sampleFrames; ++frame) {
763
+ outputs[i][frame] = 0;
764
+ }
765
+ }
766
+
767
+ if (sampleFrames > (VstInt32)m_tempOutputSize) {
768
+ // if requested number of samples to synthesize exceeds current temporary buffer
769
+ TRACE( fprintf(stderr, "Faust VSTi: Increasing temporary buffer to %d frames\n",
770
+ sampleFrames) );
771
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
772
+ m_tempOutputs[i] = (FAUSTFLOAT*) realloc(m_tempOutputs[i], output_buffer_size * m_dsp->getNumOutputs());
773
+ m_tempOutputSize = sampleFrames;
774
+ }
775
+ }
776
+
777
+ std::list<voice_node*> removed;
778
+ std::list<voice_node*>::iterator voice_iter = m_playingVoices.begin();
779
+ for(;voice_iter != m_playingVoices.end(); voice_iter++) {
780
+ int voice = (*voice_iter)->voice;
781
+ m_voices[voice]->m_dsp.compute(sampleFrames, inputs, m_tempOutputs);
782
+
783
+ bool silent = true;
784
+ // mix current voice into output
785
+ for (int i = 0; i < m_dsp->getNumOutputs(); ++i) {
786
+ for (int frame = 0; frame < sampleFrames; ++frame) {
787
+ outputs[i][frame] += m_tempOutputs[i][frame];
788
+ if (fabs(m_tempOutputs[i][frame]) > 1e-6) {
789
+ silent = false;
790
+ }
791
+ }
792
+ }
793
+ if (silent) {
794
+ std::vector<VstInt32>::iterator it;
795
+ it = std::find(m_releasedVoices.begin(), m_releasedVoices.end(), voice);
796
+ if (it != m_releasedVoices.end()) {
797
+ m_freeVoices.push_back(voice);
798
+ m_releasedVoices.erase(it);
799
+ removed.push_back(*voice_iter);
800
+ }
801
+ }
802
+ } // end of signal computation and mixdown
803
+ while (removed.size() > 0) {
804
+ std::list<voice_node*>::iterator it;
805
+ it = std::find(m_playingVoices.begin(), m_playingVoices.end(), removed.front());
806
+ float freq = midiToFreq((*it)->note);
807
+ m_voices[(*it)->voice]->setPrevFreq(freq);
808
+ free(*it);
809
+ m_playingVoices.erase(it);
810
+ removed.pop_front();
811
+ }
812
+
813
+ // normalize sample by the max polyphony
814
+ for (int i = 0; i < m_dsp->getNumOutputs(); ++i) {
815
+ for (int frame = 0; frame < sampleFrames; ++frame) {
816
+ outputs[i][frame] /= (FAUSTFLOAT)sqrt(MAX_POLYPHONY);
817
+ }
818
+ }
819
+ }
820
+
821
+ //-----------------------------------------------------------------------------
822
+ VstInt32 Faust::processEvents(VstEvents* ev)
823
+ {
824
+ if (ev->numEvents > 0) {
825
+ TRACE( fprintf(stderr,"=== Faust vsti: processEvents processing %d "
826
+ "events\n", ev->numEvents) );
827
+ }
828
+
829
+ for (VstInt32 i = 0; i < ev->numEvents; i++) {
830
+ TRACE( fprintf(stderr,"=== Faust vsti: event type = %d\n",
831
+ (ev->events[i])->type) );
832
+ if ((ev->events[i])->type != kVstMidiType) {
833
+ TRACE( fprintf(stderr,"=== Faust vsti: EVENT IGNORED!\n") );
834
+ continue;
835
+ }
836
+
837
+ VstMidiEvent* event = (VstMidiEvent*)ev->events[i];
838
+ char* midiData = event->midiData;
839
+ VstInt32 chan = midiData[0] & 0xf;
840
+ VstInt32 status = midiData[0] & 0xf0;
841
+
842
+ #ifdef DEBUG
843
+ fprintf(stderr,"\n=== Faust vsti: event->midiData[0] = 0x%x\n",
844
+ event->midiData[0]);
845
+ fprintf(stderr,"=== Faust vsti: midi channel = 0x%x\n", chan);
846
+ fprintf(stderr,"=== Faust vsti: midi status = 0x%x\n", status);
847
+ fprintf(stderr,"=== Faust vsti: event->midiData[1] = 0x%x\n",
848
+ event->midiData[1]);
849
+ fprintf(stderr,"=== Faust vsti: event->midiData[2] = 0x%x\n",
850
+ event->midiData[2]);
851
+ #endif
852
+
853
+ VstInt32 note = midiData[1] & 0x7f;
854
+
855
+ if (status == 0x90) { // note on
856
+ VstInt32 velocity = midiData[2] & 0x7f;
857
+ TRACE( fprintf(stderr,
858
+ "=== Faust vsti: note = %d, velocity = %d, delay = %d\n",
859
+ note,velocity,event->deltaFrames) );
860
+ if (velocity > 0) {
861
+ noteOn(note, velocity, event->deltaFrames);
862
+ }
863
+ else {
864
+ noteOff(note, event->deltaFrames);
865
+ }
866
+ }
867
+ else if (status == 0x80) { // note off
868
+ noteOff(note, event->deltaFrames);
869
+ // } else if (status == 0xA0) { // poly aftertouch
870
+ } else if (status == 0xB0) { // control change
871
+ /* DO SOMETHING WITH THE CONTROLLER DATA */
872
+ fprintf(stderr,"=== Faust vsti: CONTROL CHANGE (status 0xB0)!\n");
873
+ if (midiData[1] == 0x7e || midiData[1] == 0x7b) { // all notes off
874
+ fprintf(stderr,"=== Faust vsti: ALL NOTES OFF!\n");
875
+
876
+ //TODO: figure out how to signal all notes off
877
+ // why is all-notes-off inside a "control change" event?
878
+ allNotesOff();
879
+ }
880
+ }
881
+ else if (status == 0xE0) { // pitch change
882
+ int val = midiData[1] | (midiData[2] << 7);
883
+ float bend = (val - 0x2000) / 8192.0f;
884
+ bendPitch(bend);
885
+ }
886
+ // } else if (status == 0xF0) { // SYSX ...
887
+ // } else if (status == 0xC0) { // program change
888
+ // } else if (status == 0xD0) { // mono aftertouch
889
+ // For a list, see
890
+ // http://www.alfred-j-faust.de/rft/midi%20status%20types.html
891
+
892
+ TRACE( fprintf(stderr,"=== Faust vsti: Going to next event\n") );
893
+
894
+ event++;
895
+ }
896
+
897
+ return 1;
898
+ }
899
+
900
+ //----------------------------------------------------------------------------
901
+ void Faust::bendPitch(float bend)
902
+ {
903
+ TRACE( fprintf(stderr, "Bending pitch by %f\n", bend) );
904
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
905
+ m_voices[i]->setPitchBend(bend);
906
+ }
907
+ }
908
+
909
+ //----------------------------------------------------------------------------
910
+ void Faust::noteOn (VstInt32 note, VstInt32 velocity, VstInt32 delta)
911
+ {
912
+ #ifdef DEBUG
913
+ fprintf(stderr,"=== Faust vsti: noteOn: note = %d, vel = %d, del = %d\n",note,velocity,delta);
914
+ #endif
915
+ m_currentNotes.push_back(note);
916
+ m_currentVelocities.push_back(velocity);
917
+ m_currentDeltas.push_back(delta);
918
+ }
919
+
920
+ //-----------------------------------------------------------------------------
921
+ void Faust::noteOff(VstInt32 note, VstInt32 delta)
922
+ {
923
+ TRACE( fprintf(stderr,"=== Faust vsti: noteOff\n") );
924
+ m_currentNotes.push_back(note);
925
+ m_currentVelocities.push_back(0);
926
+ m_currentDeltas.push_back(delta);
927
+ } // end of nToteOff
928
+
929
+ void Faust::allNotesOff(void)
930
+ {
931
+ TRACE( fprintf(stderr, "All notes off\n") );
932
+
933
+ for (unsigned int i = 0; i < MAX_POLYPHONY; ++i) {
934
+ m_voices[i]->setGate(0);
935
+ }
936
+
937
+ std::list<voice_node*>::iterator voice_iter = m_playingVoices.begin();
938
+ for (; voice_iter != m_playingVoices.end(); voice_iter++) {
939
+ int voice = (*voice_iter)->voice;
940
+ if (std::find(m_releasedVoices.begin(), m_releasedVoices.end(), voice) == m_releasedVoices.end()) {
941
+ m_releasedVoices.push_back(voice);
942
+ }
943
+ }
944
+ }
945
+
946
+ /********************END ARCHITECTURE SECTION (part 2/2)****************/
947
+