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,810 @@
|
|
|
1
|
+
/************************** BEGIN dsp-combiner.h **************************
|
|
2
|
+
FAUST Architecture File
|
|
3
|
+
Copyright (C) 2003-2022 GRAME, Centre National de Creation Musicale
|
|
4
|
+
---------------------------------------------------------------------
|
|
5
|
+
This program is free software; you can redistribute it and/or modify
|
|
6
|
+
it under the terms of the GNU Lesser General Public License as published by
|
|
7
|
+
the Free Software Foundation; either version 2.1 of the License, or
|
|
8
|
+
(at your option) any later version.
|
|
9
|
+
|
|
10
|
+
This program is distributed in the hope that it will be useful,
|
|
11
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
GNU Lesser General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
16
|
+
along with this program; if not, write to the Free Software
|
|
17
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
18
|
+
|
|
19
|
+
EXCEPTION : As a special exception, you may create a larger work
|
|
20
|
+
that contains this FAUST architecture section and distribute
|
|
21
|
+
that work under terms of your choice, so long as this FAUST
|
|
22
|
+
architecture section is not modified.
|
|
23
|
+
************************************************************************/
|
|
24
|
+
|
|
25
|
+
#ifndef __dsp_combiner__
|
|
26
|
+
#define __dsp_combiner__
|
|
27
|
+
|
|
28
|
+
#include <string.h>
|
|
29
|
+
#include <string>
|
|
30
|
+
#include <assert.h>
|
|
31
|
+
#include <sstream>
|
|
32
|
+
|
|
33
|
+
#include "faust/dsp/dsp.h"
|
|
34
|
+
#include "faust/gui/UI.h"
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @file dsp-combiner.h
|
|
38
|
+
* @brief DSP Combiner Library
|
|
39
|
+
*
|
|
40
|
+
* This library provides classes for combining DSP modules.
|
|
41
|
+
* It includes classes for sequencing, parallelizing, splitting, merging, recursing, and crossfading DSP modules.
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
enum Layout { kVerticalGroup, kHorizontalGroup, kTabGroup };
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @class dsp_binary_combiner
|
|
49
|
+
* @brief Base class and common code for binary combiners
|
|
50
|
+
*
|
|
51
|
+
* This class serves as the base class for various DSP combiners that work with two DSP modules.
|
|
52
|
+
* It provides common methods for building user interfaces, allocating and deleting channels, and more.
|
|
53
|
+
*/
|
|
54
|
+
class dsp_binary_combiner : public dsp {
|
|
55
|
+
|
|
56
|
+
protected:
|
|
57
|
+
|
|
58
|
+
dsp* fDSP1;
|
|
59
|
+
dsp* fDSP2;
|
|
60
|
+
int fBufferSize;
|
|
61
|
+
Layout fLayout;
|
|
62
|
+
std::string fLabel;
|
|
63
|
+
|
|
64
|
+
void buildUserInterfaceAux(UI* ui_interface)
|
|
65
|
+
{
|
|
66
|
+
switch (fLayout) {
|
|
67
|
+
case kHorizontalGroup:
|
|
68
|
+
ui_interface->openHorizontalBox(fLabel.c_str());
|
|
69
|
+
fDSP1->buildUserInterface(ui_interface);
|
|
70
|
+
fDSP2->buildUserInterface(ui_interface);
|
|
71
|
+
ui_interface->closeBox();
|
|
72
|
+
break;
|
|
73
|
+
case kVerticalGroup:
|
|
74
|
+
ui_interface->openVerticalBox(fLabel.c_str());
|
|
75
|
+
fDSP1->buildUserInterface(ui_interface);
|
|
76
|
+
fDSP2->buildUserInterface(ui_interface);
|
|
77
|
+
ui_interface->closeBox();
|
|
78
|
+
break;
|
|
79
|
+
case kTabGroup:
|
|
80
|
+
ui_interface->openTabBox(fLabel.c_str());
|
|
81
|
+
ui_interface->openVerticalBox("DSP1");
|
|
82
|
+
fDSP1->buildUserInterface(ui_interface);
|
|
83
|
+
ui_interface->closeBox();
|
|
84
|
+
ui_interface->openVerticalBox("DSP2");
|
|
85
|
+
fDSP2->buildUserInterface(ui_interface);
|
|
86
|
+
ui_interface->closeBox();
|
|
87
|
+
ui_interface->closeBox();
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
FAUSTFLOAT** allocateChannels(int num)
|
|
93
|
+
{
|
|
94
|
+
FAUSTFLOAT** channels = new FAUSTFLOAT*[num];
|
|
95
|
+
for (int chan = 0; chan < num; chan++) {
|
|
96
|
+
channels[chan] = new FAUSTFLOAT[fBufferSize];
|
|
97
|
+
memset(channels[chan], 0, sizeof(FAUSTFLOAT) * fBufferSize);
|
|
98
|
+
}
|
|
99
|
+
return channels;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
void deleteChannels(FAUSTFLOAT** channels, int num)
|
|
103
|
+
{
|
|
104
|
+
for (int chan = 0; chan < num; chan++) {
|
|
105
|
+
delete [] channels[chan];
|
|
106
|
+
}
|
|
107
|
+
delete [] channels;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public:
|
|
111
|
+
|
|
112
|
+
dsp_binary_combiner(dsp* dsp1, dsp* dsp2, int buffer_size, Layout layout, const std::string& label)
|
|
113
|
+
:fDSP1(dsp1), fDSP2(dsp2), fBufferSize(buffer_size), fLayout(layout), fLabel(label)
|
|
114
|
+
{}
|
|
115
|
+
|
|
116
|
+
virtual ~dsp_binary_combiner()
|
|
117
|
+
{
|
|
118
|
+
delete fDSP1;
|
|
119
|
+
delete fDSP2;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
virtual int getSampleRate()
|
|
123
|
+
{
|
|
124
|
+
return fDSP1->getSampleRate();
|
|
125
|
+
}
|
|
126
|
+
virtual void init(int sample_rate)
|
|
127
|
+
{
|
|
128
|
+
fDSP1->init(sample_rate);
|
|
129
|
+
fDSP2->init(sample_rate);
|
|
130
|
+
}
|
|
131
|
+
virtual void instanceInit(int sample_rate)
|
|
132
|
+
{
|
|
133
|
+
fDSP1->instanceInit(sample_rate);
|
|
134
|
+
fDSP2->instanceInit(sample_rate);
|
|
135
|
+
}
|
|
136
|
+
virtual void instanceConstants(int sample_rate)
|
|
137
|
+
{
|
|
138
|
+
fDSP1->instanceConstants(sample_rate);
|
|
139
|
+
fDSP2->instanceConstants(sample_rate);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
virtual void instanceResetUserInterface()
|
|
143
|
+
{
|
|
144
|
+
fDSP1->instanceResetUserInterface();
|
|
145
|
+
fDSP2->instanceResetUserInterface();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
virtual void instanceClear()
|
|
149
|
+
{
|
|
150
|
+
fDSP1->instanceClear();
|
|
151
|
+
fDSP2->instanceClear();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
virtual void metadata(Meta* m)
|
|
155
|
+
{
|
|
156
|
+
fDSP1->metadata(m);
|
|
157
|
+
fDSP2->metadata(m);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @class dsp_sequencer
|
|
164
|
+
* @brief Combine two 'compatible' DSP modules in sequence
|
|
165
|
+
*
|
|
166
|
+
* This class allows you to combine two DSP modules in sequence.
|
|
167
|
+
* It computes the first DSP module's outputs and uses them as inputs for the second DSP module.
|
|
168
|
+
*/
|
|
169
|
+
class dsp_sequencer : public dsp_binary_combiner {
|
|
170
|
+
|
|
171
|
+
private:
|
|
172
|
+
|
|
173
|
+
FAUSTFLOAT** fDSP1Outputs;
|
|
174
|
+
|
|
175
|
+
public:
|
|
176
|
+
|
|
177
|
+
dsp_sequencer(dsp* dsp1, dsp* dsp2,
|
|
178
|
+
int buffer_size = 4096,
|
|
179
|
+
Layout layout = Layout::kTabGroup,
|
|
180
|
+
const std::string& label = "Sequencer")
|
|
181
|
+
:dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
|
|
182
|
+
{
|
|
183
|
+
fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
virtual ~dsp_sequencer()
|
|
187
|
+
{
|
|
188
|
+
deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
virtual int getNumInputs() { return fDSP1->getNumInputs(); }
|
|
192
|
+
virtual int getNumOutputs() { return fDSP2->getNumOutputs(); }
|
|
193
|
+
|
|
194
|
+
virtual void buildUserInterface(UI* ui_interface)
|
|
195
|
+
{
|
|
196
|
+
buildUserInterfaceAux(ui_interface);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
virtual dsp* clone()
|
|
200
|
+
{
|
|
201
|
+
return new dsp_sequencer(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
|
|
205
|
+
{
|
|
206
|
+
fDSP1->compute(count, inputs, fDSP1Outputs);
|
|
207
|
+
fDSP2->compute(count, fDSP1Outputs, outputs);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
|
|
211
|
+
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* @class dsp_parallelizer
|
|
216
|
+
* @brief Combine two DSP modules in parallel
|
|
217
|
+
*
|
|
218
|
+
* This class combines two DSP modules in parallel.
|
|
219
|
+
* It computes both DSP modules separately and combines their outputs.
|
|
220
|
+
*/
|
|
221
|
+
class dsp_parallelizer : public dsp_binary_combiner {
|
|
222
|
+
|
|
223
|
+
private:
|
|
224
|
+
|
|
225
|
+
FAUSTFLOAT** fDSP2Inputs;
|
|
226
|
+
FAUSTFLOAT** fDSP2Outputs;
|
|
227
|
+
|
|
228
|
+
public:
|
|
229
|
+
|
|
230
|
+
dsp_parallelizer(dsp* dsp1, dsp* dsp2,
|
|
231
|
+
int buffer_size = 4096,
|
|
232
|
+
Layout layout = Layout::kTabGroup,
|
|
233
|
+
const std::string& label = "Parallelizer")
|
|
234
|
+
:dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
|
|
235
|
+
{
|
|
236
|
+
fDSP2Inputs = new FAUSTFLOAT*[fDSP2->getNumInputs()];
|
|
237
|
+
fDSP2Outputs = new FAUSTFLOAT*[fDSP2->getNumOutputs()];
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
virtual ~dsp_parallelizer()
|
|
241
|
+
{
|
|
242
|
+
delete [] fDSP2Inputs;
|
|
243
|
+
delete [] fDSP2Outputs;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
virtual int getNumInputs() { return fDSP1->getNumInputs() + fDSP2->getNumInputs(); }
|
|
247
|
+
virtual int getNumOutputs() { return fDSP1->getNumOutputs() + fDSP2->getNumOutputs(); }
|
|
248
|
+
|
|
249
|
+
virtual void buildUserInterface(UI* ui_interface)
|
|
250
|
+
{
|
|
251
|
+
buildUserInterfaceAux(ui_interface);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
virtual dsp* clone()
|
|
255
|
+
{
|
|
256
|
+
return new dsp_parallelizer(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
|
|
260
|
+
{
|
|
261
|
+
fDSP1->compute(count, inputs, outputs);
|
|
262
|
+
|
|
263
|
+
// Shift inputs/outputs channels for fDSP2
|
|
264
|
+
for (int chan = 0; chan < fDSP2->getNumInputs(); chan++) {
|
|
265
|
+
fDSP2Inputs[chan] = inputs[fDSP1->getNumInputs() + chan];
|
|
266
|
+
}
|
|
267
|
+
for (int chan = 0; chan < fDSP2->getNumOutputs(); chan++) {
|
|
268
|
+
fDSP2Outputs[chan] = outputs[fDSP1->getNumOutputs() + chan];
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
fDSP2->compute(count, fDSP2Inputs, fDSP2Outputs);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
|
|
275
|
+
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* @class dsp_splitter
|
|
280
|
+
* @brief Combine two 'compatible' DSP modules in a splitter
|
|
281
|
+
*
|
|
282
|
+
* This class combines two DSP modules in a splitter configuration.
|
|
283
|
+
* The outputs of the first DSP module are connected to the inputs of the second DSP module.
|
|
284
|
+
*/
|
|
285
|
+
class dsp_splitter : public dsp_binary_combiner {
|
|
286
|
+
|
|
287
|
+
private:
|
|
288
|
+
|
|
289
|
+
FAUSTFLOAT** fDSP1Outputs;
|
|
290
|
+
FAUSTFLOAT** fDSP2Inputs;
|
|
291
|
+
|
|
292
|
+
public:
|
|
293
|
+
|
|
294
|
+
dsp_splitter(dsp* dsp1, dsp* dsp2,
|
|
295
|
+
int buffer_size = 4096,
|
|
296
|
+
Layout layout = Layout::kTabGroup,
|
|
297
|
+
const std::string& label = "Splitter")
|
|
298
|
+
:dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
|
|
299
|
+
{
|
|
300
|
+
fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
|
|
301
|
+
fDSP2Inputs = new FAUSTFLOAT*[fDSP2->getNumInputs()];
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
virtual ~dsp_splitter()
|
|
305
|
+
{
|
|
306
|
+
deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
|
|
307
|
+
delete [] fDSP2Inputs;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
virtual int getNumInputs() { return fDSP1->getNumInputs(); }
|
|
311
|
+
virtual int getNumOutputs() { return fDSP2->getNumOutputs(); }
|
|
312
|
+
|
|
313
|
+
virtual void buildUserInterface(UI* ui_interface)
|
|
314
|
+
{
|
|
315
|
+
buildUserInterfaceAux(ui_interface);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
virtual dsp* clone()
|
|
319
|
+
{
|
|
320
|
+
return new dsp_splitter(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
|
|
324
|
+
{
|
|
325
|
+
fDSP1->compute(count, inputs, fDSP1Outputs);
|
|
326
|
+
|
|
327
|
+
for (int chan = 0; chan < fDSP2->getNumInputs(); chan++) {
|
|
328
|
+
fDSP2Inputs[chan] = fDSP1Outputs[chan % fDSP1->getNumOutputs()];
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
fDSP2->compute(count, fDSP2Inputs, outputs);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* @class dsp_merger
|
|
337
|
+
* @brief Combine two 'compatible' DSP modules in a merger
|
|
338
|
+
*
|
|
339
|
+
* This class combines two DSP modules in a merger configuration.
|
|
340
|
+
* The outputs of the first DSP module are combined with the inputs of the second DSP module.
|
|
341
|
+
*/
|
|
342
|
+
class dsp_merger : public dsp_binary_combiner {
|
|
343
|
+
|
|
344
|
+
private:
|
|
345
|
+
|
|
346
|
+
FAUSTFLOAT** fDSP1Inputs;
|
|
347
|
+
FAUSTFLOAT** fDSP1Outputs;
|
|
348
|
+
FAUSTFLOAT** fDSP2Inputs;
|
|
349
|
+
|
|
350
|
+
void mix(int count, FAUSTFLOAT* dst, FAUSTFLOAT* src)
|
|
351
|
+
{
|
|
352
|
+
for (int frame = 0; frame < count; frame++) {
|
|
353
|
+
dst[frame] += src[frame];
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
public:
|
|
358
|
+
|
|
359
|
+
dsp_merger(dsp* dsp1, dsp* dsp2,
|
|
360
|
+
int buffer_size = 4096,
|
|
361
|
+
Layout layout = Layout::kTabGroup,
|
|
362
|
+
const std::string& label = "Merger")
|
|
363
|
+
:dsp_binary_combiner(dsp1, dsp2, buffer_size, layout, label)
|
|
364
|
+
{
|
|
365
|
+
fDSP1Inputs = allocateChannels(fDSP1->getNumInputs());
|
|
366
|
+
fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
|
|
367
|
+
fDSP2Inputs = new FAUSTFLOAT*[fDSP2->getNumInputs()];
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
virtual ~dsp_merger()
|
|
371
|
+
{
|
|
372
|
+
deleteChannels(fDSP1Inputs, fDSP1->getNumInputs());
|
|
373
|
+
deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
|
|
374
|
+
delete [] fDSP2Inputs;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
virtual int getNumInputs() { return fDSP1->getNumInputs(); }
|
|
378
|
+
virtual int getNumOutputs() { return fDSP2->getNumOutputs(); }
|
|
379
|
+
|
|
380
|
+
virtual void buildUserInterface(UI* ui_interface)
|
|
381
|
+
{
|
|
382
|
+
buildUserInterfaceAux(ui_interface);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
virtual dsp* clone()
|
|
386
|
+
{
|
|
387
|
+
return new dsp_merger(fDSP1->clone(), fDSP2->clone(), fBufferSize, fLayout, fLabel);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
|
|
391
|
+
{
|
|
392
|
+
fDSP1->compute(count, fDSP1Inputs, fDSP1Outputs);
|
|
393
|
+
|
|
394
|
+
memset(fDSP2Inputs, 0, sizeof(FAUSTFLOAT*) * fDSP2->getNumInputs());
|
|
395
|
+
|
|
396
|
+
for (int chan = 0; chan < fDSP1->getNumOutputs(); chan++) {
|
|
397
|
+
int mchan = chan % fDSP2->getNumInputs();
|
|
398
|
+
if (fDSP2Inputs[mchan]) {
|
|
399
|
+
mix(count, fDSP2Inputs[mchan], fDSP1Outputs[chan]);
|
|
400
|
+
} else {
|
|
401
|
+
fDSP2Inputs[mchan] = fDSP1Outputs[chan];
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
fDSP2->compute(count, fDSP2Inputs, outputs);
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* @class dsp_recursiver
|
|
411
|
+
* @brief Combine two 'compatible' DSP modules in a recursive way
|
|
412
|
+
*
|
|
413
|
+
* This class recursively combines two DSP modules.
|
|
414
|
+
* The outputs of each module are fed as inputs to the other module in a recursive manner.
|
|
415
|
+
*/
|
|
416
|
+
class dsp_recursiver : public dsp_binary_combiner {
|
|
417
|
+
|
|
418
|
+
private:
|
|
419
|
+
|
|
420
|
+
FAUSTFLOAT** fDSP1Inputs;
|
|
421
|
+
FAUSTFLOAT** fDSP1Outputs;
|
|
422
|
+
|
|
423
|
+
FAUSTFLOAT** fDSP2Inputs;
|
|
424
|
+
FAUSTFLOAT** fDSP2Outputs;
|
|
425
|
+
|
|
426
|
+
public:
|
|
427
|
+
|
|
428
|
+
dsp_recursiver(dsp* dsp1, dsp* dsp2,
|
|
429
|
+
Layout layout = Layout::kTabGroup,
|
|
430
|
+
const std::string& label = "Recursiver")
|
|
431
|
+
:dsp_binary_combiner(dsp1, dsp2, 1, layout, label)
|
|
432
|
+
{
|
|
433
|
+
fDSP1Inputs = allocateChannels(fDSP1->getNumInputs());
|
|
434
|
+
fDSP1Outputs = allocateChannels(fDSP1->getNumOutputs());
|
|
435
|
+
fDSP2Inputs = allocateChannels(fDSP2->getNumInputs());
|
|
436
|
+
fDSP2Outputs = allocateChannels(fDSP2->getNumOutputs());
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
virtual ~dsp_recursiver()
|
|
440
|
+
{
|
|
441
|
+
deleteChannels(fDSP1Inputs, fDSP1->getNumInputs());
|
|
442
|
+
deleteChannels(fDSP1Outputs, fDSP1->getNumOutputs());
|
|
443
|
+
deleteChannels(fDSP2Inputs, fDSP2->getNumInputs());
|
|
444
|
+
deleteChannels(fDSP2Outputs, fDSP2->getNumOutputs());
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
virtual int getNumInputs() { return fDSP1->getNumInputs() - fDSP2->getNumOutputs(); }
|
|
448
|
+
virtual int getNumOutputs() { return fDSP1->getNumOutputs(); }
|
|
449
|
+
|
|
450
|
+
virtual void buildUserInterface(UI* ui_interface)
|
|
451
|
+
{
|
|
452
|
+
buildUserInterfaceAux(ui_interface);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
virtual dsp* clone()
|
|
456
|
+
{
|
|
457
|
+
return new dsp_recursiver(fDSP1->clone(), fDSP2->clone(), fLayout, fLabel);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
|
|
461
|
+
{
|
|
462
|
+
for (int frame = 0; (frame < count); frame++) {
|
|
463
|
+
|
|
464
|
+
for (int chan = 0; chan < fDSP2->getNumOutputs(); chan++) {
|
|
465
|
+
fDSP1Inputs[chan][0] = fDSP2Outputs[chan][0];
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
for (int chan = 0; chan < fDSP1->getNumInputs() - fDSP2->getNumOutputs(); chan++) {
|
|
469
|
+
fDSP1Inputs[chan + fDSP2->getNumOutputs()][0] = inputs[chan][frame];
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
fDSP1->compute(1, fDSP1Inputs, fDSP1Outputs);
|
|
473
|
+
|
|
474
|
+
for (int chan = 0; chan < fDSP1->getNumOutputs(); chan++) {
|
|
475
|
+
outputs[chan][frame] = fDSP1Outputs[chan][0];
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
for (int chan = 0; chan < fDSP2->getNumInputs(); chan++) {
|
|
479
|
+
fDSP2Inputs[chan][0] = fDSP1Outputs[chan][0];
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
fDSP2->compute(1, fDSP2Inputs, fDSP2Outputs);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
|
|
487
|
+
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* @class dsp_crossfader
|
|
492
|
+
* @brief Crossfade between two DSP modules
|
|
493
|
+
*
|
|
494
|
+
* This class allows you to crossfade between two DSP modules.
|
|
495
|
+
* The crossfade parameter (as a slider) controls the mix between the two modules' outputs.
|
|
496
|
+
* When Crossfade = 1, the first DSP only is computed, when Crossfade = 0,
|
|
497
|
+
* the second DSP only is computed, otherwise both DSPs are computed and mixed.
|
|
498
|
+
*/
|
|
499
|
+
class dsp_crossfader: public dsp_binary_combiner {
|
|
500
|
+
|
|
501
|
+
private:
|
|
502
|
+
|
|
503
|
+
FAUSTFLOAT fCrossfade;
|
|
504
|
+
FAUSTFLOAT** fDSPOutputs1;
|
|
505
|
+
FAUSTFLOAT** fDSPOutputs2;
|
|
506
|
+
|
|
507
|
+
public:
|
|
508
|
+
|
|
509
|
+
dsp_crossfader(dsp* dsp1, dsp* dsp2,
|
|
510
|
+
Layout layout = Layout::kTabGroup,
|
|
511
|
+
const std::string& label = "Crossfade")
|
|
512
|
+
:dsp_binary_combiner(dsp1, dsp2, 4096, layout, label),fCrossfade(FAUSTFLOAT(0.5))
|
|
513
|
+
{
|
|
514
|
+
fDSPOutputs1 = allocateChannels(fDSP1->getNumOutputs());
|
|
515
|
+
fDSPOutputs2 = allocateChannels(fDSP1->getNumOutputs());
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
virtual ~dsp_crossfader()
|
|
519
|
+
{
|
|
520
|
+
deleteChannels(fDSPOutputs1, fDSP1->getNumInputs());
|
|
521
|
+
deleteChannels(fDSPOutputs2, fDSP1->getNumOutputs());
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
virtual int getNumInputs() { return fDSP1->getNumInputs(); }
|
|
525
|
+
virtual int getNumOutputs() { return fDSP1->getNumOutputs(); }
|
|
526
|
+
|
|
527
|
+
void buildUserInterface(UI* ui_interface)
|
|
528
|
+
{
|
|
529
|
+
switch (fLayout) {
|
|
530
|
+
case kHorizontalGroup:
|
|
531
|
+
ui_interface->openHorizontalBox(fLabel.c_str());
|
|
532
|
+
ui_interface->addHorizontalSlider("Crossfade", &fCrossfade, FAUSTFLOAT(0.5), FAUSTFLOAT(0), FAUSTFLOAT(1), FAUSTFLOAT(0.01));
|
|
533
|
+
fDSP1->buildUserInterface(ui_interface);
|
|
534
|
+
fDSP2->buildUserInterface(ui_interface);
|
|
535
|
+
ui_interface->closeBox();
|
|
536
|
+
break;
|
|
537
|
+
case kVerticalGroup:
|
|
538
|
+
ui_interface->openVerticalBox(fLabel.c_str());
|
|
539
|
+
ui_interface->addHorizontalSlider("Crossfade", &fCrossfade, FAUSTFLOAT(0.5), FAUSTFLOAT(0), FAUSTFLOAT(1), FAUSTFLOAT(0.01));
|
|
540
|
+
fDSP1->buildUserInterface(ui_interface);
|
|
541
|
+
fDSP2->buildUserInterface(ui_interface);
|
|
542
|
+
ui_interface->closeBox();
|
|
543
|
+
break;
|
|
544
|
+
case kTabGroup:
|
|
545
|
+
ui_interface->openTabBox(fLabel.c_str());
|
|
546
|
+
ui_interface->openVerticalBox("Crossfade");
|
|
547
|
+
ui_interface->addHorizontalSlider("Crossfade", &fCrossfade, FAUSTFLOAT(0.5), FAUSTFLOAT(0), FAUSTFLOAT(1), FAUSTFLOAT(0.01));
|
|
548
|
+
ui_interface->closeBox();
|
|
549
|
+
ui_interface->openVerticalBox("DSP1");
|
|
550
|
+
fDSP1->buildUserInterface(ui_interface);
|
|
551
|
+
ui_interface->closeBox();
|
|
552
|
+
ui_interface->openVerticalBox("DSP2");
|
|
553
|
+
fDSP2->buildUserInterface(ui_interface);
|
|
554
|
+
ui_interface->closeBox();
|
|
555
|
+
ui_interface->closeBox();
|
|
556
|
+
break;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
virtual dsp* clone()
|
|
561
|
+
{
|
|
562
|
+
return new dsp_crossfader(fDSP1->clone(), fDSP2->clone(), fLayout, fLabel);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
virtual void compute(int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs)
|
|
566
|
+
{
|
|
567
|
+
if (fCrossfade == FAUSTFLOAT(1)) {
|
|
568
|
+
fDSP1->compute(count, inputs, outputs);
|
|
569
|
+
} else if (fCrossfade == FAUSTFLOAT(0)) {
|
|
570
|
+
fDSP2->compute(count, inputs, outputs);
|
|
571
|
+
} else {
|
|
572
|
+
// Compute each effect
|
|
573
|
+
fDSP1->compute(count, inputs, fDSPOutputs1);
|
|
574
|
+
fDSP2->compute(count, inputs, fDSPOutputs2);
|
|
575
|
+
// Mix between the two effects
|
|
576
|
+
FAUSTFLOAT gain1 = fCrossfade;
|
|
577
|
+
FAUSTFLOAT gain2 = FAUSTFLOAT(1) - gain1;
|
|
578
|
+
for (int frame = 0; (frame < count); frame++) {
|
|
579
|
+
for (int chan = 0; chan < fDSP1->getNumOutputs(); chan++) {
|
|
580
|
+
outputs[chan][frame] = fDSPOutputs1[chan][frame] * gain1 + fDSPOutputs2[chan][frame] * gain2;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
virtual void compute(double date_usec, int count, FAUSTFLOAT** inputs, FAUSTFLOAT** outputs) { compute(count, inputs, outputs); }
|
|
587
|
+
};
|
|
588
|
+
|
|
589
|
+
#ifndef __dsp_algebra_api__
|
|
590
|
+
#define __dsp_algebra_api__
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* DSP algebra API allowing to combine DSPs using the 5 operators Faust block algebra and an additional crossfader combiner.
|
|
594
|
+
* The two arguments GUI are composed in a group, either kVerticalGroup, kHorizontalGroup or kTabGroup with a label.
|
|
595
|
+
*
|
|
596
|
+
* Each operation takes two DSP and a optional layout and label parameters, returns the combined DSPs,
|
|
597
|
+
* or null if failure with an error message.
|
|
598
|
+
*
|
|
599
|
+
* It includes methods to create sequencers, parallelizers, splitters, mergers, recursivers, and crossfaders.
|
|
600
|
+
*/
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* Create a DSP Sequencer
|
|
604
|
+
*
|
|
605
|
+
* This method creates a DSP Sequencer, which combines two DSP modules in a sequencer configuration.
|
|
606
|
+
* The outputs of the first DSP module are connected to the inputs of the second DSP module.
|
|
607
|
+
*
|
|
608
|
+
* @param dsp1 The first DSP module to combine
|
|
609
|
+
* @param dsp2 The second DSP module to combine
|
|
610
|
+
* @param error A reference to a string to store error messages (if any)
|
|
611
|
+
* @param layout The layout for the combined user interface (default: kTabGroup)
|
|
612
|
+
* @param label The label for the combiner (default: "Sequencer")
|
|
613
|
+
* @return A pointer to the created DSP Sequencer, or nullptr if an error occurs
|
|
614
|
+
*/
|
|
615
|
+
static dsp* createDSPSequencer(dsp* dsp1, dsp* dsp2,
|
|
616
|
+
std::string& error,
|
|
617
|
+
Layout layout = Layout::kTabGroup,
|
|
618
|
+
const std::string& label = "Sequencer")
|
|
619
|
+
{
|
|
620
|
+
if (dsp1->getNumOutputs() != dsp2->getNumInputs()) {
|
|
621
|
+
std::stringstream error_aux;
|
|
622
|
+
error_aux << "Connection error in dsp_sequencer : the number of outputs ("
|
|
623
|
+
<< dsp1->getNumOutputs() << ") of A "
|
|
624
|
+
<< "must be equal to the number of inputs (" << dsp2->getNumInputs() << ") of B" << std::endl;
|
|
625
|
+
error = error_aux.str();
|
|
626
|
+
return nullptr;
|
|
627
|
+
} else {
|
|
628
|
+
return new dsp_sequencer(dsp1, dsp2, 4096, layout, label);
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Create a DSP Parallelizer
|
|
634
|
+
*
|
|
635
|
+
* This method creates a DSP Parallelizer, which combines two DSP modules in parallel.
|
|
636
|
+
* The resulting DSP module computes both input modules separately and combines their outputs.
|
|
637
|
+
*
|
|
638
|
+
* @param dsp1 The first DSP module to combine
|
|
639
|
+
* @param dsp2 The second DSP module to combine
|
|
640
|
+
* @param error A reference to a string to store error messages (if any)
|
|
641
|
+
* @param layout The layout for the combined user interface (default: kTabGroup)
|
|
642
|
+
* @param label The label for the combiner (default: "Parallelizer")
|
|
643
|
+
* @return A pointer to the created DSP Parallelizer, or nullptr if an error occurs
|
|
644
|
+
*/
|
|
645
|
+
static dsp* createDSPParallelizer(dsp* dsp1, dsp* dsp2,
|
|
646
|
+
std::string& error,
|
|
647
|
+
Layout layout = Layout::kTabGroup,
|
|
648
|
+
const std::string& label = "Parallelizer")
|
|
649
|
+
{
|
|
650
|
+
return new dsp_parallelizer(dsp1, dsp2, 4096, layout, label);
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
/**
|
|
654
|
+
* Create a DSP Splitter
|
|
655
|
+
*
|
|
656
|
+
* This method creates a DSP Splitter, which combines two 'compatible' DSP modules in a splitter configuration.
|
|
657
|
+
* The outputs of the first DSP module are connected to the inputs of the second DSP module.
|
|
658
|
+
*
|
|
659
|
+
* @param dsp1 The first DSP module to combine
|
|
660
|
+
* @param dsp2 The second DSP module to combine
|
|
661
|
+
* @param error A reference to a string to store error messages (if any)
|
|
662
|
+
* @param layout The layout for the combined user interface (default: kTabGroup)
|
|
663
|
+
* @param label The label for the combiner (default: "Splitter")
|
|
664
|
+
* @return A pointer to the created DSP Splitter, or nullptr if an error occurs
|
|
665
|
+
*/
|
|
666
|
+
static dsp* createDSPSplitter(dsp* dsp1, dsp* dsp2, std::string& error, Layout layout = Layout::kTabGroup, const std::string& label = "Splitter")
|
|
667
|
+
{
|
|
668
|
+
if (dsp1->getNumOutputs() == 0) {
|
|
669
|
+
error = "Connection error in dsp_splitter : the first expression has no outputs\n";
|
|
670
|
+
return nullptr;
|
|
671
|
+
} else if (dsp2->getNumInputs() == 0) {
|
|
672
|
+
error = "Connection error in dsp_splitter : the second expression has no inputs\n";
|
|
673
|
+
return nullptr;
|
|
674
|
+
} else if (dsp2->getNumInputs() % dsp1->getNumOutputs() != 0) {
|
|
675
|
+
std::stringstream error_aux;
|
|
676
|
+
error_aux << "Connection error in dsp_splitter : the number of outputs (" << dsp1->getNumOutputs()
|
|
677
|
+
<< ") of the first expression should be a divisor of the number of inputs ("
|
|
678
|
+
<< dsp2->getNumInputs()
|
|
679
|
+
<< ") of the second expression" << std::endl;
|
|
680
|
+
error = error_aux.str();
|
|
681
|
+
return nullptr;
|
|
682
|
+
} else if (dsp2->getNumInputs() == dsp1->getNumOutputs()) {
|
|
683
|
+
return new dsp_sequencer(dsp1, dsp2, 4096, layout, label);
|
|
684
|
+
} else {
|
|
685
|
+
return new dsp_splitter(dsp1, dsp2, 4096, layout, label);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/**
|
|
690
|
+
* Create a DSP Merger
|
|
691
|
+
*
|
|
692
|
+
* This method creates a DSP Merger, which combines two 'compatible' DSP modules in a merger configuration.
|
|
693
|
+
* The outputs of the first DSP module are combined with the inputs of the second DSP module.
|
|
694
|
+
*
|
|
695
|
+
* @param dsp1 The first DSP module to combine
|
|
696
|
+
* @param dsp2 The second DSP module to combine
|
|
697
|
+
* @param error A reference to a string to store error messages (if any)
|
|
698
|
+
* @param layout The layout for the combined user interface (default: kTabGroup)
|
|
699
|
+
* @param label The label for the combiner (default: "Merger")
|
|
700
|
+
* @return A pointer to the created DSP Merger, or nullptr if an error occurs
|
|
701
|
+
*/
|
|
702
|
+
static dsp* createDSPMerger(dsp* dsp1, dsp* dsp2,
|
|
703
|
+
std::string& error,
|
|
704
|
+
Layout layout = Layout::kTabGroup,
|
|
705
|
+
const std::string& label = "Merger")
|
|
706
|
+
{
|
|
707
|
+
if (dsp1->getNumOutputs() == 0) {
|
|
708
|
+
error = "Connection error in dsp_merger : the first expression has no outputs\n";
|
|
709
|
+
return nullptr;
|
|
710
|
+
} else if (dsp2->getNumInputs() == 0) {
|
|
711
|
+
error = "Connection error in dsp_merger : the second expression has no inputs\n";
|
|
712
|
+
return nullptr;
|
|
713
|
+
} else if (dsp1->getNumOutputs() % dsp2->getNumInputs() != 0) {
|
|
714
|
+
std::stringstream error_aux;
|
|
715
|
+
error_aux << "Connection error in dsp_merger : the number of outputs (" << dsp1->getNumOutputs()
|
|
716
|
+
<< ") of the first expression should be a multiple of the number of inputs ("
|
|
717
|
+
<< dsp2->getNumInputs()
|
|
718
|
+
<< ") of the second expression" << std::endl;
|
|
719
|
+
error = error_aux.str();
|
|
720
|
+
return nullptr;
|
|
721
|
+
} else if (dsp2->getNumInputs() == dsp1->getNumOutputs()) {
|
|
722
|
+
return new dsp_sequencer(dsp1, dsp2, 4096, layout, label);
|
|
723
|
+
} else {
|
|
724
|
+
return new dsp_merger(dsp1, dsp2, 4096, layout, label);
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Create a DSP Recursiver
|
|
730
|
+
*
|
|
731
|
+
* This method creates a DSP Recursiver, which combines two 'compatible' DSP modules in a recursive way.
|
|
732
|
+
* The outputs of each module are fed as inputs to the other module in a recursive manner.
|
|
733
|
+
*
|
|
734
|
+
* @param dsp1 The first DSP module to combine
|
|
735
|
+
* @param dsp2 The second DSP module to combine
|
|
736
|
+
* @param error A reference to a string to store error messages (if any)
|
|
737
|
+
* @param layout The layout for the combined user interface (default: kTabGroup)
|
|
738
|
+
* @param label The label for the combiner (default: "Recursiver")
|
|
739
|
+
* @return A pointer to the created DSP Recursiver, or nullptr if an error occurs
|
|
740
|
+
*/
|
|
741
|
+
static dsp* createDSPRecursiver(dsp* dsp1, dsp* dsp2,
|
|
742
|
+
std::string& error,
|
|
743
|
+
Layout layout = Layout::kTabGroup,
|
|
744
|
+
const std::string& label = "Recursiver")
|
|
745
|
+
{
|
|
746
|
+
if ((dsp2->getNumInputs() > dsp1->getNumOutputs()) || (dsp2->getNumOutputs() > dsp1->getNumInputs())) {
|
|
747
|
+
std::stringstream error_aux;
|
|
748
|
+
error_aux << "Connection error in : dsp_recursiver" << std::endl;
|
|
749
|
+
if (dsp2->getNumInputs() > dsp1->getNumOutputs()) {
|
|
750
|
+
error_aux << "The number of outputs " << dsp1->getNumOutputs()
|
|
751
|
+
<< " of the first expression should be greater or equal to the number of inputs ("
|
|
752
|
+
<< dsp2->getNumInputs()
|
|
753
|
+
<< ") of the second expression" << std::endl;
|
|
754
|
+
}
|
|
755
|
+
if (dsp2->getNumOutputs() > dsp1->getNumInputs()) {
|
|
756
|
+
error_aux << "The number of inputs " << dsp1->getNumInputs()
|
|
757
|
+
<< " of the first expression should be greater or equal to the number of outputs ("
|
|
758
|
+
<< dsp2->getNumOutputs()
|
|
759
|
+
<< ") of the second expression" << std::endl;
|
|
760
|
+
}
|
|
761
|
+
error = error_aux.str();
|
|
762
|
+
return nullptr;
|
|
763
|
+
} else {
|
|
764
|
+
return new dsp_recursiver(dsp1, dsp2, layout, label);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Create a DSP Crossfader
|
|
770
|
+
*
|
|
771
|
+
* This method creates a DSP Crossfader, which allows you to crossfade between two DSP modules.
|
|
772
|
+
* The crossfade parameter (as a slider) controls the mix between the two modules' outputs.
|
|
773
|
+
* When Crossfade = 1, the first DSP only is computed, when Crossfade = 0,
|
|
774
|
+
* the second DSP only is computed, otherwise both DSPs are computed and mixed.
|
|
775
|
+
*
|
|
776
|
+
* @param dsp1 The first DSP module to combine
|
|
777
|
+
* @param dsp2 The second DSP module to combine
|
|
778
|
+
* @param error A reference to a string to store error messages (if any)
|
|
779
|
+
* @param layout The layout for the combined user interface (default: kTabGroup)
|
|
780
|
+
* @param label The label for the crossfade slider (default: "Crossfade")
|
|
781
|
+
* @return A pointer to the created DSP Crossfader, or nullptr if an error occurs
|
|
782
|
+
*/
|
|
783
|
+
static dsp* createDSPCrossfader(dsp* dsp1, dsp* dsp2,
|
|
784
|
+
std::string& error,
|
|
785
|
+
Layout layout = Layout::kTabGroup,
|
|
786
|
+
const std::string& label = "Crossfade")
|
|
787
|
+
{
|
|
788
|
+
if (dsp1->getNumInputs() != dsp2->getNumInputs()) {
|
|
789
|
+
std::stringstream error_aux;
|
|
790
|
+
error_aux << "Error in dsp_crossfader : the number of inputs ("
|
|
791
|
+
<< dsp1->getNumInputs() << ") of A "
|
|
792
|
+
<< "must be equal to the number of inputs (" << dsp2->getNumInputs() << ") of B" << std::endl;
|
|
793
|
+
error = error_aux.str();
|
|
794
|
+
return nullptr;
|
|
795
|
+
} else if (dsp1->getNumOutputs() != dsp2->getNumOutputs()) {
|
|
796
|
+
std::stringstream error_aux;
|
|
797
|
+
error_aux << "Error in dsp_crossfader : the number of outputs ("
|
|
798
|
+
<< dsp1->getNumOutputs() << ") of A "
|
|
799
|
+
<< "must be equal to the number of outputs (" << dsp2->getNumOutputs() << ") of B" << std::endl;
|
|
800
|
+
error = error_aux.str();
|
|
801
|
+
return nullptr;
|
|
802
|
+
} else {
|
|
803
|
+
return new dsp_crossfader(dsp1, dsp2, layout, label);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
#endif
|
|
808
|
+
|
|
809
|
+
#endif
|
|
810
|
+
/************************** END dsp-combiner.h **************************/
|