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,942 @@
1
+ /************************************************************************
2
+ IMPORTANT NOTE : this file contains two clearly delimited sections :
3
+ the ARCHITECTURE section (in two parts) and the USER section. Each section
4
+ is governed by its own copyright and license. Please check individually
5
+ each section for license and copyright information.
6
+ *************************************************************************/
7
+
8
+ /*******************BEGIN ARCHITECTURE SECTION (part 1/2)****************/
9
+
10
+ /************************************************************************
11
+ FAUST Architecture File
12
+ Copyright (C) 2020 GRAME, Centre National de Creation Musicale
13
+ ---------------------------------------------------------------------
14
+ This Architecture section is free software; you can redistribute it
15
+ and/or modify it under the terms of the GNU General Public License
16
+ as published by the Free Software Foundation; either version 3 of
17
+ the License, or (at your option) any later version.
18
+
19
+ This program is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ GNU General Public License for more details.
23
+
24
+ You should have received a copy of the GNU General Public License
25
+ along with this program; If not, see <http://www.gnu.org/licenses/>.
26
+
27
+ EXCEPTION : As a special exception, you may create a larger work
28
+ that contains this FAUST architecture section and distribute
29
+ that work under terms of your choice, so long as this FAUST
30
+ architecture section is not modified.
31
+
32
+ ************************************************************************
33
+ ************************************************************************/
34
+
35
+ // #include "faust/dsp/dsp.h"
36
+ // dsp.h file is included and dsp file is renamed to rack_dsp to avoid namespace conflicts. Then 'faust -scn rack_dsp' is used in faust2vcvrack.
37
+
38
+ #include <string>
39
+ #include <vector>
40
+ #include <algorithm>
41
+ #include <functional>
42
+ #include <iostream>
43
+ #include <assert.h>
44
+
45
+ // Rack needed ressources
46
+ #include <rack.hpp>
47
+ using namespace rack;
48
+ static Plugin* pluginInstance;
49
+
50
+ #ifndef FAUSTFLOAT
51
+ #define FAUSTFLOAT float
52
+ #endif
53
+
54
+ #ifdef _WIN32
55
+ typedef unsigned int uint
56
+ #endif
57
+
58
+ /*
59
+ // Pixels are just a weird unit, defined by VCV Rack as 1/75 inches, or 0.338(6) mm
60
+ */
61
+
62
+ using namespace std;
63
+
64
+ struct UI;
65
+ struct Meta;
66
+
67
+ /**
68
+ * Signal processor definition.
69
+ */
70
+
71
+ class rack_dsp {
72
+
73
+ public:
74
+
75
+ rack_dsp() {}
76
+ virtual ~rack_dsp() {}
77
+
78
+ virtual int getNumInputs() = 0;
79
+ virtual int getNumOutputs() = 0;
80
+ virtual void buildUserInterface(UI* ui_interface) = 0;
81
+ virtual int getSampleRate() = 0;
82
+ virtual void init(int sample_rate) = 0;
83
+ virtual void instanceInit(int sample_rate) = 0;
84
+ virtual void instanceConstants(int sample_rate) = 0;
85
+ virtual void instanceResetUserInterface() = 0;
86
+ virtual void instanceClear() = 0;
87
+ virtual rack_dsp* clone() = 0;
88
+ virtual void metadata(Meta* m) = 0;
89
+ virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) = 0;
90
+ virtual void compute(double /*date_usec*/, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
91
+
92
+ };
93
+
94
+ template <typename REAL>
95
+ struct one_sample_dsp : public rack_dsp {
96
+
97
+ int* iZone;
98
+ REAL* fZone;
99
+
100
+ one_sample_dsp()
101
+ :iZone(nullptr), fZone(nullptr)
102
+ {}
103
+
104
+ one_sample_dsp(int* icontrol, REAL* fcontrol)
105
+ :iZone(icontrol), fZone(fcontrol)
106
+ {
107
+ assert(false);
108
+ }
109
+
110
+ virtual ~one_sample_dsp()
111
+ {
112
+ delete [] iZone;
113
+ delete [] fZone;
114
+ }
115
+
116
+ void initControl()
117
+ {
118
+ iZone = new int[getNumIntControls()];
119
+ fZone = new FAUSTFLOAT[getNumRealControls()];
120
+ }
121
+
122
+ virtual int getNumIntControls() = 0;
123
+ virtual int getNumRealControls() = 0;
124
+
125
+ virtual void control(int* iControl, REAL* fControl) = 0;
126
+
127
+ virtual void compute(FAUSTFLOAT* inputs, FAUSTFLOAT* outputs, int* iControl, REAL* fControl) = 0;
128
+
129
+ virtual void compute(int count, FAUSTFLOAT** inputs_aux, FAUSTFLOAT** outputs_aux)
130
+ {}
131
+
132
+ virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
133
+ {
134
+ compute(count, inputs, outputs);
135
+ }
136
+
137
+ };
138
+
139
+ #include "faust/gui/DecoratorUI.h"
140
+ #include "faust/gui/MapUI.h"
141
+ #include "faust/gui/LayoutUI.h"
142
+ #include "faust/gui/ValueConverter.h"
143
+ #include "faust/misc.h"
144
+ #include "plugin.hpp"
145
+
146
+ #ifdef SOUNDFILE
147
+ #include "faust/gui/SoundUI.h"
148
+ #endif
149
+
150
+ // params = [buttons][entries][bargraph]
151
+
152
+ // A class to count items of each type.
153
+ // Parameters with the "CV:N" metadata are kept separately in fInputCV and fOutputCV
154
+ // and will be connected to audio CV inputs and outputs.
155
+
156
+ struct ManagerUI : public GenericUI
157
+ {
158
+ enum UIType {
159
+ kButton,
160
+ kCheckbox,
161
+ kVSlider,
162
+ kHSlider,
163
+ kNumEntry,
164
+ kVBargraph,
165
+ kHBargraph,
166
+ kNotype
167
+ };
168
+
169
+ struct UIItem {
170
+ std::string fLabel;
171
+ float fWidth = 0.f;
172
+ float fHight = 0.f;
173
+ UIType fType = kNotype;
174
+ FAUSTFLOAT fInit;
175
+ FAUSTFLOAT fMin;
176
+ FAUSTFLOAT fMax;
177
+ UIItem(const std::string& label,
178
+ FAUSTFLOAT init,
179
+ FAUSTFLOAT fmin,
180
+ FAUSTFLOAT fmax,
181
+ UIType type)
182
+ :fLabel(label), fType(type), fInit(init), fMin(fmin), fMax(fmax)
183
+ {}
184
+ };
185
+
186
+ std::vector<UIItem> fButtons;
187
+ std::vector<UIItem> fRanges;
188
+ std::vector<UIItem> fBargraph;
189
+ std::vector<UIItem> fInputCV;
190
+ std::vector<UIItem> fOutputCV;
191
+
192
+ std::string fCV;
193
+
194
+ void addRange(const char* label,
195
+ FAUSTFLOAT init,
196
+ FAUSTFLOAT min,
197
+ FAUSTFLOAT max,
198
+ UIType type)
199
+ {
200
+ if (fCV != "") {
201
+ fInputCV.push_back(UIItem(label, init, min, max, type));
202
+ fCV = "";
203
+ } else {
204
+ fRanges.push_back(UIItem(label, init, min, max, type));
205
+ }
206
+ }
207
+
208
+ void addBargraph(const char* label,
209
+ FAUSTFLOAT min,
210
+ FAUSTFLOAT max,
211
+ UIType type)
212
+ {
213
+ if (fCV != "") {
214
+ fOutputCV.push_back(UIItem(label, 0, min, max, type));
215
+ fCV = "";
216
+ } else {
217
+ fBargraph.push_back(UIItem(label, 0, min, max, type));
218
+ }
219
+ }
220
+
221
+ // External API
222
+ void openTabBox(const char* label) {}
223
+ void openHorizontalBox(const char* label) {}
224
+ void openVerticalBox(const char* label) {}
225
+ void closeBox() {}
226
+
227
+ void addButton(const char* label, FAUSTFLOAT* zone)
228
+ {
229
+ if (fCV != "") {
230
+ fInputCV.push_back(UIItem(label, 0, 1, 0, kButton));
231
+ fCV = "";
232
+ } else {
233
+ fButtons.push_back(UIItem(label, 0, 1, 0, kButton));
234
+ }
235
+ }
236
+ void addCheckButton(const char* label, FAUSTFLOAT* zone)
237
+ {
238
+ if (fCV != "") {
239
+ fInputCV.push_back(UIItem(label, 0, 1, 0, kCheckbox));
240
+ fCV = "";
241
+ } else {
242
+ fButtons.push_back(UIItem(label, 0, 1, 0, kCheckbox));
243
+ }
244
+ }
245
+
246
+ void addVerticalSlider(const char* label,
247
+ FAUSTFLOAT* zone,
248
+ FAUSTFLOAT init,
249
+ FAUSTFLOAT min,
250
+ FAUSTFLOAT max,
251
+ FAUSTFLOAT step)
252
+ {
253
+ addRange(label, init, min, max, kVSlider);
254
+ }
255
+ void addHorizontalSlider(const char* label,
256
+ FAUSTFLOAT* zone,
257
+ FAUSTFLOAT init,
258
+ FAUSTFLOAT min,
259
+ FAUSTFLOAT max,
260
+ FAUSTFLOAT step)
261
+ {
262
+ addRange(label, init, min, max, kHSlider);
263
+ }
264
+ void addNumEntry(const char* label,
265
+ FAUSTFLOAT* zone,
266
+ FAUSTFLOAT init,
267
+ FAUSTFLOAT min,
268
+ FAUSTFLOAT max,
269
+ FAUSTFLOAT step)
270
+ {
271
+ addRange(label, init, min, max, kNumEntry);
272
+ }
273
+
274
+ void addHorizontalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
275
+ {
276
+ addBargraph(label, min, max, kHBargraph);
277
+ }
278
+ void addVerticalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
279
+ {
280
+ addBargraph(label, min, max, kVBargraph);
281
+ }
282
+
283
+ void declare(FAUSTFLOAT* zone, const char* key, const char* val)
284
+ {
285
+ if (std::string(key) == "CV" || std::string(key) == "cv") {
286
+ fCV = val;
287
+ }
288
+ }
289
+ };
290
+
291
+ // UI handler for switches, knobs and lights
292
+ template <int VOICES>
293
+ struct RackUI : public GenericUI
294
+ {
295
+ typedef function<void(Module* module)> updateFunction;
296
+
297
+ std::vector<ConverterZoneControl*> fConverters;
298
+ std::vector<updateFunction> fUpdateFunIn;
299
+ std::vector<updateFunction> fUpdateFunOut;
300
+
301
+ ManagerUI fParams;
302
+ std::string fScale, fCV;
303
+
304
+ int fButtonsCounter = 0;
305
+ int fParamsCounter = 0;
306
+ int fBargraphCounter = 0;
307
+ int fCurVoice = -1;
308
+
309
+ int parseIndex(const std::string& value)
310
+ {
311
+ try {
312
+ return stoi(value);
313
+ } catch (invalid_argument& e) {
314
+ return -1;
315
+ }
316
+ }
317
+
318
+ RackUI(const ManagerUI& counter):fParams(counter), fScale("lin")
319
+ {}
320
+
321
+ virtual ~RackUI()
322
+ {
323
+ for (const auto& it : fConverters) delete it;
324
+ }
325
+
326
+ void reset()
327
+ {
328
+ fButtonsCounter = 0;
329
+ fParamsCounter = 0;
330
+ fBargraphCounter = 0;
331
+ fScale = "lin";
332
+ fCV = "";
333
+ }
334
+
335
+ void addButton(const char* label, FAUSTFLOAT* zone)
336
+ {
337
+ if (fCV != "") {
338
+ int index = parseIndex(fCV)-1;
339
+ if (index < 0) {
340
+ WARN("Incorrect index");
341
+ return;
342
+ }
343
+
344
+ // Capture current voice
345
+ int voice = fCurVoice;
346
+ fUpdateFunIn.push_back([=] (Module* module)
347
+ {
348
+ float cv = (VOICES == 1) ? module->inputs[index].getVoltage() : module->inputs[index].getVoltage(voice);
349
+ *zone = cv/10.f;
350
+ });
351
+
352
+ fCV = "";
353
+ } else {
354
+ // Takes the value at lambda contruction time
355
+ int index = fButtonsCounter;
356
+ fUpdateFunIn.push_back([=] (Module* module)
357
+ {
358
+ // 'buttons' start at 0
359
+ *zone = module->params[index].getValue()/10.f;
360
+ });
361
+ fButtonsCounter++;
362
+ }
363
+ }
364
+
365
+ void addCheckButton(const char* label, FAUSTFLOAT* zone)
366
+ {
367
+ addButton(label, zone);
368
+ }
369
+
370
+ void addVerticalSlider(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
371
+ {
372
+ addNumEntry(label, zone, init, min, max, step);
373
+ }
374
+
375
+ void addHorizontalSlider(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
376
+ {
377
+ addNumEntry(label, zone, init, min, max, step);
378
+ }
379
+
380
+ void addNumEntry(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
381
+ {
382
+ ConverterZoneControl* converter;
383
+
384
+ if (fCV != "") {
385
+
386
+ int index = parseIndex(fCV)-1;
387
+ if (index < 0) {
388
+ WARN("Incorrect index");
389
+ return;
390
+ }
391
+
392
+ // Capture current voice
393
+ int voice = fCurVoice;
394
+
395
+ if (MapUI::endsWith(label, "freq")) {
396
+
397
+ converter = new ConverterZoneControl(zone, new ValueConverter());
398
+ fUpdateFunIn.push_back([=] (Module* module)
399
+ {
400
+ float cv = (VOICES == 1) ? module->inputs[index].getVoltage() : module->inputs[index].getVoltage(voice);
401
+ float freq = 440.f * std::pow(2.f, (cv - 0.75f));
402
+ // Receive a 1V/oct pitch signal of the last held MIDI note: https://vcvrack.com/manual/Core#midi-cv
403
+ converter->update(freq);
404
+ });
405
+
406
+ } else if (MapUI::endsWith(label, "gate")) {
407
+
408
+ converter = new ConverterZoneControl(zone, new ValueConverter());
409
+ fUpdateFunIn.push_back([=] (Module* module)
410
+ {
411
+ float cv = (VOICES == 1) ? module->inputs[index].getVoltage() : module->inputs[index].getVoltage(voice);
412
+ // Receive a 10V signal when a key is held: https://vcvrack.com/manual/Core#midi-cv
413
+ converter->update(cv/10.f);
414
+ });
415
+
416
+
417
+ } else if (MapUI::endsWith(label, "gain")) {
418
+
419
+ converter = new ConverterZoneControl(zone, new ValueConverter());
420
+ fUpdateFunIn.push_back([=] (Module* module)
421
+ {
422
+ float cv = (VOICES == 1) ? module->inputs[index].getVoltage() : module->inputs[index].getVoltage(voice);
423
+ // Receive a signal from 0V to 10V for the velocity: https://vcvrack.com/manual/Core#midi-cv
424
+ converter->update(cv/10.f);
425
+ });
426
+
427
+ } else {
428
+ if (fScale == "log") {
429
+ converter = new ConverterZoneControl(zone, new LogValueConverter(-5, 5, min, max));
430
+ } else if (fScale == "exp") {
431
+ converter = new ConverterZoneControl(zone, new ExpValueConverter(-5, 5, min, max));
432
+ } else {
433
+ converter = new ConverterZoneControl(zone, new LinearValueConverter(-5, 5, min, max));
434
+ }
435
+
436
+ fUpdateFunIn.push_back([=] (Module* module)
437
+ {
438
+ float cv = (VOICES == 1) ? module->inputs[index].getVoltage() : module->inputs[index].getVoltage(voice);
439
+ converter->update(cv);
440
+ });
441
+ }
442
+
443
+ fCV = "";
444
+ } else {
445
+
446
+ if (fScale == "log") {
447
+ converter = new ConverterZoneControl(zone, new LogValueConverter(min, max, min, max));
448
+ } else if (fScale == "exp") {
449
+ converter = new ConverterZoneControl(zone, new ExpValueConverter(min, max, min, max));
450
+ } else {
451
+ converter = new ConverterZoneControl(zone, new ValueConverter());
452
+ }
453
+
454
+ // Takes the value at lambda contruction time
455
+ int index = fParamsCounter;
456
+ fUpdateFunIn.push_back([=] (Module* module)
457
+ {
458
+ // 'nentries' start at fParams.fButtons.size()
459
+ converter->update(module->params[index + fParams.fButtons.size()].getValue());
460
+ });
461
+ fScale = "lin";
462
+ fParamsCounter++;
463
+ }
464
+ fConverters.push_back(converter);
465
+ }
466
+
467
+ void addBarGraph(FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
468
+ {
469
+ ConverterZoneControl* converter;
470
+
471
+ if (fCV != "") {
472
+
473
+ if (fScale == "log") {
474
+ converter = new ConverterZoneControl(zone, new LogValueConverter(-5, 5, min, max));
475
+ } else if (fScale == "exp") {
476
+ converter = new ConverterZoneControl(zone, new ExpValueConverter(-5, 5, min, max));
477
+ } else {
478
+ converter = new ConverterZoneControl(zone, new LinearValueConverter(-5, 5, min, max));
479
+ }
480
+
481
+ int index = parseIndex(fCV)-1;
482
+ if (index < 0) {
483
+ WARN("Incorrect index");
484
+ return;
485
+ }
486
+
487
+ int voice = fCurVoice;
488
+ fUpdateFunOut.push_back([=] (Module* module)
489
+ {
490
+ if (VOICES == 1) {
491
+ module->outputs[index].setVoltage(converter->getConverter()->faust2ui(*zone));
492
+ } else {
493
+ module->outputs[index].setVoltage(voice, converter->getConverter()->faust2ui(*zone));
494
+ }
495
+ });
496
+ fCV = "";
497
+ } else {
498
+
499
+ if (fScale == "log") {
500
+ converter = new ConverterZoneControl(zone, new LogValueConverter(0., 1., min, max));
501
+ } else if (fScale == "exp") {
502
+ converter = new ConverterZoneControl(zone, new ExpValueConverter(0., 1., min, max));
503
+ } else {
504
+ converter = new ConverterZoneControl(zone, new LinearValueConverter(0., 1., min, max));
505
+ }
506
+
507
+ // Takes the value at lambda contruction time
508
+ int index = fBargraphCounter;
509
+
510
+ fUpdateFunOut.push_back([=] (Module* module) {
511
+ module->lights[index].setBrightness(converter->getConverter()->faust2ui(*zone));
512
+ });
513
+ fBargraphCounter++;
514
+ }
515
+
516
+ fConverters.push_back(converter);
517
+ fScale = "lin";
518
+ }
519
+
520
+ void addHorizontalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
521
+ {
522
+ addBarGraph(zone, min, max);
523
+ }
524
+
525
+ void addVerticalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
526
+ {
527
+ addBarGraph(zone, min, max);
528
+ }
529
+
530
+ void declare(FAUSTFLOAT* zone, const char* key, const char* val)
531
+ {
532
+ if (std::string(key) == "scale") {
533
+ fScale = val;
534
+ } else if (std::string(key) == "CV" || std::string(key) == "cv") {
535
+ fCV = val;
536
+ }
537
+ }
538
+
539
+ void updateInputs(Module* module)
540
+ {
541
+ for (const auto& it : fUpdateFunIn) it(module);
542
+ }
543
+
544
+ void updateOutputs(Module* module)
545
+ {
546
+ for (const auto& it : fUpdateFunOut) it(module);
547
+ }
548
+ };
549
+
550
+ /******************************************************************************
551
+ *******************************************************************************
552
+
553
+ VECTOR INTRINSICS
554
+
555
+ *******************************************************************************
556
+ *******************************************************************************/
557
+
558
+ <<includeIntrinsic>>
559
+
560
+ /********************END ARCHITECTURE SECTION (part 1/2)****************/
561
+
562
+ /**************************BEGIN USER SECTION **************************/
563
+
564
+ <<includeclass>>
565
+
566
+ /***************************END USER SECTION ***************************/
567
+
568
+ /*******************BEGIN ARCHITECTURE SECTION (part 2/2)***************/
569
+
570
+ #define CONTROL_RATE_HZ 100
571
+ #define DEFAULT_SR 44100
572
+
573
+ template <int VOICES>
574
+ struct mydspModule : Module {
575
+
576
+ LayoutUI fLayoutUI;
577
+ RackUI<VOICES>* fRackUI; // One single version for all VOICES
578
+ mydsp fDSP[VOICES];
579
+ int fControlCounter;
580
+ #ifdef SOUNDFILE
581
+ SoundUI* fSoundUI;
582
+ #endif
583
+ mydspModule()
584
+ {
585
+ // Count items of button, nentry, bargraph categories
586
+ ManagerUI params;
587
+ fDSP[0].buildUserInterface(&params);
588
+ #ifdef SOUNDFILE
589
+ fSoundUI = new SoundUI(rack::asset::plugin(pluginInstance, "res/"));
590
+ #endif
591
+ // Controllers are connected to all VOICES
592
+ fRackUI = new RackUI<VOICES>(params);
593
+ for (int v = 0; v < VOICES; v++) {
594
+ fRackUI->fCurVoice = v;
595
+ fDSP[v].buildUserInterface(fRackUI);
596
+ fRackUI->reset();
597
+ #ifdef SOUNDFILE
598
+ fDSP[v].buildUserInterface(fSoundUI);
599
+ #endif
600
+ }
601
+
602
+ uint buttons = params.fButtons.size();
603
+ uint entries = params.fRanges.size();
604
+ uint bargraphs = params.fBargraph.size();
605
+ uint inputCV = params.fInputCV.size();
606
+ uint outputCV = params.fOutputCV.size();
607
+
608
+ // Config: by default we allocate complete set of parameters, even if all of them are not 'connected' using metadata
609
+ config(buttons + entries, inputCV + fDSP[0].getNumInputs(), outputCV + fDSP[0].getNumOutputs(), bargraphs);
610
+
611
+ // Setup buttons
612
+ for (uint pa = 0; pa < buttons; pa++) {
613
+ configParam(pa, 0.f, 1.f, 0.f, "");
614
+ }
615
+ // Setup range params min/max/init values
616
+ for (uint pa = 0; pa < entries; pa++) {
617
+ configParam(pa + buttons, params.fRanges[pa].fMin, params.fRanges[pa].fMax, params.fRanges[pa].fInit, "");
618
+ }
619
+
620
+ for (int v = 0; v < VOICES; v++) {
621
+ // Init control zones
622
+ fDSP[v].initControl();
623
+ // Init DSP with default SR
624
+ fDSP[v].init(DEFAULT_SR);
625
+ }
626
+
627
+ // So that control update will be done at first cycle
628
+ fControlCounter = 1;
629
+
630
+ // Set items minimal size
631
+ gItemSize.kVSliderWidth = 20.0;
632
+ gItemSize.kVSliderHeight = 20.0;
633
+
634
+ gItemSize.kHSliderWidth = 20.0;
635
+ gItemSize.kHSliderHeight = 20.0;
636
+
637
+ gItemSize.kButtonWidth = 20.0;
638
+ gItemSize.kButtonHeight = 20.0;
639
+
640
+ gItemSize.kCheckButtonWidth = 20.0;
641
+ gItemSize.kCheckButtonWidth = 20.0;
642
+ }
643
+
644
+ ~mydspModule()
645
+ {
646
+ delete fRackUI;
647
+ #ifdef SOUNDFILE
648
+ delete fSoundUI;
649
+ #endif
650
+ }
651
+
652
+ void process(const ProcessArgs& args) override
653
+ {
654
+ // Possibly update SR
655
+ if (args.sampleRate != fDSP[0].getSampleRate()) {
656
+ for (int v = 0; v < VOICES; v++) {
657
+ fDSP[v].init(args.sampleRate);
658
+ }
659
+ }
660
+
661
+ // Update control and inputs controllers at CONTROL_RATE_HZ
662
+ if (--fControlCounter == 0) {
663
+ // DSP Control
664
+ for (int v = 0; v < VOICES; v++) {
665
+ fDSP[v].control(fDSP[v].iZone, fDSP[v].fZone);
666
+ }
667
+ // Controller update
668
+ fRackUI->updateInputs(this);
669
+ }
670
+
671
+ // Setup polyphony for CV inputs
672
+ uint inputsCV = fRackUI->fParams.fInputCV.size();
673
+ for (uint chan = 0; chan < inputsCV; chan++) {
674
+ inputs[chan].setChannels(VOICES);
675
+ }
676
+
677
+ // Setup polyphony for audio inputs (shifted by inputsCV in 'inputs' struct)
678
+ for (int chan = 0; chan < fDSP[0].getNumInputs(); chan++) {
679
+ inputs[chan + inputsCV].setChannels(VOICES);
680
+ }
681
+
682
+ // Setup polyphony for CV outputs
683
+ uint outputsCV = fRackUI->fParams.fOutputCV.size();
684
+ for (uint chan = 0; chan < outputsCV; chan++) {
685
+ outputs[chan].setChannels(VOICES);
686
+ }
687
+
688
+ // Setup polyphony for audio outputs (shifted by outputsCV in 'outputs' struct)
689
+ for (int chan = 0; chan < fDSP[0].getNumOutputs(); chan++) {
690
+ outputs[chan + outputsCV].setChannels(VOICES);
691
+ }
692
+
693
+ FAUSTFLOAT* inputs_aux = static_cast<FAUSTFLOAT*>(alloca(fDSP[0].getNumInputs() * sizeof(FAUSTFLOAT)));
694
+ FAUSTFLOAT* outputs_aux = static_cast<FAUSTFLOAT*>(alloca(fDSP[0].getNumOutputs() * sizeof(FAUSTFLOAT)));
695
+
696
+ // Compute all VOICES
697
+ for (int v = 0; v < VOICES; v++) {
698
+
699
+ // Copy inputs
700
+ for (int chan = 0; chan < fDSP[0].getNumInputs(); chan++) {
701
+ inputs_aux[chan] = ((VOICES == 1) ? inputs[chan + inputsCV].getVoltageSum() : inputs[chan + inputsCV].getVoltage(v))/5.0f;
702
+ }
703
+
704
+ // One sample compute
705
+ fDSP[v].compute(inputs_aux, outputs_aux, fDSP[v].iZone, fDSP[v].fZone);
706
+
707
+ // Copy outputs
708
+ for (int chan = 0; chan < fDSP[0].getNumOutputs(); chan++) {
709
+ outputs[chan + outputsCV].setVoltage(outputs_aux[chan]*5.0f, v);
710
+ }
711
+ }
712
+
713
+ // Update output controllers at CONTROL_RATE_HZ
714
+ if (fControlCounter == 0) {
715
+ fRackUI->updateOutputs(this);
716
+ fControlCounter = args.sampleRate/CONTROL_RATE_HZ;
717
+ }
718
+ }
719
+
720
+ void getMinimumSize(float& width, float& height)
721
+ {
722
+ // Set items minimal size
723
+ gItemSize.kHSliderWidth = 50.0;
724
+ gItemSize.kVSliderWidth = 50.0;
725
+
726
+ gItemSize.kButtonWidth = 50.0;
727
+ gItemSize.kButtonHeight = 50.0;
728
+
729
+ // Prepare layout
730
+ fDSP[0].buildUserInterface(&fLayoutUI);
731
+
732
+ cout << "==========================" << endl;
733
+ for (const auto& it : fLayoutUI.fPathItemMap) {
734
+ cout << it.first << endl;
735
+ cout << it.second << endl;
736
+ }
737
+
738
+ cout << "Width " << fLayoutUI.fCurrentGroup->getWidth() << endl;
739
+ cout << "Height " << fLayoutUI.fCurrentGroup->getHeight() << endl;
740
+
741
+ width = fLayoutUI.fCurrentGroup->getWidth();
742
+ height = fLayoutUI.fCurrentGroup->getHeight();
743
+ }
744
+
745
+ void setSize(float x_pos, float y_pos, float width, float height)
746
+ {
747
+ fLayoutUI.fCurrentGroup->setSize(width, height);
748
+ fLayoutUI.fCurrentGroup->setPos(x_pos, y_pos);
749
+
750
+ cout << "==========================" << endl;
751
+ for (const auto& it : fLayoutUI.fPathItemMap) {
752
+ cout << it.first << endl;
753
+ cout << it.second << endl;
754
+ }
755
+
756
+ cout << "Width " << fLayoutUI.fCurrentGroup->getWidth() << endl;
757
+ cout << "Height " << fLayoutUI.fCurrentGroup->getHeight() << endl;
758
+ }
759
+
760
+ };
761
+
762
+ // Draw a opaque background color
763
+ struct FaustBackgroundWidget : widget::Widget {
764
+
765
+ std::shared_ptr<Font> fFont;
766
+
767
+ FaustBackgroundWidget(std::shared_ptr<Font> font)
768
+ {
769
+ fFont = font;
770
+ }
771
+
772
+ void draw(const DrawArgs& args) override {
773
+ nvgBeginPath(args.vg);
774
+ nvgRect(args.vg, 0, 0, box.size.x, box.size.y);
775
+ // nvgRGB(234,88,15)); // Faust orange color
776
+ nvgFillColor(args.vg, nvgRGB(254,108,35)); // Faust orange color + 20 white
777
+ nvgFill(args.vg);
778
+ }
779
+
780
+ };
781
+
782
+ template <int VOICES>
783
+ struct mydspModuleWidget : ModuleWidget {
784
+
785
+ std::shared_ptr<Font> fFont;
786
+
787
+ void addBackground(int width, int height)
788
+ {
789
+ // Default size
790
+ box.size.x = width;
791
+ box.size.y = height;
792
+ FaustBackgroundWidget* wd = new FaustBackgroundWidget(fFont);
793
+ wd->setSize(Vec(box.size.x, box.size.y));
794
+ addChild(wd);
795
+
796
+ // General title
797
+ addLabel(Vec(width/2.0 - 32, 10.0), "Faust", 20);
798
+
799
+ addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, 0)));
800
+ addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, 0)));
801
+ addChild(createWidget<ScrewSilver>(Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
802
+ addChild(createWidget<ScrewSilver>(Vec(box.size.x - 2 * RACK_GRID_WIDTH, RACK_GRID_HEIGHT - RACK_GRID_WIDTH)));
803
+ }
804
+
805
+ mydspModuleWidget(mydspModule<VOICES>* module) {
806
+
807
+ //fFont = APP->window->loadFont(asset::plugin(pluginInstance, "res/Lato-HairlineItalic.ttf"));
808
+ bndSetFont(0);
809
+ setModule(module);
810
+
811
+ // Set a large SVG
812
+ //setPanel(APP->window->loadSvg(asset::plugin(pluginInstance, "res/FaustModule.svg")));
813
+
814
+ // Module is null at plugins selection step, so we cannot create the final GUI at that time
815
+ if (module) {
816
+
817
+ // Compute available size by removing space for CV inputs/outputs and audio inputs/outputs
818
+ uint buttons = module->fRackUI->fParams.fButtons.size();
819
+ uint nentries = module->fRackUI->fParams.fRanges.size();
820
+ uint bargraphs = module->fRackUI->fParams.fBargraph.size();
821
+ uint inputsCV = module->fRackUI->fParams.fInputCV.size();
822
+ uint outputsCV = module->fRackUI->fParams.fOutputCV.size();
823
+
824
+ float item_width = 18;
825
+ float item_height = 20;
826
+
827
+ /*
828
+ uint reserved_height = ((inputsCV > 0) ? 10 : 0)
829
+ + ((outputsCV > 0) ? 10 : 0)
830
+ + ((module->fDSP[0].getNumInputs() > 0) ? 10 : 0)
831
+ + ((module->fDSP[0].getNumOutputs() > 0) ? 10 : 0);
832
+ */
833
+
834
+ vector<int> items = { 2, int(bargraphs), int(buttons), int(nentries), module->fDSP[0].getNumInputs(), module->fDSP[0].getNumOutputs() };
835
+ sort(items.begin(), items.end(), greater<int>());
836
+ int needed_width = mm2px(items[0] * item_width);
837
+ addBackground(std::max(int(RACK_GRID_WIDTH), int(needed_width)), RACK_GRID_HEIGHT);
838
+
839
+ /*
840
+ // TODO
841
+
842
+ // Get UI minimum size
843
+ float minimal_width, minimal_height;
844
+ module->getMinimumSize(minimal_width, minimal_height);
845
+
846
+ // Then prepare the size of UI params
847
+ module->setSize(5.f, 5.f, minimal_width, 100 - reserved_height);
848
+
849
+ // Add params
850
+ //addLabel(mm2px(Vec(6, 10.0)), "Params");
851
+ */
852
+
853
+ // Add buttons
854
+ for (uint pa = 0; pa < buttons; pa++) {
855
+ std::string label = module->fRackUI->fParams.fButtons[pa].fLabel;
856
+ if (module->fRackUI->fParams.fButtons[pa].fType == ManagerUI::UIType::kButton) {
857
+ addParam(createParamCentered<BefacoPush>(mm2px(Vec(8.0 + pa * item_width, item_height)), module, pa));
858
+ } else {
859
+ addParam(createParamCentered<CKSS>(mm2px(Vec(8.0 + pa * item_width, item_height)), module, pa));
860
+ }
861
+ addLabel(mm2px(Vec(0.0 + pa * item_width, item_height + 5.0)), label);
862
+ }
863
+
864
+ // Add ranges (sliders, nentry)
865
+ for (uint pa = 0; pa < nentries; pa++) {
866
+ std::string label = module->fRackUI->fParams.fRanges[pa].fLabel;
867
+ addParam(createParamCentered<RoundBlackKnob>(mm2px(Vec(8.0 + pa * item_width, item_height * 2)), module, pa + buttons));
868
+ addLabel(mm2px(Vec(0.0 + pa * item_width, item_height * 2 + 5.0)), label);
869
+ }
870
+
871
+ // Add bargraph
872
+ for (uint pa = 0; pa < bargraphs; pa++) {
873
+ std::string label = module->fRackUI->fParams.fBargraph[pa].fLabel;
874
+ addChild(createLightCentered<LargeLight<RedLight>>(mm2px(Vec(8.0 + pa * item_width, item_height * 3)), module, pa));
875
+ addLabel(mm2px(Vec(0.0 + pa * item_width, item_height * 3 + 5.0)), label);
876
+ }
877
+
878
+ // Add CV inputs
879
+ if (inputsCV > 0) {
880
+ addLabel(mm2px(Vec(0.0, 55.0)), "Inputs CV");
881
+ for (uint chan = 0; chan < inputsCV; chan++) {
882
+ addInput(createInputCentered<PJ301MPort>(mm2px(Vec(8.0 + chan * 15, 66.0)), module, chan));
883
+ }
884
+ }
885
+
886
+ // Add audio inputs (shifted by inputsCV in 'inputs' struct)
887
+ if (module->fDSP[0].getNumInputs() > 0) {
888
+ addLabel(mm2px(Vec(0.0, 72.0)), "Inputs");
889
+ for (int chan = 0; chan < module->fDSP[0].getNumInputs(); chan++) {
890
+ addInput(createInputCentered<PJ301MPort>(mm2px(Vec(8.0 + chan * 15, 83.0)), module, inputsCV + chan));
891
+ }
892
+ }
893
+
894
+ // Add CV outputs
895
+ if (outputsCV > 0) {
896
+ addLabel(mm2px(Vec(0.0, 89.0)), "Outputs CV");
897
+ for (uint chan = 0; chan < outputsCV; chan++) {
898
+ addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(8.0 + chan * 15, 100.0)), module, chan));
899
+ }
900
+ }
901
+
902
+ // Add outputs (shifted by outputsCV in 'outputs' struct)
903
+ if (module->fDSP[0].getNumOutputs() > 0) {
904
+ addLabel(mm2px(Vec(0.0, 106.0)), "Outputs");
905
+ for (int chan = 0; chan < module->fDSP[0].getNumOutputs(); chan++) {
906
+ addOutput(createOutputCentered<PJ301MPort>(mm2px(Vec(8.0 + chan * 15, 117.0)), module, outputsCV + chan));
907
+ }
908
+ }
909
+ } else {
910
+ addBackground(RACK_GRID_WIDTH * 5, RACK_GRID_HEIGHT);
911
+ }
912
+ }
913
+
914
+ // TODO: use nvgText
915
+ // https://community.vcvrack.com/t/advanced-nanovg-custom-label/6769
916
+ // https://www.1001fonts.com
917
+ Label* addLabel(const Vec& v, const std::string& str, float fontSize = 13)
918
+ {
919
+ NVGcolor black = nvgRGB(0,0,0);
920
+ Label* label = new Label();
921
+ label->box.pos = v;
922
+ label->text = str;
923
+ label->color = black;
924
+ label->fontSize = fontSize;
925
+ //label->alignment = rack::ui::Label::RIGHT_ALIGNMENT;
926
+ addChild(label);
927
+ return label;
928
+ }
929
+
930
+ };
931
+
932
+ // Create and init plugin
933
+ Model* modelFaustModule = createModel<mydspModule<NVOICES>, mydspModuleWidget<NVOICES> >("mydsp");
934
+
935
+ void init(Plugin* p)
936
+ {
937
+ pluginInstance = p;
938
+ // Add modules here
939
+ p->addModel(modelFaustModule);
940
+ }
941
+
942
+ /********************END ARCHITECTURE SECTION (part 2/2)****************/