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,939 @@
1
+ /************************** BEGIN MidiUI.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 FAUST_MIDIUI_H
26
+ #define FAUST_MIDIUI_H
27
+
28
+ #include <vector>
29
+ #include <string>
30
+ #include <utility>
31
+ #include <cstdlib>
32
+ #include <cmath>
33
+
34
+ #include "faust/dsp/dsp.h"
35
+ #include "faust/gui/meta.h"
36
+ #include "faust/gui/GUI.h"
37
+ #include "faust/gui/JSONUI.h"
38
+ #include "faust/gui/MapUI.h"
39
+ #include "faust/gui/MetaDataUI.h"
40
+ #include "faust/midi/midi.h"
41
+ #include "faust/gui/ValueConverter.h"
42
+
43
+ #ifdef _MSC_VER
44
+ #define gsscanf sscanf_s
45
+ #else
46
+ #define gsscanf sscanf
47
+ #endif
48
+
49
+ /**
50
+ * Helper code for MIDI meta and polyphonic 'nvoices' parsing.
51
+ */
52
+ struct MidiMeta : public Meta, public std::map<std::string, std::string> {
53
+
54
+ void declare(const char* key, const char* value)
55
+ {
56
+ (*this)[key] = value;
57
+ }
58
+
59
+ const std::string get(const char* key, const char* def)
60
+ {
61
+ return (this->find(key) != this->end()) ? (*this)[key] : def;
62
+ }
63
+
64
+ static void analyse(dsp* mono_dsp, bool& midi_sync, int& nvoices)
65
+ {
66
+ JSONUI jsonui;
67
+ mono_dsp->buildUserInterface(&jsonui);
68
+ std::string json = jsonui.JSON();
69
+ midi_sync = ((json.find("midi") != std::string::npos) &&
70
+ ((json.find("start") != std::string::npos) ||
71
+ (json.find("stop") != std::string::npos) ||
72
+ (json.find("clock") != std::string::npos) ||
73
+ (json.find("timestamp") != std::string::npos)));
74
+
75
+ #if defined(NVOICES) && NVOICES!=NUM_VOICES
76
+ nvoices = NVOICES;
77
+ #else
78
+ MidiMeta meta;
79
+ mono_dsp->metadata(&meta);
80
+ bool found_voices = false;
81
+ // If "options" metadata is used
82
+ std::string options = meta.get("options", "");
83
+ if (options != "") {
84
+ std::map<std::string, std::string> metadata;
85
+ std::string res;
86
+ MetaDataUI::extractMetadata(options, res, metadata);
87
+ if (metadata.find("nvoices") != metadata.end()) {
88
+ nvoices = std::atoi(metadata["nvoices"].c_str());
89
+ found_voices = true;
90
+ }
91
+ }
92
+ // Otherwise test for "nvoices" metadata
93
+ if (!found_voices) {
94
+ std::string numVoices = meta.get("nvoices", "0");
95
+ nvoices = std::atoi(numVoices.c_str());
96
+ }
97
+ nvoices = std::max<int>(0, nvoices);
98
+ #endif
99
+ }
100
+
101
+ static bool checkPolyphony(dsp* mono_dsp)
102
+ {
103
+ MapUI map_ui;
104
+ mono_dsp->buildUserInterface(&map_ui);
105
+ bool has_freq = false;
106
+ bool has_gate = false;
107
+ bool has_gain = false;
108
+ for (int i = 0; i < map_ui.getParamsCount(); i++) {
109
+ std::string path = map_ui.getParamAddress(i);
110
+ has_freq |= MapUI::endsWith(path, "/freq");
111
+ has_freq |= MapUI::endsWith(path, "/key");
112
+ has_gate |= MapUI::endsWith(path, "/gate");
113
+ has_gain |= MapUI::endsWith(path, "/gain");
114
+ has_gain |= MapUI::endsWith(path, "/vel");
115
+ has_gain |= MapUI::endsWith(path, "/velocity");
116
+ }
117
+ return (has_freq && has_gate && has_gain);
118
+ }
119
+
120
+ };
121
+
122
+ /**
123
+ * uiMidi : Faust User Interface
124
+ * This class decodes MIDI meta data and maps incoming MIDI messages to them.
125
+ * Currently ctrlChange, keyOn/keyOff, keyPress, progChange, chanPress, pitchWheel/pitchBend
126
+ * start/stop/clock meta data is handled.
127
+ * MIDI channel is numbered in [1..16] in this layer.
128
+ * Channel 0 means "all channels" when receiving or sending.
129
+ */
130
+ class uiMidi {
131
+
132
+ friend class MidiUI;
133
+
134
+ protected:
135
+
136
+ midi* fMidiOut;
137
+ bool fInputCtrl;
138
+ int fChan;
139
+
140
+ bool inRange(FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT v) { return (min <= v && v <= max); }
141
+
142
+ public:
143
+
144
+ uiMidi(midi* midi_out, bool input, int chan = 0):fMidiOut(midi_out), fInputCtrl(input), fChan(chan)
145
+ {}
146
+ virtual ~uiMidi()
147
+ {}
148
+
149
+ };
150
+
151
+ /**
152
+ * Base class for MIDI aware UI items.
153
+ */
154
+ class uiMidiItem : public uiMidi, public uiItem {
155
+
156
+ public:
157
+
158
+ uiMidiItem(midi* midi_out, GUI* ui, FAUSTFLOAT* zone, bool input = true, int chan = 0)
159
+ :uiMidi(midi_out, input, chan), uiItem(ui, zone)
160
+ {}
161
+ virtual ~uiMidiItem()
162
+ {}
163
+
164
+ virtual void reflectZone() {}
165
+
166
+ };
167
+
168
+ /**
169
+ * Base class for MIDI aware UI items with timestamp support.
170
+ */
171
+ class uiMidiTimedItem : public uiMidi, public uiTimedItem {
172
+
173
+ public:
174
+
175
+ uiMidiTimedItem(midi* midi_out, GUI* ui, FAUSTFLOAT* zone, bool input = true, int chan = 0)
176
+ :uiMidi(midi_out, input, chan), uiTimedItem(ui, zone)
177
+ {}
178
+ virtual ~uiMidiTimedItem()
179
+ {}
180
+
181
+ virtual void reflectZone() {}
182
+
183
+ };
184
+
185
+ /**
186
+ * MIDI sync.
187
+ */
188
+ class uiMidiStart : public uiMidiTimedItem
189
+ {
190
+
191
+ public:
192
+
193
+ uiMidiStart(midi* midi_out, GUI* ui, FAUSTFLOAT* zone, bool input = true)
194
+ :uiMidiTimedItem(midi_out, ui, zone, input)
195
+ {}
196
+ virtual ~uiMidiStart()
197
+ {}
198
+
199
+ virtual void reflectZone()
200
+ {
201
+ FAUSTFLOAT v = *fZone;
202
+ fCache = v;
203
+ if (v != FAUSTFLOAT(0)) {
204
+ fMidiOut->startSync(0);
205
+ }
206
+ }
207
+ void modifyZone(double date, FAUSTFLOAT v)
208
+ {
209
+ if (fInputCtrl) {
210
+ uiItem::modifyZone(FAUSTFLOAT(v));
211
+ }
212
+ }
213
+
214
+ };
215
+
216
+ class uiMidiStop : public uiMidiTimedItem {
217
+
218
+ public:
219
+
220
+ uiMidiStop(midi* midi_out, GUI* ui, FAUSTFLOAT* zone, bool input = true)
221
+ :uiMidiTimedItem(midi_out, ui, zone, input)
222
+ {}
223
+ virtual ~uiMidiStop()
224
+ {}
225
+
226
+ virtual void reflectZone()
227
+ {
228
+ FAUSTFLOAT v = *fZone;
229
+ fCache = v;
230
+ if (v != FAUSTFLOAT(1)) {
231
+ fMidiOut->stopSync(0);
232
+ }
233
+ }
234
+
235
+ void modifyZone(double date, FAUSTFLOAT v)
236
+ {
237
+ if (fInputCtrl) {
238
+ uiItem::modifyZone(FAUSTFLOAT(v));
239
+ }
240
+ }
241
+ };
242
+
243
+ class uiMidiClock : public uiMidiTimedItem {
244
+
245
+ private:
246
+
247
+ bool fState;
248
+
249
+ public:
250
+
251
+ uiMidiClock(midi* midi_out, GUI* ui, FAUSTFLOAT* zone, bool input = true)
252
+ :uiMidiTimedItem(midi_out, ui, zone, input), fState(false)
253
+ {}
254
+ virtual ~uiMidiClock()
255
+ {}
256
+
257
+ virtual void reflectZone()
258
+ {
259
+ FAUSTFLOAT v = *fZone;
260
+ fCache = v;
261
+ fMidiOut->clock(0);
262
+ }
263
+
264
+ void modifyZone(double date, FAUSTFLOAT v)
265
+ {
266
+ if (fInputCtrl) {
267
+ fState = !fState;
268
+ uiMidiTimedItem::modifyZone(date, FAUSTFLOAT(fState));
269
+ }
270
+ }
271
+
272
+ };
273
+
274
+ /**
275
+ * Standard MIDI events.
276
+ */
277
+
278
+ /**
279
+ * uiMidiProgChange uses the [min...max] range.
280
+ */
281
+ class uiMidiProgChange : public uiMidiTimedItem {
282
+
283
+ public:
284
+
285
+ FAUSTFLOAT fMin, fMax;
286
+
287
+ uiMidiProgChange(midi* midi_out, GUI* ui, FAUSTFLOAT* zone,
288
+ FAUSTFLOAT min, FAUSTFLOAT max,
289
+ bool input = true, int chan = 0)
290
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan), fMin(min), fMax(max)
291
+ {}
292
+ virtual ~uiMidiProgChange()
293
+ {}
294
+
295
+ virtual void reflectZone()
296
+ {
297
+ FAUSTFLOAT v = *fZone;
298
+ fCache = v;
299
+ if (inRange(fMin, fMax, v)) {
300
+ if (fChan == 0) {
301
+ // Send on [0..15] channels on the MIDI layer
302
+ for (int chan = 0; chan < 16; chan++) {
303
+ fMidiOut->progChange(chan, v);
304
+ }
305
+ } else {
306
+ fMidiOut->progChange(fChan - 1, v);
307
+ }
308
+ }
309
+ }
310
+
311
+ void modifyZone(FAUSTFLOAT v)
312
+ {
313
+ if (fInputCtrl && inRange(fMin, fMax, v)) {
314
+ uiItem::modifyZone(v);
315
+ }
316
+ }
317
+
318
+ void modifyZone(double date, FAUSTFLOAT v)
319
+ {
320
+ if (fInputCtrl && inRange(fMin, fMax, v)) {
321
+ uiMidiTimedItem::modifyZone(date, v);
322
+ }
323
+ }
324
+
325
+ };
326
+
327
+ /**
328
+ * uiMidiChanPress.
329
+ */
330
+ class uiMidiChanPress : public uiMidiTimedItem, public uiConverter {
331
+
332
+ public:
333
+
334
+ uiMidiChanPress(midi* midi_out, GUI* ui,
335
+ FAUSTFLOAT* zone,
336
+ FAUSTFLOAT min, FAUSTFLOAT max,
337
+ bool input = true,
338
+ MetaDataUI::Scale scale = MetaDataUI::kLin,
339
+ int chan = 0)
340
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan), uiConverter(scale, 0., 127., min, max)
341
+ {}
342
+ virtual ~uiMidiChanPress()
343
+ {}
344
+
345
+ virtual void reflectZone()
346
+ {
347
+ FAUSTFLOAT v = *fZone;
348
+ fCache = v;
349
+ int conv = std::round(fConverter->faust2ui(v));
350
+ if (fChan == 0) {
351
+ // Send on [0..15] channels on the MIDI layer
352
+ for (int chan = 0; chan < 16; chan++) {
353
+ fMidiOut->chanPress(chan, conv);
354
+ }
355
+ } else {
356
+ fMidiOut->chanPress(fChan - 1, conv);
357
+ }
358
+ }
359
+
360
+ void modifyZone(FAUSTFLOAT v)
361
+ {
362
+ if (fInputCtrl) {
363
+ uiItem::modifyZone(FAUSTFLOAT(fConverter->ui2faust(v)));
364
+ }
365
+ }
366
+
367
+ void modifyZone(double date, FAUSTFLOAT v)
368
+ {
369
+ if (fInputCtrl) {
370
+ uiMidiTimedItem::modifyZone(date, FAUSTFLOAT(fConverter->ui2faust(v)));
371
+ }
372
+ }
373
+
374
+ };
375
+
376
+ /**
377
+ * uiMidiCtrlChange does scale (kLin/kLog/kExp) mapping.
378
+ */
379
+ class uiMidiCtrlChange : public uiMidiTimedItem, public uiConverter {
380
+
381
+ private:
382
+
383
+ int fCtrl;
384
+
385
+ public:
386
+
387
+ uiMidiCtrlChange(midi* midi_out, int ctrl, GUI* ui,
388
+ FAUSTFLOAT* zone,
389
+ FAUSTFLOAT min, FAUSTFLOAT max,
390
+ bool input = true,
391
+ MetaDataUI::Scale scale = MetaDataUI::kLin,
392
+ int chan = 0)
393
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan), uiConverter(scale, 0., 127., min, max), fCtrl(ctrl)
394
+ {}
395
+ virtual ~uiMidiCtrlChange()
396
+ {}
397
+
398
+ virtual void reflectZone()
399
+ {
400
+ FAUSTFLOAT v = *fZone;
401
+ fCache = v;
402
+ int conv = std::round(fConverter->faust2ui(v));
403
+ if (fChan == 0) {
404
+ // Send on [0..15] channels on the MIDI layer
405
+ for (int chan = 0; chan < 16; chan++) {
406
+ fMidiOut->ctrlChange(chan, fCtrl, conv);
407
+ }
408
+ } else {
409
+ fMidiOut->ctrlChange(fChan - 1, fCtrl, conv);
410
+ }
411
+ }
412
+
413
+ void modifyZone(FAUSTFLOAT v)
414
+ {
415
+ if (fInputCtrl) {
416
+ uiItem::modifyZone(FAUSTFLOAT(fConverter->ui2faust(v)));
417
+ }
418
+ }
419
+
420
+ void modifyZone(double date, FAUSTFLOAT v)
421
+ {
422
+ if (fInputCtrl) {
423
+ uiMidiTimedItem::modifyZone(date, FAUSTFLOAT(fConverter->ui2faust(v)));
424
+ }
425
+ }
426
+ };
427
+
428
+ // Use a two segments linear converter
429
+ class uiMidiPitchWheel : public uiMidiTimedItem {
430
+
431
+ private:
432
+
433
+ LinearValueConverter2 fConverter;
434
+
435
+ public:
436
+
437
+ uiMidiPitchWheel(midi* midi_out, GUI* ui, FAUSTFLOAT* zone,
438
+ FAUSTFLOAT min, FAUSTFLOAT max,
439
+ bool input = true, int chan = 0)
440
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan)
441
+ {
442
+ if (min <= 0 && max >= 0) {
443
+ fConverter = LinearValueConverter2(0., 8191., 16383., double(min), 0., double(max));
444
+ } else {
445
+ // Degenerated case...
446
+ fConverter = LinearValueConverter2(0., 8191., 16383., double(min),double(min + (max - min)/FAUSTFLOAT(2)), double(max));
447
+ }
448
+ }
449
+
450
+ virtual ~uiMidiPitchWheel()
451
+ {}
452
+
453
+ virtual void reflectZone()
454
+ {
455
+ FAUSTFLOAT v = *fZone;
456
+ fCache = v;
457
+ int conv = std::round(fConverter.faust2ui(v));
458
+ if (fChan == 0) {
459
+ // Send on [0..15] channels on the MIDI layer
460
+ for (int chan = 0; chan < 16; chan++) {
461
+ fMidiOut->pitchWheel(chan, conv);
462
+ }
463
+ } else {
464
+ fMidiOut->pitchWheel(fChan - 1, conv);
465
+ }
466
+ }
467
+
468
+ void modifyZone(FAUSTFLOAT v)
469
+ {
470
+ if (fInputCtrl) {
471
+ uiItem::modifyZone(FAUSTFLOAT(fConverter.ui2faust(v)));
472
+ }
473
+ }
474
+
475
+ void modifyZone(double date, FAUSTFLOAT v)
476
+ {
477
+ if (fInputCtrl) {
478
+ uiMidiTimedItem::modifyZone(FAUSTFLOAT(fConverter.ui2faust(v)));
479
+ }
480
+ }
481
+
482
+ void setRange(int val)
483
+ {
484
+ double semi = (val / 128) + ((val % 128) / 100.);
485
+ fConverter.setMappingValues(0., 8191., 16383., -semi, 0., semi);
486
+ }
487
+
488
+ };
489
+
490
+ /**
491
+ * uiMidiKeyOn does scale (kLin/kLog/kExp) mapping for velocity.
492
+ */
493
+ class uiMidiKeyOn : public uiMidiTimedItem, public uiConverter {
494
+
495
+ private:
496
+
497
+ int fKeyOn;
498
+
499
+ public:
500
+
501
+ uiMidiKeyOn(midi* midi_out, int key, GUI* ui,
502
+ FAUSTFLOAT* zone,
503
+ FAUSTFLOAT min, FAUSTFLOAT max,
504
+ bool input = true,
505
+ MetaDataUI::Scale scale = MetaDataUI::kLin,
506
+ int chan = 0)
507
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan), uiConverter(scale, 0., 127., min, max), fKeyOn(key)
508
+ {}
509
+ virtual ~uiMidiKeyOn()
510
+ {}
511
+
512
+ virtual void reflectZone()
513
+ {
514
+ FAUSTFLOAT v = *fZone;
515
+ fCache = v;
516
+ int conv = std::round(fConverter->faust2ui(v));
517
+ if (fChan == 0) {
518
+ // Send on [0..15] channels on the MIDI layer
519
+ for (int chan = 0; chan < 16; chan++) {
520
+ fMidiOut->keyOn(chan, fKeyOn, conv);
521
+ }
522
+ } else {
523
+ fMidiOut->keyOn(fChan - 1, fKeyOn, conv);
524
+ }
525
+ }
526
+
527
+ void modifyZone(FAUSTFLOAT v)
528
+ {
529
+ if (fInputCtrl) {
530
+ uiItem::modifyZone(FAUSTFLOAT(fConverter->ui2faust(v)));
531
+ }
532
+ }
533
+
534
+ void modifyZone(double date, FAUSTFLOAT v)
535
+ {
536
+ if (fInputCtrl) {
537
+ uiMidiTimedItem::modifyZone(date, FAUSTFLOAT(fConverter->ui2faust(v)));
538
+ }
539
+ }
540
+
541
+ };
542
+
543
+ /**
544
+ * uiMidiKeyOff does scale (kLin/kLog/kExp) mapping for velocity.
545
+ */
546
+ class uiMidiKeyOff : public uiMidiTimedItem, public uiConverter {
547
+
548
+ private:
549
+
550
+ int fKeyOff;
551
+
552
+ public:
553
+
554
+ uiMidiKeyOff(midi* midi_out, int key, GUI* ui,
555
+ FAUSTFLOAT* zone,
556
+ FAUSTFLOAT min, FAUSTFLOAT max,
557
+ bool input = true,
558
+ MetaDataUI::Scale scale = MetaDataUI::kLin,
559
+ int chan = 0)
560
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan), uiConverter(scale, 0., 127., min, max), fKeyOff(key)
561
+ {}
562
+ virtual ~uiMidiKeyOff()
563
+ {}
564
+
565
+ virtual void reflectZone()
566
+ {
567
+ FAUSTFLOAT v = *fZone;
568
+ fCache = v;
569
+ int conv = std::round(fConverter->faust2ui(v));
570
+ if (fChan == 0) {
571
+ // Send on [0..15] channels on the MIDI layer
572
+ for (int chan = 0; chan < 16; chan++) {
573
+ fMidiOut->keyOff(chan, fKeyOff, conv);
574
+ }
575
+ } else {
576
+ fMidiOut->keyOff(fChan - 1, fKeyOff, conv);
577
+ }
578
+ }
579
+
580
+ void modifyZone(FAUSTFLOAT v)
581
+ {
582
+ if (fInputCtrl) {
583
+ uiItem::modifyZone(FAUSTFLOAT(fConverter->ui2faust(v)));
584
+ }
585
+ }
586
+
587
+ void modifyZone(double date, FAUSTFLOAT v)
588
+ {
589
+ if (fInputCtrl) {
590
+ uiMidiTimedItem::modifyZone(date, FAUSTFLOAT(fConverter->ui2faust(v)));
591
+ }
592
+ }
593
+
594
+ };
595
+
596
+ /**
597
+ * uiMidiKeyPress does scale (kLin/kLog/kExp) mapping for velocity.
598
+ */
599
+ class uiMidiKeyPress : public uiMidiTimedItem, public uiConverter {
600
+
601
+ private:
602
+
603
+ int fKey;
604
+
605
+ public:
606
+
607
+ uiMidiKeyPress(midi* midi_out, int key, GUI* ui,
608
+ FAUSTFLOAT* zone,
609
+ FAUSTFLOAT min, FAUSTFLOAT max,
610
+ bool input = true,
611
+ MetaDataUI::Scale scale = MetaDataUI::kLin,
612
+ int chan = 0)
613
+ :uiMidiTimedItem(midi_out, ui, zone, input, chan), uiConverter(scale, 0., 127., min, max), fKey(key)
614
+ {}
615
+ virtual ~uiMidiKeyPress()
616
+ {}
617
+
618
+ virtual void reflectZone()
619
+ {
620
+ FAUSTFLOAT v = *fZone;
621
+ fCache = v;
622
+ int conv = std::round(fConverter->faust2ui(v));
623
+ if (fChan == 0) {
624
+ // Send on [0..15] channels on the MIDI layer
625
+ for (int chan = 0; chan < 16; chan++) {
626
+ fMidiOut->keyPress(chan, fKey, conv);
627
+ }
628
+ } else {
629
+ fMidiOut->keyPress(fChan - 1, fKey, conv);
630
+ }
631
+ }
632
+
633
+ void modifyZone(FAUSTFLOAT v)
634
+ {
635
+ if (fInputCtrl) {
636
+ uiItem::modifyZone(FAUSTFLOAT(fConverter->ui2faust(v)));
637
+ }
638
+ }
639
+
640
+ void modifyZone(double date, FAUSTFLOAT v)
641
+ {
642
+ if (fInputCtrl) {
643
+ uiMidiTimedItem::modifyZone(date, FAUSTFLOAT(fConverter->ui2faust(v)));
644
+ }
645
+ }
646
+
647
+ };
648
+
649
+ /******************************************************************************************
650
+ * MidiUI : Faust User Interface
651
+ * This class decodes MIDI metadata and maps incoming MIDI messages to them.
652
+ * Currently ctrlChange, keyOn/keyOff, keyPress, progChange, chanPress, pitchWheel/pitchBend
653
+ * start/stop/clock meta data are handled.
654
+ *
655
+ * Maps associating MIDI event ID (like each ctrl number) with all MIDI aware UI items
656
+ * are defined and progressively filled when decoding MIDI related metadata.
657
+ * MIDI aware UI items are used in both directions:
658
+ * - modifying their internal state when receving MIDI input events
659
+ * - sending their internal state as MIDI output events
660
+ *******************************************************************************************/
661
+
662
+ class MidiUI : public GUI, public midi, public midi_interface, public MetaDataUI {
663
+
664
+ // Add uiItem subclasses objects are deallocated by the inherited GUI class
665
+ typedef std::map <int, std::vector<uiMidiCtrlChange*> > TCtrlChangeTable;
666
+ typedef std::vector<uiMidiProgChange*> TProgChangeTable;
667
+ typedef std::vector<uiMidiChanPress*> TChanPressTable;
668
+ typedef std::map <int, std::vector<uiMidiKeyOn*> > TKeyOnTable;
669
+ typedef std::map <int, std::vector<uiMidiKeyOff*> > TKeyOffTable;
670
+ typedef std::map <int, std::vector<uiMidiKeyPress*> > TKeyPressTable;
671
+ typedef std::vector<uiMidiPitchWheel*> TPitchWheelTable;
672
+
673
+ protected:
674
+
675
+ TCtrlChangeTable fCtrlChangeTable;
676
+ TProgChangeTable fProgChangeTable;
677
+ TChanPressTable fChanPressTable;
678
+ TKeyOnTable fKeyOnTable;
679
+ TKeyOffTable fKeyOffTable;
680
+ TKeyOnTable fKeyTable;
681
+ TKeyPressTable fKeyPressTable;
682
+ TPitchWheelTable fPitchWheelTable;
683
+
684
+ std::vector<uiMidiStart*> fStartTable;
685
+ std::vector<uiMidiStop*> fStopTable;
686
+ std::vector<uiMidiClock*> fClockTable;
687
+
688
+ std::vector<std::pair <std::string, std::string> > fMetaAux;
689
+
690
+ midi_handler* fMidiHandler;
691
+ bool fDelete;
692
+ bool fTimeStamp;
693
+
694
+ void addGenericZone(FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max, bool input = true)
695
+ {
696
+ if (fMetaAux.size() > 0) {
697
+ for (size_t i = 0; i < fMetaAux.size(); i++) {
698
+ unsigned num;
699
+ unsigned chan;
700
+ if (fMetaAux[i].first == "midi") {
701
+ if (gsscanf(fMetaAux[i].second.c_str(), "ctrl %u %u", &num, &chan) == 2) {
702
+ fCtrlChangeTable[num].push_back(new uiMidiCtrlChange(fMidiHandler, num, this, zone, min, max, input, getScale(zone), chan));
703
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "ctrl %u", &num) == 1) {
704
+ fCtrlChangeTable[num].push_back(new uiMidiCtrlChange(fMidiHandler, num, this, zone, min, max, input, getScale(zone)));
705
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "keyon %u %u", &num, &chan) == 2) {
706
+ fKeyOnTable[num].push_back(new uiMidiKeyOn(fMidiHandler, num, this, zone, min, max, input, getScale(zone), chan));
707
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "keyon %u", &num) == 1) {
708
+ fKeyOnTable[num].push_back(new uiMidiKeyOn(fMidiHandler, num, this, zone, min, max, input, getScale(zone)));
709
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "keyoff %u %u", &num, &chan) == 2) {
710
+ fKeyOffTable[num].push_back(new uiMidiKeyOff(fMidiHandler, num, this, zone, min, max, input, getScale(zone), chan));
711
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "keyoff %u", &num) == 1) {
712
+ fKeyOffTable[num].push_back(new uiMidiKeyOff(fMidiHandler, num, this, zone, min, max, input, getScale(zone)));
713
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "key %u %u", &num, &chan) == 2) {
714
+ fKeyTable[num].push_back(new uiMidiKeyOn(fMidiHandler, num, this, zone, min, max, input, getScale(zone), chan));
715
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "key %u", &num) == 1) {
716
+ fKeyTable[num].push_back(new uiMidiKeyOn(fMidiHandler, num, this, zone, min, max, input, getScale(zone)));
717
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "keypress %u %u", &num, &chan) == 2) {
718
+ fKeyPressTable[num].push_back(new uiMidiKeyPress(fMidiHandler, num, this, zone, min, max, input, getScale(zone), chan));
719
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "keypress %u", &num) == 1) {
720
+ fKeyPressTable[num].push_back(new uiMidiKeyPress(fMidiHandler, num, this, zone, min, max, input, getScale(zone)));
721
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "pgm %u", &chan) == 1) {
722
+ fProgChangeTable.push_back(new uiMidiProgChange(fMidiHandler, this, zone, min, max, input, chan));
723
+ } else if (strcmp(fMetaAux[i].second.c_str(), "pgm") == 0) {
724
+ fProgChangeTable.push_back(new uiMidiProgChange(fMidiHandler, this, zone, min, max, input));
725
+ } else if (gsscanf(fMetaAux[i].second.c_str(), "chanpress %u", &chan) == 1) {
726
+ fChanPressTable.push_back(new uiMidiChanPress(fMidiHandler, this, zone, min, max, input, getScale(zone), chan));
727
+ } else if ((fMetaAux[i].second == "chanpress")) {
728
+ fChanPressTable.push_back(new uiMidiChanPress(fMidiHandler, this, zone, min, max, input, getScale(zone)));
729
+ } else if ((gsscanf(fMetaAux[i].second.c_str(), "pitchwheel %u", &chan) == 1) || (gsscanf(fMetaAux[i].second.c_str(), "pitchbend %u", &chan) == 1)) {
730
+ fPitchWheelTable.push_back(new uiMidiPitchWheel(fMidiHandler, this, zone, min, max, input, chan));
731
+ } else if ((fMetaAux[i].second == "pitchwheel") || (fMetaAux[i].second == "pitchbend")) {
732
+ fPitchWheelTable.push_back(new uiMidiPitchWheel(fMidiHandler, this, zone, min, max, input));
733
+ // MIDI sync
734
+ } else if (fMetaAux[i].second == "start") {
735
+ fStartTable.push_back(new uiMidiStart(fMidiHandler, this, zone, input));
736
+ } else if (fMetaAux[i].second == "stop") {
737
+ fStopTable.push_back(new uiMidiStop(fMidiHandler, this, zone, input));
738
+ } else if (fMetaAux[i].second == "clock") {
739
+ fClockTable.push_back(new uiMidiClock(fMidiHandler, this, zone, input));
740
+ // Explicit metadata to activate 'timestamp' mode
741
+ } else if (fMetaAux[i].second == "timestamp") {
742
+ fTimeStamp = true;
743
+ }
744
+ }
745
+ }
746
+ }
747
+ fMetaAux.clear();
748
+ }
749
+
750
+ template <typename TABLE>
751
+ void updateTable1(TABLE& table, double date, int channel, int val1)
752
+ {
753
+ for (size_t i = 0; i < table.size(); i++) {
754
+ int channel_aux = table[i]->fChan;
755
+ // channel_aux == 0 means "all channels"
756
+ if (channel_aux == 0 || channel == channel_aux - 1) {
757
+ if (fTimeStamp) {
758
+ table[i]->modifyZone(date, FAUSTFLOAT(val1));
759
+ } else {
760
+ table[i]->modifyZone(FAUSTFLOAT(val1));
761
+ }
762
+ }
763
+ }
764
+ }
765
+
766
+ template <typename TABLE>
767
+ void updateTable2(TABLE& table, double date, int channel, int val1, int val2)
768
+ {
769
+ if (table.find(val1) != table.end()) {
770
+ for (size_t i = 0; i < table[val1].size(); i++) {
771
+ int channel_aux = table[val1][i]->fChan;
772
+ // channel_aux == 0 means "all channels"
773
+ if (channel_aux == 0 || channel == channel_aux - 1) {
774
+ if (fTimeStamp) {
775
+ table[val1][i]->modifyZone(date, FAUSTFLOAT(val2));
776
+ } else {
777
+ table[val1][i]->modifyZone(FAUSTFLOAT(val2));
778
+ }
779
+ }
780
+ }
781
+ }
782
+ }
783
+
784
+ public:
785
+
786
+ MidiUI(midi_handler* midi_handler, bool delete_handler = false)
787
+ {
788
+ fMidiHandler = midi_handler;
789
+ fMidiHandler->addMidiIn(this);
790
+ // TODO: use shared_ptr based implementation
791
+ fDelete = delete_handler;
792
+ fTimeStamp = false;
793
+ }
794
+
795
+ virtual ~MidiUI()
796
+ {
797
+ // Remove from fMidiHandler
798
+ fMidiHandler->removeMidiIn(this);
799
+ // TODO: use shared_ptr based implementation
800
+ if (fDelete) delete fMidiHandler;
801
+ }
802
+
803
+ bool run() { return fMidiHandler->startMidi(); }
804
+ void stop() { fMidiHandler->stopMidi(); }
805
+
806
+ void addMidiIn(midi* midi_dsp) { fMidiHandler->addMidiIn(midi_dsp); }
807
+ void removeMidiIn(midi* midi_dsp) { fMidiHandler->removeMidiIn(midi_dsp); }
808
+
809
+ // -- active widgets
810
+
811
+ virtual void addButton(const char* label, FAUSTFLOAT* zone)
812
+ {
813
+ addGenericZone(zone, FAUSTFLOAT(0), FAUSTFLOAT(1));
814
+ }
815
+ virtual void addCheckButton(const char* label, FAUSTFLOAT* zone)
816
+ {
817
+ addGenericZone(zone, FAUSTFLOAT(0), FAUSTFLOAT(1));
818
+ }
819
+
820
+ virtual void addVerticalSlider(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
821
+ {
822
+ addGenericZone(zone, min, max);
823
+ }
824
+ virtual void addHorizontalSlider(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
825
+ {
826
+ addGenericZone(zone, min, max);
827
+ }
828
+ virtual void addNumEntry(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT init, FAUSTFLOAT min, FAUSTFLOAT max, FAUSTFLOAT step)
829
+ {
830
+ addGenericZone(zone, min, max);
831
+ }
832
+
833
+ // -- passive widgets
834
+
835
+ virtual void addHorizontalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
836
+ {
837
+ addGenericZone(zone, min, max, false);
838
+ }
839
+ virtual void addVerticalBargraph(const char* label, FAUSTFLOAT* zone, FAUSTFLOAT min, FAUSTFLOAT max)
840
+ {
841
+ addGenericZone(zone, min, max, false);
842
+ }
843
+
844
+ // -- metadata declarations
845
+
846
+ virtual void declare(FAUSTFLOAT* zone, const char* key, const char* val)
847
+ {
848
+ MetaDataUI::declare(zone, key, val);
849
+ fMetaAux.push_back(std::make_pair(key, val));
850
+ }
851
+
852
+ // -- MIDI API
853
+
854
+ void key(double date, int channel, int note, int velocity)
855
+ {
856
+ updateTable2<TKeyOnTable>(fKeyTable, date, channel, note, velocity);
857
+ }
858
+
859
+ MapUI* keyOn(double date, int channel, int note, int velocity)
860
+ {
861
+ updateTable2<TKeyOnTable>(fKeyOnTable, date, channel, note, velocity);
862
+ // If note is in fKeyTable, handle it as a keyOn
863
+ key(date, channel, note, velocity);
864
+ return nullptr;
865
+ }
866
+
867
+ void keyOff(double date, int channel, int note, int velocity)
868
+ {
869
+ updateTable2<TKeyOffTable>(fKeyOffTable, date, channel, note, velocity);
870
+ // If note is in fKeyTable, handle it as a keyOff with a 0 velocity
871
+ key(date, channel, note, 0);
872
+ }
873
+
874
+ void ctrlChange(double date, int channel, int ctrl, int value)
875
+ {
876
+ updateTable2<TCtrlChangeTable>(fCtrlChangeTable, date, channel, ctrl, value);
877
+ }
878
+
879
+ void rpn(double date, int channel, int ctrl, int value)
880
+ {
881
+ if (ctrl == midi::PITCH_BEND_RANGE) {
882
+ for (size_t i = 0; i < fPitchWheelTable.size(); i++) {
883
+ // channel_aux == 0 means "all channels"
884
+ int channel_aux = fPitchWheelTable[i]->fChan;
885
+ if (channel_aux == 0 || channel == channel_aux - 1) {
886
+ fPitchWheelTable[i]->setRange(value);
887
+ }
888
+ }
889
+ }
890
+ }
891
+
892
+ void progChange(double date, int channel, int pgm)
893
+ {
894
+ updateTable1<TProgChangeTable>(fProgChangeTable, date, channel, pgm);
895
+ }
896
+
897
+ void pitchWheel(double date, int channel, int wheel)
898
+ {
899
+ updateTable1<TPitchWheelTable>(fPitchWheelTable, date, channel, wheel);
900
+ }
901
+
902
+ void keyPress(double date, int channel, int pitch, int press)
903
+ {
904
+ updateTable2<TKeyPressTable>(fKeyPressTable, date, channel, pitch, press);
905
+ }
906
+
907
+ void chanPress(double date, int channel, int press)
908
+ {
909
+ updateTable1<TChanPressTable>(fChanPressTable, date, channel, press);
910
+ }
911
+
912
+ void ctrlChange14bits(double date, int channel, int ctrl, int value) {}
913
+
914
+ // MIDI sync
915
+
916
+ void startSync(double date)
917
+ {
918
+ for (size_t i = 0; i < fStartTable.size(); i++) {
919
+ fStartTable[i]->modifyZone(date, FAUSTFLOAT(1));
920
+ }
921
+ }
922
+
923
+ void stopSync(double date)
924
+ {
925
+ for (size_t i = 0; i < fStopTable.size(); i++) {
926
+ fStopTable[i]->modifyZone(date, FAUSTFLOAT(0));
927
+ }
928
+ }
929
+
930
+ void clock(double date)
931
+ {
932
+ for (size_t i = 0; i < fClockTable.size(); i++) {
933
+ fClockTable[i]->modifyZone(date, FAUSTFLOAT(1));
934
+ }
935
+ }
936
+ };
937
+
938
+ #endif // FAUST_MIDIUI_H
939
+ /************************** END MidiUI.h **************************/