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,675 @@
|
|
|
1
|
+
//#################################### interpolators.lib ########################################
|
|
2
|
+
// A library to handle interpolation. Its official prefix is `it`.
|
|
3
|
+
//
|
|
4
|
+
// This library provides several basic interpolation functions, as well as interpolators
|
|
5
|
+
// taking a `gen` circuit of N outputs producing values to be interpolated, triggered
|
|
6
|
+
// by a `idv` read index signal. Two points and four points interpolations are implemented.
|
|
7
|
+
//
|
|
8
|
+
// The `idv` parameter is to be used as a read index. In `-single` (= singleprecision) mode,
|
|
9
|
+
// a technique based on 2 signals with the pure integer index and a fractional part in the [0,1]
|
|
10
|
+
// range is used to avoid accumulating errors. In `-double` (= doubleprecision) or `-quad` (= quadprecision) modes,
|
|
11
|
+
// a standard implementation with a single fractional index signal is used. Three functions `int_part`, `frac_part` and `mak_idv` are available to manipulate the read index signal.
|
|
12
|
+
//
|
|
13
|
+
// Here is a use-case with `waveform`. Here the signal given to `interpolator_XXX` uses the `idv` model.
|
|
14
|
+
//
|
|
15
|
+
// ```
|
|
16
|
+
// waveform_interpolator(wf, step, interp) = interp(gen, idv)
|
|
17
|
+
// with {
|
|
18
|
+
// gen(idx) = wf, (idx:max(0):min(size-1)) : rdtable with { size = wf:(_,!); }; /* waveform size */
|
|
19
|
+
// index = (+(step)~_)-step; /* starting from 0 */
|
|
20
|
+
// idv = it.make_idv(index); /* build the signal for interpolation in a generic way */
|
|
21
|
+
// };
|
|
22
|
+
//
|
|
23
|
+
// waveform_linear(wf, step) = waveform_interpolator(wf, step, it.interpolator_linear);
|
|
24
|
+
// waveform_cosine(wf, step) = waveform_interpolator(wf, step, it.interpolator_cosine);
|
|
25
|
+
// waveform_cubic(wf, step) = waveform_interpolator(wf, step, it.interpolator_cubic);
|
|
26
|
+
//
|
|
27
|
+
// waveform_interp(wf, step, selector) = waveform_interpolator(wf, step, interp_select(selector))
|
|
28
|
+
// with {
|
|
29
|
+
// /* adapts the argument order */
|
|
30
|
+
// interp_select(sel, gen, idv) = it.interpolator_select(gen, idv, sel);
|
|
31
|
+
// };
|
|
32
|
+
//
|
|
33
|
+
// waveform and index
|
|
34
|
+
// waveform_interpolator1(wf, idv, interp) = interp(gen, idv)
|
|
35
|
+
// with {
|
|
36
|
+
// gen(idx) = wf, (idx:max(0):min(size-1)) : rdtable with { size = wf:(_,!); }; /* waveform size */
|
|
37
|
+
// };
|
|
38
|
+
//
|
|
39
|
+
// waveform_linear1(wf, idv) = waveform_interpolator1(wf, idv, it.interpolator_linear);
|
|
40
|
+
// waveform_cosine1(wf, idv) = waveform_interpolator1(wf, idv, it.interpolator_cosine);
|
|
41
|
+
// waveform_cubic1(wf, idv) = waveform_interpolator1(wf, idv, it.interpolator_cubic);
|
|
42
|
+
//
|
|
43
|
+
// waveform_interp1(wf, idv, selector) = waveform_interpolator1(wf, idv, interp_select(selector))
|
|
44
|
+
// with {
|
|
45
|
+
// /* adapts the argument order */
|
|
46
|
+
// interp_select(sel, gen, idv) = it.interpolator_select(gen, idv, sel);
|
|
47
|
+
// };
|
|
48
|
+
// ```
|
|
49
|
+
//
|
|
50
|
+
// Some tests here:
|
|
51
|
+
//
|
|
52
|
+
// ```
|
|
53
|
+
// wf = waveform {0.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 50.0, 40.0, 30.0, 20.0, 10.0, 0.0};
|
|
54
|
+
//
|
|
55
|
+
// process = waveform_linear(wf, step), waveform_cosine(wf, step), waveform_cubic(wf, step) with { step = 0.25; };
|
|
56
|
+
//
|
|
57
|
+
// process = waveform_interp(wf, 0.25, nentry("algo", 0, 0, 3, 1));
|
|
58
|
+
//
|
|
59
|
+
// process = waveform_interp1(wf, idv, nentry("algo", 0, 0, 3, 1))
|
|
60
|
+
// with {
|
|
61
|
+
// step = 0.1;
|
|
62
|
+
// idv_aux = (+(step)~_)-step; /* starting from 0 */
|
|
63
|
+
// idv = it.make_idv(idv_aux); /* build the signal for interpolation in a generic way */
|
|
64
|
+
// };
|
|
65
|
+
//
|
|
66
|
+
// /* Test linear interpolation between 2 samples with a `(idx,dv)` signal built using a waveform */
|
|
67
|
+
// linear_test = (idx,dv), it.interpolator_linear(gen, (idx,dv))
|
|
68
|
+
// with {
|
|
69
|
+
// /* signal to interpolate (only 2 points here) */
|
|
70
|
+
// gen(id) = waveform {3.0, -1.0}, (id:max(0)) : rdtable;
|
|
71
|
+
// dv = waveform {0.0, 0.25, 0.50, 0.75, 1.0}, index : rdtable;
|
|
72
|
+
// idx = 0;
|
|
73
|
+
// /* test index signal */
|
|
74
|
+
// index = (+(1)~_)-1; /* starting from 0 */
|
|
75
|
+
// };
|
|
76
|
+
//
|
|
77
|
+
// /* Test cosine interpolation between 2 samples with a `(idx,dv)` signal built using a waveform */
|
|
78
|
+
// cosine_test = (idx,dv), it.interpolator_cosine(gen, (idx,dv))
|
|
79
|
+
// with {
|
|
80
|
+
// /* signal to interpolate (only 2 points here) */
|
|
81
|
+
// gen(id) = waveform {3.0, -1.0}, (id:max(0)) : rdtable;
|
|
82
|
+
// dv = waveform {0.0, 0.25, 0.50, 0.75, 1.0}, index : rdtable;
|
|
83
|
+
// idx = 0;
|
|
84
|
+
// /* test index signal */
|
|
85
|
+
// index = (+(1)~_)-1; /* starting from 0 */
|
|
86
|
+
// };
|
|
87
|
+
//
|
|
88
|
+
// /* Test cubic interpolation between 4 samples with a `(idx,dv)` signal built using a waveform */
|
|
89
|
+
// cubic_test = (idx,dv), it.interpolator_cubic(gen, (idx,dv))
|
|
90
|
+
// with {
|
|
91
|
+
// /* signal to interpolate (only 4 points here) */
|
|
92
|
+
// gen(id) = waveform {-1.0, 2.0, 1.0, 4.0}, (id:max(0)) : rdtable;
|
|
93
|
+
// dv = waveform {0.0, 0.25, 0.50, 0.75, 1.0}, index : rdtable;
|
|
94
|
+
// idx = 0;
|
|
95
|
+
// /* test index signal */
|
|
96
|
+
// index = (+(1)~_)-1; /* starting from 0 */
|
|
97
|
+
// };
|
|
98
|
+
// ```
|
|
99
|
+
//
|
|
100
|
+
// #### References
|
|
101
|
+
// * <https://github.com/grame-cncm/faustlibraries/blob/master/interpolators.lib>
|
|
102
|
+
//########################################################################################
|
|
103
|
+
|
|
104
|
+
/************************************************************************
|
|
105
|
+
************************************************************************
|
|
106
|
+
FAUST library file
|
|
107
|
+
Copyright (C) 2019-2020 GRAME, Centre National de Creation Musicale
|
|
108
|
+
----------------------------------------------------------------------
|
|
109
|
+
This program is free software; you can redistribute it and/or modify
|
|
110
|
+
it under the terms of the GNU Lesser General Public License as
|
|
111
|
+
published by the Free Software Foundation; either version 2.1 of the
|
|
112
|
+
License, or (at your option) any later version.
|
|
113
|
+
|
|
114
|
+
This program is distributed in the hope that it will be useful,
|
|
115
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
116
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
117
|
+
GNU Lesser General Public License for more details.
|
|
118
|
+
|
|
119
|
+
You should have received a copy of the GNU Lesser General Public
|
|
120
|
+
License along with the GNU C Library; if not, write to the Free
|
|
121
|
+
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
122
|
+
02111-1307 USA.
|
|
123
|
+
|
|
124
|
+
EXCEPTION TO THE LGPL LICENSE : As a special exception, you may create a
|
|
125
|
+
larger FAUST program which directly or indirectly imports this library
|
|
126
|
+
file and still distribute the compiled code generated by the FAUST
|
|
127
|
+
compiler, or a modified version of this compiled code, under your own
|
|
128
|
+
copyright and license. This EXCEPTION TO THE LGPL LICENSE explicitly
|
|
129
|
+
grants you the right to freely choose the license for the resulting
|
|
130
|
+
compiled code. In particular the resulting compiled code has no obligation
|
|
131
|
+
to be LGPL or GPL. For example you are free to choose a commercial or
|
|
132
|
+
closed source license or any other license if you decide so.
|
|
133
|
+
************************************************************************
|
|
134
|
+
************************************************************************/
|
|
135
|
+
|
|
136
|
+
ba = library("basics.lib");
|
|
137
|
+
ro = library("routes.lib");
|
|
138
|
+
ma = library("maths.lib");
|
|
139
|
+
si = library("signals.lib");
|
|
140
|
+
|
|
141
|
+
declare name "Faust Interpolator Library";
|
|
142
|
+
declare version "1.3.0";
|
|
143
|
+
|
|
144
|
+
reset(trig) = (trig-trig') <= 0;
|
|
145
|
+
|
|
146
|
+
// The following 3 functions allow to adapt a 'single signal' fractional idv in this [idx, dv] model.
|
|
147
|
+
|
|
148
|
+
singleprecision int_part(idv) = idv : _,!;
|
|
149
|
+
singleprecision frac_part(idv) = idv : !,_;
|
|
150
|
+
singleprecision make_idv(id) = int(id), ma.frac(id);
|
|
151
|
+
|
|
152
|
+
// Infinite raising index
|
|
153
|
+
singleprecision raise(trig, step, length) = id, dv
|
|
154
|
+
letrec {
|
|
155
|
+
'id = (id + int(step) + int(dv + ma.frac(step))) * reset(trig);
|
|
156
|
+
'dv = ma.frac(dv + ma.frac(step)) * reset(trig);
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// Modulo based raising index
|
|
160
|
+
singleprecision raise_modulo(trig, step, length) = id, dv
|
|
161
|
+
letrec {
|
|
162
|
+
'id = fmod(id + int(step) + int(dv + ma.frac(step)), length) * reset(trig);
|
|
163
|
+
'dv = ma.frac(dv + ma.frac(step)) * reset(trig);
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
// Decreasing index starting at 'length'
|
|
167
|
+
singleprecision decrease(trig, step, length) = raise(trig, -step, length) : (+(length), _);
|
|
168
|
+
|
|
169
|
+
// Modulo decreasing index starting at 'length'
|
|
170
|
+
singleprecision decrease_modulo(trig, step, length) = raise_modulo(trig, -step, length) : (+(length), _);
|
|
171
|
+
|
|
172
|
+
// The following 3 functions allow to adapt a 'single signal' fractional idv in this [idx, dv] model.
|
|
173
|
+
|
|
174
|
+
doubleprecision quadprecision int_part(idv) = int(idv);
|
|
175
|
+
doubleprecision quadprecision frac_part(idv) = ma.frac(idv);
|
|
176
|
+
doubleprecision quadprecision make_idv(id) = id;
|
|
177
|
+
|
|
178
|
+
// Infinite raising index
|
|
179
|
+
doubleprecision quadprecision raise(trig, step, length) = idv
|
|
180
|
+
letrec {
|
|
181
|
+
'idv = (idv + step) * reset(trig);
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// Modulo based raising index
|
|
185
|
+
doubleprecision quadprecision raise_modulo(trig, step, length) = idv
|
|
186
|
+
letrec {
|
|
187
|
+
'idv = fmod(idv + step, length) * reset(trig);
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
// Decreasing index starting at 'length'
|
|
191
|
+
doubleprecision quadprecision decrease(trig, step, length) = raise(trig, -step, length) + length;
|
|
192
|
+
|
|
193
|
+
// Modulo decreasing index starting at 'length'
|
|
194
|
+
doubleprecision quadprecision decrease_modulo(trig, step, length) = raise_modulo(trig, -step, length) + length;
|
|
195
|
+
|
|
196
|
+
//=========================Two points interpolation functions=============================
|
|
197
|
+
//========================================================================================
|
|
198
|
+
|
|
199
|
+
//-------`(it.)interpolate_linear`----------
|
|
200
|
+
// Linear interpolation between 2 values.
|
|
201
|
+
//
|
|
202
|
+
// #### Usage
|
|
203
|
+
//
|
|
204
|
+
// ```
|
|
205
|
+
// interpolate_linear(dv,v0,v1) : _
|
|
206
|
+
// ```
|
|
207
|
+
//
|
|
208
|
+
// Where:
|
|
209
|
+
//
|
|
210
|
+
// * `dv`: in the fractional value in [0..1] range
|
|
211
|
+
// * `v0`: is the first value
|
|
212
|
+
// * `v1`: is the second value
|
|
213
|
+
//
|
|
214
|
+
//
|
|
215
|
+
// #### Reference:
|
|
216
|
+
//
|
|
217
|
+
// <https://github.com/jamoma/JamomaCore/blob/master/Foundation/library/includes/TTInterpolate.h>
|
|
218
|
+
//
|
|
219
|
+
//--------------------------------------------
|
|
220
|
+
declare interpolate_linear author "Stéphane Letz";
|
|
221
|
+
declare interpolate_linear licence "MIT";
|
|
222
|
+
|
|
223
|
+
interpolate_linear(dv,v0,v1) = v0 + dv*(v1-v0); // (faster than v0*(1-dv)+v1*dv which is currently not optimized...)
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
//-------`(it.)interpolate_cosine`----------
|
|
227
|
+
// Cosine interpolation between 2 values.
|
|
228
|
+
//
|
|
229
|
+
// #### Usage
|
|
230
|
+
//
|
|
231
|
+
// ```
|
|
232
|
+
// interpolate_cosine(dv,v0,v1) : _
|
|
233
|
+
// ```
|
|
234
|
+
//
|
|
235
|
+
// Where:
|
|
236
|
+
//
|
|
237
|
+
// * `dv`: in the fractional value in [0..1] range
|
|
238
|
+
// * `v0`: is the first value
|
|
239
|
+
// * `v1`: is the second value
|
|
240
|
+
//
|
|
241
|
+
//
|
|
242
|
+
// #### Reference:
|
|
243
|
+
//
|
|
244
|
+
// <https://github.com/jamoma/JamomaCore/blob/master/Foundation/library/includes/TTInterpolate.h>
|
|
245
|
+
//
|
|
246
|
+
//--------------------------------------------
|
|
247
|
+
declare interpolate_cosine author "Stéphane Letz";
|
|
248
|
+
declare interpolate_cosine licence "MIT";
|
|
249
|
+
|
|
250
|
+
interpolate_cosine(dv,v0,v1) = v0 + a2*(v1-v0) with { a2 = 0.5 * (1.0 - cos(dv*ma.PI)); };
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
//=========================Four points interpolation functions============================
|
|
254
|
+
//========================================================================================
|
|
255
|
+
|
|
256
|
+
//-------`(it.)interpolate_cubic`----------
|
|
257
|
+
// Cubic interpolation between 4 values.
|
|
258
|
+
//
|
|
259
|
+
// #### Usage
|
|
260
|
+
//
|
|
261
|
+
// ```
|
|
262
|
+
// interpolate_cubic(dv,v0,v1,v2,v3) : _
|
|
263
|
+
// ```
|
|
264
|
+
//
|
|
265
|
+
// Where:
|
|
266
|
+
//
|
|
267
|
+
// * `dv`: in the fractional value in [0..1] range
|
|
268
|
+
// * `v0`: is the first value
|
|
269
|
+
// * `v1`: is the second value
|
|
270
|
+
// * `v2`: is the third value
|
|
271
|
+
// * `v3`: is the fourth value
|
|
272
|
+
//
|
|
273
|
+
//
|
|
274
|
+
// #### Reference:
|
|
275
|
+
//
|
|
276
|
+
// <https://www.paulinternet.nl/?page=bicubic>
|
|
277
|
+
//
|
|
278
|
+
//--------------------------------------------
|
|
279
|
+
declare interpolate_cubic author "Stéphane Letz";
|
|
280
|
+
declare interpolate_cubic licence "MIT";
|
|
281
|
+
|
|
282
|
+
interpolate_cubic(dv,v0,v1,v2,v3)
|
|
283
|
+
= v1 + 0.5*dv*(v2 - v0 + dv*(2.0*v0 - 5.0*v1 + 4.0*v2 - v3 + dv*(3.0*(v1 - v2) + v3 - v0)));
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
//=========================Two points interpolators=======================================
|
|
287
|
+
//========================================================================================
|
|
288
|
+
|
|
289
|
+
//-------`(it.)interpolator_two_points`----------
|
|
290
|
+
// Generic interpolator on two points (current and next index), assuming an increasing index.
|
|
291
|
+
//
|
|
292
|
+
// #### Usage
|
|
293
|
+
//
|
|
294
|
+
// ```
|
|
295
|
+
// interpolator_two_points(gen, idv, interpolate_two_points) : si.bus(outputs(gen))
|
|
296
|
+
// ```
|
|
297
|
+
//
|
|
298
|
+
// Where:
|
|
299
|
+
//
|
|
300
|
+
// * `gen`: a circuit with an 'idv' reader input that produces N outputs
|
|
301
|
+
// * `idv`: a fractional read index expressed as a float value, or a (int,frac) pair
|
|
302
|
+
// * `interpolate_two_points`: a two points interpolation function
|
|
303
|
+
//
|
|
304
|
+
//--------------------------------------------
|
|
305
|
+
declare interpolator_two_points author "Stéphane Letz";
|
|
306
|
+
declare interpolator_two_points licence "MIT";
|
|
307
|
+
|
|
308
|
+
interpolator_two_points(gen, idv, interpolate_two_points) = (gen(id0), gen(id1))
|
|
309
|
+
: ro.interleave(outputs(gen), 2)
|
|
310
|
+
: par(i, outputs(gen), interpolate_two_points(dv))
|
|
311
|
+
with {
|
|
312
|
+
id0 = int_part(idv); // index integer part
|
|
313
|
+
id1 = id0 + 1; // next index
|
|
314
|
+
dv = frac_part(idv); // index fractional part in [0..1]
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
//-------`(it.)interpolator_linear`----------
|
|
319
|
+
// Linear interpolator for a 'gen' circuit triggered by an 'idv' input to generate values.
|
|
320
|
+
//
|
|
321
|
+
// #### Usage
|
|
322
|
+
//
|
|
323
|
+
// ```
|
|
324
|
+
// interpolator_linear(gen, idv) : si.bus(outputs(gen))
|
|
325
|
+
// ```
|
|
326
|
+
//
|
|
327
|
+
// Where:
|
|
328
|
+
//
|
|
329
|
+
// * `gen`: a circuit with an 'idv' reader input that produces N outputs
|
|
330
|
+
// * `idv`: a fractional read index expressed as a float value, or a (int,frac) pair
|
|
331
|
+
//
|
|
332
|
+
//--------------------------------------------
|
|
333
|
+
declare interpolator_linear author "Stéphane Letz";
|
|
334
|
+
declare interpolator_linear licence "MIT";
|
|
335
|
+
|
|
336
|
+
interpolator_linear(gen, idv) = interpolator_two_points(gen, idv, interpolate_linear);
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
//-------`(it.)interpolator_cosine`----------
|
|
340
|
+
// Cosine interpolator for a 'gen' circuit triggered by an 'idv' input to generate values.
|
|
341
|
+
//
|
|
342
|
+
// #### Usage
|
|
343
|
+
//
|
|
344
|
+
// ```
|
|
345
|
+
// interpolator_cosine(gen, idv) : si.bus(outputs(gen))
|
|
346
|
+
// ```
|
|
347
|
+
//
|
|
348
|
+
// Where:
|
|
349
|
+
//
|
|
350
|
+
// * `gen`: a circuit with an 'idv' reader input that produces N outputs
|
|
351
|
+
// * `idv`: a fractional read index expressed as a float value, or a (int,frac) pair
|
|
352
|
+
//
|
|
353
|
+
//--------------------------------------------
|
|
354
|
+
declare interpolator_cosine author "Stéphane Letz";
|
|
355
|
+
declare interpolator_cosine licence "MIT";
|
|
356
|
+
|
|
357
|
+
interpolator_cosine(gen, idv) = interpolator_two_points(gen, idv, interpolate_cosine);
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
// To be used in 'interpolator_select'
|
|
361
|
+
interpolator_null(gen, idv) = interpolator_two_points(gen, idv, \(dv,v0,v1).(v0));
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
//=========================Four points interpolators======================================
|
|
365
|
+
//========================================================================================
|
|
366
|
+
|
|
367
|
+
//-------`(it.)interpolator_four_points`----------
|
|
368
|
+
// Generic interpolator on interpolator_four_points points (previous, current and two next indexes), assuming an increasing index.
|
|
369
|
+
//
|
|
370
|
+
// #### Usage
|
|
371
|
+
//
|
|
372
|
+
// ```
|
|
373
|
+
// interpolator_four_points(gen, idv, interpolate_four_points) : si.bus(outputs(gen))
|
|
374
|
+
// ```
|
|
375
|
+
//
|
|
376
|
+
// Where:
|
|
377
|
+
//
|
|
378
|
+
// * `gen`: a circuit with an 'idv' reader input that produces N outputs
|
|
379
|
+
// * `idv`: a fractional read index expressed as a float value, or a (int,frac) pair
|
|
380
|
+
// * `interpolate_four_points`: a four points interpolation function
|
|
381
|
+
//
|
|
382
|
+
//--------------------------------------------
|
|
383
|
+
declare interpolator_four_points author "Stéphane Letz";
|
|
384
|
+
declare interpolator_four_points licence "MIT";
|
|
385
|
+
|
|
386
|
+
interpolator_four_points(gen, idv, interpolate_four_points) = (gen(id0), gen(id1), gen(id2), gen(id3))
|
|
387
|
+
: ro.interleave(outputs(gen), 4)
|
|
388
|
+
: par(i, outputs(gen), interpolate_four_points(dv))
|
|
389
|
+
with {
|
|
390
|
+
id0 = id1 - 1; // previous index
|
|
391
|
+
id1 = int_part(idv); // index integer part
|
|
392
|
+
id2 = id1 + 1; // next index
|
|
393
|
+
id3 = id2 + 1; // next index
|
|
394
|
+
dv = frac_part(idv); // index fractional part in [0..1]
|
|
395
|
+
};
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
//-------`(it.)interpolator_cubic`----------
|
|
399
|
+
// Cubic interpolator for a 'gen' circuit triggered by an 'idv' input to generate values
|
|
400
|
+
//
|
|
401
|
+
// #### Usage
|
|
402
|
+
//
|
|
403
|
+
// ```
|
|
404
|
+
// interpolator_cubic(gen, idv) : si.bus(outputs(gen))
|
|
405
|
+
// ```
|
|
406
|
+
//
|
|
407
|
+
// Where:
|
|
408
|
+
//
|
|
409
|
+
// * `gen`: a circuit with an 'idv' reader input that produces N outputs
|
|
410
|
+
// * `idv`: a fractional read index expressed as a float value, or a (int,frac) pair
|
|
411
|
+
//
|
|
412
|
+
//--------------------------------------------
|
|
413
|
+
declare interpolator_cubic author "Stéphane Letz";
|
|
414
|
+
declare interpolator_cubic licence "MIT";
|
|
415
|
+
|
|
416
|
+
interpolator_cubic(gen, idv) = interpolator_four_points(gen, idv, interpolate_cubic);
|
|
417
|
+
|
|
418
|
+
// Enum of interpolation algorithms
|
|
419
|
+
MAX_INTER = 4;
|
|
420
|
+
|
|
421
|
+
linear = 0;
|
|
422
|
+
cosine = 1;
|
|
423
|
+
cubic = 2;
|
|
424
|
+
nointerp = MAX_INTER-1;
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
//-------`(it.)interpolator_select`----------
|
|
428
|
+
// Generic configurable interpolator (with selector between in [0..3]). The value 3 is used for no interpolation.
|
|
429
|
+
//
|
|
430
|
+
// #### Usage
|
|
431
|
+
//
|
|
432
|
+
// ```
|
|
433
|
+
// interpolator_select(gen, idv, sel) : _,_... (equal to N = outputs(gen))
|
|
434
|
+
// ```
|
|
435
|
+
//
|
|
436
|
+
// Where:
|
|
437
|
+
//
|
|
438
|
+
// * `gen`: a circuit with an 'idv' reader input that produces N outputs
|
|
439
|
+
// * `idv`: a fractional read index expressed as a float value, or a (int,frac) pair
|
|
440
|
+
// * `sel`: an interpolation algorithm selector in [0..3] (0 = linear, 1 = cosine, 2 = cubic, 3 = nointerp)
|
|
441
|
+
//
|
|
442
|
+
//--------------------------------------------
|
|
443
|
+
declare interpolator_select author "Stéphane Letz";
|
|
444
|
+
declare interpolator_select licence "MIT";
|
|
445
|
+
|
|
446
|
+
interpolator_select(gen, idv, sel) = ba.selectmulti(ma.SR/10, interpolators, sel)
|
|
447
|
+
with {
|
|
448
|
+
interpolators = (interpolator_linear(gen, idv),
|
|
449
|
+
interpolator_cosine(gen, idv),
|
|
450
|
+
interpolator_cubic(gen, idv),
|
|
451
|
+
interpolator_null(gen, idv));
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
//=========================Lagrange based interpolators====================================
|
|
455
|
+
//========================================================================================
|
|
456
|
+
|
|
457
|
+
//-------`(it.)lagrangeCoeffs(N, xCoordsList)` ---------------------------------------------
|
|
458
|
+
//
|
|
459
|
+
// This is a function to generate N + 1 coefficients for an Nth-order Lagrange
|
|
460
|
+
// basis polynomial with arbitrary spacing of the points.
|
|
461
|
+
//
|
|
462
|
+
// #### Usage
|
|
463
|
+
//
|
|
464
|
+
// ```
|
|
465
|
+
// lagrangeCoeffs(N, xCoordsList, x) : si.bus(N + 1)
|
|
466
|
+
// ```
|
|
467
|
+
//
|
|
468
|
+
// Where:
|
|
469
|
+
//
|
|
470
|
+
// * `N`: order of the interpolation filter, known at compile-time
|
|
471
|
+
// * `xCoordsList`: a list of N + 1 elements determining the x-axis coordinates of N + 1 values, known at compile-time
|
|
472
|
+
// * `x`: a fractional position on the x-axis to obtain the interpolated y-value
|
|
473
|
+
//
|
|
474
|
+
// #### Reference
|
|
475
|
+
//
|
|
476
|
+
// <https://ccrma.stanford.edu/~jos/pasp/Lagrange_Interpolation.html>
|
|
477
|
+
// <https://en.wikipedia.org/wiki/Lagrange_polynomial>
|
|
478
|
+
//------------------------------------------------------------
|
|
479
|
+
|
|
480
|
+
declare lagrangeCoeffs author "Dario Sanfilippo";
|
|
481
|
+
declare lagrangeCoeffs copyright "Copyright (C) 2021 Dario Sanfilippo
|
|
482
|
+
<sanfilippo.dario@gmail.com>";
|
|
483
|
+
declare lagrangeCoeffs license "MIT license";
|
|
484
|
+
lagrangeCoeffs(N, xCoords, x) = par(n, N + 1, prod(k, N + 1, f(n, k)))
|
|
485
|
+
with {
|
|
486
|
+
xVals(i) = ba.take(i + 1, xCoords);
|
|
487
|
+
f(n, k) = ((x - xVals(k)) * (n != k) + (n == k)) /
|
|
488
|
+
((xVals(n) - xVals(k)) + (n == k));
|
|
489
|
+
};
|
|
490
|
+
// The following definition for uniformely-spaced points interpolation is kept for back-compatibility
|
|
491
|
+
lagrange_h(N, x) = lagrangeCoeffs(N, xCoord, x)
|
|
492
|
+
with {
|
|
493
|
+
xCoord = par(i, N + 1, i);
|
|
494
|
+
};
|
|
495
|
+
|
|
496
|
+
//-------`(it.)lagrangeInterpolation(N, xCoordsList)` --------------------------------------
|
|
497
|
+
//
|
|
498
|
+
// Nth-order Lagrange interpolator to interpolate between a set of arbitrarily spaced N + 1 points.
|
|
499
|
+
//
|
|
500
|
+
// #### Usage
|
|
501
|
+
//
|
|
502
|
+
// ```
|
|
503
|
+
// x , yCoords : lagrangeInterpolation(N, xCoordsList) : _
|
|
504
|
+
// ```
|
|
505
|
+
//
|
|
506
|
+
// Where:
|
|
507
|
+
//
|
|
508
|
+
// * `N`: order of the interpolator, known at compile-time
|
|
509
|
+
// * `xCoordsList`: a list of N + 1 elements determining the x-axis spacing of the points, known at compile-time
|
|
510
|
+
// * `x`: an x-axis position to interpolate between the y-values
|
|
511
|
+
// * `yCoords`: N + 1 elements determining the values of the interpolation points
|
|
512
|
+
//
|
|
513
|
+
// Example: find the centre position of a four-point set using an order-3
|
|
514
|
+
// Lagrange function fitting the equally-spaced points [2, 5, -1, 3]:
|
|
515
|
+
//
|
|
516
|
+
// ```
|
|
517
|
+
// N = 3;
|
|
518
|
+
// xCoordsList = (0, 1, 2, 3);
|
|
519
|
+
// x = N / 2.0;
|
|
520
|
+
// yCoords = 2, 5, -1, 3;
|
|
521
|
+
// process = x, yCoords : lagrangeInterpolation(N, xCoordsList);
|
|
522
|
+
// ```
|
|
523
|
+
//
|
|
524
|
+
// which outputs ~1.938.
|
|
525
|
+
//
|
|
526
|
+
// Example: output the dashed curve showed on the Wikipedia page (top figure, https://en.wikipedia.org/wiki/Lagrange_polynomial):
|
|
527
|
+
//
|
|
528
|
+
// ```
|
|
529
|
+
// N = 3;
|
|
530
|
+
// xCoordsList = (-9, -4, -1, 7);
|
|
531
|
+
// x = os.phasor(16, 1) - 9;
|
|
532
|
+
// yCoords = 5, 2, -2, 9;
|
|
533
|
+
// process = x, yCoords : lagrangeInterpolation(N, xCoordsList);
|
|
534
|
+
// ```
|
|
535
|
+
//
|
|
536
|
+
// #### Reference
|
|
537
|
+
//
|
|
538
|
+
// <https://ccrma.stanford.edu/~jos/pasp/Lagrange_Interpolation.html>
|
|
539
|
+
// Sanfilippo and Parker 2021, "Combining zeroth and first‐order analysis with Lagrange polynomials to reduce artefacts in live concatenative granular processing." Proceedings of the DAFx conference 2021, Vienna, Austria.
|
|
540
|
+
// <https://dafx2020.mdw.ac.at/proceedings/papers/DAFx20in21_paper_38.pdf>
|
|
541
|
+
//------------------------------------------------------------
|
|
542
|
+
|
|
543
|
+
declare lagrangeInterpolation author "Dario Sanfilippo";
|
|
544
|
+
declare lagrangeInterpolation copyright "Copyright (C) 2021 Dario Sanfilippo
|
|
545
|
+
<sanfilippo.dario@gmail.com>";
|
|
546
|
+
declare lagrangeInterpolation license "MIT license";
|
|
547
|
+
lagrangeInterpolation(N, xCoords, x) = si.dot(N + 1, lagrangeCoeffs(N, xCoords, x));
|
|
548
|
+
// The following definition for uniformely-spaced points interpolation is kept for back-compatibility
|
|
549
|
+
lagrangeN(N, x) = si.dot(N + 1, lagrange_h(N, x));
|
|
550
|
+
|
|
551
|
+
//-------`(it.)frdtable(N, S)` --------------------------------------------
|
|
552
|
+
//
|
|
553
|
+
// Look-up circular table with Nth-order Lagrange interpolation for fractional
|
|
554
|
+
// indexes. The index is wrapped-around and the table is cycles for an index
|
|
555
|
+
// span of size S, which is the table size in samples.
|
|
556
|
+
//
|
|
557
|
+
// #### Usage
|
|
558
|
+
//
|
|
559
|
+
// ```
|
|
560
|
+
// frdtable(N, S, init, idx) : _
|
|
561
|
+
// ```
|
|
562
|
+
//
|
|
563
|
+
// Where:
|
|
564
|
+
//
|
|
565
|
+
// * `N`: Lagrange interpolation order, known at compile-time
|
|
566
|
+
// * `S`: table size in samples, known at compile-time
|
|
567
|
+
// * `init`: signal for table initialisation
|
|
568
|
+
// * `idx`: fractional index wrapped-around 0 and S
|
|
569
|
+
//
|
|
570
|
+
// #### Example test program
|
|
571
|
+
// Test the effectiveness of the 5th-order interpolation scheme by
|
|
572
|
+
// creating a table look-up oscillator using only 16 points of a sinewave;
|
|
573
|
+
// compare the result with a non-interpolated version:
|
|
574
|
+
//
|
|
575
|
+
// ```
|
|
576
|
+
// N = 5;
|
|
577
|
+
// S = 16;
|
|
578
|
+
// index = os.phasor(S, 1000);
|
|
579
|
+
// process = rdtable(S, os.sinwaveform(S), int(index)) ,
|
|
580
|
+
// it.frdtable(N, S, os.sinwaveform(S), index);
|
|
581
|
+
// ```
|
|
582
|
+
//------------------------------------------------------------
|
|
583
|
+
|
|
584
|
+
declare frdtable author "Dario Sanfilippo";
|
|
585
|
+
declare frdtable copyright "Copyright (C) 2021 Dario Sanfilippo
|
|
586
|
+
<sanfilippo.dario@gmail.com>";
|
|
587
|
+
declare frdtable license "LGPL v3.0 license";
|
|
588
|
+
frdtable(N, S, init, idx) =
|
|
589
|
+
lagrangeN(N, f_idx, par(i, N + 1, table(i_idx - int(N / 2) + i)))
|
|
590
|
+
with {
|
|
591
|
+
table(j) = rdtable(S, init, int(ma.modulo(j, S)));
|
|
592
|
+
f_idx = ma.frac(idx) + int(N / 2);
|
|
593
|
+
i_idx = int(idx);
|
|
594
|
+
};
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
//-------`(it.)frwtable(N, S)` --------------------------------------------
|
|
598
|
+
//
|
|
599
|
+
// Look-up updatable circular table with Nth-order Lagrange interpolation for
|
|
600
|
+
// fractional indexes. The index is wrapped-around and the table is circular
|
|
601
|
+
// indexes ranging from 0 to S, which is the table size in samples.
|
|
602
|
+
//
|
|
603
|
+
// #### Usage
|
|
604
|
+
//
|
|
605
|
+
// ```
|
|
606
|
+
// frwtable(N, S, init, w_idx, x, r_idx) : _
|
|
607
|
+
// ```
|
|
608
|
+
//
|
|
609
|
+
// Where:
|
|
610
|
+
//
|
|
611
|
+
// * `N`: Lagrange interpolation order, known at compile-time
|
|
612
|
+
// * `S`: table size in samples, known at compile-time
|
|
613
|
+
// * `init`: constant for table initialisation, known at compile-time
|
|
614
|
+
// * `w_idx`: it should be an INT between 0 and S - 1
|
|
615
|
+
// * `x`: input signal written on the w_idx positions
|
|
616
|
+
// * `r_idx`: fractional index wrapped-around 0 and S
|
|
617
|
+
//
|
|
618
|
+
// #### Example test program
|
|
619
|
+
// Test the effectiveness of the 5th-order interpolation scheme by
|
|
620
|
+
// creating a table look-up oscillator using only 16 points of a sinewave;
|
|
621
|
+
// compare the result with a non-interpolated version:
|
|
622
|
+
//
|
|
623
|
+
// ```
|
|
624
|
+
// N = 5;
|
|
625
|
+
// S = 16;
|
|
626
|
+
// rIdx = os.phasor(S, 300);
|
|
627
|
+
// wIdx = ba.period(S);
|
|
628
|
+
// process = rwtable(S, os.sinwaveform(S), wIdx, os.sinwaveform(S), int(rIdx)) ,
|
|
629
|
+
// frwtable(N, S, os.sinwaveform(S), wIdx, os.sinwaveform(S), rIdx);
|
|
630
|
+
// ```
|
|
631
|
+
//------------------------------------------------------------
|
|
632
|
+
|
|
633
|
+
declare frwtable author "Dario Sanfilippo";
|
|
634
|
+
declare frwtable copyright "Copyright (C) 2021 Dario Sanfilippo
|
|
635
|
+
<sanfilippo.dario@gmail.com>";
|
|
636
|
+
declare frwtable license "LGPL v3.0 license";
|
|
637
|
+
frwtable(N, S, init, w_idx, x, r_idx) =
|
|
638
|
+
lagrangeN(N, f_idx, par(i, N + 1, table(i_idx - int(N / 2) + i)))
|
|
639
|
+
with {
|
|
640
|
+
table(j) = rwtable(S, init, w_idx, x, int(ma.modulo(j, S)));
|
|
641
|
+
f_idx = ma.frac(r_idx) + int(N / 2);
|
|
642
|
+
i_idx = int(r_idx);
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
//=========================Misc functions=================================================
|
|
647
|
+
//========================================================================================
|
|
648
|
+
|
|
649
|
+
//---------------`(it.)remap` ---------------------------------------------
|
|
650
|
+
// Linearly map from an input domain to an output range.
|
|
651
|
+
//
|
|
652
|
+
// #### Usage
|
|
653
|
+
//
|
|
654
|
+
// ```
|
|
655
|
+
// _ : remap(from1, from2, to1, to2) : _
|
|
656
|
+
// ```
|
|
657
|
+
//
|
|
658
|
+
// Where:
|
|
659
|
+
//
|
|
660
|
+
// * `from1`: the domain's lower bound.
|
|
661
|
+
// * `from2`: the domain's upper bound.
|
|
662
|
+
// * `to1`: the range's lower bound.
|
|
663
|
+
// * `to2`: the range's upper bound.
|
|
664
|
+
//
|
|
665
|
+
// Note that having `from1` == `from2` in the mapping will cause a division by zero that has to be taken in account.
|
|
666
|
+
//
|
|
667
|
+
// Example: An oscillator remapped from [-1., 1.] to [100., 1000.]
|
|
668
|
+
// ```
|
|
669
|
+
// os.osc(440) : it.remap(-1., 1., 100., 1000.)
|
|
670
|
+
// ```
|
|
671
|
+
//------------------------------------------------------------
|
|
672
|
+
declare remap author "David Braun";
|
|
673
|
+
|
|
674
|
+
remap(from1, from2, to1, to2, x) = to1 + (x-from1)*(to2-to1)/(from2-from1);
|
|
675
|
+
|