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,998 @@
1
+ //################################## misceffects.lib ##########################################
2
+ // Collection of audio effects library. Its official prefix is `ef`.
3
+ //
4
+ // The library is organized into 7 sections:
5
+ //
6
+ // * [Dynamic](#Dynamic)
7
+ // * [Fibonacci](#fibonacci)
8
+ // * [Filtering](#filtering)
9
+ // * [Meshes](#meshes)
10
+ // * [Mixing](#mixing)
11
+ // * [Time Based](#time-based)
12
+ // * [Pitch Shifting](#pitch-shifting)
13
+ // * [Saturators](#saturators)
14
+ //
15
+ // #### References
16
+ // * <https://github.com/grame-cncm/faustlibraries/blob/master/misceffects.lib>
17
+ //########################################################################################
18
+
19
+ /************************************************************************
20
+ ************************************************************************
21
+ FAUST library file
22
+ Copyright (C) 2003-2016 GRAME, Centre National de Creation Musicale
23
+ ----------------------------------------------------------------------
24
+ This program is free software; you can redistribute it and/or modify
25
+ it under the terms of the GNU Lesser General Public License as
26
+ published by the Free Software Foundation; either version 2.1 of the
27
+ License, or (at your option) any later version.
28
+
29
+ This program is distributed in the hope that it will be useful,
30
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
31
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
+ GNU Lesser General Public License for more details.
33
+
34
+ You should have received a copy of the GNU Lesser General Public
35
+ License along with the GNU C Library; if not, write to the Free
36
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
37
+ 02111-1307 USA.
38
+
39
+ EXCEPTION TO THE LGPL LICENSE : As a special exception, you may create a
40
+ larger FAUST program which directly or indirectly imports this library
41
+ file and still distribute the compiled code generated by the FAUST
42
+ compiler, or a modified version of this compiled code, under your own
43
+ copyright and license. This EXCEPTION TO THE LGPL LICENSE explicitly
44
+ grants you the right to freely choose the license for the resulting
45
+ compiled code. In particular the resulting compiled code has no obligation
46
+ to be LGPL or GPL. For example you are free to choose a commercial or
47
+ closed source license or any other license if you decide so.
48
+ ************************************************************************
49
+ ************************************************************************/
50
+
51
+ ma = library("maths.lib");
52
+ ba = library("basics.lib");
53
+ de = library("delays.lib");
54
+ si = library("signals.lib");
55
+ an = library("analyzers.lib");
56
+ fi = library("filters.lib");
57
+ ro = library("routes.lib");
58
+ aa = library("aanl.lib");
59
+ ef = library("misceffects.lib"); // for compatible copy/paste out of this file
60
+
61
+ declare name "Misc Effects Library";
62
+ declare version "2.4.0";
63
+
64
+ //======================================Dynamic===========================================
65
+ //========================================================================================
66
+
67
+ //---------------------`(ef.)cubicnl`-----------------------
68
+ // Cubic nonlinearity distortion.
69
+ // `cubicnl` is a standard Faust function.
70
+ //
71
+ // #### Usage:
72
+ //
73
+ // ```
74
+ // _ : cubicnl(drive,offset) : _
75
+ // _ : cubicnl_nodc(drive,offset) : _
76
+ // ```
77
+ //
78
+ // Where:
79
+ //
80
+ // * `drive`: distortion amount, between 0 and 1
81
+ // * `offset`: constant added before nonlinearity to give even harmonics. Note: offset
82
+ // can introduce a nonzero mean - feed cubicnl output to dcblocker to remove this.
83
+ //
84
+ // #### References:
85
+ //
86
+ // * <https://ccrma.stanford.edu/~jos/pasp/Cubic_Soft_Clipper.html>
87
+ // * <https://ccrma.stanford.edu/~jos/pasp/Nonlinear_Distortion.html>
88
+ //------------------------------------------------------------
89
+ cubicnl(drive,offset) = *(pregain) : +(offset) : clip(-1,1) : cubic
90
+ with {
91
+ pregain = pow(10.0,2*drive);
92
+ clip(lo,hi) = min(hi) : max(lo);
93
+ cubic(x) = x - x*x*x/3;
94
+ postgain = max(1.0,1.0/pregain);
95
+ };
96
+
97
+ cubicnl_nodc(drive,offset) = cubicnl(drive,offset) : fi.dcblocker;
98
+
99
+ declare cubicnl author "Julius O. Smith III";
100
+ declare cubicnl license "STK-4.3";
101
+ declare cubicnl_nodc author "Julius O. Smith III";
102
+ declare cubicnl_nodc license "STK-4.3";
103
+
104
+ //-----------------`(ef.)gate_mono`-------------------
105
+ // Mono signal gate.
106
+ // `gate_mono` is a standard Faust function.
107
+ //
108
+ // #### Usage
109
+ //
110
+ // ```
111
+ // _ : gate_mono(thresh,att,hold,rel) : _
112
+ // ```
113
+ //
114
+ // Where:
115
+ //
116
+ // * `thresh`: dB level threshold above which gate opens (e.g., -60 dB)
117
+ // * `att`: attack time = time constant (sec) for gate to open (e.g., 0.0001 s = 0.1 ms)
118
+ // * `hold`: hold time = time (sec) gate stays open after signal level < thresh (e.g., 0.1 s)
119
+ // * `rel`: release time = time constant (sec) for gate to close (e.g., 0.020 s = 20 ms)
120
+ //
121
+ // #### References
122
+ //
123
+ // * <http://en.wikipedia.org/wiki/Noise_gate>
124
+ // * <http://www.soundonsound.com/sos/apr01/articles/advanced.asp>
125
+ // * <http://en.wikipedia.org/wiki/Gating_(sound_engineering)>
126
+ //------------------------------------------------------------
127
+ gate_mono(thresh,att,hold,rel,x) = x * gate_gain_mono(thresh,att,hold,rel,x);
128
+
129
+ declare gate_mono author "Julius O. Smith III";
130
+ declare gate_mono license "STK-4.3";
131
+
132
+ //-----------------`(ef.)gate_stereo`-------------------
133
+ // Stereo signal gates.
134
+ // `gate_stereo` is a standard Faust function.
135
+ //
136
+ // #### Usage
137
+ //
138
+ // ```
139
+ // _,_ : gate_stereo(thresh,att,hold,rel) : _,_
140
+ // ```
141
+ //
142
+ // Where:
143
+ //
144
+ // * `thresh`: dB level threshold above which gate opens (e.g., -60 dB)
145
+ // * `att`: attack time = time constant (sec) for gate to open (e.g., 0.0001 s = 0.1 ms)
146
+ // * `hold`: hold time = time (sec) gate stays open after signal level < thresh (e.g., 0.1 s)
147
+ // * `rel`: release time = time constant (sec) for gate to close (e.g., 0.020 s = 20 ms)
148
+ //
149
+ // #### References
150
+ //
151
+ // * <http://en.wikipedia.org/wiki/Noise_gate>
152
+ // * <http://www.soundonsound.com/sos/apr01/articles/advanced.asp>
153
+ // * <http://en.wikipedia.org/wiki/Gating_(sound_engineering)>
154
+ //------------------------------------------------------------
155
+ gate_stereo(thresh,att,hold,rel,x,y) = ggm*x, ggm*y with {
156
+ ggm = gate_gain_mono(thresh,att,hold,rel,abs(x)+abs(y));
157
+ };
158
+
159
+ gate_gain_mono(thresh,att,hold,rel,x) = x : extendedrawgate : an.amp_follower_ar(att,rel) with {
160
+ extendedrawgate(x) = max(float(rawgatesig(x)),holdsig(x));
161
+ rawgatesig(x) = inlevel(x) > ba.db2linear(thresh);
162
+ minrate = min(att,rel);
163
+ inlevel = an.amp_follower_ar(minrate,minrate);
164
+ holdcounter(x) = (max(holdreset(x) * holdsamps,_) ~-(1));
165
+ holdsig(x) = holdcounter(x) > 0;
166
+ holdreset(x) = rawgatesig(x) < rawgatesig(x)'; // reset hold when raw gate falls
167
+ holdsamps = int(hold*ma.SR);
168
+ };
169
+
170
+ declare gate_stereo author "Julius O. Smith III";
171
+ declare gate_stereo license "STK-4.3";
172
+ declare gate_gain_mono author "Julius O. Smith III";
173
+ declare gate_gain_mono license "STK-4.3";
174
+
175
+ //=====================================Fibonacci==========================================
176
+ //========================================================================================
177
+
178
+ //---------------`(ef.)fibonacci`---------------------------
179
+ // Fibonacci system where the current output is the current
180
+ // input plus the sum of the previous N outputs.
181
+ //
182
+ // #### Usage
183
+ //
184
+ // ```
185
+ // _ : fibonacci(N) : _
186
+ // ```
187
+ //
188
+ // Where:
189
+ //
190
+ // * `N`: the Fibonacci system's order, where 2 is standard
191
+ //
192
+ // #### Example
193
+ // Generate the famous series: [1, 1, 2, 3, 5, 8, 13, ...]
194
+ //
195
+ // ```
196
+ // 1. : ba.impulsify : fibonacci(2)
197
+ // ```
198
+ //------------------------------------------------------------
199
+ declare fibonacci author "Dario Sanfilippo";
200
+
201
+ fibonacci(order) = +~(_<:sum(i, order, @(i)):>_);
202
+
203
+
204
+ //---------------`(ef.)fibonacciGeneral`----------------------
205
+ // Fibonacci system with customizable coefficients.
206
+ // The order of the system is inferred from the number of coefficients.
207
+ //
208
+ // #### Usage
209
+ //
210
+ // ```
211
+ // _ : fibonacciGeneral(wave) : _
212
+ // ```
213
+ //
214
+ // Where:
215
+ //
216
+ // * `wave`: a waveform such as `waveform{1, 1}`
217
+ //
218
+ // #### Example:
219
+ // Use the update equation `y = 2*y' + 3*y'' + 4*y'''`
220
+ //
221
+ // ```
222
+ // 1. : ba.impulsify : fibonacciGeneral(waveform{2, 3, 4})
223
+ // ```
224
+ //------------------------------------------------------------
225
+ declare fibonacciGeneral author "Dario Sanfilippo and David Braun";
226
+
227
+ fibonacciGeneral(wave) = +~(_<:sum(i, N, func(i)):>_)
228
+ with {
229
+ N = wave : _, !;
230
+ func(i) = @(i) : _ * (wave, i : rdtable);
231
+ };
232
+
233
+ //---------------`(ef.)fibonacciSeq`---------------------------
234
+ // First N numbers of the Fibonacci sequence [1, 1, 2, 3, 5, 8, ...]
235
+ // as parallel channels.
236
+ //
237
+ // #### Usage
238
+ //
239
+ // ```
240
+ // fibonacciSeq(N) : si.bus(N)
241
+ // ```
242
+ //
243
+ // Where:
244
+ //
245
+ // * `N`: The number of Fibonacci numbers to generate as channels.
246
+ //
247
+ //------------------------------------------------------------
248
+
249
+ fibonacciSeq(N) = iterate(N, (1, 1))
250
+ with {
251
+ iterate(1, (A0, A1)) = A0;
252
+ iterate(N, (A0, A1)) = A0 , iterate(N - 1, (A1, A0 + A1));
253
+ };
254
+
255
+ declare fibonacciSeq author "Dario Sanfilippo";
256
+
257
+
258
+ //=====================================Filtering==========================================
259
+ //========================================================================================
260
+
261
+ //-------------------------`(ef.)speakerbp`-------------------------------
262
+ // Dirt-simple speaker simulator (overall bandpass eq with observed
263
+ // roll-offs above and below the passband). `speakerbp` is a standard Faust function.
264
+ //
265
+ // Low-frequency speaker model = +12 dB/octave slope breaking to
266
+ // flat near f1. Implemented using two dc blockers in series.
267
+ //
268
+ // High-frequency model = -24 dB/octave slope implemented using a
269
+ // fourth-order Butterworth lowpass.
270
+
271
+ //
272
+ //
273
+ // #### Usage
274
+ // ```
275
+ // _ : speakerbp(f1,f2) : _
276
+ // ```
277
+ // #### Example
278
+ //
279
+ // Based on measured Celestion G12 (12" speaker):
280
+ // ```
281
+ // speakerbp(130,5000)
282
+ // ```
283
+ //------------------------------------------------------------
284
+ // TODO: perhaps this should be moved to physmodels.lib
285
+ // [JOS: I don't think so because it's merely a bandpass filter tuned to speaker bandwidth]
286
+ speakerbp(f1,f2) = fi.dcblockerat(f1) : fi.dcblockerat(f1) : fi.lowpass(4,f2);
287
+
288
+ declare speakerbp author "Julius O. Smith III";
289
+ declare speakerbp license "STK-4.3";
290
+
291
+ //------------`(ef.)piano_dispersion_filter`---------------
292
+ // Piano dispersion allpass filter in closed form.
293
+ //
294
+ // #### Usage
295
+ //
296
+ // ```
297
+ // piano_dispersion_filter(M,B,f0)
298
+ // _ : piano_dispersion_filter(1,B,f0) : +(totalDelay),_ : fdelay(maxDelay) : _
299
+ // ```
300
+ //
301
+ // Where:
302
+ //
303
+ // * `M`: number of first-order allpass sections (compile-time only)
304
+ // Keep below 20. 8 is typical for medium-sized piano strings.
305
+ // * `B`: string inharmonicity coefficient (0.0001 is typical)
306
+ // * `f0`: fundamental frequency in Hz
307
+ //
308
+ // #### Outputs
309
+ //
310
+ // * MINUS the estimated delay at `f0` of allpass chain in samples,
311
+ // provided in negative form to facilitate subtraction
312
+ // from delay-line length.
313
+ // * Output signal from allpass chain
314
+ //
315
+ // #### Reference
316
+ //
317
+ // * "Dispersion Modeling in Waveguide Piano Synthesis Using Tunable
318
+ // Allpass Filters", by Jukka Rauhala and Vesa Valimaki, DAFX-2006, pp. 71-76
319
+ // * <http://lib.tkk.fi/Diss/2007/isbn9789512290666/article2.pdf>
320
+ // An erratum in Eq. (7) is corrected in Dr. Rauhala's encompassing
321
+ // dissertation (and below).
322
+ // * <http://www.acoustics.hut.fi/research/asp/piano/>
323
+ //------------------------------------------------------------
324
+ // TODO: perhaps this should be moved to physmodels.lib?
325
+ // [JOS: I vote yes when there is a piano model in physmodels.lib.]
326
+
327
+ piano_dispersion_filter(M,B,f0) = -Df0*M,seq(i,M,fi.tf1(a1,1,a1))
328
+ with {
329
+ a1 = (1-D)/(1+D); // By Eq. 3, have D >= 0, hence a1 >= 0 also
330
+ D = exp(Cd - Ikey(f0)*kd);
331
+ trt = pow(2.0,1.0/12.0); // 12th root of 2
332
+ logb(b,x) = log(x) / log(b); // log-base-b of x
333
+ Ikey(f0) = logb(trt,f0*trt/27.5);
334
+ Bc = max(B,0.000001);
335
+ kd = exp(k1*log(Bc)*log(Bc) + k2*log(Bc)+k3);
336
+ Cd = exp((m1*log(M)+m2)*log(Bc)+m3*log(M)+m4);
337
+ k1 = -0.00179;
338
+ k2 = -0.0233;
339
+ k3 = -2.93;
340
+ m1 = 0.0126;
341
+ m2 = 0.0606;
342
+ m3 = -0.00825;
343
+ m4 = 1.97;
344
+ wT = 2*ma.PI*f0/ma.SR;
345
+ polydel(a) = atan(sin(wT)/(a+cos(wT)))/wT;
346
+ Df0 = polydel(a1) - polydel(1.0/a1);
347
+ };
348
+
349
+ declare piano_dispersion_filter author "Julius O. Smith III";
350
+ declare piano_dispersion_filter license "STK-4.3";
351
+
352
+ //-------------------------`(ef.)stereo_width`---------------------------
353
+ // Stereo Width effect using the Blumlein Shuffler technique.
354
+ // `stereo_width` is a standard Faust function.
355
+ //
356
+ // #### Usage
357
+ //
358
+ // ```
359
+ // _,_ : stereo_width(w) : _,_
360
+ // ```
361
+ //
362
+ // Where:
363
+ //
364
+ // * `w`: stereo width between 0 and 1
365
+ //
366
+ // At `w=0`, the output signal is mono ((left+right)/2 in both channels).
367
+ // At `w=1`, there is no effect (original stereo image).
368
+ // Thus, w between 0 and 1 varies stereo width from 0 to "original".
369
+ //
370
+ // #### Reference
371
+ //
372
+ // * "Applications of Blumlein Shuffling to Stereo Microphone Techniques"
373
+ // Michael A. Gerzon, JAES vol. 42, no. 6, June 1994
374
+ //------------------------------------------------------------
375
+ stereo_width(w) = shuffle : *(mgain),*(sgain) : shuffle
376
+ with {
377
+ shuffle = _,_ <: +,-; // normally scaled by 1/sqrt(2) for orthonormality,
378
+ mgain = 1-w/2; // but we pick up the needed normalization here.
379
+ sgain = w/2;
380
+ };
381
+
382
+ declare stereo_width author "Julius O. Smith III";
383
+ declare stereo_width license "STK-4.3";
384
+
385
+ //===========================================Meshes=======================================
386
+ //========================================================================================
387
+
388
+
389
+ // TODO: the following should be in physmodels.lib when it will be operational
390
+ // [JOS: I think a new "Meshes" section would fit well after Modal Percussions.]
391
+ //----------------------------------`(ef.)mesh_square`------------------------------
392
+ // Square Rectangular Digital Waveguide Mesh.
393
+ //
394
+ // #### Usage
395
+ //
396
+ // ```
397
+ // bus(4*N) : mesh_square(N) : bus(4*N)
398
+ // ```
399
+ //
400
+ // Where:
401
+ //
402
+ // * `N`: number of nodes along each edge - a power of two (1,2,4,8,...)
403
+ //
404
+ // #### Reference
405
+ //
406
+ // <https://ccrma.stanford.edu/~jos/pasp/Digital_Waveguide_Mesh.html>
407
+ //
408
+ // #### Signal Order In and Out
409
+ //
410
+ // The mesh is constructed recursively using 2x2 embeddings. Thus,
411
+ // the top level of `mesh_square(M)` is a block 2x2 mesh, where each
412
+ // block is a `mesh(M/2)`. Let these blocks be numbered 1,2,3,4 in the
413
+ // geometry NW,NE,SW,SE, i.e., as:
414
+ //
415
+ // 1 2
416
+ // 3 4
417
+ //
418
+ // Each block has four vector inputs and four vector outputs, where the
419
+ // length of each vector is `M/2`. Label the input vectors as Ni,Ei,Wi,Si,
420
+ // i.e., as the inputs from the North, East South, and West,
421
+ // and similarly for the outputs. Then, for example, the upper
422
+ // left input block of M/2 signals is labeled 1Ni. Most of the
423
+ // connections are internal, such as 1Eo -> 2Wi. The `8*(M/2)` input
424
+ // signals are grouped in the order:
425
+ //
426
+ // 1Ni 2Ni
427
+ // 3Si 4Si
428
+ // 1Wi 3Wi
429
+ // 2Ei 4Ei
430
+ //
431
+ // and the output signals are:
432
+ //
433
+ // 1No 1Wo
434
+ // 2No 2Eo
435
+ // 3So 3Wo
436
+ // 4So 4Eo
437
+ // or:
438
+ //
439
+ // In: 1No 1Wo 2No 2Eo 3So 3Wo 4So 4Eo
440
+ // Out: 1Ni 2Ni 3Si 4Si 1Wi 3Wi 2Ei 4Ei
441
+ //
442
+ // Thus, the inputs are grouped by direction N,S,W,E, while the
443
+ // outputs are grouped by block number 1,2,3,4, which can also be
444
+ // interpreted as directions NW, NE, SW, SE. A simple program
445
+ // illustrating these orderings is `process = mesh_square(2);`.
446
+ //
447
+ // #### Example
448
+ //
449
+ // Reflectively terminated mesh impulsed at one corner:
450
+ //
451
+ // ```
452
+ // mesh_square_test(N,x) = mesh_square(N)~(busi(4*N,x)) // input to corner
453
+ // with {
454
+ // busi(N,x) = bus(N) : par(i,N,*(-1)) : par(i,N-1,_), +(x);
455
+ // };
456
+ // process = 1-1' : mesh_square_test(4); // all modes excited forever
457
+ // ```
458
+ //
459
+ // In this simple example, the mesh edges are connected as follows:
460
+ //
461
+ // 1No -> 1Ni, 1Wo -> 2Ni, 2No -> 3Si, 2Eo -> 4Si,
462
+ // 3So -> 1Wi, 3Wo -> 3Wi, 4So -> 2Ei, 4Eo -> 4Ei
463
+ //
464
+ // A routing matrix can be used to obtain other connection geometries.
465
+ //------------------------------------------------------------
466
+ // four-port scattering junction:
467
+ mesh_square(1) =
468
+ si.bus(4) <: par(i,4,*(-1)), (si.bus(4) :> (*(.5)) <: si.bus(4)) :> si.bus(4);
469
+
470
+ // rectangular NxN square waveguide mesh:
471
+ mesh_square(N) = si.bus(4*N) : (route_inputs(N/2) : par(i,4,mesh_square(N/2)))
472
+ ~(prune_feedback(N/2))
473
+ : prune_outputs(N/2) : route_outputs(N/2) : si.bus(4*N)
474
+ with {
475
+ // select block i of N, block size = M:
476
+ s(i,N,M) = par(j, M*N, Sv(i, j))
477
+ with { Sv(i,i) = si.bus(N); Sv(i,j) = si.block(N); };
478
+
479
+ // prune mesh outputs down to the signals which make it out:
480
+ prune_outputs(N)
481
+ = si.bus(16*N) :
482
+ si.block(N), si.bus(N), si.block(N), si.bus(N),
483
+ si.block(N), si.bus(N), si.bus(N), si.block(N),
484
+ si.bus(N), si.block(N), si.block(N), si.bus(N),
485
+ si.bus(N), si.block(N), si.bus(N), si.block(N)
486
+ : si.bus(8*N);
487
+
488
+ // collect mesh outputs into standard order (N,W,E,S):
489
+ route_outputs(N)
490
+ = si.bus(8*N)
491
+ <: s(4,N,8),s(5,N,8), s(0,N,8),s(2,N,8),
492
+ s(3,N,8),s(7,N,8), s(1,N,8),s(6,N,8)
493
+ : si.bus(8*N);
494
+
495
+ // collect signals used as feedback:
496
+ prune_feedback(N) = si.bus(16*N) :
497
+ si.bus(N), si.block(N), si.bus(N), si.block(N),
498
+ si.bus(N), si.block(N), si.block(N), si.bus(N),
499
+ si.block(N), si.bus(N), si.bus(N), si.block(N),
500
+ si.block(N), si.bus(N), si.block(N), si.bus(N) :
501
+ si.bus(8*N);
502
+
503
+ // route mesh inputs (feedback, external inputs):
504
+ route_inputs(N) = si.bus(8*N), si.bus(8*N)
505
+ <:s(8,N,16),s(4,N,16), s(12,N,16),s(3,N,16),
506
+ s(9,N,16),s(6,N,16), s(1,N,16),s(14,N,16),
507
+ s(0,N,16),s(10,N,16), s(13,N,16),s(7,N,16),
508
+ s(2,N,16),s(11,N,16), s(5,N,16),s(15,N,16)
509
+ : si.bus(16*N);
510
+ };
511
+
512
+ declare mesh_square author "Julius O. Smith III";
513
+ declare mesh_square license "STK-4.3";
514
+
515
+
516
+ //=====================================Mixing=============================================
517
+ //========================================================================================
518
+
519
+ // Implementation to share common code
520
+ dwmEnv(wetAmount, FX) = environment
521
+ {
522
+ N = inputs(FX);
523
+ wet(wg) = FX : par(i, N, *(wg));
524
+ dry(dg) = par(i, N, *(dg));
525
+ out(wg, dg) = si.bus(N) <: wet(wg), dry(dg) :> si.bus(N);
526
+
527
+ dryWetMixer = out(wetGain, dryGain)
528
+ with {
529
+ wetGain = wetAmount;
530
+ dryGain = 1. - wetGain;
531
+ };
532
+
533
+ dryWetMixerConstantPower = out(wetGain, dryGain)
534
+ with {
535
+ theta = ma.PI*wetAmount/2.;
536
+ dryGain = cos(theta)/sqrt(2.);
537
+ wetGain = sin(theta)/sqrt(2.);
538
+ };
539
+ };
540
+
541
+
542
+ //---------------`(ef.)dryWetMixer`-------------
543
+ // Linear dry-wet mixer for a N inputs and N outputs effect.
544
+ //
545
+ // #### Usage
546
+ //
547
+ // ```
548
+ // si.bus(inputs(FX)) : dryWetMixer(wetAmount, FX) : si.bus(inputs(FX))
549
+ // ```
550
+ //
551
+ // Where:
552
+ //
553
+ // * `wetAmount`: the wet amount (0-1). 0 produces only the dry signal and 1 produces only the wet signal
554
+ // * `FX`: an arbitrary effect (N inputs and N outputs) to apply to the input bus
555
+ //------------------------------------------------------------
556
+ declare dryWetMixer author "David Braun, revised by Stéphane Letz";
557
+
558
+ dryWetMixer(wetAmount, FX) = dwmEnv(wetAmount, FX).dryWetMixer;
559
+
560
+
561
+ //---------------`(ef.)dryWetMixerConstantPower`-------------
562
+ // Constant-power dry-wet mixer for a N inputs and N outputs effect.
563
+ //
564
+ // #### Usage
565
+ //
566
+ // ```
567
+ // si.bus(inputs(FX)) : dryWetMixerConstantPower(wetAmount, FX) :si.bus(inputs(FX))
568
+ // ```
569
+ //
570
+ // Where:
571
+ //
572
+ // * `wetAmount`: the wet amount (0-1). 0 produces only the dry signal and 1 produces only the wet signal
573
+ // * `FX`: an arbitrary effect (N inputs and N outputs) to apply to the input bus
574
+ //------------------------------------------------------------
575
+ declare dryWetMixerConstantPower author "David Braun, revised by Stéphane Letz";
576
+
577
+ dryWetMixerConstantPower(wetAmount, FX) = dwmEnv(wetAmount, FX).dryWetMixerConstantPower;
578
+
579
+
580
+ mixingEnv = environment
581
+ {
582
+ // Note that i goes from 0 to N-1.
583
+ // m goes from 0 to N-1 typically, but the output should be periodic with size N.
584
+ // In other words the output with m=-4*N is the same as -2*N, -1*N, 0, 1*N, 2*N etc.
585
+ phaseLoop(N, m, i) = select2(abs(phase1)<abs(phase2), phase2, phase1)
586
+ with {
587
+ phase1 = fmod(i-m,N);
588
+ phase2 = phase1+ba.if(phase1<0,N,-N);
589
+ };
590
+
591
+ phaseClamp(N, m, i) = i-aa.clip(0,N-1,m);
592
+
593
+ // We divide by sqrt(2) at the end so that for m=0.5,1.5,2.5 etc,
594
+ // the total gain is 1.0, matching phase2LinearWeight. However,
595
+ // this means for m=0,1,2,3, etc, the gain is (1./sqrt(2)~=0.7071).
596
+ phase2PowerWeight = aa.clip(-1, 1) : cos(_*ma.PI*.5) / sqrt(2.);
597
+
598
+ phase2LinearWeight = aa.clip(-1, 1) : 1-abs(_);
599
+
600
+ //------------------------`weightsPowerLoop`---------------------------
601
+ // "Fan out" an index into N weights between 0 and 1. At any given
602
+ // moment, two weights may be non-zero. Suppose they are N_m and N_{m+1}.
603
+ // Then `cos(N_m)^2+sin(N_{m+1})^2==0.5`.
604
+ //
605
+ // #### Usage
606
+ //
607
+ // ```
608
+ // _ : weightsPowerLoop(N) : si.bus(N)
609
+ // ```
610
+ // Where:
611
+ //
612
+ // * `N`: number of output weights
613
+ // * `m`: [0;N-1] (float) blend index. If m is outside [0;N-1], the behavior will loop.
614
+ //. So m=-N, m=0, and m=N should give the same output.
615
+ weightsPowerLoop(N, m) = par(i, N, gain(i))
616
+ with {
617
+ gain(i) = phaseLoop(N, m, i) : phase2PowerWeight;
618
+ };
619
+
620
+ // Same as above, but the two weights being blended at any moment SUM to 1.
621
+ weightsLinearLoop(N, m) = par(i, N, gain(i))
622
+ with {
623
+ gain(i) = phaseLoop(N, m, i) : phase2LinearWeight;
624
+ };
625
+
626
+ // Same as weightsPowerLoop, but m is clamped to [0;N-1]
627
+ weightsPowerClamp(N, m) = par(i, N, gain(i))
628
+ with {
629
+ gain(i) = phaseClamp(N, m, i) : phase2PowerWeight;
630
+ };
631
+
632
+ // Same as weightsLinearLoop, but m is clamped to [0;N-1]
633
+ weightsLinearClamp(N, m) = par(i, N, gain(i))
634
+ with {
635
+ gain(i) = phaseClamp(N, m, i) : phase2LinearWeight;
636
+ };
637
+
638
+ dryWetMixer(wetAmount, FX) = si.vecOp((weights, sounds), *) :> si.bus(C)
639
+ with {
640
+ N = 2; // We know in advance that there are 2 sounds (the dry and wet).
641
+ C = inputs(FX);
642
+ weights = weightsLinearClamp(N, wetAmount) <: ro.interleave(N, C);
643
+ sounds = si.bus(C) <: si.bus(C), FX;
644
+ };
645
+
646
+ dryWetMixerConstantPower(wetAmount, FX) = si.vecOp((weights, sounds), *) :> si.bus(C)
647
+ with {
648
+ N = 2; // We know in advance that there are 2 sounds (the dry and wet).
649
+ C = inputs(FX);
650
+ weights = weightsPowerClamp(N, wetAmount) <: ro.interleave(N, C);
651
+ sounds = si.bus(C) <: si.bus(C), FX;
652
+ };
653
+
654
+ // Suppose `sounds` is N buses, each of C channels.
655
+ // We want to linearly mix the buses using index `m` [0;N-1]
656
+ mixLinearClamp(N, C, m, sounds) = si.vecOp((weights, sounds), *) :> si.bus(C)
657
+ with {
658
+ weights = weightsLinearClamp(N, m) <: ro.interleave(N, C);
659
+ };
660
+
661
+ mixLinearLoop(N, C, m, sounds) = si.vecOp((weights, sounds), *) :> si.bus(C)
662
+ with {
663
+ weights = weightsLinearLoop(N, m) <: ro.interleave(N, C);
664
+ };
665
+
666
+ mixPowerClamp(N, C, m, sounds) = si.vecOp((weights, sounds), *) :> si.bus(C)
667
+ with {
668
+ weights = weightsPowerClamp(N, m) <: ro.interleave(N, C);
669
+ };
670
+
671
+ mixPowerLoop(N, C, m, sounds) = si.vecOp((weights, sounds), *) :> si.bus(C)
672
+ with {
673
+ weights = weightsPowerLoop(N, m) <: ro.interleave(N, C);
674
+ };
675
+ };
676
+
677
+
678
+ //---------------`(ef.)mixLinearClamp`-------------------------------------------------
679
+ // Linear mixer for `N` buses, each with `C` channels. The output will be a sum of 2 buses
680
+ // determined by the mixing index `mix`. 0 produces the first bus, 1 produces the
681
+ // second, and so on. `mix` is clamped automatically. For example, `mixLinearClamp(4, 1, 1)`
682
+ // will weight its 4 inputs by `(0, 1, 0, 0)`. Similarly, `mixLinearClamp(4, 1, 1.1)`
683
+ // will weight its 4 inputs by `(0,.9,.1,0)`.
684
+ //
685
+ // #### Usage
686
+ //
687
+ // ```
688
+ // si.bus(N*C) : mixLinearClamp(N, C, mix) : si.bus(C)
689
+ // ```
690
+ //
691
+ // Where:
692
+ //
693
+ // * `N`: the number of input buses
694
+ // * `C`: the number of channels in each bus
695
+ // * `mix`: the mixing index, continuous in [0;N-1].
696
+ //---------------------------------------------------------------------------------------
697
+ declare mixLinearClamp author "David Braun";
698
+
699
+ mixLinearClamp = mixingEnv.mixLinearClamp;
700
+
701
+
702
+ //---------------`(ef.)mixLinearLoop`-------------------------------------------------
703
+ // Linear mixer for `N` buses, each with `C` channels. Refer to `mixLinearClamp`. `mix`
704
+ // will loop for multiples of `N`. For example, `mixLinearLoop(4, 1, 0)` has the same
705
+ // effect as `mixLinearLoop(4, 1, -4)` and `mixLinearLoop(4, 1, 4)`.
706
+ //
707
+ // #### Usage
708
+ //
709
+ // ```
710
+ // si.bus(N*C) : mixLinearLoop(N, C, mix) : si.bus(C)
711
+ // ```
712
+ //
713
+ // Where:
714
+ //
715
+ // * `N`: the number of input buses
716
+ // * `C`: the number of channels in each bus
717
+ // * `mix`: the mixing index (N-1) selects the last bus, and 0 or N selects the 0th bus.
718
+ //---------------------------------------------------------------------------------------
719
+ declare mixLinearLoop author "David Braun";
720
+
721
+ mixLinearLoop = mixingEnv.mixLinearLoop;
722
+
723
+
724
+ //---------------`(ef.)mixPowerClamp`-------------------------------------------------
725
+ // Constant-power mixer for `N` buses, each with `C` channels. The output will be a sum of 2 buses
726
+ // determined by the mixing index `mix`. 0 produces the first bus, 1 produces the
727
+ // second, and so on. `mix` is clamped automatically. `mixPowerClamp(4, 1, 1)`
728
+ // will weight its 4 inputs by `(0, 1./sqrt(2), 0, 0)`. Similarly, `mixPowerClamp(4, 1, 1.5)`
729
+ // will weight its 4 inputs by `(0,.5,.5,0)`.
730
+ //
731
+ // #### Usage
732
+ //
733
+ // ```
734
+ // si.bus(N*C) : mixPowerClamp(N, C, mix) : si.bus(C)
735
+ // ```
736
+ //
737
+ // Where:
738
+ //
739
+ // * `N`: the number of input buses
740
+ // * `C`: the number of channels in each bus
741
+ // * `mix`: the mixing index, continuous in [0;N-1].
742
+ //---------------------------------------------------------------------------------------
743
+ declare mixPowerClamp author "David Braun";
744
+
745
+ mixPowerClamp = mixingEnv.mixPowerClamp;
746
+
747
+
748
+ //---------------`(ef.)mixPowerLoop`-----------------------------------------------------
749
+ // Constant-power mixer for `N` buses, each with `C` channels. Refer to `mixPowerClamp`. `mix`
750
+ // will loop for multiples of `N`. For example, `mixPowerLoop(4, 1, 0)` has the same effect
751
+ // as `mixPowerLoop(4, 1, -4)` and `mixPowerLoop(4, 1, 4)`.
752
+ //
753
+ // #### Usage
754
+ //
755
+ // ```
756
+ // si.bus(N*C) : mixPowerLoop(N, C, mix) : si.bus(C)
757
+ // ```
758
+ //
759
+ // Where:
760
+ //
761
+ // * `N`: the number of input buses
762
+ // * `C`: the number of channels in each bus
763
+ // * `mix`: the mixing index (N-1) selects the last bus, and 0 or N selects the 0th bus.
764
+ //---------------------------------------------------------------------------------------
765
+ declare mixPowerLoop author "David Braun";
766
+
767
+ mixPowerLoop = mixingEnv.mixPowerLoop;
768
+
769
+
770
+ //========================================Time Based======================================
771
+ //========================================================================================
772
+
773
+ //----------`(ef.)echo`----------
774
+ // A simple echo effect.
775
+ // `echo` is a standard Faust function.
776
+ //
777
+ // #### Usage
778
+ //
779
+ // ```
780
+ // _ : echo(maxDuration,duration,feedback) : _
781
+ // ```
782
+ //
783
+ // Where:
784
+ //
785
+ // * `maxDuration`: the max echo duration in seconds
786
+ // * `duration`: the echo duration in seconds
787
+ // * `feedback`: the feedback coefficient
788
+ //----------------------------------------------------
789
+ declare echo author "Romain Michon";
790
+
791
+ echo(maxDuration,duration,feedback) = +~de.delay(maxDel,del)*feedback
792
+ with{
793
+ maxDel = ma.SR*maxDuration;
794
+ del = ma.SR*duration;
795
+ };
796
+
797
+ // TODO demo function for echo
798
+
799
+ //--------------------`(ef.)reverseEchoN(nChans,delay)`-------------------
800
+ // Reverse echo effect.
801
+ //
802
+ // #### Usage
803
+ //
804
+ // ```
805
+ // _ : ef.reverseEchoN(N,delay) : si.bus(N)
806
+ // ```
807
+ //
808
+ // Where:
809
+ //
810
+ // * `N`: Number of output channels desired (1 or more), a constant numerical expression
811
+ // * `delay`: echo delay (integer power of 2)
812
+ //
813
+ // #### Demo
814
+ //
815
+ // ```
816
+ // _ : dm.reverseEchoN(N) : _,_
817
+ // ```
818
+ //
819
+ // #### Description
820
+ //
821
+ // The effect uses N instances of `reverseDelayRamped` at different phases.
822
+ //
823
+ //------------------------------------------------------------
824
+ reverseEchoN(N,delMax) = _<: par(i,N,ef.reverseDelayRamped(delMax,i/N));
825
+
826
+ declare reverseEchoN author "Julius O. Smith III";
827
+ declare reverseEchoN license "STK-4.3";
828
+
829
+
830
+ //-------------------`(ef.)reverseDelayRamped(delay,phase)`------------------
831
+ // Reverse delay with amplitude ramp.
832
+ //
833
+ // #### Usage
834
+ //
835
+ // ```
836
+ // _ : ef.reverseDelayRamped(delay,phase) : _
837
+ // ```
838
+ //
839
+ // Where:
840
+ //
841
+ // * `delay`: echo delay (integer power of 2)
842
+ // * `phase`: float between 0 and 1 giving ramp delay phase*delay
843
+ //
844
+ // #### Demo
845
+ //
846
+ // ```
847
+ // _ : ef.reverseDelayRamped(32,0.6) : _,_
848
+ // ```
849
+ //
850
+ //------------------------------------------------------------
851
+ reverseDelayRamped(delMax,phs) = rampGain * de.delay(delMax,del) with {
852
+ rampGain = 4 * (del/delMax) * (1 - del/delMax); // suppress click when delay-line wraps around
853
+ delOffset = int(floor(0.5 + delMax * max(0,min(0.999999,phs)))); // starting point in delay line
854
+ startPulse = (1-1') * delOffset;
855
+ del = int(startPulse : + ~ +(2)) & (delMax-1);
856
+ };
857
+
858
+ declare reverseDelayRamped author "Julius O. Smith III";
859
+ declare reverseDelayRamped license "STK-4.3";
860
+
861
+ //-------------------`(ef.)uniformPanToStereo(nChans)`------------------
862
+ // Pan nChans channels to the stereo field, spread uniformly left to right.
863
+ //
864
+ // #### Usage
865
+ //
866
+ // ```
867
+ // si.bus(N) : ef.uniformPanToStereo(N) : _,_
868
+ // ```
869
+ //
870
+ // Where:
871
+ //
872
+ // * `N`: Number of input channels to pan down to stereo, a constant numerical expression
873
+ //
874
+ // #### Demo
875
+ //
876
+ // ```
877
+ // _,_,_ : ef.uniformPanToStereo(3) : _,_
878
+ // ```
879
+ //
880
+ //------------------------------------------------------------
881
+ uniformPanToStereo(N) = si.bus(N) <: par(i,2*N,_) :
882
+ (par(i,N,*(i/(N-1))) :> _),
883
+ (par(i,N,*(1-i/(N-1))) :> _);
884
+
885
+ declare uniformPanToStereo author "Julius O. Smith III";
886
+ declare uniformPanToStereo license "STK-4.3";
887
+
888
+ //=======================================Pitch Shifting===================================
889
+ //========================================================================================
890
+
891
+ //--------------`(ef.)transpose`----------------
892
+ // A simple pitch shifter based on 2 delay lines.
893
+ // `transpose` is a standard Faust function.
894
+ //
895
+ // #### Usage
896
+ //
897
+ // ```
898
+ // _ : transpose(w, x, s) : _
899
+ // ```
900
+ //
901
+ // Where:
902
+ //
903
+ // * `w`: the window length (samples)
904
+ // * `x`: crossfade duration duration (samples)
905
+ // * `s`: shift (semitones)
906
+ //-----------------------------------------
907
+ transpose(w, x, s, sig) = de.fdelay(maxDelay,d,sig)*ma.fmin(d/x,1) +
908
+ de.fdelay(maxDelay,d+w,sig)*(1-ma.fmin(d/x,1))
909
+ with {
910
+ maxDelay = 65536;
911
+ i = 1 - pow(2, s/12);
912
+ d = i : (+ : +(w) : fmod(_,w)) ~ _;
913
+ };
914
+
915
+ //=======================================Saturators=======================================
916
+ //========================================================================================
917
+
918
+ nonlinearityEnv = environment
919
+ {
920
+ // Turn a function f(x) into a odd function g(x) such that
921
+ // g(x)==f(x) for x>=0, AND g(x)==-g(-x).
922
+ makeOdd(f, x) = x : optionalNegate : f : optionalNegate
923
+ with {
924
+ optionalNegate(y) = ba.if(x<0, -y, y);
925
+ };
926
+
927
+ // Quadratic Soft-Clip
928
+ // coded by David Braun
929
+ // Reference:
930
+ // M. Schetzen: The Volterra and Wiener Theories of Nonlinear Systems. Robert Krieger Publishing, 1980.
931
+ softclipQuadratic(x) = makeOdd(f, x)
932
+ with {
933
+ f(x) = ba.if(x <= 1./3., 2*x, ba.if(x <= 2./3.,y,1))
934
+ with {
935
+ y = (3-(2-3*x)^2)/3;
936
+ };
937
+ };
938
+
939
+ // Wavefolder/Wavefolding
940
+ // coded by David Braun
941
+ // Reference: Chapter 10: Nonlinear Processing. Figure 10.7
942
+ // U. Zölzer: Digital Audio Signal Processing. John Wiley & Sons Ltd, 2022.
943
+ wavefold(width, x) = makeOdd(f, x)
944
+ with {
945
+ f(x) = ba.if(x>(1-2*a), tri, x) : *(g)
946
+ with {
947
+ // a is the adjusted width.
948
+ a = width : aa.clip(0, 1) : *(.4);
949
+ g = 1/(1-2*a); // peak-level normalization
950
+
951
+ // triangle-like function
952
+ tri = 1 - 2.5*a + a*abs(ma.frac((x-(1-2*a))/(2*a))-.5);
953
+ };
954
+ };
955
+ };
956
+
957
+ //---------------`(ef.)softclipQuadratic`-------------------------------------------------
958
+ // Quadratic softclip nonlinearity.
959
+ //
960
+ // #### Usage
961
+ //
962
+ // ```
963
+ // _ : softclipQuadratic : _;
964
+ // ```
965
+ //---------------------------------------------------------------------------------------
966
+ declare softclipQuadratic author "David Braun";
967
+
968
+ softclipQuadratic = nonlinearityEnv.softclipQuadratic;
969
+
970
+ //---------------`(ef.)wavefold`-------------------------------------------------
971
+ // Wavefolding nonlinearity.
972
+ //
973
+ // #### Usage
974
+ //
975
+ // ```
976
+ // _ : wavefold(width) : _;
977
+ // ```
978
+ //
979
+ // Where:
980
+ //
981
+ // * `width`: The width of the folded section [0..1] (float).
982
+ //---------------------------------------------------------------------------------------
983
+ declare wavefold author "David Braun";
984
+
985
+ wavefold = nonlinearityEnv.wavefold;
986
+
987
+
988
+ //////////////////////////////////Deprecated Functions////////////////////////////////////
989
+ // This section implements functions that used to be in music.lib but that are now
990
+ // considered as "deprecated".
991
+ //////////////////////////////////////////////////////////////////////////////////////////
992
+
993
+ echo1s = vgroup("echo 1000", +~(de.delay(65536, int(hslider("millisecond", 0, 0, 1000, 0.10)*ba.millisec)-1) * (hslider("feedback", 0, 0, 100, 0.1)/100.0)));
994
+ echo2s = vgroup("echo 2000", +~(de.delay(131072, int(hslider("millisecond", 0, 0, 2000, 0.25)*ba.millisec)-1) * (hslider("feedback", 0, 0, 100, 0.1)/100.0)));
995
+ echo5s = vgroup("echo 5000", +~(de.delay(262144, int(hslider("millisecond", 0, 0, 5000, 0.50)*ba.millisec)-1) * (hslider("feedback", 0, 0, 100, 0.1)/100.0)));
996
+ echo10s = vgroup("echo 10000", +~(de.delay(524288, int(hslider("millisecond", 0, 0, 10000, 1.00)*ba.millisec)-1) * (hslider("feedback", 0, 0, 100, 0.1)/100.0)));
997
+ echo21s = vgroup("echo 21000", +~(de.delay(1048576, int(hslider("millisecond", 0, 0, 21000, 1.00)*ba.millisec)-1) * (hslider("feedback", 0, 0, 100, 0.1)/100.0)));
998
+ echo43s = vgroup("echo 43000", +~(de.delay(2097152, int(hslider("millisecond", 0, 0, 43000, 1.00)*ba.millisec)-1) * (hslider("feedback", 0, 0, 100, 0.1)/100.0)));