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,980 @@
1
+ //################################ analyzers.lib ##########################################
2
+ // Analyzers library. Its official prefix is `an`.
3
+ //
4
+ // #### References
5
+ // * <https://github.com/grame-cncm/faustlibraries/blob/master/analyzers.lib>
6
+ //########################################################################################
7
+
8
+ ma = library("maths.lib");
9
+ ba = library("basics.lib");
10
+ ro = library("routes.lib");
11
+ si = library("signals.lib");
12
+ fi = library("filters.lib");
13
+ an = library("analyzers.lib"); // for compatible copy/paste out of this file
14
+
15
+ declare name "Faust Analyzer Library";
16
+ declare version "1.2.0";
17
+
18
+ /************************************************************************
19
+ FAUST library file, jos section
20
+
21
+ Except where noted otherwise, The Faust functions below in this
22
+ section are Copyright (C) 2003-2017 by Julius O. Smith III <jos@ccrma.stanford.edu>
23
+ ([jos](http://ccrma.stanford.edu/~jos/)), and released under the
24
+ (MIT-style) [STK-4.3](#stk-4.3-license) license.
25
+
26
+ All MarkDown comments in this section is Copyright 2016-2017 by Romain
27
+ Michon and Julius O. Smith III, and is released under the
28
+ [CCA4I](https://creativecommons.org/licenses/by/4.0/) license (TODO: if/when Romain agrees)
29
+
30
+ ************************************************************************/
31
+
32
+ //==============================Amplitude Tracking========================================
33
+ //========================================================================================
34
+
35
+ //------------------`(an.)abs_envelope_rect`-----------------------------------
36
+ // Absolute value average with moving-average algorithm.
37
+ //
38
+ // #### Usage
39
+ //
40
+ // ```
41
+ // _ : abs_envelope_rect(period) : _
42
+ // ```
43
+ //
44
+ // Where:
45
+ //
46
+ // * `period`: sets the averaging frame in seconds
47
+ //-----------------------------------------------------------------------------
48
+ declare abs_envelope_rect author "Dario Sanfilippo and Julius O. Smith III";
49
+ declare abs_envelope_rect copyright "Copyright (C) 2020 Dario Sanfilippo
50
+ <sanfilippo.dario@gmail.com> and
51
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
52
+ declare abs_envelope_rect license "MIT-style STK-4.3 license";
53
+ abs_envelope_rect(period, x) = abs(x) : fi.avg_rect(period);
54
+
55
+
56
+ //------------------`(an.)abs_envelope_tau`------------------------------------
57
+ // Absolute value average with one-pole lowpass and tau response.
58
+ // (See filters.lib.)
59
+ //
60
+ // #### Usage
61
+ //
62
+ // ```
63
+ // _ : abs_envelope_tau(period) : _
64
+ // ```
65
+ //
66
+ // Where:
67
+ //
68
+ // * `period`: (time to decay by 1/e) sets the averaging frame in secs
69
+ //-----------------------------------------------------------------------------
70
+ declare abs_envelope_tau author "Dario Sanfilippo and Julius O. Smith III";
71
+ declare abs_envelope_tau copyright "Copyright (C) 2020 Dario Sanfilippo
72
+ <sanfilippo.dario@gmail.com> and
73
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
74
+ declare abs_envelope_tau license "MIT-style STK-4.3 license";
75
+ abs_envelope_tau(period, x) = abs(x) : fi.avg_tau(period);
76
+
77
+
78
+ //------------------`(an.)abs_envelope_t60`------------------------------------
79
+ // Absolute value average with one-pole lowpass and t60 response.
80
+ // (See filters.lib.)
81
+ //
82
+ // #### Usage
83
+ //
84
+ // ```
85
+ // _ : abs_envelope_t60(period) : _
86
+ // ```
87
+ //
88
+ // Where:
89
+ //
90
+ // * `period`: (time to decay by 60 dB) sets the averaging frame in secs
91
+ //-----------------------------------------------------------------------------
92
+ declare abs_envelope_t60 author "Dario Sanfilippo and Julius O. Smith III";
93
+ declare abs_envelope_t60 copyright "Copyright (C) 2020 Dario Sanfilippo
94
+ <sanfilippo.dario@gmail.com> and
95
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
96
+ declare abs_envelope_t60 license "MIT-style STK-4.3 license";
97
+ abs_envelope_t60(period, x) = abs(x) : fi.avg_t60(period);
98
+
99
+
100
+ //------------------`(an.)abs_envelope_t19`------------------------------------
101
+ // Absolute value average with one-pole lowpass and t19 response.
102
+ // (See filters.lib.)
103
+ //
104
+ // #### Usage
105
+ //
106
+ // ```
107
+ // _ : abs_envelope_t19(period) : _
108
+ // ```
109
+ //
110
+ // Where:
111
+ //
112
+ // * `period`: (time to decay by 1/e^2.2) sets the averaging frame in secs
113
+ //-----------------------------------------------------------------------------
114
+ declare abs_envelope_t19 author "Dario Sanfilippo and Julius O. Smith III";
115
+ declare abs_envelope_t19 copyright "Copyright (C) 2020 Dario Sanfilippo
116
+ <sanfilippo.dario@gmail.com> and
117
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
118
+ declare abs_envelope_t19 license "MIT-style STK-4.3 license";
119
+ abs_envelope_t19(period, x) = abs(x) : fi.avg_t19(period);
120
+
121
+
122
+ //---------------------------`(an.)amp_follower`---------------------------
123
+ // Classic analog audio envelope follower with infinitely fast rise and
124
+ // exponential decay. The amplitude envelope instantaneously follows
125
+ // the absolute value going up, but then floats down exponentially.
126
+ //
127
+ // `amp_follower` is a standard Faust function.
128
+ //
129
+ // #### Usage
130
+ //
131
+ // ```
132
+ // _ : amp_follower(rel) : _
133
+ // ```
134
+ //
135
+ // Where:
136
+ //
137
+ // * `rel`: release time = amplitude-envelope time-constant (sec) going down
138
+ //
139
+ // #### References
140
+ //
141
+ // * Musical Engineer's Handbook, Bernie Hutchins, Ithaca NY
142
+ // * 1975 Electronotes Newsletter, Bernie Hutchins
143
+ //------------------------------------------------------------
144
+ amp_follower(rel) = abs : env with {
145
+ p = ba.tau2pole(rel);
146
+ env(x) = x * (1.0 - p) : (+ : max(x,_)) ~ *(p);
147
+ };
148
+
149
+ peak_envelope = amp_follower; // Synonym for more standard naming
150
+
151
+
152
+ //---------------------------`(an.)amp_follower_ud`---------------------------
153
+ // Envelope follower with different up and down time-constants
154
+ // (also called a "peak detector").
155
+ //
156
+ // #### Usage
157
+ //
158
+ // ```
159
+ // _ : amp_follower_ud(att,rel) : _
160
+ // ```
161
+ //
162
+ // Where:
163
+ //
164
+ // * `att`: attack time = amplitude-envelope time constant (sec) going up
165
+ // * `rel`: release time = amplitude-envelope time constant (sec) going down
166
+ //
167
+ // #### Note
168
+ //
169
+ // We assume rel >> att. Otherwise, consider rel ~ max(rel,att).
170
+ // For audio, att is normally faster (smaller) than rel (e.g., 0.001 and 0.01).
171
+ // Use `amp_follower_ar` below to remove this restriction.
172
+ //
173
+ // #### Reference
174
+ //
175
+ // * "Digital Dynamic Range Compressor Design --- A Tutorial and Analysis", by
176
+ // Dimitrios Giannoulis, Michael Massberg, and Joshua D. Reiss
177
+ // <https://www.eecs.qmul.ac.uk/~josh/documents/2012/GiannoulisMassbergReiss-dynamicrangecompression-JAES2012.pdf>
178
+ //------------------------------------------------------------
179
+ amp_follower_ud(att,rel) = amp_follower(rel) : si.smooth(ba.tau2pole(att));
180
+
181
+
182
+ //---------------`(an.)amp_follower_ar`----------------
183
+ // Envelope follower with independent attack and release times. The
184
+ // release can be shorter than the attack (unlike in `amp_follower_ud`
185
+ // above).
186
+ //
187
+ // #### Usage
188
+ //
189
+ // ```
190
+ // _ : amp_follower_ar(att,rel) : _
191
+ // ```
192
+ //
193
+ // Where:
194
+ //
195
+ // * `att`: attack time = amplitude-envelope time constant (sec) going up
196
+ // * `rel`: release time = amplitude-envelope time constant (sec) going down
197
+ //
198
+ //---------------------------------------------------------
199
+ declare amp_follower_ar author "Jonatan Liljedahl, revised by Romain Michon";
200
+ amp_follower_ar(att,rel) = abs : si.onePoleSwitching(att,rel);
201
+
202
+
203
+ //------------------`(an.)ms_envelope_rect`------------------------------------
204
+ // Mean square with moving-average algorithm.
205
+ //
206
+ // #### Usage
207
+ //
208
+ // ```
209
+ // _ : ms_envelope_rect(period) : _
210
+ // ```
211
+ //
212
+ // Where:
213
+ //
214
+ // * `period`: sets the averaging frame in secs
215
+ //-----------------------------------------------------------------------------
216
+ declare ms_envelope_rect author "Dario Sanfilippo and Julius O. Smith III";
217
+ declare ms_envelope_rect copyright "Copyright (C) 2020 Dario Sanfilippo
218
+ <sanfilippo.dario@gmail.com> and
219
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
220
+ declare ms_envelope_rect license "MIT-style STK-4.3 license";
221
+ ms_envelope_rect(period, x) = x * x : fi.avg_rect(period);
222
+
223
+
224
+ //------------------`(an.)ms_envelope_tau`-------------------------------------
225
+ // Mean square average with one-pole lowpass and tau response.
226
+ // (see `filters.lib`)
227
+ //
228
+ // #### Usage
229
+ //
230
+ // ```
231
+ // _ : ms_envelope_tau(period) : _
232
+ // ```
233
+ //
234
+ // Where:
235
+ //
236
+ // * `period`: (time to decay by 1/e) sets the averaging frame in secs
237
+ //-----------------------------------------------------------------------------
238
+ declare ms_envelope_tau author "Dario Sanfilippo and Julius O. Smith III";
239
+ declare ms_envelope_tau copyright "Copyright (C) 2020 Dario Sanfilippo
240
+ <sanfilippo.dario@gmail.com> and
241
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
242
+ declare ms_envelope_tau license "MIT-style STK-4.3 license";
243
+ ms_envelope_tau(period, x) = x * x : fi.avg_tau(period);
244
+
245
+
246
+ //------------------`(an.)ms_envelope_t60`-------------------------------------
247
+ // Mean square with one-pole lowpass and t60 response.
248
+ // (see `filters.lib`)
249
+ //
250
+ // #### Usage
251
+ //
252
+ // ```
253
+ // _ : ms_envelope_t60(period) : _
254
+ // ```
255
+ //
256
+ // Where:
257
+ //
258
+ // * `period`: (time to decay by 60 dB) sets the averaging frame in secs
259
+ //-----------------------------------------------------------------------------
260
+ declare ms_envelope_t60 author "Dario Sanfilippo and Julius O. Smith III";
261
+ declare ms_envelope_t60 copyright "Copyright (C) 2020 Dario Sanfilippo
262
+ <sanfilippo.dario@gmail.com> and
263
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
264
+ declare ms_envelope_t60 license "MIT-style STK-4.3 license";
265
+ ms_envelope_t60(period, x) = x * x : fi.avg_t60(period);
266
+
267
+
268
+ //------------------`(an.)ms_envelope_t19`-------------------------------------
269
+ // Mean square with one-pole lowpass and t19 response.
270
+ // (see `filters.lib`)
271
+ //
272
+ // #### Usage
273
+ //
274
+ // ```
275
+ // _ : ms_envelope_t19(period) : _
276
+ // ```
277
+ //
278
+ // Where:
279
+ //
280
+ // * `period`: (time to decay by 1/e^2.2) sets the averaging frame in secs
281
+ //-----------------------------------------------------------------------------
282
+ declare ms_envelope_t19 author "Dario Sanfilippo and Julius O. Smith III";
283
+ declare ms_envelope_t19 copyright "Copyright (C) 2020 Dario Sanfilippo
284
+ <sanfilippo.dario@gmail.com> and
285
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
286
+ declare ms_envelope_t19 license "MIT-style STK-4.3 license";
287
+ ms_envelope_t19(period, x) = x * x : fi.avg_t19(period);
288
+
289
+
290
+ //------------------`(an.)rms_envelope_rect`-----------------------------------
291
+ // Root mean square with moving-average algorithm.
292
+ //
293
+ // #### Usage
294
+ //
295
+ // ```
296
+ // _ : rms_envelope_rect(period) : _
297
+ // ```
298
+ //
299
+ // Where:
300
+ //
301
+ // * `period`: sets the averaging frame in secs
302
+ //-----------------------------------------------------------------------------
303
+ declare rms_envelope_rect author "Dario Sanfilippo and Julius O. Smith III";
304
+ declare rms_envelope_rect copyright "Copyright (C) 2020 Dario Sanfilippo
305
+ <sanfilippo.dario@gmail.com> and
306
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
307
+ declare rms_envelope_rect license "MIT-style STK-4.3 license";
308
+ rms_envelope_rect(period, x) = ms_envelope_rect(period, x) : sqrt;
309
+
310
+
311
+ //------------------`(an.)rms_envelope_tau`------------------------------------
312
+ // Root mean square with one-pole lowpass and tau response.
313
+ // (see `filters.lib`)
314
+ //
315
+ // #### Usage
316
+ //
317
+ // ```
318
+ // _ : rms_envelope_tau(period) : _
319
+ // ```
320
+ //
321
+ // Where:
322
+ //
323
+ // * `period`: (time to decay by 1/e) sets the averaging frame in secs
324
+ //-----------------------------------------------------------------------------
325
+ declare rms_envelope_tau author "Dario Sanfilippo and Julius O. Smith III";
326
+ declare rms_envelope_tau copyright "Copyright (C) 2020 Dario Sanfilippo
327
+ <sanfilippo.dario@gmail.com> and
328
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
329
+ declare rms_envelope_tau license "MIT-style STK-4.3 license";
330
+ rms_envelope_tau(period, x) = ms_envelope_tau(period, x) : sqrt;
331
+
332
+
333
+ //------------------`(an.)rms_envelope_t60`------------------------------------
334
+ // Root mean square with one-pole lowpass and t60 response.
335
+ // (see `filters.lib`)
336
+ //
337
+ // #### Usage
338
+ //
339
+ // ```
340
+ // _ : rms_envelope_t60(period) : _
341
+ // ```
342
+ //
343
+ // Where:
344
+ //
345
+ // * `period`: (time to decay by 60 dB) sets the averaging frame in secs
346
+ //-----------------------------------------------------------------------------
347
+ declare rms_envelope_t60 author "Dario Sanfilippo and Julius O. Smith III";
348
+ declare rms_envelope_t60 copyright "Copyright (C) 2020 Dario Sanfilippo
349
+ <sanfilippo.dario@gmail.com> and
350
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
351
+ declare rms_envelope_t60 license "MIT-style STK-4.3 license";
352
+ rms_envelope_t60(period, x) = ms_envelope_t60(period, x) : sqrt;
353
+
354
+
355
+ //------------------`(an.)rms_envelope_t19`------------------------------------
356
+ // Root mean square with one-pole lowpass and t19 response.
357
+ // (see `filters.lib`)
358
+ //
359
+ // #### Usage
360
+ //
361
+ // ```
362
+ // _ : rms_envelope_t19(period) : _
363
+ // ```
364
+ //
365
+ // Where:
366
+ //
367
+ // * `period`: (time to decay by 1/e^2.2) sets the averaging frame in secs
368
+ //-----------------------------------------------------------------------------
369
+ declare rms_envelope_t19 author "Dario Sanfilippo and Julius O. Smith III";
370
+ declare rms_envelope_t19 copyright "Copyright (C) 2020 Dario Sanfilippo
371
+ <sanfilippo.dario@gmail.com> and
372
+ 2003-2020 by Julius O. Smith III <jos@ccrma.stanford.edu>";
373
+ declare rms_envelope_t19 license "MIT-style STK-4.3 license";
374
+ rms_envelope_t19(period, x) = ms_envelope_t19(period, x) : sqrt;
375
+
376
+
377
+ //-----------------------`(an.)zcr`--------------------------------------------
378
+ // Zero-crossing rate (ZCR) with one-pole lowpass averaging based on the tau
379
+ // constant. It outputs an index between 0 and 1 at a desired analysis frame.
380
+ // The ZCR of a signal correlates with the noisiness [Gouyon et al. 2000] and
381
+ // the spectral centroid [Herrera-Boyer et al. 2006] of a signal.
382
+ // For sinusoidal signals, the ZCR can be multiplied by ma.SR/2 and used
383
+ // as a frequency detector. For example, it can be deployed as a
384
+ // computationally efficient adaptive mechanism for automatic Larsen
385
+ // suppression.
386
+ //
387
+ // #### Usage
388
+ //
389
+ // ```
390
+ // _ : zcr(tau) : _
391
+ // ```
392
+ //
393
+ // Where:
394
+ //
395
+ // * `tau`: (time to decay by e^-1) sets the averaging frame in seconds.
396
+ declare zcr author "Dario Sanfilippo";
397
+ declare zcr copyright "Copyright (C) 2020 Dario Sanfilippo
398
+ <sanfilippo.dario@gmail.com>";
399
+ declare zcr license "MIT-style STK-4.3 license";
400
+ zcr(period, x) = ma.zc(x) : fi.lptau(period);
401
+
402
+
403
+ //==============================Adaptive Frequency Analysis===============================
404
+ //========================================================================================
405
+
406
+ //--------------------`(an.)pitchTracker`---------------------------------------
407
+ //
408
+ // This function implements a pitch-tracking algorithm by means of
409
+ // zero-crossing rate analysis and adaptive low-pass filtering. The design
410
+ // is based on the algorithm described in [this tutorial (section 2.2)](https://pdfslide.net/documents/faust-tutorial2.html).
411
+ //
412
+ // #### Usage
413
+ //
414
+ // ```
415
+ // _ : pitchTracker(N, tau) : _
416
+ // ```
417
+ //
418
+ // Where:
419
+ //
420
+ // * `N`: a constant numerical expression, sets the order of the low-pass filter, which
421
+ // determines the sensitivity of the algorithm for signals where partials are
422
+ // stronger than the fundamental frequency.
423
+ // * `tau`: response time in seconds based on exponentially-weighted averaging with tau time-constant. See <https://ccrma.stanford.edu/~jos/st/Exponentials.html>.
424
+ declare pitchTracker author "Dario Sanfilippo";
425
+ declare pitchTracker copyright "Copyright (C) 2022 Dario Sanfilippo
426
+ <sanfilippo.dario@gmail.com>";
427
+ declare pitchTracker license "MIT License";
428
+ pitchTracker(N, t, x) = loop ~ _
429
+ with {
430
+ xHighpassed = fi.highpass(1, 20.0, x);
431
+ loop(y) = an.zcr(t, fi.lowpass(N, max(20.0, y), xHighpassed)) * ma.SR * .5;
432
+ };
433
+
434
+
435
+ //--------------------`(an.)spectralCentroid`-----------------------------------
436
+ //
437
+ // This function implements a time-domain spectral centroid by means of RMS
438
+ // measurements and adaptive crossover filtering. The weight difference of the
439
+ // upper and lower spectral powers are used to recursively adjust the crossover
440
+ // cutoff so that the system (minimally) oscillates around a balancing point.
441
+ //
442
+ // Unlike block processing techniques such as FFT, this algorithm provides
443
+ // continuous measurements and fast response times. Furthermore, when providing
444
+ // input signals that are spectrally sparse, the algorithm will output a
445
+ // logarithmic measure of the centroid, which is perceptually desirable for
446
+ // musical applications. For example, if the input signal is the combination
447
+ // of three tones at 1000, 2000, and 4000 Hz, the centroid will be the middle
448
+ // octave.
449
+ //
450
+ // #### Usage
451
+ //
452
+ // ```
453
+ // _ : spectralCentroid(nonlinearity, tau) : _
454
+ // ```
455
+ //
456
+ // Where:
457
+ //
458
+ // * `nonlinearity`: a boolean to activate or deactivate nonlinear integration. The
459
+ // nonlinear function is useful to improve stability with very short response times
460
+ // such as .001 <= tau <= .005 , otherwise, the nonlinearity may reduce precision.
461
+ // * `tau`: response time in seconds based on exponentially-weighted averaging with tau time-constant. See <https://ccrma.stanford.edu/~jos/st/Exponentials.html>.
462
+ //
463
+ // #### Reference:
464
+ // Sanfilippo, D. (2021). Time-Domain Adaptive Algorithms for Low- and High-Level
465
+ // Audio Information Processing. Computer Music Journal, 45(1), 24-38.
466
+ //
467
+ // #### Example:
468
+ //
469
+ // `process = os.osc(500) + os.osc(1000) + os.osc(2000) + os.osc(4000) + os.osc(8000) : an.spectralCentroid(1, .001);`
470
+ //
471
+ declare spectralCentroid author "Dario Sanfilippo";
472
+ declare spectralCentroid copyright "Copyright (C) 2022 Dario Sanfilippo
473
+ <sanfilippo.dario@gmail.com>";
474
+ declare spectralCentroid license "MIT License";
475
+ spectralCentroid(nonlinearity, t, x) = loop ~ _
476
+ with {
477
+ loop(fb) = centroid
478
+ with {
479
+ w(cf) = 2.0 * ma.PI * cf * ma.T;
480
+ integrator(t, x) = fi.pole(1.0, x * (1.0 / max(ma.EPSILON, t)) * ma.T);
481
+ lowpass(cf, x) = y
482
+ letrec {
483
+ 'y = (x - s) * G + s;
484
+ 's = 2 * (x - s) * G + s;
485
+ }
486
+ with {
487
+ G = tan(w(cf) / 2.0) / (1.0 + tan(w(cf) / 2.0));
488
+ };
489
+ highpass(cf, x) = x - lowpass(cf, x);
490
+ xRMS = an.rms_envelope_tau(t, x);
491
+ xLRMS = an.rms_envelope_tau(t, lowpass(fb, x));
492
+ xHRMS = an.rms_envelope_tau(t, highpass(fb, x));
493
+ diffRMS = (xHRMS - xLRMS) / max(ma.EPSILON, xRMS);
494
+ nonlinearIntegration = ba.if(nonlinearity, pow(diffRMS, 3), diffRMS);
495
+ diffInt = max(.0, min(1.0, integrator(t, nonlinearIntegration)));
496
+ centroid = max(20.0, diffInt * ma.SR * .5);
497
+ };
498
+ };
499
+
500
+
501
+ //=============================Spectrum-Analyzers=========================================
502
+ // Spectrum-analyzers split the input signal into a bank of parallel signals, one for
503
+ // each spectral band. They are related to the Mth-Octave Filter-Banks in `filters.lib`.
504
+ // The documentation of this library contains more details about the implementation.
505
+ // The parameters are:
506
+ //
507
+ // * `M`: number of band-slices per octave (>1)
508
+ // * `N`: total number of bands (>2)
509
+ // * `ftop` = upper bandlimit of the Mth-octave bands (<SR/2)
510
+ //
511
+ // In addition to the Mth-octave output signals, there is a highpass signal
512
+ // containing frequencies from ftop to SR/2, and a "dc band" lowpass signal
513
+ // containing frequencies from 0 (dc) up to the start of the Mth-octave bands.
514
+ // Thus, the N output signals are:
515
+ // ```
516
+ // highpass(ftop), MthOctaveBands(M,N-2,ftop), dcBand(ftop*2^(-M*(N-1)))
517
+ // ```
518
+ //
519
+ // A Spectrum-Analyzer is defined here as any band-split whose bands span
520
+ // the relevant spectrum, but whose band-signals do not
521
+ // necessarily sum to the original signal, either exactly or to within an
522
+ // allpass filtering. Spectrum analyzer outputs are normally at least nearly
523
+ // "power complementary", i.e., the power spectra of the individual bands
524
+ // sum to the original power spectrum (to within some negligible tolerance).
525
+ //
526
+ // #### Increasing Channel Isolation
527
+ //
528
+ // Go to higher filter orders - see Regalia et al. or Vaidyanathan (cited
529
+ // below) regarding the construction of more aggressive recursive
530
+ // filter-banks using elliptic or Chebyshev prototype filters.
531
+ //
532
+ // #### References
533
+ //
534
+ // * "Tree-structured complementary filter banks using all-pass sections",
535
+ // Regalia et al., IEEE Trans. Circuits & Systems, CAS-34:1470-1484, Dec. 1987
536
+ // * "Multirate Systems and Filter Banks", P. Vaidyanathan, Prentice-Hall, 1993
537
+ // * Elementary filter theory: <https://ccrma.stanford.edu/~jos/filters/>
538
+ //========================================================================================
539
+
540
+
541
+ //-------------------------`(an.)mth_octave_analyzer`----------------------------
542
+ // Octave analyzer.
543
+ // `mth_octave_analyzer[N]` are standard Faust functions.
544
+ //
545
+ // #### Usage
546
+ // ```
547
+ // _ : mth_octave_analyzer(O,M,ftop,N) : par(i,N,_) // Oth-order Butterworth
548
+ // _ : mth_octave_analyzer6e(M,ftop,N) : par(i,N,_) // 6th-order elliptic
549
+ // ```
550
+ //
551
+ // Also for convenience:
552
+ //
553
+ // ```
554
+ // _ : mth_octave_analyzer3(M,ftop,N) : par(i,N,_) // 3d-order Butterworth
555
+ // _ : mth_octave_analyzer5(M,ftop,N) : par(i,N,_) // 5th-order Butterworth
556
+ // mth_octave_analyzer_default = mth_octave_analyzer6e;
557
+ // ```
558
+ //
559
+ // Where:
560
+ //
561
+ // * `O`: order of filter used to split each frequency band into two
562
+ // * `M`: number of band-slices per octave
563
+ // * `ftop`: highest band-split crossover frequency (e.g., 20 kHz)
564
+ // * `N`: total number of bands (including dc and Nyquist)
565
+ //------------------------------------------------------------
566
+ mth_octave_analyzer6e(M,ftop,N) = _ <: bsplit(N-1) with {
567
+ fc(n) = ftop * 2^(float(n-N+1)/float(M)); // -3dB crossover frequencies
568
+ lp(n) = fi.lowpass6e(fc(n)); // 6th-order elliptic - see other choices above
569
+ hp(n) = fi.highpass6e(fc(n)); // (search for lowpass* and highpass*)
570
+ bsplit(0) = _;
571
+ bsplit(i) = hp(i), (lp(i) <: bsplit(i-1));
572
+ };
573
+
574
+ // Butterworth analyzers may be cascaded with allpass
575
+ // delay-equalizers to make (allpass-complementary) filter banks:
576
+
577
+ mth_octave_analyzer(O,M,ftop,N) = _ <: bsplit(N-1) with {
578
+ fc(n) = ftop * 2^(float(n-N+1)/float(M));
579
+ lp(n) = fi.lowpass(O,fc(n)); // Order O Butterworth
580
+ hp(n) = fi.highpass(O,fc(n));
581
+ bsplit(0) = _;
582
+ bsplit(i) = hp(i), (lp(i) <: bsplit(i-1));
583
+ };
584
+
585
+ mth_octave_analyzer3(M,ftop,N) = mth_octave_analyzer(3,M,ftop,N);
586
+ mth_octave_analyzer5(M,ftop,N) = mth_octave_analyzer(5,M,ftop,N);
587
+ mth_octave_analyzer_default = mth_octave_analyzer6e; // default analyzer
588
+
589
+
590
+ //============================Mth-Octave Spectral Level===================================
591
+ // Spectral Level: display (in bargraphs) the average signal level in each spectral band.
592
+ //========================================================================================
593
+
594
+
595
+ //------------------------`(an.)mth_octave_spectral_level6e`-------------------------
596
+ // Spectral level display.
597
+ //
598
+ // #### Usage:
599
+ //
600
+ // ```
601
+ // _ : mth_octave_spectral_level6e(M,ftop,NBands,tau,dB_offset) : _
602
+ // ```
603
+ //
604
+ // Where:
605
+ //
606
+ // * `M`: bands per octave
607
+ // * `ftop`: lower edge frequency of top band
608
+ // * `NBands`: number of passbands (including highpass and dc bands),
609
+ // * `tau`: spectral display averaging-time (time constant) in seconds,
610
+ // * `dB_offset`: constant dB offset in all band level meters.
611
+ //
612
+ // Also for convenience:
613
+ //
614
+ // ```
615
+ // mth_octave_spectral_level_default = mth_octave_spectral_level6e;
616
+ // spectral_level = mth_octave_spectral_level(2,10000,20);
617
+ // ```
618
+ //------------------------------------------------------------
619
+ mth_octave_spectral_level6e(M,ftop,N,tau,dB_offset) = _<:
620
+ _,mth_octave_analyzer6e(M,ftop,N) :
621
+ _,(display:>_):attach with {
622
+ display = par(i,N,dbmeter(i));
623
+ dbmeter(i) = abs : si.smooth(ba.tau2pole(tau)) : max(ma.EPSILON) : ba.linear2db : +(dB_offset) :
624
+ meter(N-i-1);
625
+ meter(i) = speclevel_group(vbargraph("[%2i] [unit:dB]
626
+ [tooltip: Spectral Band Level in dB]", -50, 10));
627
+ O = int(((N-2)/M)+0.4999);
628
+ speclevel_group(x) = hgroup("[0] CONSTANT-Q SPECTRUM ANALYZER (6E), %N bands spanning
629
+ LP, %O octaves below %ftop Hz, HP
630
+ [tooltip: See Faust's filters.lib for documentation and references]", x);
631
+ };
632
+
633
+ mth_octave_spectral_level_default = mth_octave_spectral_level6e;
634
+ spectral_level = mth_octave_spectral_level(2,10000,20); // simple default
635
+
636
+
637
+ //---------------`(an.)[third|half]_octave_[analyzer|filterbank]`----------------
638
+ // A bunch of special cases based on the different analyzer functions described above:
639
+ //
640
+ // ```
641
+ // third_octave_analyzer(N) = mth_octave_analyzer_default(3,10000,N);
642
+ // third_octave_filterbank(N) = mth_octave_filterbank_default(3,10000,N);
643
+ // half_octave_analyzer(N) = mth_octave_analyzer_default(2,10000,N);
644
+ // half_octave_filterbank(N) = mth_octave_filterbank_default(2,10000,N);
645
+ // octave_filterbank(N) = mth_octave_filterbank_default(1,10000,N);
646
+ // octave_analyzer(N) = mth_octave_analyzer_default(1,10000,N);
647
+ // ```
648
+ //
649
+ // #### Usage
650
+ //
651
+ // See `mth_octave_spectral_level_demo` in `demos.lib`.
652
+ //------------------------------------------------------------
653
+ third_octave_analyzer(N) = mth_octave_analyzer_default(3,10000,N);
654
+ third_octave_filterbank(N) = mth_octave_filterbank_default(3,10000,N);
655
+ // Third-Octave Filter-Banks have been used in audio for over a century.
656
+ // See, e.g.,
657
+ // Acoustics [the book], by L. L. Beranek
658
+ // Amer. Inst. Physics for the Acoustical Soc. America,
659
+ // <http://asa.aip.org/publications.html, 1986 (1st ed.1954)>
660
+
661
+ // Third-octave bands across the audio spectrum are too wide for current
662
+ // typical computer screens, so half-octave bands are the default:
663
+ half_octave_analyzer(N) = mth_octave_analyzer_default(2,10000,N);
664
+ half_octave_filterbank(N) = mth_octave_filterbank_default(2,10000,N);
665
+
666
+ octave_filterbank(N) = mth_octave_filterbank_default(1,10000,N);
667
+ octave_analyzer(N) = mth_octave_analyzer_default(1,10000,N);
668
+
669
+
670
+ //===============Arbritary-Crossover Filter-Banks and Spectrum Analyzers==================
671
+ // These are similar to the Mth-octave analyzers above, except that the
672
+ // band-split frequencies are passed explicitly as arguments.
673
+ //========================================================================================
674
+
675
+ // ACKNOWLEDGMENT
676
+ // Technique for processing a variable number of signal arguments due
677
+ // to Yann Orlarey (as is the entire Faust framework!)
678
+
679
+ //---------------`(an.)analyzer`--------------------------
680
+ // Analyzer.
681
+ //
682
+ // #### Usage
683
+ //
684
+ // ```
685
+ // _ : analyzer(O,freqs) : par(i,N,_) // No delay equalizer
686
+ // ```
687
+ //
688
+ // Where:
689
+ //
690
+ // * `O`: band-split filter order (ODD integer required for filterbank[i])
691
+ // * `freqs`: (fc1,fc2,...,fcNs) [in numerically ascending order], where
692
+ // Ns=N-1 is the number of octave band-splits
693
+ // (total number of bands N=Ns+1).
694
+ //
695
+ // If frequencies are listed explicitly as arguments, enclose them in parens:
696
+ //
697
+ // ```
698
+ // _ : analyzer(3,(fc1,fc2)) : _,_,_
699
+ // ```
700
+ //---------------------------------------------------
701
+ analyzer(O,lfreqs) = _ <: bsplit(nb)
702
+ with {
703
+ nb = ba.count(lfreqs);
704
+ fc(n) = ba.take(n, lfreqs);
705
+ lp(n) = fi.lowpass(O,fc(n));
706
+ hp(n) = fi.highpass(O,fc(n));
707
+ bsplit(0) = _;
708
+ bsplit(i) = hp(i), (lp(i) <: bsplit(i-1));
709
+ };
710
+
711
+ //================ Fast Fourier Transform (fft) and its Inverse (ifft) ===================
712
+ // Sliding FFTs that compute a rectangularly windowed FFT each sample.
713
+ //========================================================================================
714
+
715
+ //---------------`(an.)goertzelOpt` --------------------------
716
+ // Optimized Goertzel filter.
717
+ //
718
+ // #### Usage
719
+ //
720
+ // ```
721
+ // _ : goertzelOpt(freq,n) : _
722
+ // ```
723
+ //
724
+ // Where:
725
+ //
726
+ // * `freq`: frequency to be analyzed
727
+ // * `n`: the Goertzel block size
728
+ //
729
+ // #### Reference
730
+ //
731
+ // * <https://en.wikipedia.org/wiki/Goertzel_algorithm>
732
+ //---------------------------------------------------
733
+ goertzelOpt(freq,n,x) = mg
734
+ with {
735
+ mg = sqrt(eq^2 + eq'^2-eq*eq'*c) : ba.sAndH(reset0); // magnitude
736
+ cnt = ba.time%n; // counter for windowing
737
+ reset0 = cnt == (n-1); // reset when end of window
738
+ reset1 = 1-(cnt == 0); // reset when beginning of window
739
+ k = 0.5 + n*freq/ma.SR;
740
+ w = (2*ma.PI/n)*k;
741
+ c = 2*cos(w);
742
+ eq = s // equation
743
+ letrec{
744
+ 's = c*s*reset1 - s'*reset1*reset1' + x;
745
+ };
746
+ };
747
+
748
+ //---------------`(an.)goertzelComp` --------------------------
749
+ // Complex Goertzel filter.
750
+ //
751
+ // #### Usage
752
+ //
753
+ // ```
754
+ // _ : goertzelComp(freq,n) : _
755
+ // ```
756
+ //
757
+ // Where:
758
+ //
759
+ // * `freq`: frequency to be analyzed
760
+ // * `n`: the Goertzel block size
761
+ //
762
+ // #### Reference
763
+ //
764
+ // * <https://en.wikipedia.org/wiki/Goertzel_algorithm>
765
+ //---------------------------------------------------
766
+ goertzelComp(freq,n,x) = mg
767
+ with {
768
+ mg = sqrt(real^2 + imag^2); // magnitude
769
+ cnt = ba.time%n; // counter for windowing
770
+ reset0 = cnt == (n-1); // reset when end of window
771
+ reset1 = 1-(cnt == 0); // reset when beginning of window
772
+ k = 0.5 + n*freq/ma.SR;
773
+ w = (2*ma.PI/n)*k;
774
+ sine = sin(w);
775
+ cosine = cos(w);
776
+ c = 2*cosine;
777
+ eq = s
778
+ letrec{
779
+ 's = c*s*reset1 - s'*reset1*reset1' + x;
780
+ };
781
+ real = eq - eq'*cosine;
782
+ imag = eq'*sine;
783
+ };
784
+
785
+ //---------------`(an.)goertzel` --------------------------
786
+ // Same as [`goertzelOpt`](#goertzelopt).
787
+ //
788
+ // #### Usage
789
+ //
790
+ // ```
791
+ // _ : goertzel(freq,n) : _
792
+ // ```
793
+ //
794
+ // Where:
795
+ //
796
+ // * `freq`: frequency to be analyzed
797
+ // * `n`: the Goertzel block size
798
+ //
799
+ // #### Reference
800
+ //
801
+ // * <https://en.wikipedia.org/wiki/Goertzel_algorithm>
802
+ //---------------------------------------------------
803
+ goertzel = goertzelOpt;
804
+
805
+ // Undocumented utility functions used by fft and ifft:
806
+ c_magsq(N) = si.cbus(N) : par(i,N,(par(j,2,abs<:_*_):>_)) :> si.bus(N);
807
+ c_magdb(N) = si.cbus(N) : an.c_magsq(N) : par(i,N,(max(ma.EPSILON):log10:*(10.0)));
808
+ c_select_pos_freqs(2) = (_,_), (_,_); // both dc and SR/2 included with "positive frequencies"
809
+ c_select_pos_freqs(N) = si.cbus(N) : par(i,N/2+1,(_,_)),par(i,N/2-1,(!,!)) : si.cbus(N/2+1); // for complex spectra
810
+ select_pos_freqs(2) = _,_; // both dc and SR/2 included
811
+ select_pos_freqs(N) = si.bus(N) : par(i,N/2+1, _), par(i,N/2-1, !) : si. bus(N/2+1); // real power spectra etc.
812
+
813
+ rtorv(N,x) = par(i,N,x@i); // convert real scalar signal to length N real vector
814
+ rtocv(N,x) = par(i,N,(x@i,0)); // convert real scalar signal to length N complex vector with 0 imag part
815
+ rvtocv(N) = si.bus(N), par(i,N,0) : ro.interleave(N,2); // convert real N-vector to complex with 0 imag part
816
+
817
+ bit_reverse_selector(N,0) = 0;
818
+ bit_reverse_selector(N,i) = int(int(N)>>1)*(i&1) + bit_reverse_selector(int(N)>>1,(i>>1));
819
+
820
+ // decimation in time does this to the input:
821
+ bit_reverse_shuffle(N) = si.bus(N) <: par(i,N,bit_reverse_permuter(N,i)) with {
822
+ bit_reverse_permuter(N,k) = ba.selector(bit_reverse_selector(N,k),N);
823
+ };
824
+
825
+ c_bit_reverse_shuffle(N) = si.cbus(N) <: par(i,N,c_bit_reverse_permuter(N,i)) with {
826
+ c_bit_reverse_permuter(N,k) = ba.cselector(bit_reverse_selector(N,k),N);
827
+ };
828
+
829
+
830
+ //---------------`(an.)fft` --------------------------
831
+ // Fast Fourier Transform (FFT).
832
+ //
833
+ // #### Usage
834
+ //
835
+ // ```
836
+ // si.cbus(N) : fft(N) : si.cbus(N)
837
+ // ```
838
+ //
839
+ // Where:
840
+ //
841
+ // * `si.cbus(N)` is a bus of N complex signals, each specified by real and imaginary parts:
842
+ // (r0,i0), (r1,i1), (r2,i2), ...
843
+ // * `N` is the FFT size (must be a power of 2: 2,4,8,16,... known at compile time)
844
+ // * `fft(N)` performs a length `N` FFT for complex signals (radix 2)
845
+ // * The output is a bank of N complex signals containing the complex spectrum over time:
846
+ // (R0, I0), (R1,I1), ...
847
+ // - The dc component is (R0,I0), where I0=0 for real input signals.
848
+ //
849
+ // FFTs of Real Signals:
850
+ //
851
+ // * To perform a sliding FFT over a real input signal, you can say
852
+ // ```
853
+ // process = signal : an.rtocv(N) : an.fft(N);
854
+ // ```
855
+ // where `an.rtocv` converts a real (scalar) signal to a complex vector signal having a zero imaginary part.
856
+ //
857
+ // * See `an.rfft_analyzer_c` (in `analyzers.lib`) and related functions for more detailed usage examples.
858
+ //
859
+ // * Use `an.rfft_spectral_level(N,tau,dB_offset)` to display the power spectrum of a real signal.
860
+ //
861
+ // * See `dm.fft_spectral_level_demo(N)` in `demos.lib` for an example GUI driving `an.rfft_spectral_level()`.
862
+ //
863
+ // #### Reference
864
+ //
865
+ // * [Decimation-in-time (DIT) Radix-2 FFT](https://cnx.org/contents/zmcmahhR@7/Decimation-in-time-DIT-Radix-2)
866
+ //
867
+ //---------------------------------------------------
868
+ fft(N) = si.cbus(N) : an.c_bit_reverse_shuffle(N) : an.fftb(N); // shuffle off to the butterflies:
869
+ fftb(1) = _,_; // each complex number is represented as (real,imag)
870
+ fftb(N) = si.cbus(N) : (fftb(No2) <: (si.cbus(No2), si.cbus(No2))), (fftb(No2)
871
+ <: (si.cbus(N):twiddleOdd(N))) :> si.cbus(N)
872
+ with {
873
+ No2 = int(N)>>1;
874
+ // Half of these multiplies can go away since w(k) = - w(k+N/2), and others as well (1,j,-j,-1,...)
875
+ twiddleOdd(N) = par(k,N,si.cmul(cos(w(k)),0-sin(w(k))))
876
+ with {
877
+ w(k) = 2.0*ma.PI*float(k)/float(N);
878
+ };
879
+ };
880
+
881
+ // `rfft`
882
+ // Slow to compile: rfft(N) = si.bus(N) : an.bit_reverse_shuffle(N) : an.rvtocv(N) : an.fftb(N);
883
+ // Order of magnitude faster to compile but takes a scalar input, so too different from fft:
884
+ // rfft(N) = an.rtocv(N) : an.fft(N);
885
+
886
+ //---------------`(an.)ifft`--------------------------
887
+ // Inverse Fast Fourier Transform (IFFT).
888
+ //
889
+ // #### Usage
890
+ //
891
+ // ```
892
+ // si.cbus(N) : ifft(N) : si.cbus(N)
893
+ // ```
894
+ //
895
+ // Where:
896
+ //
897
+ // * N is the IFFT size (power of 2)
898
+ // * Input is a complex spectrum represented as interleaved real and imaginary parts:
899
+ // (R0, I0), (R1,I1), (R2,I2), ...
900
+ // * Output is a bank of N complex signals giving the complex signal in the time domain:
901
+ // (r0, i0), (r1,i1), (r2,i2), ...
902
+ //---------------------------------------------------
903
+ ifft(N) = si.cbus(N) : an.c_bit_reverse_shuffle(N) : an.ifftb(N); // input is shuffled off to the butterflies:
904
+ ifftb(1) = _,_;
905
+ ifftb(N) = si.cbus(N) : (ifftb(No2) <: (si.cbus(No2), si.cbus(No2))), (ifftb(No2)
906
+ <: (si.cbus(N):twiddleOddConj(N))) :> si.cbus(N) : par(i,2*N,/(2.0))
907
+ with {
908
+ No2 = int(N)>>1;
909
+ // Half of these multiplies can go away since w(k) = - w(k+N/2), and others as well (1,j,-j,-1,...)
910
+ twiddleOddConj(N) = par(k,N,si.cmul(cos(w(k)),sin(w(k))))
911
+ with {
912
+ w(k) = 2.0*ma.PI*float(k)/float(N);
913
+ };
914
+ };
915
+
916
+
917
+ // ========== FFT Analyzers ==========
918
+ rfft_analyzer_c(N) = an.rtocv(N) : an.fft(N) : an.c_select_pos_freqs(N); // complex spectral bins 0 to N/2
919
+ rfft_analyzer_db(N) = an.rfft_analyzer_c(N) : an.c_magdb(N/2+1); // assumes real input
920
+ rfft_analyzer_magsq(N) = an.rfft_analyzer_c(N) : an.c_magsq(N/2+1); // assumes real input
921
+
922
+ rfft_spectral_level(N,tau,dB_offset) = _<: _, an.rfft_analyzer_db(N) : _,(display:>_):attach with {
923
+ display = par(i,N/2+1,dbmeter(i));
924
+ dbmeter(i) = si.smooth(ba.tau2pole(tau)) : +(dB_offset) : meter(i);
925
+ meter(i) = speclevel_group(vbargraph("[%2i] [unit:dB]
926
+ [tooltip: FFT Spectral Band Level in dB]", -50, 10));
927
+ speclevel_group(x) = hgroup("[0] FFT SPECTRUM ANALYZER, %N bands
928
+ [tooltip: fft_spectral_level in Faust's analyzers.lib]", x);
929
+ };
930
+
931
+ // end jos section
932
+ /************************************************************************
933
+ ************************************************************************
934
+ FAUST library file, GRAME section
935
+
936
+ Except where noted otherwise, Copyright (C) 2003-2017 by GRAME,
937
+ Centre National de Creation Musicale.
938
+ ----------------------------------------------------------------------
939
+ GRAME LICENSE
940
+
941
+ This program is free software; you can redistribute it and/or modify
942
+ it under the terms of the GNU Lesser General Public License as
943
+ published by the Free Software Foundation; either version 2.1 of the
944
+ License, or (at your option) any later version.
945
+
946
+ This program is distributed in the hope that it will be useful,
947
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
948
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
949
+ GNU Lesser General Public License for more details.
950
+
951
+ You should have received a copy of the GNU Lesser General Public
952
+ License along with the GNU C Library; if not, write to the Free
953
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
954
+ 02111-1307 USA.
955
+
956
+ EXCEPTION TO THE LGPL LICENSE : As a special exception, you may create a
957
+ larger FAUST program which directly or indirectly imports this library
958
+ file and still distribute the compiled code generated by the FAUST
959
+ compiler, or a modified version of this compiled code, under your own
960
+ copyright and license. This EXCEPTION TO THE LGPL LICENSE explicitly
961
+ grants you the right to freely choose the license for the resulting
962
+ compiled code. In particular the resulting compiled code has no obligation
963
+ to be LGPL or GPL. For example you are free to choose a commercial or
964
+ closed source license or any other license if you decide so.
965
+ ************************************************************************
966
+ ************************************************************************/
967
+
968
+ // TODO: Add GRAME functions here
969
+
970
+ //########################################################################################
971
+ /************************************************************************
972
+ FAUST library file, further contributions section
973
+
974
+ All contributions below should indicate both the contributor and terms
975
+ of license. If no such indication is found, "git blame" will say who
976
+ last edited each line, and that person can be emailed to inquire about
977
+ license disposition, if their license choice is not already indicated
978
+ elsewhere among the libraries. It is expected that all software will be
979
+ released under LGPL, STK-4.3, MIT, BSD, or a similar FOSS license.
980
+ ************************************************************************/