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,810 @@
1
+ /************************** BEGIN dsp-combiner.h **************************
2
+ FAUST Architecture File
3
+ Copyright (C) 2003-2022 GRAME, Centre National de Creation Musicale
4
+ ---------------------------------------------------------------------
5
+ This program is free software; you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation; either version 2.1 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with this program; if not, write to the Free Software
17
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
+
19
+ EXCEPTION : As a special exception, you may create a larger work
20
+ that contains this FAUST architecture section and distribute
21
+ that work under terms of your choice, so long as this FAUST
22
+ architecture section is not modified.
23
+ ************************************************************************/
24
+
25
+ #ifndef __dsp_combiner__
26
+ #define __dsp_combiner__
27
+
28
+ #include <string.h>
29
+ #include <string>
30
+ #include <assert.h>
31
+ #include <sstream>
32
+
33
+ #include "faust/dsp/dsp.h"
34
+ #include "faust/gui/UI.h"
35
+
36
+ /**
37
+ * @file dsp-combiner.h
38
+ * @brief DSP Combiner Library
39
+ *
40
+ * This library provides classes for combining DSP modules.
41
+ * It includes classes for sequencing, parallelizing, splitting, merging, recursing, and crossfading DSP modules.
42
+ *
43
+ */
44
+
45
+ enum Layout { kVerticalGroup, kHorizontalGroup, kTabGroup };
46
+
47
+ /**
48
+ * @class dsp_binary_combiner
49
+ * @brief Base class and common code for binary combiners
50
+ *
51
+ * This class serves as the base class for various DSP combiners that work with two DSP modules.
52
+ * It provides common methods for building user interfaces, allocating and deleting channels, and more.
53
+ */
54
+ class dsp_binary_combiner : public dsp {
55
+
56
+ protected:
57
+
58
+ dsp* fDSP1;
59
+ dsp* fDSP2;
60
+ int fBufferSize;
61
+ Layout fLayout;
62
+ std::string fLabel;
63
+
64
+ void buildUserInterfaceAux(UI* ui_interface)
65
+ {
66
+ switch (fLayout) {
67
+ case kHorizontalGroup:
68
+ ui_interface->openHorizontalBox(fLabel.c_str());
69
+ fDSP1->buildUserInterface(ui_interface);
70
+ fDSP2->buildUserInterface(ui_interface);
71
+ ui_interface->closeBox();
72
+ break;
73
+ case kVerticalGroup:
74
+ ui_interface->openVerticalBox(fLabel.c_str());
75
+ fDSP1->buildUserInterface(ui_interface);
76
+ fDSP2->buildUserInterface(ui_interface);
77
+ ui_interface->closeBox();
78
+ break;
79
+ case kTabGroup:
80
+ ui_interface->openTabBox(fLabel.c_str());
81
+ ui_interface->openVerticalBox("DSP1");
82
+ fDSP1->buildUserInterface(ui_interface);
83
+ ui_interface->closeBox();
84
+ ui_interface->openVerticalBox("DSP2");
85
+ fDSP2->buildUserInterface(ui_interface);
86
+ ui_interface->closeBox();
87
+ ui_interface->closeBox();
88
+ break;
89
+ }
90
+ }
91
+
92
+ FAUSTFLOAT** allocateChannels(int num)
93
+ {
94
+ FAUSTFLOAT** channels = new FAUSTFLOAT*[num];
95
+ for (int chan = 0; chan < num; chan++) {
96
+ channels[chan] = new FAUSTFLOAT[fBufferSize];
97
+ memset(channels[chan], 0, sizeof(FAUSTFLOAT) * fBufferSize);
98
+ }
99
+ return channels;
100
+ }
101
+
102
+ void deleteChannels(FAUSTFLOAT** channels, int num)
103
+ {
104
+ for (int chan = 0; chan < num; chan++) {
105
+ delete [] channels[chan];
106
+ }
107
+ delete [] channels;
108
+ }
109
+
110
+ public:
111
+
112
+ dsp_binary_combiner(dsp* dsp1, dsp* dsp2, int buffer_size, Layout layout, const std::string& label)
113
+ :fDSP1(dsp1), fDSP2(dsp2), fBufferSize(buffer_size), fLayout(layout), fLabel(label)
114
+ {}
115
+
116
+ virtual ~dsp_binary_combiner()
117
+ {
118
+ delete fDSP1;
119
+ delete fDSP2;
120
+ }
121
+
122
+ virtual int getSampleRate()
123
+ {
124
+ return fDSP1->getSampleRate();
125
+ }
126
+ virtual void init(int sample_rate)
127
+ {
128
+ fDSP1->init(sample_rate);
129
+ fDSP2->init(sample_rate);
130
+ }
131
+ virtual void instanceInit(int sample_rate)
132
+ {
133
+ fDSP1->instanceInit(sample_rate);
134
+ fDSP2->instanceInit(sample_rate);
135
+ }
136
+ virtual void instanceConstants(int sample_rate)
137
+ {
138
+ fDSP1->instanceConstants(sample_rate);
139
+ fDSP2->instanceConstants(sample_rate);
140
+ }
141
+
142
+ virtual void instanceResetUserInterface()
143
+ {
144
+ fDSP1->instanceResetUserInterface();
145
+ fDSP2->instanceResetUserInterface();
146
+ }
147
+
148
+ virtual void instanceClear()
149
+ {
150
+ fDSP1->instanceClear();
151
+ fDSP2->instanceClear();
152
+ }
153
+
154
+ virtual void metadata(Meta* m)
155
+ {
156
+ fDSP1->metadata(m);
157
+ fDSP2->metadata(m);
158
+ }
159
+
160
+ };
161
+
162
+ /**
163
+ * @class dsp_sequencer
164
+ * @brief Combine two 'compatible' DSP modules in sequence
165
+ *
166
+ * This class allows you to combine two DSP modules in sequence.
167
+ * It computes the first DSP module's outputs and uses them as inputs for the second DSP module.
168
+ */
169
+ class dsp_sequencer : public dsp_binary_combiner {
170
+
171
+ private:
172
+
173
+ FAUSTFLOAT** fDSP1Outputs;
174
+
175
+ public:
176
+
177
+ dsp_sequencer(dsp* dsp1, dsp* dsp2,
178
+ int buffer_size = 4096,
179
+ Layout layout = Layout::kTabGroup,
180
+ const std::string& label = "Sequencer")
181
+ :dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
182
+ {
183
+ fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
184
+ }
185
+
186
+ virtual ~dsp_sequencer()
187
+ {
188
+ deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
189
+ }
190
+
191
+ virtual int getNumInputs() { return fDSP1->getNumInputs(); }
192
+ virtual int getNumOutputs() { return fDSP2->getNumOutputs(); }
193
+
194
+ virtual void buildUserInterface(UI* ui_interface)
195
+ {
196
+ buildUserInterfaceAux(ui_interface);
197
+ }
198
+
199
+ virtual dsp* clone()
200
+ {
201
+ return new dsp_sequencer(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
202
+ }
203
+
204
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
205
+ {
206
+ fDSP1->compute(count, inputs, fDSP1Outputs);
207
+ fDSP2->compute(count, fDSP1Outputs, outputs);
208
+ }
209
+
210
+ virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
211
+
212
+ };
213
+
214
+ /**
215
+ * @class dsp_parallelizer
216
+ * @brief Combine two DSP modules in parallel
217
+ *
218
+ * This class combines two DSP modules in parallel.
219
+ * It computes both DSP modules separately and combines their outputs.
220
+ */
221
+ class dsp_parallelizer : public dsp_binary_combiner {
222
+
223
+ private:
224
+
225
+ FAUSTFLOAT** fDSP2Inputs;
226
+ FAUSTFLOAT** fDSP2Outputs;
227
+
228
+ public:
229
+
230
+ dsp_parallelizer(dsp* dsp1, dsp* dsp2,
231
+ int buffer_size = 4096,
232
+ Layout layout = Layout::kTabGroup,
233
+ const std::string& label = "Parallelizer")
234
+ :dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
235
+ {
236
+ fDSP2Inputs = new FAUSTFLOAT*[fDSP2->getNumInputs()];
237
+ fDSP2Outputs = new FAUSTFLOAT*[fDSP2->getNumOutputs()];
238
+ }
239
+
240
+ virtual ~dsp_parallelizer()
241
+ {
242
+ delete [] fDSP2Inputs;
243
+ delete [] fDSP2Outputs;
244
+ }
245
+
246
+ virtual int getNumInputs() { return fDSP1->getNumInputs() + fDSP2->getNumInputs(); }
247
+ virtual int getNumOutputs() { return fDSP1->getNumOutputs() + fDSP2->getNumOutputs(); }
248
+
249
+ virtual void buildUserInterface(UI* ui_interface)
250
+ {
251
+ buildUserInterfaceAux(ui_interface);
252
+ }
253
+
254
+ virtual dsp* clone()
255
+ {
256
+ return new dsp_parallelizer(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
257
+ }
258
+
259
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
260
+ {
261
+ fDSP1->compute(count, inputs, outputs);
262
+
263
+ // Shift inputs/outputs channels for fDSP2
264
+ for (int chan = 0; chan < fDSP2->getNumInputs(); chan++) {
265
+ fDSP2Inputs[chan] = inputs[fDSP1->getNumInputs() + chan];
266
+ }
267
+ for (int chan = 0; chan < fDSP2->getNumOutputs(); chan++) {
268
+ fDSP2Outputs[chan] = outputs[fDSP1->getNumOutputs() + chan];
269
+ }
270
+
271
+ fDSP2->compute(count, fDSP2Inputs, fDSP2Outputs);
272
+ }
273
+
274
+ virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
275
+
276
+ };
277
+
278
+ /**
279
+ * @class dsp_splitter
280
+ * @brief Combine two 'compatible' DSP modules in a splitter
281
+ *
282
+ * This class combines two DSP modules in a splitter configuration.
283
+ * The outputs of the first DSP module are connected to the inputs of the second DSP module.
284
+ */
285
+ class dsp_splitter : public dsp_binary_combiner {
286
+
287
+ private:
288
+
289
+ FAUSTFLOAT** fDSP1Outputs;
290
+ FAUSTFLOAT** fDSP2Inputs;
291
+
292
+ public:
293
+
294
+ dsp_splitter(dsp* dsp1, dsp* dsp2,
295
+ int buffer_size = 4096,
296
+ Layout layout = Layout::kTabGroup,
297
+ const std::string& label = "Splitter")
298
+ :dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
299
+ {
300
+ fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
301
+ fDSP2Inputs = new FAUSTFLOAT*[fDSP2->getNumInputs()];
302
+ }
303
+
304
+ virtual ~dsp_splitter()
305
+ {
306
+ deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
307
+ delete [] fDSP2Inputs;
308
+ }
309
+
310
+ virtual int getNumInputs() { return fDSP1->getNumInputs(); }
311
+ virtual int getNumOutputs() { return fDSP2->getNumOutputs(); }
312
+
313
+ virtual void buildUserInterface(UI* ui_interface)
314
+ {
315
+ buildUserInterfaceAux(ui_interface);
316
+ }
317
+
318
+ virtual dsp* clone()
319
+ {
320
+ return new dsp_splitter(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
321
+ }
322
+
323
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
324
+ {
325
+ fDSP1->compute(count, inputs, fDSP1Outputs);
326
+
327
+ for (int chan = 0; chan < fDSP2->getNumInputs(); chan++) {
328
+ fDSP2Inputs[chan] = fDSP1Outputs[chan % fDSP1->getNumOutputs()];
329
+ }
330
+
331
+ fDSP2->compute(count, fDSP2Inputs, outputs);
332
+ }
333
+ };
334
+
335
+ /**
336
+ * @class dsp_merger
337
+ * @brief Combine two 'compatible' DSP modules in a merger
338
+ *
339
+ * This class combines two DSP modules in a merger configuration.
340
+ * The outputs of the first DSP module are combined with the inputs of the second DSP module.
341
+ */
342
+ class dsp_merger : public dsp_binary_combiner {
343
+
344
+ private:
345
+
346
+ FAUSTFLOAT** fDSP1Inputs;
347
+ FAUSTFLOAT** fDSP1Outputs;
348
+ FAUSTFLOAT** fDSP2Inputs;
349
+
350
+ void mix(int count, FAUSTFLOAT* dst, FAUSTFLOAT* src)
351
+ {
352
+ for (int frame = 0; frame < count; frame++) {
353
+ dst[frame] += src[frame];
354
+ }
355
+ }
356
+
357
+ public:
358
+
359
+ dsp_merger(dsp* dsp1, dsp* dsp2,
360
+ int buffer_size = 4096,
361
+ Layout layout = Layout::kTabGroup,
362
+ const std::string& label = "Merger")
363
+ :dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
364
+ {
365
+ fDSP1Inputs = allocateChannels(fDSP1->getNumInputs());
366
+ fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
367
+ fDSP2Inputs = new FAUSTFLOAT*[fDSP2->getNumInputs()];
368
+ }
369
+
370
+ virtual ~dsp_merger()
371
+ {
372
+ deleteChannels(fDSP1Inputs, fDSP1->getNumInputs());
373
+ deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
374
+ delete [] fDSP2Inputs;
375
+ }
376
+
377
+ virtual int getNumInputs() { return fDSP1->getNumInputs(); }
378
+ virtual int getNumOutputs() { return fDSP2->getNumOutputs(); }
379
+
380
+ virtual void buildUserInterface(UI* ui_interface)
381
+ {
382
+ buildUserInterfaceAux(ui_interface);
383
+ }
384
+
385
+ virtual dsp* clone()
386
+ {
387
+ return new dsp_merger(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
388
+ }
389
+
390
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
391
+ {
392
+ fDSP1->compute(count, fDSP1Inputs, fDSP1Outputs);
393
+
394
+ memset(fDSP2Inputs, 0, sizeof(FAUSTFLOAT*) * fDSP2->getNumInputs());
395
+
396
+ for (int chan = 0; chan < fDSP1->getNumOutputs(); chan++) {
397
+ int mchan = chan % fDSP2->getNumInputs();
398
+ if (fDSP2Inputs[mchan]) {
399
+ mix(count, fDSP2Inputs[mchan], fDSP1Outputs[chan]);
400
+ } else {
401
+ fDSP2Inputs[mchan] = fDSP1Outputs[chan];
402
+ }
403
+ }
404
+
405
+ fDSP2->compute(count, fDSP2Inputs, outputs);
406
+ }
407
+ };
408
+
409
+ /**
410
+ * @class dsp_recursiver
411
+ * @brief Combine two 'compatible' DSP modules in a recursive way
412
+ *
413
+ * This class recursively combines two DSP modules.
414
+ * The outputs of each module are fed as inputs to the other module in a recursive manner.
415
+ */
416
+ class dsp_recursiver : public dsp_binary_combiner {
417
+
418
+ private:
419
+
420
+ FAUSTFLOAT** fDSP1Inputs;
421
+ FAUSTFLOAT** fDSP1Outputs;
422
+
423
+ FAUSTFLOAT** fDSP2Inputs;
424
+ FAUSTFLOAT** fDSP2Outputs;
425
+
426
+ public:
427
+
428
+ dsp_recursiver(dsp* dsp1, dsp* dsp2,
429
+ Layout layout = Layout::kTabGroup,
430
+ const std::string& label = "Recursiver")
431
+ :dsp_binary_combiner(dsp1, dsp2, 1, layout, label)
432
+ {
433
+ fDSP1Inputs = allocateChannels(fDSP1->getNumInputs());
434
+ fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
435
+ fDSP2Inputs = allocateChannels(fDSP2->getNumInputs());
436
+ fDSP2Outputs = allocateChannels(fDSP2->getNumOutputs());
437
+ }
438
+
439
+ virtual ~dsp_recursiver()
440
+ {
441
+ deleteChannels(fDSP1Inputs, fDSP1->getNumInputs());
442
+ deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
443
+ deleteChannels(fDSP2Inputs, fDSP2->getNumInputs());
444
+ deleteChannels(fDSP2Outputs, fDSP2->getNumOutputs());
445
+ }
446
+
447
+ virtual int getNumInputs() { return fDSP1->getNumInputs() - fDSP2->getNumOutputs(); }
448
+ virtual int getNumOutputs() { return fDSP1->getNumOutputs(); }
449
+
450
+ virtual void buildUserInterface(UI* ui_interface)
451
+ {
452
+ buildUserInterfaceAux(ui_interface);
453
+ }
454
+
455
+ virtual dsp* clone()
456
+ {
457
+ return new dsp_recursiver(fDSP1->clone(), fDSP2->clone(), fLayout, fLabel);
458
+ }
459
+
460
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
461
+ {
462
+ for (int frame = 0; (frame < count); frame++) {
463
+
464
+ for (int chan = 0; chan < fDSP2->getNumOutputs(); chan++) {
465
+ fDSP1Inputs[chan][0] = fDSP2Outputs[chan][0];
466
+ }
467
+
468
+ for (int chan = 0; chan < fDSP1->getNumInputs() - fDSP2->getNumOutputs(); chan++) {
469
+ fDSP1Inputs[chan + fDSP2->getNumOutputs()][0] = inputs[chan][frame];
470
+ }
471
+
472
+ fDSP1->compute(1, fDSP1Inputs, fDSP1Outputs);
473
+
474
+ for (int chan = 0; chan < fDSP1->getNumOutputs(); chan++) {
475
+ outputs[chan][frame] = fDSP1Outputs[chan][0];
476
+ }
477
+
478
+ for (int chan = 0; chan < fDSP2->getNumInputs(); chan++) {
479
+ fDSP2Inputs[chan][0] = fDSP1Outputs[chan][0];
480
+ }
481
+
482
+ fDSP2->compute(1, fDSP2Inputs, fDSP2Outputs);
483
+ }
484
+ }
485
+
486
+ virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
487
+
488
+ };
489
+
490
+ /**
491
+ * @class dsp_crossfader
492
+ * @brief Crossfade between two DSP modules
493
+ *
494
+ * This class allows you to crossfade between two DSP modules.
495
+ * The crossfade parameter (as a slider) controls the mix between the two modules' outputs.
496
+ * When Crossfade = 1, the first DSP only is computed, when Crossfade = 0,
497
+ * the second DSP only is computed, otherwise both DSPs are computed and mixed.
498
+ */
499
+ class dsp_crossfader: public dsp_binary_combiner {
500
+
501
+ private:
502
+
503
+ FAUSTFLOAT fCrossfade;
504
+ FAUSTFLOAT** fDSPOutputs1;
505
+ FAUSTFLOAT** fDSPOutputs2;
506
+
507
+ public:
508
+
509
+ dsp_crossfader(dsp* dsp1, dsp* dsp2,
510
+ Layout layout = Layout::kTabGroup,
511
+ const std::string& label = "Crossfade")
512
+ :dsp_binary_combiner(dsp1, dsp2, 4096, layout, label),fCrossfade(FAUSTFLOAT(0.5))
513
+ {
514
+ fDSPOutputs1 = allocateChannels(fDSP1->getNumOutputs());
515
+ fDSPOutputs2 = allocateChannels(fDSP1->getNumOutputs());
516
+ }
517
+
518
+ virtual ~dsp_crossfader()
519
+ {
520
+ deleteChannels(fDSPOutputs1, fDSP1->getNumInputs());
521
+ deleteChannels(fDSPOutputs2, fDSP1->getNumOutputs());
522
+ }
523
+
524
+ virtual int getNumInputs() { return fDSP1->getNumInputs(); }
525
+ virtual int getNumOutputs() { return fDSP1->getNumOutputs(); }
526
+
527
+ void buildUserInterface(UI* ui_interface)
528
+ {
529
+ switch (fLayout) {
530
+ case kHorizontalGroup:
531
+ ui_interface->openHorizontalBox(fLabel.c_str());
532
+ ui_interface->addHorizontalSlider("Crossfade", &fCrossfade, FAUSTFLOAT(0.5), FAUSTFLOAT(0), FAUSTFLOAT(1), FAUSTFLOAT(0.01));
533
+ fDSP1->buildUserInterface(ui_interface);
534
+ fDSP2->buildUserInterface(ui_interface);
535
+ ui_interface->closeBox();
536
+ break;
537
+ case kVerticalGroup:
538
+ ui_interface->openVerticalBox(fLabel.c_str());
539
+ ui_interface->addHorizontalSlider("Crossfade", &fCrossfade, FAUSTFLOAT(0.5), FAUSTFLOAT(0), FAUSTFLOAT(1), FAUSTFLOAT(0.01));
540
+ fDSP1->buildUserInterface(ui_interface);
541
+ fDSP2->buildUserInterface(ui_interface);
542
+ ui_interface->closeBox();
543
+ break;
544
+ case kTabGroup:
545
+ ui_interface->openTabBox(fLabel.c_str());
546
+ ui_interface->openVerticalBox("Crossfade");
547
+ ui_interface->addHorizontalSlider("Crossfade", &fCrossfade, FAUSTFLOAT(0.5), FAUSTFLOAT(0), FAUSTFLOAT(1), FAUSTFLOAT(0.01));
548
+ ui_interface->closeBox();
549
+ ui_interface->openVerticalBox("DSP1");
550
+ fDSP1->buildUserInterface(ui_interface);
551
+ ui_interface->closeBox();
552
+ ui_interface->openVerticalBox("DSP2");
553
+ fDSP2->buildUserInterface(ui_interface);
554
+ ui_interface->closeBox();
555
+ ui_interface->closeBox();
556
+ break;
557
+ }
558
+ }
559
+
560
+ virtual dsp* clone()
561
+ {
562
+ return new dsp_crossfader(fDSP1->clone(), fDSP2->clone(), fLayout, fLabel);
563
+ }
564
+
565
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
566
+ {
567
+ if (fCrossfade == FAUSTFLOAT(1)) {
568
+ fDSP1->compute(count, inputs, outputs);
569
+ } else if (fCrossfade == FAUSTFLOAT(0)) {
570
+ fDSP2->compute(count, inputs, outputs);
571
+ } else {
572
+ // Compute each effect
573
+ fDSP1->compute(count, inputs, fDSPOutputs1);
574
+ fDSP2->compute(count, inputs, fDSPOutputs2);
575
+ // Mix between the two effects
576
+ FAUSTFLOAT gain1 = fCrossfade;
577
+ FAUSTFLOAT gain2 = FAUSTFLOAT(1) - gain1;
578
+ for (int frame = 0; (frame < count); frame++) {
579
+ for (int chan = 0; chan < fDSP1->getNumOutputs(); chan++) {
580
+ outputs[chan][frame] = fDSPOutputs1[chan][frame] * gain1 + fDSPOutputs2[chan][frame] * gain2;
581
+ }
582
+ }
583
+ }
584
+ }
585
+
586
+ virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
587
+ };
588
+
589
+ #ifndef __dsp_algebra_api__
590
+ #define __dsp_algebra_api__
591
+
592
+ /**
593
+ * DSP algebra API allowing to combine DSPs using the 5 operators Faust block algebra and an additional crossfader combiner.
594
+ * The two arguments GUI are composed in a group, either kVerticalGroup, kHorizontalGroup or kTabGroup with a label.
595
+ *
596
+ * Each operation takes two DSP and a optional layout and label parameters, returns the combined DSPs,
597
+ * or null if failure with an error message.
598
+ *
599
+ * It includes methods to create sequencers, parallelizers, splitters, mergers, recursivers, and crossfaders.
600
+ */
601
+
602
+ /**
603
+ * Create a DSP Sequencer
604
+ *
605
+ * This method creates a DSP Sequencer, which combines two DSP modules in a sequencer configuration.
606
+ * The outputs of the first DSP module are connected to the inputs of the second DSP module.
607
+ *
608
+ * @param dsp1 The first DSP module to combine
609
+ * @param dsp2 The second DSP module to combine
610
+ * @param error A reference to a string to store error messages (if any)
611
+ * @param layout The layout for the combined user interface (default: kTabGroup)
612
+ * @param label The label for the combiner (default: "Sequencer")
613
+ * @return A pointer to the created DSP Sequencer, or nullptr if an error occurs
614
+ */
615
+ static dsp* createDSPSequencer(dsp* dsp1, dsp* dsp2,
616
+ std::string& error,
617
+ Layout layout = Layout::kTabGroup,
618
+ const std::string& label = "Sequencer")
619
+ {
620
+ if (dsp1->getNumOutputs() != dsp2->getNumInputs()) {
621
+ std::stringstream error_aux;
622
+ error_aux << "Connection error in dsp_sequencer : the number of outputs ("
623
+ << dsp1->getNumOutputs() << ") of A "
624
+ << "must be equal to the number of inputs (" << dsp2->getNumInputs() << ") of B" << std::endl;
625
+ error = error_aux.str();
626
+ return nullptr;
627
+ } else {
628
+ return new dsp_sequencer(dsp1, dsp2, 4096, layout, label);
629
+ }
630
+ }
631
+
632
+ /**
633
+ * Create a DSP Parallelizer
634
+ *
635
+ * This method creates a DSP Parallelizer, which combines two DSP modules in parallel.
636
+ * The resulting DSP module computes both input modules separately and combines their outputs.
637
+ *
638
+ * @param dsp1 The first DSP module to combine
639
+ * @param dsp2 The second DSP module to combine
640
+ * @param error A reference to a string to store error messages (if any)
641
+ * @param layout The layout for the combined user interface (default: kTabGroup)
642
+ * @param label The label for the combiner (default: "Parallelizer")
643
+ * @return A pointer to the created DSP Parallelizer, or nullptr if an error occurs
644
+ */
645
+ static dsp* createDSPParallelizer(dsp* dsp1, dsp* dsp2,
646
+ std::string& error,
647
+ Layout layout = Layout::kTabGroup,
648
+ const std::string& label = "Parallelizer")
649
+ {
650
+ return new dsp_parallelizer(dsp1, dsp2, 4096, layout, label);
651
+ }
652
+
653
+ /**
654
+ * Create a DSP Splitter
655
+ *
656
+ * This method creates a DSP Splitter, which combines two 'compatible' DSP modules in a splitter configuration.
657
+ * The outputs of the first DSP module are connected to the inputs of the second DSP module.
658
+ *
659
+ * @param dsp1 The first DSP module to combine
660
+ * @param dsp2 The second DSP module to combine
661
+ * @param error A reference to a string to store error messages (if any)
662
+ * @param layout The layout for the combined user interface (default: kTabGroup)
663
+ * @param label The label for the combiner (default: "Splitter")
664
+ * @return A pointer to the created DSP Splitter, or nullptr if an error occurs
665
+ */
666
+ static dsp* createDSPSplitter(dsp* dsp1, dsp* dsp2, std::string& error, Layout layout = Layout::kTabGroup, const std::string& label = "Splitter")
667
+ {
668
+ if (dsp1->getNumOutputs() == 0) {
669
+ error = "Connection error in dsp_splitter : the first expression has no outputs\n";
670
+ return nullptr;
671
+ } else if (dsp2->getNumInputs() == 0) {
672
+ error = "Connection error in dsp_splitter : the second expression has no inputs\n";
673
+ return nullptr;
674
+ } else if (dsp2->getNumInputs() % dsp1->getNumOutputs() != 0) {
675
+ std::stringstream error_aux;
676
+ error_aux << "Connection error in dsp_splitter : the number of outputs (" << dsp1->getNumOutputs()
677
+ << ") of the first expression should be a divisor of the number of inputs ("
678
+ << dsp2->getNumInputs()
679
+ << ") of the second expression" << std::endl;
680
+ error = error_aux.str();
681
+ return nullptr;
682
+ } else if (dsp2->getNumInputs() == dsp1->getNumOutputs()) {
683
+ return new dsp_sequencer(dsp1, dsp2, 4096, layout, label);
684
+ } else {
685
+ return new dsp_splitter(dsp1, dsp2, 4096, layout, label);
686
+ }
687
+ }
688
+
689
+ /**
690
+ * Create a DSP Merger
691
+ *
692
+ * This method creates a DSP Merger, which combines two 'compatible' DSP modules in a merger configuration.
693
+ * The outputs of the first DSP module are combined with the inputs of the second DSP module.
694
+ *
695
+ * @param dsp1 The first DSP module to combine
696
+ * @param dsp2 The second DSP module to combine
697
+ * @param error A reference to a string to store error messages (if any)
698
+ * @param layout The layout for the combined user interface (default: kTabGroup)
699
+ * @param label The label for the combiner (default: "Merger")
700
+ * @return A pointer to the created DSP Merger, or nullptr if an error occurs
701
+ */
702
+ static dsp* createDSPMerger(dsp* dsp1, dsp* dsp2,
703
+ std::string& error,
704
+ Layout layout = Layout::kTabGroup,
705
+ const std::string& label = "Merger")
706
+ {
707
+ if (dsp1->getNumOutputs() == 0) {
708
+ error = "Connection error in dsp_merger : the first expression has no outputs\n";
709
+ return nullptr;
710
+ } else if (dsp2->getNumInputs() == 0) {
711
+ error = "Connection error in dsp_merger : the second expression has no inputs\n";
712
+ return nullptr;
713
+ } else if (dsp1->getNumOutputs() % dsp2->getNumInputs() != 0) {
714
+ std::stringstream error_aux;
715
+ error_aux << "Connection error in dsp_merger : the number of outputs (" << dsp1->getNumOutputs()
716
+ << ") of the first expression should be a multiple of the number of inputs ("
717
+ << dsp2->getNumInputs()
718
+ << ") of the second expression" << std::endl;
719
+ error = error_aux.str();
720
+ return nullptr;
721
+ } else if (dsp2->getNumInputs() == dsp1->getNumOutputs()) {
722
+ return new dsp_sequencer(dsp1, dsp2, 4096, layout, label);
723
+ } else {
724
+ return new dsp_merger(dsp1, dsp2, 4096, layout, label);
725
+ }
726
+ }
727
+
728
+ /**
729
+ * Create a DSP Recursiver
730
+ *
731
+ * This method creates a DSP Recursiver, which combines two 'compatible' DSP modules in a recursive way.
732
+ * The outputs of each module are fed as inputs to the other module in a recursive manner.
733
+ *
734
+ * @param dsp1 The first DSP module to combine
735
+ * @param dsp2 The second DSP module to combine
736
+ * @param error A reference to a string to store error messages (if any)
737
+ * @param layout The layout for the combined user interface (default: kTabGroup)
738
+ * @param label The label for the combiner (default: "Recursiver")
739
+ * @return A pointer to the created DSP Recursiver, or nullptr if an error occurs
740
+ */
741
+ static dsp* createDSPRecursiver(dsp* dsp1, dsp* dsp2,
742
+ std::string& error,
743
+ Layout layout = Layout::kTabGroup,
744
+ const std::string& label = "Recursiver")
745
+ {
746
+ if ((dsp2->getNumInputs() > dsp1->getNumOutputs()) || (dsp2->getNumOutputs() > dsp1->getNumInputs())) {
747
+ std::stringstream error_aux;
748
+ error_aux << "Connection error in : dsp_recursiver" << std::endl;
749
+ if (dsp2->getNumInputs() > dsp1->getNumOutputs()) {
750
+ error_aux << "The number of outputs " << dsp1->getNumOutputs()
751
+ << " of the first expression should be greater or equal to the number of inputs ("
752
+ << dsp2->getNumInputs()
753
+ << ") of the second expression" << std::endl;
754
+ }
755
+ if (dsp2->getNumOutputs() > dsp1->getNumInputs()) {
756
+ error_aux << "The number of inputs " << dsp1->getNumInputs()
757
+ << " of the first expression should be greater or equal to the number of outputs ("
758
+ << dsp2->getNumOutputs()
759
+ << ") of the second expression" << std::endl;
760
+ }
761
+ error = error_aux.str();
762
+ return nullptr;
763
+ } else {
764
+ return new dsp_recursiver(dsp1, dsp2, layout, label);
765
+ }
766
+ }
767
+
768
+ /**
769
+ * Create a DSP Crossfader
770
+ *
771
+ * This method creates a DSP Crossfader, which allows you to crossfade between two DSP modules.
772
+ * The crossfade parameter (as a slider) controls the mix between the two modules' outputs.
773
+ * When Crossfade = 1, the first DSP only is computed, when Crossfade = 0,
774
+ * the second DSP only is computed, otherwise both DSPs are computed and mixed.
775
+ *
776
+ * @param dsp1 The first DSP module to combine
777
+ * @param dsp2 The second DSP module to combine
778
+ * @param error A reference to a string to store error messages (if any)
779
+ * @param layout The layout for the combined user interface (default: kTabGroup)
780
+ * @param label The label for the crossfade slider (default: "Crossfade")
781
+ * @return A pointer to the created DSP Crossfader, or nullptr if an error occurs
782
+ */
783
+ static dsp* createDSPCrossfader(dsp* dsp1, dsp* dsp2,
784
+ std::string& error,
785
+ Layout layout = Layout::kTabGroup,
786
+ const std::string& label = "Crossfade")
787
+ {
788
+ if (dsp1->getNumInputs() != dsp2->getNumInputs()) {
789
+ std::stringstream error_aux;
790
+ error_aux << "Error in dsp_crossfader : the number of inputs ("
791
+ << dsp1->getNumInputs() << ") of A "
792
+ << "must be equal to the number of inputs (" << dsp2->getNumInputs() << ") of B" << std::endl;
793
+ error = error_aux.str();
794
+ return nullptr;
795
+ } else if (dsp1->getNumOutputs() != dsp2->getNumOutputs()) {
796
+ std::stringstream error_aux;
797
+ error_aux << "Error in dsp_crossfader : the number of outputs ("
798
+ << dsp1->getNumOutputs() << ") of A "
799
+ << "must be equal to the number of outputs (" << dsp2->getNumOutputs() << ") of B" << std::endl;
800
+ error = error_aux.str();
801
+ return nullptr;
802
+ } else {
803
+ return new dsp_crossfader(dsp1, dsp2, layout, label);
804
+ }
805
+ }
806
+
807
+ #endif
808
+
809
+ #endif
810
+ /************************** END dsp-combiner.h **************************/