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.
- cyfaust/CMakeLists.txt +93 -0
- cyfaust/__init__.py +0 -0
- cyfaust/__main__.py +819 -0
- cyfaust/box.pxd +46 -0
- cyfaust/box.pyx +2459 -0
- cyfaust/common.pxd +5 -0
- cyfaust/common.pyx +61 -0
- cyfaust/cyfaust.cpython-311-darwin.so +0 -0
- cyfaust/faust_box.pxd +298 -0
- cyfaust/faust_box_oo.pyx +66 -0
- cyfaust/faust_gui.pxd +261 -0
- cyfaust/faust_interp.pxd +160 -0
- cyfaust/faust_player.pxd +80 -0
- cyfaust/faust_signal.pxd +257 -0
- cyfaust/gui_statics.cpp +15 -0
- cyfaust/interp.pyx +673 -0
- cyfaust/player.cpp +32519 -0
- cyfaust/player.pyx +191 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUBase.cpp +2327 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUBase.h +1019 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUDispatch.cpp +423 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUDispatch.h +82 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUInputElement.cpp +151 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUInputElement.h +119 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUOutputElement.cpp +62 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUOutputElement.h +66 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUPlugInDispatch.cpp +615 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUPlugInDispatch.h +128 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUScopeElement.cpp +512 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/AUScopeElement.h +544 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/ComponentBase.cpp +370 -0
- cyfaust/resources/architecture/AU/AUPublic/AUBase/ComponentBase.h +340 -0
- cyfaust/resources/architecture/AU/AUPublic/AUEffectBase/AUEffectBase.cpp +463 -0
- cyfaust/resources/architecture/AU/AUPublic/AUEffectBase/AUEffectBase.h +391 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUInstrumentBase.cpp +837 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUInstrumentBase.h +267 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUMIDIBase.cpp +495 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/AUMIDIBase.h +213 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/LockFreeFIFO.h +168 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MIDIControlHandler.h +92 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MusicDeviceBase.cpp +354 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/MusicDeviceBase.h +126 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthElement.cpp +419 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthElement.h +227 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthEvent.h +145 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNote.cpp +138 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNote.h +186 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNoteList.cpp +93 -0
- cyfaust/resources/architecture/AU/AUPublic/AUInstrumentBase/SynthNoteList.h +232 -0
- cyfaust/resources/architecture/AU/AUPublic/Utility/AUBaseHelper.cpp +134 -0
- cyfaust/resources/architecture/AU/AUPublic/Utility/AUBaseHelper.h +80 -0
- cyfaust/resources/architecture/AU/AUPublic/Utility/AUBuffer.cpp +217 -0
- cyfaust/resources/architecture/AU/AUPublic/Utility/AUBuffer.h +267 -0
- cyfaust/resources/architecture/AU/AUPublic/Utility/AUMIDIDefs.h +136 -0
- cyfaust/resources/architecture/AU/AUPublic/Utility/AUSilentTimeout.h +93 -0
- cyfaust/resources/architecture/AU/English.lproj/InfoPlist.strings +0 -0
- cyfaust/resources/architecture/AU/FaustAU.exp +2 -0
- cyfaust/resources/architecture/AU/FaustAU.xcodeproj/project.pbxproj +968 -0
- cyfaust/resources/architecture/AU/FaustAU.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- cyfaust/resources/architecture/AU/FaustAUCustomView.plist +14 -0
- cyfaust/resources/architecture/AU/Info.plist +47 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAAtomic.h +305 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAAtomicStack.h +239 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAAudioChannelLayout.cpp +153 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAAudioChannelLayout.h +199 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAAutoDisposer.h +508 -0
- cyfaust/resources/architecture/AU/PublicUtility/CABufferList.cpp +264 -0
- cyfaust/resources/architecture/AU/PublicUtility/CABufferList.h +319 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAByteOrder.h +161 -0
- cyfaust/resources/architecture/AU/PublicUtility/CADebugMacros.cpp +88 -0
- cyfaust/resources/architecture/AU/PublicUtility/CADebugMacros.h +580 -0
- cyfaust/resources/architecture/AU/PublicUtility/CADebugPrintf.cpp +89 -0
- cyfaust/resources/architecture/AU/PublicUtility/CADebugPrintf.h +115 -0
- cyfaust/resources/architecture/AU/PublicUtility/CADebugger.cpp +77 -0
- cyfaust/resources/architecture/AU/PublicUtility/CADebugger.h +56 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAException.h +83 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAGuard.cpp +339 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAGuard.h +133 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAHostTimeBase.cpp +110 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAHostTimeBase.h +231 -0
- cyfaust/resources/architecture/AU/PublicUtility/CALogMacros.h +140 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAMath.h +68 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAMutex.cpp +345 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAMutex.h +163 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAReferenceCounted.h +87 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAStreamBasicDescription.cpp +795 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAStreamBasicDescription.h +409 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAThreadSafeList.h +255 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnit.cpp +191 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnit.h +100 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAVectorUnitTypes.h +59 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAXException.cpp +49 -0
- cyfaust/resources/architecture/AU/PublicUtility/CAXException.h +338 -0
- cyfaust/resources/architecture/AU/SectionPatternLight.tiff +0 -0
- cyfaust/resources/architecture/AU/Source/AUSource/FaustAU.h +38 -0
- cyfaust/resources/architecture/AU/Source/AUSource/FaustAU.r +153 -0
- cyfaust/resources/architecture/AU/Source/AUSource/FaustAUVersion.h +64 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Bargraph.h +18 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Bargraph.m +21 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Button.h +20 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Button.m +56 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomView.h +87 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomView.m +834 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomViewFactory.h +13 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_CustomViewFactory.m +22 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Knob.h +81 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Knob.m +199 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Slider.h +18 -0
- cyfaust/resources/architecture/AU/Source/CocoaUI/FaustAU_Slider.m +21 -0
- cyfaust/resources/architecture/AU/version.plist +16 -0
- cyfaust/resources/architecture/VST/Info.plist +28 -0
- cyfaust/resources/architecture/VST/PkgInfo +1 -0
- cyfaust/resources/architecture/VST/README +11 -0
- cyfaust/resources/architecture/VST/VST.xcode/project.pbxproj +655 -0
- cyfaust/resources/architecture/alsa-console.cpp +246 -0
- cyfaust/resources/architecture/alsa-gtk.cpp +220 -0
- cyfaust/resources/architecture/alsa-qt.cpp +229 -0
- cyfaust/resources/architecture/api/DspFaust.cpp +612 -0
- cyfaust/resources/architecture/api/DspFaust.h +511 -0
- cyfaust/resources/architecture/api/README.md +237 -0
- cyfaust/resources/architecture/api/doc/Generic.md +38 -0
- cyfaust/resources/architecture/au-effect.cpp +487 -0
- cyfaust/resources/architecture/au-instrument.cpp +573 -0
- cyfaust/resources/architecture/bench.cpp +91 -0
- cyfaust/resources/architecture/c-jack-gtk.c +227 -0
- cyfaust/resources/architecture/ca-gtk.cpp +284 -0
- cyfaust/resources/architecture/ca-qt.cpp +424 -0
- cyfaust/resources/architecture/cpal.rs +195 -0
- cyfaust/resources/architecture/csound.cpp +245 -0
- cyfaust/resources/architecture/csvplot.cpp +227 -0
- cyfaust/resources/architecture/daisy/Makefile +14 -0
- cyfaust/resources/architecture/daisy/README.md +50 -0
- cyfaust/resources/architecture/daisy/ex_faust.cpp +173 -0
- cyfaust/resources/architecture/dssi.cpp +1262 -0
- cyfaust/resources/architecture/dummy-mem.cpp +186 -0
- cyfaust/resources/architecture/dummy.cpp +294 -0
- cyfaust/resources/architecture/faust/au/AUUI.h +404 -0
- cyfaust/resources/architecture/faust/audio/alsa-dsp.h +693 -0
- cyfaust/resources/architecture/faust/audio/android-dsp.h +583 -0
- cyfaust/resources/architecture/faust/audio/audio.h +115 -0
- cyfaust/resources/architecture/faust/audio/channels.h +122 -0
- cyfaust/resources/architecture/faust/audio/coreaudio-dsp.h +1543 -0
- cyfaust/resources/architecture/faust/audio/coreaudio-ios-dsp.h +743 -0
- cyfaust/resources/architecture/faust/audio/dummy-audio.h +255 -0
- cyfaust/resources/architecture/faust/audio/esp32-dsp.h +284 -0
- cyfaust/resources/architecture/faust/audio/fpe.h +164 -0
- cyfaust/resources/architecture/faust/audio/jack-dsp.h +534 -0
- cyfaust/resources/architecture/faust/audio/juce-dsp.h +119 -0
- cyfaust/resources/architecture/faust/audio/netjack-dsp.h +354 -0
- cyfaust/resources/architecture/faust/audio/oboe-dsp.h +308 -0
- cyfaust/resources/architecture/faust/audio/ofaudio-dsp.h +155 -0
- cyfaust/resources/architecture/faust/audio/opensles-android-dsp.h +631 -0
- cyfaust/resources/architecture/faust/audio/osc-dsp.h +120 -0
- cyfaust/resources/architecture/faust/audio/portaudio-dsp.h +236 -0
- cyfaust/resources/architecture/faust/audio/rtaudio-dsp.h +241 -0
- cyfaust/resources/architecture/faust/audio/samAudio.h +140 -0
- cyfaust/resources/architecture/faust/audio/teensy-dsp.h +171 -0
- cyfaust/resources/architecture/faust/dsp/cmajor-cpp-dsp.h +253 -0
- cyfaust/resources/architecture/faust/dsp/cmajorpatch-dsp.h +483 -0
- cyfaust/resources/architecture/faust/dsp/cpp-dsp-adapter.h +38 -0
- cyfaust/resources/architecture/faust/dsp/dsp-adapter.h +836 -0
- cyfaust/resources/architecture/faust/dsp/dsp-bench.h +611 -0
- cyfaust/resources/architecture/faust/dsp/dsp-checker.h +115 -0
- cyfaust/resources/architecture/faust/dsp/dsp-combiner.h +810 -0
- cyfaust/resources/architecture/faust/dsp/dsp-compute-adapter.h +159 -0
- cyfaust/resources/architecture/faust/dsp/dsp-multi.h +702 -0
- cyfaust/resources/architecture/faust/dsp/dsp-multifun.h +90 -0
- cyfaust/resources/architecture/faust/dsp/dsp-optimizer.h +511 -0
- cyfaust/resources/architecture/faust/dsp/dsp-tools.h +229 -0
- cyfaust/resources/architecture/faust/dsp/dsp.h +321 -0
- cyfaust/resources/architecture/faust/dsp/fastmath.cpp +301 -0
- cyfaust/resources/architecture/faust/dsp/faust-dynamic-engine.cpp +494 -0
- cyfaust/resources/architecture/faust/dsp/faust-dynamic-engine.h +386 -0
- cyfaust/resources/architecture/faust/dsp/faust-engine.h +75 -0
- cyfaust/resources/architecture/faust/dsp/faust-poly-engine.h +638 -0
- cyfaust/resources/architecture/faust/dsp/interpreter-dsp-c.h +288 -0
- cyfaust/resources/architecture/faust/dsp/interpreter-dsp.h +362 -0
- cyfaust/resources/architecture/faust/dsp/interpreter-machine-dsp.h +233 -0
- cyfaust/resources/architecture/faust/dsp/libfaust-box-c.h +817 -0
- cyfaust/resources/architecture/faust/dsp/libfaust-box.h +889 -0
- cyfaust/resources/architecture/faust/dsp/libfaust-c.h +116 -0
- cyfaust/resources/architecture/faust/dsp/libfaust-signal-c.h +649 -0
- cyfaust/resources/architecture/faust/dsp/libfaust-signal.h +731 -0
- cyfaust/resources/architecture/faust/dsp/llvm-dsp-adapter.h +160 -0
- cyfaust/resources/architecture/faust/dsp/llvm-dsp-c.h +524 -0
- cyfaust/resources/architecture/faust/dsp/llvm-dsp.h +575 -0
- cyfaust/resources/architecture/faust/dsp/llvm-machine-dsp.h +215 -0
- cyfaust/resources/architecture/faust/dsp/one-sample-dsp.h +477 -0
- cyfaust/resources/architecture/faust/dsp/poly-dsp.h +1079 -0
- cyfaust/resources/architecture/faust/dsp/poly-interpreter-dsp.h +143 -0
- cyfaust/resources/architecture/faust/dsp/poly-llvm-dsp.h +249 -0
- cyfaust/resources/architecture/faust/dsp/poly-wasm-dsp.h +257 -0
- cyfaust/resources/architecture/faust/dsp/proxy-dsp.h +108 -0
- cyfaust/resources/architecture/faust/dsp/proxy-osc-dsp.h +109 -0
- cyfaust/resources/architecture/faust/dsp/rnbo-dsp.h +187 -0
- cyfaust/resources/architecture/faust/dsp/sound-player.h +428 -0
- cyfaust/resources/architecture/faust/dsp/timed-dsp.h +279 -0
- cyfaust/resources/architecture/faust/dsp/wasm-dsp-imp.h +188 -0
- cyfaust/resources/architecture/faust/dsp/wasm-dsp.h +309 -0
- cyfaust/resources/architecture/faust/dsp/ysfx-dsp.h +188 -0
- cyfaust/resources/architecture/faust/export.h +61 -0
- cyfaust/resources/architecture/faust/gui/APIUI.h +726 -0
- cyfaust/resources/architecture/faust/gui/BelaOSCUI.h +170 -0
- cyfaust/resources/architecture/faust/gui/CGlue.h +667 -0
- cyfaust/resources/architecture/faust/gui/CInterface.h +142 -0
- cyfaust/resources/architecture/faust/gui/ControlSequenceUI.h +197 -0
- cyfaust/resources/architecture/faust/gui/ControlUI.h +137 -0
- cyfaust/resources/architecture/faust/gui/DaisyControlUI.h +283 -0
- cyfaust/resources/architecture/faust/gui/DaisyPatchInitControlUI.h +254 -0
- cyfaust/resources/architecture/faust/gui/DecoratorUI.h +115 -0
- cyfaust/resources/architecture/faust/gui/Esp32ControlUI.h +341 -0
- cyfaust/resources/architecture/faust/gui/Esp32Reader.h +102 -0
- cyfaust/resources/architecture/faust/gui/Esp32SensorUI.h +137 -0
- cyfaust/resources/architecture/faust/gui/FUI.h +147 -0
- cyfaust/resources/architecture/faust/gui/GTKUI.h +1414 -0
- cyfaust/resources/architecture/faust/gui/GUI.h +465 -0
- cyfaust/resources/architecture/faust/gui/JSONControl.h +48 -0
- cyfaust/resources/architecture/faust/gui/JSONUI.h +722 -0
- cyfaust/resources/architecture/faust/gui/JSONUIDecoder.h +589 -0
- cyfaust/resources/architecture/faust/gui/JuceGUI.h +2061 -0
- cyfaust/resources/architecture/faust/gui/JuceOSCUI.h +163 -0
- cyfaust/resources/architecture/faust/gui/JuceParameterUI.h +158 -0
- cyfaust/resources/architecture/faust/gui/JuceReader.h +103 -0
- cyfaust/resources/architecture/faust/gui/JuceStateUI.h +88 -0
- cyfaust/resources/architecture/faust/gui/LayoutUI.h +423 -0
- cyfaust/resources/architecture/faust/gui/LibsndfileReader.h +366 -0
- cyfaust/resources/architecture/faust/gui/MapUI.h +370 -0
- cyfaust/resources/architecture/faust/gui/MemoryReader.h +111 -0
- cyfaust/resources/architecture/faust/gui/MetaDataUI.h +357 -0
- cyfaust/resources/architecture/faust/gui/MidiUI.h +939 -0
- cyfaust/resources/architecture/faust/gui/OCVUI.h +688 -0
- cyfaust/resources/architecture/faust/gui/OSCUI.h +219 -0
- cyfaust/resources/architecture/faust/gui/PathBuilder.h +228 -0
- cyfaust/resources/architecture/faust/gui/PresetUI.h +337 -0
- cyfaust/resources/architecture/faust/gui/PrintCUI.h +152 -0
- cyfaust/resources/architecture/faust/gui/PrintUI.h +121 -0
- cyfaust/resources/architecture/faust/gui/QTUI.h +1891 -0
- cyfaust/resources/architecture/faust/gui/RosCI.h +493 -0
- cyfaust/resources/architecture/faust/gui/RosUI.h +488 -0
- cyfaust/resources/architecture/faust/gui/SaveUI.h +163 -0
- cyfaust/resources/architecture/faust/gui/SimpleParser.h +583 -0
- cyfaust/resources/architecture/faust/gui/SoundUI.h +217 -0
- cyfaust/resources/architecture/faust/gui/Soundfile.h +342 -0
- cyfaust/resources/architecture/faust/gui/Styles/Blue.qrc +5 -0
- cyfaust/resources/architecture/faust/gui/Styles/Blue.qss +177 -0
- cyfaust/resources/architecture/faust/gui/Styles/Default.qrc +5 -0
- cyfaust/resources/architecture/faust/gui/Styles/Default.qss +117 -0
- cyfaust/resources/architecture/faust/gui/Styles/Grey.qrc +5 -0
- cyfaust/resources/architecture/faust/gui/Styles/Grey.qss +174 -0
- cyfaust/resources/architecture/faust/gui/Styles/Salmon.qrc +5 -0
- cyfaust/resources/architecture/faust/gui/Styles/Salmon.qss +171 -0
- cyfaust/resources/architecture/faust/gui/UI.h +87 -0
- cyfaust/resources/architecture/faust/gui/ValueConverter.h +543 -0
- cyfaust/resources/architecture/faust/gui/WaveReader.h +364 -0
- cyfaust/resources/architecture/faust/gui/console.h +322 -0
- cyfaust/resources/architecture/faust/gui/httpdUI.h +372 -0
- cyfaust/resources/architecture/faust/gui/meta.h +39 -0
- cyfaust/resources/architecture/faust/gui/mspUI.h +580 -0
- cyfaust/resources/architecture/faust/gui/qrcodegen.h +269 -0
- cyfaust/resources/architecture/faust/gui/qrcodegen.impl.h +1025 -0
- cyfaust/resources/architecture/faust/gui/ring-buffer.h +414 -0
- cyfaust/resources/architecture/faust/midi/RtMidi.cpp +3054 -0
- cyfaust/resources/architecture/faust/midi/RtMidi.h +1034 -0
- cyfaust/resources/architecture/faust/midi/bela-midi.h +266 -0
- cyfaust/resources/architecture/faust/midi/daisy-midi.h +116 -0
- cyfaust/resources/architecture/faust/midi/esp32-midi.h +185 -0
- cyfaust/resources/architecture/faust/midi/gramophone-midi.h +107 -0
- cyfaust/resources/architecture/faust/midi/iplug2-midi.h +148 -0
- cyfaust/resources/architecture/faust/midi/jack-midi.h +247 -0
- cyfaust/resources/architecture/faust/midi/juce-midi.h +275 -0
- cyfaust/resources/architecture/faust/midi/midi.h +475 -0
- cyfaust/resources/architecture/faust/midi/rt-midi.h +315 -0
- cyfaust/resources/architecture/faust/midi/teensy-midi.h +89 -0
- cyfaust/resources/architecture/faust/misc.h +106 -0
- cyfaust/resources/architecture/faust/sound-file.h +132 -0
- cyfaust/resources/architecture/faust/unity/AudioPluginInterface.h +301 -0
- cyfaust/resources/architecture/faust/vst/faust.h +141 -0
- cyfaust/resources/architecture/faust/vst/voice.h +43 -0
- cyfaust/resources/architecture/faust/vst/vstui.h +524 -0
- cyfaust/resources/architecture/faustvst.cpp +3435 -0
- cyfaust/resources/architecture/faustvstqt.h +91 -0
- cyfaust/resources/architecture/gen-json.cpp +76 -0
- cyfaust/resources/architecture/jack-console.cpp +267 -0
- cyfaust/resources/architecture/jack-gtk-ros.cpp +139 -0
- cyfaust/resources/architecture/jack-gtk.cpp +282 -0
- cyfaust/resources/architecture/jack-internal.cpp +560 -0
- cyfaust/resources/architecture/jack-qt-chain-footer.cpp +87 -0
- cyfaust/resources/architecture/jack-qt-chain-header.cpp +92 -0
- cyfaust/resources/architecture/jack-qt.cpp +281 -0
- cyfaust/resources/architecture/jack.rs +171 -0
- cyfaust/resources/architecture/juce/README.md +84 -0
- cyfaust/resources/architecture/juce/juce-plugin.cpp +809 -0
- cyfaust/resources/architecture/juce/juce-standalone.cpp +413 -0
- cyfaust/resources/architecture/juce/plugin/plugin-llvm.jucer +184 -0
- cyfaust/resources/architecture/juce/plugin/plugin.jucer +159 -0
- cyfaust/resources/architecture/juce/standalone/standalone-llvm.jucer +216 -0
- cyfaust/resources/architecture/juce/standalone/standalone.jucer +191 -0
- cyfaust/resources/architecture/ladspa.cpp +543 -0
- cyfaust/resources/architecture/latexheader.tex +65 -0
- cyfaust/resources/architecture/lv2.cpp +2090 -0
- cyfaust/resources/architecture/lv2qtgui.h +62 -0
- cyfaust/resources/architecture/lv2ui.cpp +1966 -0
- cyfaust/resources/architecture/max-msp/README.md +109 -0
- cyfaust/resources/architecture/max-msp/faustgen-wrapper-poly.maxpat +184 -0
- cyfaust/resources/architecture/max-msp/faustgen-wrapper.maxpat +163 -0
- cyfaust/resources/architecture/max-msp/max-msp.cpp +734 -0
- cyfaust/resources/architecture/max-msp/max-msp64.cpp +789 -0
- cyfaust/resources/architecture/max-msp/py2max/README.md +277 -0
- cyfaust/resources/architecture/max-msp/py2max/py2max/__init__.py +3 -0
- cyfaust/resources/architecture/max-msp/py2max/py2max/common.py +7 -0
- cyfaust/resources/architecture/max-msp/py2max/py2max/core.py +1387 -0
- cyfaust/resources/architecture/max-msp/py2max/py2max/maxclassdb.py +318 -0
- cyfaust/resources/architecture/max-msp/py2max/py2max/utils.py +20 -0
- cyfaust/resources/architecture/max-msp/rnbo.py +1591 -0
- cyfaust/resources/architecture/max-msp/sndfile/sndfile.h +857 -0
- cyfaust/resources/architecture/max-msp/ui.js +230 -0
- cyfaust/resources/architecture/max-msp/wrapper-poly.maxpat +153 -0
- cyfaust/resources/architecture/max-msp/wrapper.maxpat +131 -0
- cyfaust/resources/architecture/minimal-bench.cpp +100 -0
- cyfaust/resources/architecture/minimal-effect.c +149 -0
- cyfaust/resources/architecture/minimal-effect.cpp +70 -0
- cyfaust/resources/architecture/minimal-fixed-point.cpp +195 -0
- cyfaust/resources/architecture/minimal-static.cpp +160 -0
- cyfaust/resources/architecture/minimal.c +103 -0
- cyfaust/resources/architecture/minimal.cpp +84 -0
- cyfaust/resources/architecture/minimal.rs +223 -0
- cyfaust/resources/architecture/module.cpp +91 -0
- cyfaust/resources/architecture/octave.cpp +471 -0
- cyfaust/resources/architecture/oscio-gtk.cpp +115 -0
- cyfaust/resources/architecture/oscio-qt.cpp +121 -0
- cyfaust/resources/architecture/owl.cpp +345 -0
- cyfaust/resources/architecture/pa-gtk.cpp +119 -0
- cyfaust/resources/architecture/pa-qt.cpp +261 -0
- cyfaust/resources/architecture/path-printer.cpp +100 -0
- cyfaust/resources/architecture/plot.cpp +128 -0
- cyfaust/resources/architecture/portaudio.rs +192 -0
- cyfaust/resources/architecture/puredata.cpp +636 -0
- cyfaust/resources/architecture/ra-qt.cpp +238 -0
- cyfaust/resources/architecture/sam/fast_pow2.h +69 -0
- cyfaust/resources/architecture/sam/fastexp.h +140 -0
- cyfaust/resources/architecture/sam/samFaustDSP.cpp +125 -0
- cyfaust/resources/architecture/sam/samFaustDSP.h +107 -0
- cyfaust/resources/architecture/scheduler.cpp +1391 -0
- cyfaust/resources/architecture/sndfile.cpp +291 -0
- cyfaust/resources/architecture/supercollider.cpp +611 -0
- cyfaust/resources/architecture/teensy/README.md +13 -0
- cyfaust/resources/architecture/teensy/teensy.cpp +214 -0
- cyfaust/resources/architecture/teensy/teensy.h +71 -0
- cyfaust/resources/architecture/thread.h +373 -0
- cyfaust/resources/architecture/vcvrack/README.md +78 -0
- cyfaust/resources/architecture/vcvrack/template/.gitignore +6 -0
- cyfaust/resources/architecture/vcvrack/template/Makefile +22 -0
- cyfaust/resources/architecture/vcvrack/template/res/FaustModule.svg +299 -0
- cyfaust/resources/architecture/vcvrack/template/src/FaustModule.cpp +942 -0
- cyfaust/resources/architecture/vst.cpp +947 -0
- cyfaust/resources/libraries/aanl.lib +900 -0
- cyfaust/resources/libraries/all.lib +36 -0
- cyfaust/resources/libraries/analyzers.lib +980 -0
- cyfaust/resources/libraries/basics.lib +2681 -0
- cyfaust/resources/libraries/compressors.lib +1341 -0
- cyfaust/resources/libraries/delays.lib +401 -0
- cyfaust/resources/libraries/demos.lib +1556 -0
- cyfaust/resources/libraries/dx7.lib +1036 -0
- cyfaust/resources/libraries/effect.lib +1645 -0
- cyfaust/resources/libraries/envelopes.lib +666 -0
- cyfaust/resources/libraries/examples/README.md +13 -0
- cyfaust/resources/libraries/examples/ambisonics/fourSourcesToOcto.dsp +20 -0
- cyfaust/resources/libraries/examples/ambisonics/oneSourceToStereo.dsp +12 -0
- cyfaust/resources/libraries/examples/analysis/FFT.dsp +26 -0
- cyfaust/resources/libraries/examples/analysis/dbmeter.dsp +19 -0
- cyfaust/resources/libraries/examples/analysis/spectralLevel.dsp +8 -0
- cyfaust/resources/libraries/examples/analysis/spectralTiltLab.dsp +20 -0
- cyfaust/resources/libraries/examples/analysis/vumeter.dsp +18 -0
- cyfaust/resources/libraries/examples/autodiff/delay/diff.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/delay/gt.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/gain/diff.dsp +7 -0
- cyfaust/resources/libraries/examples/autodiff/gain/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/gain_dc/diff.dsp +7 -0
- cyfaust/resources/libraries/examples/autodiff/gain_dc/gt.dsp +4 -0
- cyfaust/resources/libraries/examples/autodiff/gain_exp/diff.dsp +9 -0
- cyfaust/resources/libraries/examples/autodiff/gain_exp/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/gain_pow/diff.dsp +9 -0
- cyfaust/resources/libraries/examples/autodiff/gain_pow/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/gain_pow_trig/diff.dsp +12 -0
- cyfaust/resources/libraries/examples/autodiff/gain_pow_trig/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/gain_sq/diff.dsp +7 -0
- cyfaust/resources/libraries/examples/autodiff/gain_sq/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/mem/diff.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/mem/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/noise.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/noop.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/one_zero/diff.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/one_zero/gt.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/ramp.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/recursion/diff.dsp +2 -0
- cyfaust/resources/libraries/examples/autodiff/recursion/gt.dsp +1 -0
- cyfaust/resources/libraries/examples/autodiff/recursion/target.dsp +13 -0
- cyfaust/resources/libraries/examples/autodiff/tremolo/diff.dsp +14 -0
- cyfaust/resources/libraries/examples/autodiff/tremolo/diffable.lib +7 -0
- cyfaust/resources/libraries/examples/autodiff/tremolo/gt.dsp +11 -0
- cyfaust/resources/libraries/examples/delayEcho/echo.dsp +15 -0
- cyfaust/resources/libraries/examples/delayEcho/quadEcho.dsp +21 -0
- cyfaust/resources/libraries/examples/delayEcho/smoothDelay.dsp +26 -0
- cyfaust/resources/libraries/examples/delayEcho/stereoEcho.dsp +16 -0
- cyfaust/resources/libraries/examples/delayEcho/tapiir.dsp +44 -0
- cyfaust/resources/libraries/examples/dynamic/compressor.dsp +8 -0
- cyfaust/resources/libraries/examples/dynamic/distortion.dsp +8 -0
- cyfaust/resources/libraries/examples/dynamic/gateCompressor.dsp +10 -0
- cyfaust/resources/libraries/examples/dynamic/noiseGate.dsp +8 -0
- cyfaust/resources/libraries/examples/dynamic/volume.dsp +15 -0
- cyfaust/resources/libraries/examples/filtering/APF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/BPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/DNN.dsp +25 -0
- cyfaust/resources/libraries/examples/filtering/HPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/LPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/bandFilter.dsp +44 -0
- cyfaust/resources/libraries/examples/filtering/cryBaby.dsp +4 -0
- cyfaust/resources/libraries/examples/filtering/diodeLadder.dsp +12 -0
- cyfaust/resources/libraries/examples/filtering/filterBank.dsp +6 -0
- cyfaust/resources/libraries/examples/filtering/graphicEqLab.dsp +10 -0
- cyfaust/resources/libraries/examples/filtering/highShelf.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/korg35HPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/korg35LPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/lfBoost.dsp +40 -0
- cyfaust/resources/libraries/examples/filtering/lowBoost.dsp +40 -0
- cyfaust/resources/libraries/examples/filtering/lowCut.dsp +40 -0
- cyfaust/resources/libraries/examples/filtering/lowShelf.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/moogHalfLadder.dsp +12 -0
- cyfaust/resources/libraries/examples/filtering/moogLadder.dsp +12 -0
- cyfaust/resources/libraries/examples/filtering/moogVCF.dsp +6 -0
- cyfaust/resources/libraries/examples/filtering/multibandFilter.dsp +14 -0
- cyfaust/resources/libraries/examples/filtering/notch.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/oberheim.dsp +14 -0
- cyfaust/resources/libraries/examples/filtering/oberheimBPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/oberheimBSF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/oberheimHPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/oberheimLPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/parametricEqLab.dsp +10 -0
- cyfaust/resources/libraries/examples/filtering/parametricEqualizer.dsp +6 -0
- cyfaust/resources/libraries/examples/filtering/peakNotch.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/peakingEQ.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrder.dsp +14 -0
- cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderBPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderHPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/sallenKey2ndOrderLPF.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/sallenKeyOnePole.dsp +13 -0
- cyfaust/resources/libraries/examples/filtering/sallenKeyOnePoleHPF.dsp +12 -0
- cyfaust/resources/libraries/examples/filtering/sallenKeyOnePoleLPF.dsp +12 -0
- cyfaust/resources/libraries/examples/filtering/spectralTilt.dsp +8 -0
- cyfaust/resources/libraries/examples/filtering/vcfWahLab.dsp +12 -0
- cyfaust/resources/libraries/examples/filtering/vocoder.dsp +8 -0
- cyfaust/resources/libraries/examples/filtering/wahPedal.dsp +6 -0
- cyfaust/resources/libraries/examples/gameaudio/bubble.dsp +42 -0
- cyfaust/resources/libraries/examples/gameaudio/door.dsp +58 -0
- cyfaust/resources/libraries/examples/gameaudio/fire.dsp +46 -0
- cyfaust/resources/libraries/examples/gameaudio/insects.dsp +148 -0
- cyfaust/resources/libraries/examples/gameaudio/rain.dsp +27 -0
- cyfaust/resources/libraries/examples/gameaudio/wind.dsp +23 -0
- cyfaust/resources/libraries/examples/generator/filterOsc.dsp +8 -0
- cyfaust/resources/libraries/examples/generator/noise.dsp +52 -0
- cyfaust/resources/libraries/examples/generator/noiseMetadata.dsp +74 -0
- cyfaust/resources/libraries/examples/generator/osc.dsp +17 -0
- cyfaust/resources/libraries/examples/generator/osci.dsp +17 -0
- cyfaust/resources/libraries/examples/generator/sawtoothLab.dsp +8 -0
- cyfaust/resources/libraries/examples/generator/virtualAnalog.dsp +8 -0
- cyfaust/resources/libraries/examples/generator/virtualAnalogLab.dsp +10 -0
- cyfaust/resources/libraries/examples/misc/UITester.dsp +71 -0
- cyfaust/resources/libraries/examples/misc/autopan.dsp +59 -0
- cyfaust/resources/libraries/examples/misc/capture.dsp +24 -0
- cyfaust/resources/libraries/examples/misc/drumkit.dsp +36 -0
- cyfaust/resources/libraries/examples/misc/guitarix.dsp +184 -0
- cyfaust/resources/libraries/examples/misc/matrix.dsp +17 -0
- cyfaust/resources/libraries/examples/misc/midiTester.dsp +122 -0
- cyfaust/resources/libraries/examples/misc/mixer.dsp +27 -0
- cyfaust/resources/libraries/examples/misc/statespace.dsp +39 -0
- cyfaust/resources/libraries/examples/misc/switcher.dsp +20 -0
- cyfaust/resources/libraries/examples/misc/tester.dsp +32 -0
- cyfaust/resources/libraries/examples/misc/tester2.dsp +31 -0
- cyfaust/resources/libraries/examples/old/README.md +5 -0
- cyfaust/resources/libraries/examples/old/freeverb.dsp +109 -0
- cyfaust/resources/libraries/examples/old/rewriting/Makefile +21 -0
- cyfaust/resources/libraries/examples/old/rewriting/fact.dsp +3 -0
- cyfaust/resources/libraries/examples/old/rewriting/fold.dsp +61 -0
- cyfaust/resources/libraries/examples/old/rewriting/mesh.dsp +43 -0
- cyfaust/resources/libraries/examples/old/rewriting/mesh.pd +37 -0
- cyfaust/resources/libraries/examples/old/rewriting/sample.pd +12 -0
- cyfaust/resources/libraries/examples/old/rewriting/serial.dsp +7 -0
- cyfaust/resources/libraries/examples/old/rewriting/sum.dsp +55 -0
- cyfaust/resources/libraries/examples/old/rewriting/test.pd +48 -0
- cyfaust/resources/libraries/examples/phasing/flanger.dsp +8 -0
- cyfaust/resources/libraries/examples/phasing/phaser.dsp +8 -0
- cyfaust/resources/libraries/examples/phasing/phaserFlangerLab.dsp +12 -0
- cyfaust/resources/libraries/examples/physicalModeling/brass.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/brassMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/churchBell.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/clarinet.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/clarinetMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/djembeMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/elecGuitarMIDI.dsp +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/englishBell.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/NLFeks.dsp +91 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/NLFfm.dsp +70 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/README +125 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bass.dsp +84 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bass.h +91 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/blowBottle.dsp +102 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/bowed.dsp +114 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/brass.dsp +103 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/clarinet.dsp +110 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/flute.dsp +116 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/fluteStk.dsp +121 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/glassHarmonica.dsp +131 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/harpsi.dsp +90 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/harpsichord.h +185 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/instrument.h +114 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/modalBar.dsp +122 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/modalBar.h +48 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/audio-out.pd +33 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/bottle.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/clarinets.pd +15 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/audio-out.pd +33 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/bass.pd +162 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/canon.pd +55 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/flute.pd +343 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/canon/pachelbel.mid +0 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/audio-out.pd +33 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/daisy.mid +0 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/daisy.pd +45 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/piano.pd +205 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/daisy/voiceForm.pd +340 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/audio-out.pd +33 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/blowHole.pd +330 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/piano.pd +205 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/take5.mid +0 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/take5/take5.pd +45 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/audio-out.pd +33 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/harpsi.pd +204 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/turkish-march.mid +0 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/turkish-march/turkish-march.pd +31 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/audio-out.pd +33 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/bass.pd +162 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/modalBar.pd +258 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/piano.pd +205 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/what-a-friend.pd +52 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fancy/what-a-friend/what_a_friend.mid +0 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/flutes.pd +15 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/fm.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/glassBare.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/harpsichord-poly.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/ironBare.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/midi-in.pd +111 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/modal.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/osc.pd +26 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/piano-poly.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/plucked.pd +20 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/saxophone.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/tibetan.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/trumpet.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/violin.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/voiceSynth.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/pd-patches/woodenBare.pd +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/phonemes.h +189 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/piano.dsp +255 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/piano.h +751 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/saxophony.dsp +114 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/sitar.dsp +48 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/tibetanBowl.dsp +155 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/tunedBar.dsp +123 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/uniBar.dsp +100 -0
- cyfaust/resources/libraries/examples/physicalModeling/faust-stk/voiceForm.dsp +125 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/1dDampedWaveEquation.dsp +43 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/2dKirchhoffThinPlate.dsp +75 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/BowedString.dsp +61 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/ControllableNonPhysicalString.dsp +72 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/HammeredString.dsp +74 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/PianoHammeredString.dsp +85 -0
- cyfaust/resources/libraries/examples/physicalModeling/fds/StiffString.dsp +54 -0
- cyfaust/resources/libraries/examples/physicalModeling/flute.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/fluteMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/frenchBell.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/germanBell.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/guitarMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/karplus.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/marimbaMIDI.dsp +10 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator.dsp +58 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator2.dsp +62 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/00_BasicOscillator/harmonicOscillator3.dsp +65 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/01_ParamControl/paramOsc.dsp +63 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/02_AudioParamControl/audioParamOsc.dsp +63 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/03_HammerTime/hammerOsc.dsp +71 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/04_Gravity/bouncingOsc.dsp +64 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/05_PluckedOscillator/pluckedOsc.dsp +57 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/06_BowedOscillator/bowedOsc.dsp +65 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/07_NonLinearOscillator/nlOsc.dsp +78 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/08_TwoMassChain/2massChain.dsp +75 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/09_TinyString/tinyString.dsp +101 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/10_PluckedString/pluckedString.dsp +678 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/11_BowedString/bowedString.dsp +671 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/12_TriangleMesh/triangleMesh.dsp +448 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/13_Construction/construction.dsp +1036 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/14_Polyphonic/polyTriangle.dsp +79 -0
- cyfaust/resources/libraries/examples/physicalModeling/mi-faust/15_PhysicalLFO/physicalLFO.dsp +107 -0
- cyfaust/resources/libraries/examples/physicalModeling/modularInterpInstrMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/nylonGuitarMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/old/harpe.dsp +45 -0
- cyfaust/resources/libraries/examples/physicalModeling/old/karplus.dsp +34 -0
- cyfaust/resources/libraries/examples/physicalModeling/old/karplus32.dsp +47 -0
- cyfaust/resources/libraries/examples/physicalModeling/russianBell.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/standardBell.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/violin.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/violinMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/vocalBP.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/vocalBPMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/vocalFOF.dsp +8 -0
- cyfaust/resources/libraries/examples/physicalModeling/vocalFOFMIDI.dsp +8 -0
- cyfaust/resources/libraries/examples/pitchShifting/pitchShifter.dsp +20 -0
- cyfaust/resources/libraries/examples/psychoacoustic/harmonicExciter.dsp +10 -0
- cyfaust/resources/libraries/examples/quantizing/quantizedChords.dsp +49 -0
- cyfaust/resources/libraries/examples/reverb/dattorro.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/fdnRev.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/freeverb.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/greyhole.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/jprev.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/reverbDesigner.dsp +12 -0
- cyfaust/resources/libraries/examples/reverb/reverbTester.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/zitaRev.dsp +8 -0
- cyfaust/resources/libraries/examples/reverb/zitaRevFDN.dsp +8 -0
- cyfaust/resources/libraries/examples/smartKeyboard/acGuitar.dsp +100 -0
- cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/elecGuitarEffect.dsp +8 -0
- cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/myEffect.dsp +5 -0
- cyfaust/resources/libraries/examples/smartKeyboard/associatedEffects/reverb.dsp +5 -0
- cyfaust/resources/libraries/examples/smartKeyboard/bells.dsp +80 -0
- cyfaust/resources/libraries/examples/smartKeyboard/bowed.dsp +87 -0
- cyfaust/resources/libraries/examples/smartKeyboard/brass.dsp +82 -0
- cyfaust/resources/libraries/examples/smartKeyboard/clarinet.dsp +113 -0
- cyfaust/resources/libraries/examples/smartKeyboard/crazyGuiro.dsp +96 -0
- cyfaust/resources/libraries/examples/smartKeyboard/drums.dsp +74 -0
- cyfaust/resources/libraries/examples/smartKeyboard/dubDub.dsp +87 -0
- cyfaust/resources/libraries/examples/smartKeyboard/elecGuitar.dsp +67 -0
- cyfaust/resources/libraries/examples/smartKeyboard/fm.dsp +78 -0
- cyfaust/resources/libraries/examples/smartKeyboard/frog.dsp +74 -0
- cyfaust/resources/libraries/examples/smartKeyboard/harp.dsp +84 -0
- cyfaust/resources/libraries/examples/smartKeyboard/midiOnly.dsp +62 -0
- cyfaust/resources/libraries/examples/smartKeyboard/multiSynth.dsp +75 -0
- cyfaust/resources/libraries/examples/smartKeyboard/toy.dsp +71 -0
- cyfaust/resources/libraries/examples/smartKeyboard/trumpet.dsp +59 -0
- cyfaust/resources/libraries/examples/smartKeyboard/turenas.dsp +114 -0
- cyfaust/resources/libraries/examples/smartKeyboard/violin.dsp +91 -0
- cyfaust/resources/libraries/examples/smartKeyboard/violin2.dsp +84 -0
- cyfaust/resources/libraries/examples/smartKeyboard/vocal.dsp +43 -0
- cyfaust/resources/libraries/examples/spat/panpot.dsp +17 -0
- cyfaust/resources/libraries/examples/spat/spat.dsp +25 -0
- cyfaust/resources/libraries/fds.lib +535 -0
- cyfaust/resources/libraries/filter.lib +1710 -0
- cyfaust/resources/libraries/filters.lib +3125 -0
- cyfaust/resources/libraries/hoa.lib +1081 -0
- cyfaust/resources/libraries/instruments.lib +263 -0
- cyfaust/resources/libraries/interpolators.lib +675 -0
- cyfaust/resources/libraries/math.lib +602 -0
- cyfaust/resources/libraries/maths.lib +798 -0
- cyfaust/resources/libraries/maxmsp.lib +237 -0
- cyfaust/resources/libraries/mi.lib +528 -0
- cyfaust/resources/libraries/misceffects.lib +998 -0
- cyfaust/resources/libraries/music.lib +496 -0
- cyfaust/resources/libraries/noises.lib +487 -0
- cyfaust/resources/libraries/oscillator.lib +450 -0
- cyfaust/resources/libraries/oscillators.lib +1838 -0
- cyfaust/resources/libraries/phaflangers.lib +235 -0
- cyfaust/resources/libraries/physmodels.lib +3990 -0
- cyfaust/resources/libraries/platform.lib +59 -0
- cyfaust/resources/libraries/quantizers.lib +310 -0
- cyfaust/resources/libraries/reducemaps.lib +235 -0
- cyfaust/resources/libraries/reverbs.lib +686 -0
- cyfaust/resources/libraries/routes.lib +262 -0
- cyfaust/resources/libraries/sf.lib +53 -0
- cyfaust/resources/libraries/signals.lib +570 -0
- cyfaust/resources/libraries/soundfiles.lib +234 -0
- cyfaust/resources/libraries/spats.lib +173 -0
- cyfaust/resources/libraries/stdfaust.lib +38 -0
- cyfaust/resources/libraries/synths.lib +322 -0
- cyfaust/resources/libraries/tonestacks.lib +427 -0
- cyfaust/resources/libraries/tubes.lib +5039 -0
- cyfaust/resources/libraries/vaeffects.lib +984 -0
- cyfaust/resources/libraries/version.lib +22 -0
- cyfaust/resources/libraries/wdmodels.lib +2276 -0
- cyfaust/resources/libraries/webaudio.lib +402 -0
- cyfaust/signal.pxd +44 -0
- cyfaust/signal.pyx +1993 -0
- cyfaust-0.1.0.dist-info/METADATA +355 -0
- cyfaust-0.1.0.dist-info/RECORD +693 -0
- cyfaust-0.1.0.dist-info/WHEEL +5 -0
- cyfaust-0.1.0.dist-info/entry_points.txt +3 -0
- 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
|
+
************************************************************************/
|