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,809 @@
|
|
|
1
|
+
/************************************************************************
|
|
2
|
+
FAUST Architecture File
|
|
3
|
+
Copyright (C) 2016 GRAME, Centre National de Creation Musicale
|
|
4
|
+
---------------------------------------------------------------------
|
|
5
|
+
This Architecture section is free software; you can redistribute it
|
|
6
|
+
and/or modify it under the terms of the GNU General Public License
|
|
7
|
+
as published by the Free Software Foundation; either version 3 of
|
|
8
|
+
the License, or (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 General Public License for more details.
|
|
14
|
+
|
|
15
|
+
You should have received a copy of the GNU General Public License
|
|
16
|
+
along with this program; If not, see <http://www.gnu.org/licenses/>.
|
|
17
|
+
|
|
18
|
+
EXCEPTION : As a special exception, you may create a larger work
|
|
19
|
+
that contains this FAUST architecture section and distribute
|
|
20
|
+
that work under terms of your choice, so long as this FAUST
|
|
21
|
+
architecture section is not modified.
|
|
22
|
+
|
|
23
|
+
************************************************************************
|
|
24
|
+
************************************************************************/
|
|
25
|
+
|
|
26
|
+
#include <algorithm>
|
|
27
|
+
#include <assert.h>
|
|
28
|
+
|
|
29
|
+
#if JUCE_WINDOWS
|
|
30
|
+
#define JUCE_CORE_INCLUDE_NATIVE_HEADERS 1
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
#include "JuceLibraryCode/JuceHeader.h"
|
|
34
|
+
|
|
35
|
+
#include "faust/gui/MapUI.h"
|
|
36
|
+
#include "faust/dsp/dsp-adapter.h"
|
|
37
|
+
#include "faust/gui/MidiUI.h"
|
|
38
|
+
#include "faust/dsp/poly-dsp.h"
|
|
39
|
+
#ifndef PLUGIN_MAGIC
|
|
40
|
+
#include "faust/gui/JuceGUI.h"
|
|
41
|
+
#endif
|
|
42
|
+
#include "faust/gui/JuceParameterUI.h"
|
|
43
|
+
#include "faust/gui/JuceStateUI.h"
|
|
44
|
+
|
|
45
|
+
// Always included otherwise -i mode sometimes fails...
|
|
46
|
+
#include "faust/gui/DecoratorUI.h"
|
|
47
|
+
|
|
48
|
+
#if defined(SOUNDFILE)
|
|
49
|
+
#include "faust/gui/SoundUI.h"
|
|
50
|
+
#endif
|
|
51
|
+
|
|
52
|
+
#if defined(OSCCTRL)
|
|
53
|
+
#include "faust/gui/JuceOSCUI.h"
|
|
54
|
+
#endif
|
|
55
|
+
|
|
56
|
+
#if defined(MIDICTRL)
|
|
57
|
+
#include "faust/midi/juce-midi.h"
|
|
58
|
+
#include "faust/dsp/timed-dsp.h"
|
|
59
|
+
#endif
|
|
60
|
+
|
|
61
|
+
#if defined(POLY2)
|
|
62
|
+
#include "faust/dsp/dsp-combiner.h"
|
|
63
|
+
#include "effect.h"
|
|
64
|
+
#endif
|
|
65
|
+
|
|
66
|
+
// we require macro declarations
|
|
67
|
+
#define FAUST_UIMACROS
|
|
68
|
+
|
|
69
|
+
// but we will ignore most of them
|
|
70
|
+
#define FAUST_ADDBUTTON(l,f)
|
|
71
|
+
#define FAUST_ADDCHECKBOX(l,f)
|
|
72
|
+
#define FAUST_ADDSOUNDFILE(l,s)
|
|
73
|
+
#define FAUST_ADDVERTICALSLIDER(l,f,i,a,b,s)
|
|
74
|
+
#define FAUST_ADDHORIZONTALSLIDER(l,f,i,a,b,s)
|
|
75
|
+
#define FAUST_ADDNUMENTRY(l,f,i,a,b,s)
|
|
76
|
+
#define FAUST_ADDVERTICALBARGRAPH(l,f,a,b)
|
|
77
|
+
#define FAUST_ADDHORIZONTALBARGRAPH(l,f,a,b)
|
|
78
|
+
|
|
79
|
+
<<includeIntrinsic>>
|
|
80
|
+
|
|
81
|
+
<<includeclass>>
|
|
82
|
+
|
|
83
|
+
#if defined(JUCE_POLY)
|
|
84
|
+
|
|
85
|
+
struct FaustSound : public juce::SynthesiserSound {
|
|
86
|
+
|
|
87
|
+
bool appliesToNote (int /*midiNoteNumber*/) override { return true; }
|
|
88
|
+
bool appliesToChannel (int /*midiChannel*/) override { return true; }
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// An hybrid JUCE and Faust voice
|
|
92
|
+
|
|
93
|
+
class FaustVoice : public juce::SynthesiserVoice, public dsp_voice {
|
|
94
|
+
|
|
95
|
+
private:
|
|
96
|
+
|
|
97
|
+
std::unique_ptr<juce::AudioBuffer<FAUSTFLOAT>> fBuffer;
|
|
98
|
+
|
|
99
|
+
public:
|
|
100
|
+
|
|
101
|
+
FaustVoice(dsp* dsp):dsp_voice(dsp)
|
|
102
|
+
{
|
|
103
|
+
// Allocate buffer for mixing
|
|
104
|
+
fBuffer = std::make_unique<juce::AudioBuffer<FAUSTFLOAT>>(dsp->getNumOutputs(), 8192);
|
|
105
|
+
fDSP->init(juce::SynthesiserVoice::getSampleRate());
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
bool canPlaySound (juce::SynthesiserSound* sound) override
|
|
109
|
+
{
|
|
110
|
+
return dynamic_cast<FaustSound*> (sound) != nullptr;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
void startNote (int midiNoteNumber,
|
|
114
|
+
float velocity,
|
|
115
|
+
juce::SynthesiserSound* s,
|
|
116
|
+
int currentPitchWheelPosition) override
|
|
117
|
+
{
|
|
118
|
+
// Note is triggered
|
|
119
|
+
keyOn(midiNoteNumber, velocity);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
void stopNote (float velocity, bool allowTailOff) override
|
|
123
|
+
{
|
|
124
|
+
keyOff(!allowTailOff);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
void pitchWheelMoved (int newPitchWheelValue) override
|
|
128
|
+
{
|
|
129
|
+
// not implemented for now
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
void controllerMoved (int controllerNumber, int newControllerValue) override
|
|
133
|
+
{
|
|
134
|
+
// not implemented for now
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
void renderNextBlock (juce::AudioBuffer<FAUSTFLOAT>& outputBuffer,
|
|
138
|
+
int startSample,
|
|
139
|
+
int numSamples) override
|
|
140
|
+
{
|
|
141
|
+
// Only plays when the voice is active
|
|
142
|
+
if (isVoiceActive()) {
|
|
143
|
+
|
|
144
|
+
// Play the voice
|
|
145
|
+
compute(numSamples, nullptr, (FAUSTFLOAT**)fBuffer->getArrayOfWritePointers());
|
|
146
|
+
|
|
147
|
+
// Mix it in outputs
|
|
148
|
+
for (int i = 0; i < fDSP->getNumOutputs(); i++) {
|
|
149
|
+
outputBuffer.addFrom(i, startSample, *fBuffer, i, 0, numSamples);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
// Decorates the JUCE Synthesiser and adds Faust polyphonic code for GUI handling
|
|
157
|
+
|
|
158
|
+
class FaustSynthesiser : public juce::Synthesiser, public dsp_voice_group {
|
|
159
|
+
|
|
160
|
+
private:
|
|
161
|
+
|
|
162
|
+
juce::Synthesiser fSynth;
|
|
163
|
+
|
|
164
|
+
static void panic(float val, void* arg)
|
|
165
|
+
{
|
|
166
|
+
static_cast<FaustSynthesiser*>(arg)->allNotesOff(0, false); // 0 stops all voices
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
public:
|
|
170
|
+
|
|
171
|
+
FaustSynthesiser():dsp_voice_group(panic, this, true, true)
|
|
172
|
+
{
|
|
173
|
+
setNoteStealingEnabled(true);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
virtual ~FaustSynthesiser()
|
|
177
|
+
{
|
|
178
|
+
// Voices will be deallocated by fSynth
|
|
179
|
+
dsp_voice_group::clearVoices();
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
void addVoice(FaustVoice* voice)
|
|
183
|
+
{
|
|
184
|
+
fSynth.addVoice(voice);
|
|
185
|
+
dsp_voice_group::addVoice(voice);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
void addSound(juce::SynthesiserSound* sound)
|
|
189
|
+
{
|
|
190
|
+
fSynth.addSound(sound);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
void allNotesOff(int midiChannel, bool allowTailOff)
|
|
194
|
+
{
|
|
195
|
+
fSynth.allNotesOff(midiChannel, allowTailOff);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
void setCurrentPlaybackSampleRate (double newRate)
|
|
199
|
+
{
|
|
200
|
+
fSynth.setCurrentPlaybackSampleRate(newRate);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
void renderNextBlock (juce::AudioBuffer<float>& outputAudio,
|
|
204
|
+
const juce::MidiBuffer& inputMidi,
|
|
205
|
+
int startSample,
|
|
206
|
+
int numSamples)
|
|
207
|
+
{
|
|
208
|
+
fSynth.renderNextBlock(outputAudio, inputMidi, startSample, numSamples);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
void renderNextBlock (juce::AudioBuffer<double>& outputAudio,
|
|
212
|
+
const juce::MidiBuffer& inputMidi,
|
|
213
|
+
int startSample,
|
|
214
|
+
int numSamples)
|
|
215
|
+
{
|
|
216
|
+
fSynth.renderNextBlock(outputAudio, inputMidi, startSample, numSamples);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
#endif
|
|
222
|
+
|
|
223
|
+
// Using the PluginGuiMagic project (https://foleysfinest.com/developer/pluginguimagic/)
|
|
224
|
+
|
|
225
|
+
#if defined(PLUGIN_MAGIC)
|
|
226
|
+
|
|
227
|
+
class FaustPlugInAudioProcessor : public foleys::MagicProcessor, private juce::Timer
|
|
228
|
+
{
|
|
229
|
+
|
|
230
|
+
public:
|
|
231
|
+
FaustPlugInAudioProcessor();
|
|
232
|
+
virtual ~FaustPlugInAudioProcessor() {}
|
|
233
|
+
|
|
234
|
+
void prepareToPlay (double sampleRate, int samplesPerBlock) override;
|
|
235
|
+
|
|
236
|
+
bool isBusesLayoutSupported (const BusesLayout& layouts) const override;
|
|
237
|
+
|
|
238
|
+
void processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages) override
|
|
239
|
+
{
|
|
240
|
+
jassert (! isUsingDoublePrecision());
|
|
241
|
+
process (buffer, midiMessages);
|
|
242
|
+
#ifdef MAGIC_LEVEL_SOURCE
|
|
243
|
+
fOutputMeter->pushSamples(buffer);
|
|
244
|
+
#endif
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
void processBlock (juce::AudioBuffer<double>& buffer, juce::MidiBuffer& midiMessages) override
|
|
248
|
+
{
|
|
249
|
+
jassert (isUsingDoublePrecision());
|
|
250
|
+
process (buffer, midiMessages);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const juce::String getName() const override;
|
|
254
|
+
|
|
255
|
+
bool acceptsMidi() const override;
|
|
256
|
+
bool producesMidi() const override;
|
|
257
|
+
double getTailLengthSeconds() const override;
|
|
258
|
+
|
|
259
|
+
int getNumPrograms() override;
|
|
260
|
+
int getCurrentProgram() override;
|
|
261
|
+
void setCurrentProgram (int index) override;
|
|
262
|
+
const juce::String getProgramName (int index) override;
|
|
263
|
+
void changeProgramName (int index, const juce::String& newName) override;
|
|
264
|
+
|
|
265
|
+
void releaseResources() override
|
|
266
|
+
{}
|
|
267
|
+
|
|
268
|
+
void timerCallback() override;
|
|
269
|
+
|
|
270
|
+
juce::AudioProcessor::BusesProperties getBusesProperties();
|
|
271
|
+
bool supportsDoublePrecisionProcessing() const override;
|
|
272
|
+
|
|
273
|
+
#ifdef MAGIC_LEVEL_SOURCE
|
|
274
|
+
foleys::MagicLevelSource* fOutputMeter = nullptr;
|
|
275
|
+
#endif
|
|
276
|
+
juce::AudioProcessorValueTreeState treeState{ *this, nullptr };
|
|
277
|
+
|
|
278
|
+
#ifdef JUCE_POLY
|
|
279
|
+
std::unique_ptr<FaustSynthesiser> fSynth;
|
|
280
|
+
#else
|
|
281
|
+
#if defined(MIDICTRL)
|
|
282
|
+
std::unique_ptr<juce_midi_handler> fMIDIHandler;
|
|
283
|
+
std::unique_ptr<MidiUI> fMIDIUI;
|
|
284
|
+
#endif
|
|
285
|
+
std::unique_ptr<dsp> fDSP;
|
|
286
|
+
#endif
|
|
287
|
+
|
|
288
|
+
#if defined(OSCCTRL)
|
|
289
|
+
std::unique_ptr<JuceOSCUI> fOSCUI;
|
|
290
|
+
#endif
|
|
291
|
+
|
|
292
|
+
#if defined(SOUNDFILE)
|
|
293
|
+
std::unique_ptr<SoundUI> fSoundUI;
|
|
294
|
+
#endif
|
|
295
|
+
|
|
296
|
+
JuceStateUI fStateUI;
|
|
297
|
+
JuceParameterUI fParameterUI;
|
|
298
|
+
|
|
299
|
+
std::atomic<bool> fFirstCall = true;
|
|
300
|
+
|
|
301
|
+
private:
|
|
302
|
+
|
|
303
|
+
template <typename FloatType>
|
|
304
|
+
void process (juce::AudioBuffer<FloatType>& buffer, juce::MidiBuffer& midiMessages);
|
|
305
|
+
|
|
306
|
+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FaustPlugInAudioProcessor)
|
|
307
|
+
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
#else
|
|
311
|
+
|
|
312
|
+
class FaustPlugInAudioProcessor : public juce::AudioProcessor, private juce::Timer
|
|
313
|
+
{
|
|
314
|
+
|
|
315
|
+
public:
|
|
316
|
+
|
|
317
|
+
FaustPlugInAudioProcessor();
|
|
318
|
+
virtual ~FaustPlugInAudioProcessor() {}
|
|
319
|
+
|
|
320
|
+
void prepareToPlay (double sampleRate, int samplesPerBlock) override;
|
|
321
|
+
|
|
322
|
+
bool isBusesLayoutSupported (const BusesLayout& layouts) const override;
|
|
323
|
+
|
|
324
|
+
void processBlock (juce::AudioBuffer<float>& buffer, juce::MidiBuffer& midiMessages) override
|
|
325
|
+
{
|
|
326
|
+
jassert (! isUsingDoublePrecision());
|
|
327
|
+
process (buffer, midiMessages);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
void processBlock (juce::AudioBuffer<double>& buffer, juce::MidiBuffer& midiMessages) override
|
|
331
|
+
{
|
|
332
|
+
jassert (isUsingDoublePrecision());
|
|
333
|
+
process (buffer, midiMessages);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
juce::AudioProcessorEditor* createEditor() override;
|
|
337
|
+
bool hasEditor() const override;
|
|
338
|
+
|
|
339
|
+
const juce::String getName() const override;
|
|
340
|
+
|
|
341
|
+
bool acceptsMidi() const override;
|
|
342
|
+
bool producesMidi() const override;
|
|
343
|
+
double getTailLengthSeconds() const override;
|
|
344
|
+
|
|
345
|
+
int getNumPrograms() override;
|
|
346
|
+
int getCurrentProgram() override;
|
|
347
|
+
void setCurrentProgram (int index) override;
|
|
348
|
+
const juce::String getProgramName (int index) override;
|
|
349
|
+
void changeProgramName (int index, const juce::String& newName) override;
|
|
350
|
+
|
|
351
|
+
void getStateInformation (juce::MemoryBlock& destData) override;
|
|
352
|
+
void setStateInformation (const void* data, int sizeInBytes) override;
|
|
353
|
+
|
|
354
|
+
void releaseResources() override
|
|
355
|
+
{}
|
|
356
|
+
|
|
357
|
+
void timerCallback() override;
|
|
358
|
+
|
|
359
|
+
juce::AudioProcessor::BusesProperties getBusesProperties();
|
|
360
|
+
bool supportsDoublePrecisionProcessing() const override;
|
|
361
|
+
|
|
362
|
+
#ifdef JUCE_POLY
|
|
363
|
+
std::unique_ptr<FaustSynthesiser> fSynth;
|
|
364
|
+
#else
|
|
365
|
+
#if defined(MIDICTRL)
|
|
366
|
+
std::unique_ptr<juce_midi_handler> fMIDIHandler;
|
|
367
|
+
std::unique_ptr<MidiUI> fMIDIUI;
|
|
368
|
+
#endif
|
|
369
|
+
std::unique_ptr<dsp> fDSP;
|
|
370
|
+
#endif
|
|
371
|
+
|
|
372
|
+
#if defined(OSCCTRL)
|
|
373
|
+
std::unique_ptr<JuceOSCUI> fOSCUI;
|
|
374
|
+
#endif
|
|
375
|
+
|
|
376
|
+
#if defined(SOUNDFILE)
|
|
377
|
+
std::unique_ptr<SoundUI> fSoundUI;
|
|
378
|
+
#endif
|
|
379
|
+
|
|
380
|
+
JuceStateUI fStateUI;
|
|
381
|
+
JuceParameterUI fParameterUI;
|
|
382
|
+
|
|
383
|
+
std::atomic<bool> fFirstCall = true;
|
|
384
|
+
|
|
385
|
+
private:
|
|
386
|
+
|
|
387
|
+
template <typename FloatType>
|
|
388
|
+
void process (juce::AudioBuffer<FloatType>& buffer, juce::MidiBuffer& midiMessages);
|
|
389
|
+
|
|
390
|
+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FaustPlugInAudioProcessor)
|
|
391
|
+
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
#endif
|
|
395
|
+
|
|
396
|
+
class FaustPlugInAudioProcessorEditor : public juce::AudioProcessorEditor
|
|
397
|
+
{
|
|
398
|
+
|
|
399
|
+
public:
|
|
400
|
+
|
|
401
|
+
FaustPlugInAudioProcessorEditor (FaustPlugInAudioProcessor&);
|
|
402
|
+
virtual ~FaustPlugInAudioProcessorEditor() {}
|
|
403
|
+
|
|
404
|
+
void paint (juce::Graphics&) override;
|
|
405
|
+
void resized() override;
|
|
406
|
+
|
|
407
|
+
private:
|
|
408
|
+
|
|
409
|
+
// This reference is provided as a quick way for your editor to
|
|
410
|
+
// access the processor object that created it.
|
|
411
|
+
FaustPlugInAudioProcessor& processor;
|
|
412
|
+
|
|
413
|
+
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FaustPlugInAudioProcessorEditor)
|
|
414
|
+
#ifndef PLUGIN_MAGIC
|
|
415
|
+
JuceGUI fJuceGUI;
|
|
416
|
+
#endif
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
#ifndef PLUGIN_MAGIC
|
|
420
|
+
FaustPlugInAudioProcessor::FaustPlugInAudioProcessor()
|
|
421
|
+
: juce::AudioProcessor (getBusesProperties()), fParameterUI(this)
|
|
422
|
+
#else
|
|
423
|
+
FaustPlugInAudioProcessor::FaustPlugInAudioProcessor()
|
|
424
|
+
: foleys::MagicProcessor (getBusesProperties()), fParameterUI(this)
|
|
425
|
+
#endif
|
|
426
|
+
{
|
|
427
|
+
bool midi_sync = false;
|
|
428
|
+
int nvoices = 0;
|
|
429
|
+
|
|
430
|
+
mydsp* tmp_dsp = new mydsp();
|
|
431
|
+
MidiMeta::analyse(tmp_dsp, midi_sync, nvoices);
|
|
432
|
+
delete tmp_dsp;
|
|
433
|
+
|
|
434
|
+
#ifdef PLUGIN_MAGIC
|
|
435
|
+
#ifdef MAGIC_LOAD_BINARY
|
|
436
|
+
// change magic_xml and magic_xmlSize to match the name of your included
|
|
437
|
+
// XML file from Plugin GUI Magic
|
|
438
|
+
magicState.setGuiValueTree(BinaryData::magic_xml, BinaryData::magic_xmlSize);
|
|
439
|
+
#endif
|
|
440
|
+
// put other GUI Magic sources here, similar to expression below.
|
|
441
|
+
#ifdef MAGIC_LEVEL_SOURCE
|
|
442
|
+
fOutputMeter = magicState.createAndAddObject<foleys::MagicLevelSource>("output");
|
|
443
|
+
#endif
|
|
444
|
+
#endif
|
|
445
|
+
|
|
446
|
+
#ifdef JUCE_POLY
|
|
447
|
+
assert(nvoices > 0);
|
|
448
|
+
fSynth = std::make_unique<FaustSynthesiser>();
|
|
449
|
+
for (int i = 0; i < nvoices; i++) {
|
|
450
|
+
fSynth->addVoice(new FaustVoice(new mydsp()));
|
|
451
|
+
}
|
|
452
|
+
fSynth->init();
|
|
453
|
+
fSynth->addSound(new FaustSound());
|
|
454
|
+
#else
|
|
455
|
+
|
|
456
|
+
bool group = true;
|
|
457
|
+
|
|
458
|
+
#ifdef POLY2
|
|
459
|
+
assert(nvoices > 0);
|
|
460
|
+
std::cout << "Started with " << nvoices << " voices\n";
|
|
461
|
+
dsp* dsp = new mydsp_poly(new mydsp(), nvoices, true, group);
|
|
462
|
+
|
|
463
|
+
#if MIDICTRL
|
|
464
|
+
if (midi_sync) {
|
|
465
|
+
fDSP = std::make_unique<timed_dsp>(new dsp_sequencer(dsp, new effect()));
|
|
466
|
+
} else {
|
|
467
|
+
fDSP = std::make_unique<dsp_sequencer>(dsp, new effect());
|
|
468
|
+
}
|
|
469
|
+
#else
|
|
470
|
+
fDSP = std::make_unique<dsp_sequencer>(dsp, new effects());
|
|
471
|
+
#endif
|
|
472
|
+
|
|
473
|
+
#else
|
|
474
|
+
if (nvoices > 0) {
|
|
475
|
+
std::cout << "Started with " << nvoices << " voices\n";
|
|
476
|
+
dsp* dsp = new mydsp_poly(new mydsp(), nvoices, true, group);
|
|
477
|
+
|
|
478
|
+
#if MIDICTRL
|
|
479
|
+
if (midi_sync) {
|
|
480
|
+
fDSP = std::make_unique<timed_dsp>(dsp);
|
|
481
|
+
} else {
|
|
482
|
+
fDSP = std::make_unique<decorator_dsp>(dsp);
|
|
483
|
+
}
|
|
484
|
+
#else
|
|
485
|
+
fDSP = std::make_unique<decorator_dsp>(dsp);
|
|
486
|
+
#endif
|
|
487
|
+
} else {
|
|
488
|
+
#if MIDICTRL
|
|
489
|
+
if (midi_sync) {
|
|
490
|
+
fDSP = std::make_unique<timed_dsp>(new mydsp());
|
|
491
|
+
} else {
|
|
492
|
+
fDSP = std::make_unique<mydsp>();
|
|
493
|
+
}
|
|
494
|
+
#else
|
|
495
|
+
fDSP = std::make_unique<mydsp>();
|
|
496
|
+
#endif
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
#endif
|
|
500
|
+
|
|
501
|
+
#if defined(MIDICTRL)
|
|
502
|
+
fMIDIHandler = std::make_unique<juce_midi_handler>();
|
|
503
|
+
fMIDIUI = std::make_unique<MidiUI>(fMIDIHandler.get());
|
|
504
|
+
fDSP->buildUserInterface(fMIDIUI.get());
|
|
505
|
+
if (!fMIDIUI->run()) {
|
|
506
|
+
std::cerr << "JUCE MIDI handler cannot be started..." << std::endl;
|
|
507
|
+
}
|
|
508
|
+
#endif
|
|
509
|
+
|
|
510
|
+
#endif
|
|
511
|
+
|
|
512
|
+
#if defined(OSCCTRL)
|
|
513
|
+
fOSCUI = std::make_unique<JuceOSCUI>("127.0.0.1", 5510, 5511);
|
|
514
|
+
#ifdef JUCE_POLY
|
|
515
|
+
fSynth->buildUserInterface(fOSCUI.get());
|
|
516
|
+
#else
|
|
517
|
+
fDSP->buildUserInterface(fOSCUI.get());
|
|
518
|
+
#endif
|
|
519
|
+
if (!fOSCUI->run()) {
|
|
520
|
+
std::cerr << "JUCE OSC handler cannot be started..." << std::endl;
|
|
521
|
+
}
|
|
522
|
+
#endif
|
|
523
|
+
|
|
524
|
+
#if defined(SOUNDFILE)
|
|
525
|
+
// Use bundle path
|
|
526
|
+
auto file = juce::File::getSpecialLocation(juce::File::currentExecutableFile)
|
|
527
|
+
.getParentDirectory().getParentDirectory().getChildFile("Resources");
|
|
528
|
+
fSoundUI = std::make_unique<SoundUI>(file.getFullPathName().toStdString());
|
|
529
|
+
fDSP->buildUserInterface(fSoundUI.get());
|
|
530
|
+
#endif
|
|
531
|
+
|
|
532
|
+
#ifdef JUCE_POLY
|
|
533
|
+
fSynth->buildUserInterface(&fStateUI);
|
|
534
|
+
fSynth->buildUserInterface(&fParameterUI);
|
|
535
|
+
// When no previous state was restored, init DSP controllers with their default values
|
|
536
|
+
if (!fStateUI.fRestored) {
|
|
537
|
+
fSynth->instanceResetUserInterface();
|
|
538
|
+
}
|
|
539
|
+
#else
|
|
540
|
+
fDSP->buildUserInterface(&fStateUI);
|
|
541
|
+
fDSP->buildUserInterface(&fParameterUI);
|
|
542
|
+
// When no previous state was restored, init DSP controllers with their default values
|
|
543
|
+
if (!fStateUI.fRestored) {
|
|
544
|
+
fDSP->instanceResetUserInterface();
|
|
545
|
+
}
|
|
546
|
+
#endif
|
|
547
|
+
|
|
548
|
+
startTimerHz(25);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
juce::AudioProcessor::BusesProperties FaustPlugInAudioProcessor::getBusesProperties()
|
|
552
|
+
{
|
|
553
|
+
if (juce::PluginHostType::getPluginLoadedAs() == wrapperType_Standalone) {
|
|
554
|
+
if (FAUST_INPUTS == 0) {
|
|
555
|
+
return BusesProperties().withOutput("Output", juce::AudioChannelSet::discreteChannels(std::min<int>(2, FAUST_OUTPUTS)), true);
|
|
556
|
+
} else {
|
|
557
|
+
return BusesProperties()
|
|
558
|
+
.withInput("Input", juce::AudioChannelSet::discreteChannels(std::min<int>(2, FAUST_INPUTS)), true)
|
|
559
|
+
.withOutput("Output", juce::AudioChannelSet::discreteChannels(std::min<int>(2, FAUST_OUTPUTS)), true);
|
|
560
|
+
}
|
|
561
|
+
} else {
|
|
562
|
+
if (FAUST_INPUTS == 0) {
|
|
563
|
+
return BusesProperties().withOutput("Output", juce::AudioChannelSet::discreteChannels(FAUST_OUTPUTS), true);
|
|
564
|
+
} else {
|
|
565
|
+
return BusesProperties()
|
|
566
|
+
.withInput("Input", juce::AudioChannelSet::discreteChannels(FAUST_INPUTS), true)
|
|
567
|
+
.withOutput("Output", juce::AudioChannelSet::discreteChannels(FAUST_OUTPUTS), true);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
void FaustPlugInAudioProcessor::timerCallback()
|
|
573
|
+
{
|
|
574
|
+
GUI::updateAllGuis();
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
//==============================================================================
|
|
578
|
+
const juce::String FaustPlugInAudioProcessor::getName() const
|
|
579
|
+
{
|
|
580
|
+
return JucePlugin_Name;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
bool FaustPlugInAudioProcessor::acceptsMidi() const
|
|
584
|
+
{
|
|
585
|
+
#if JucePlugin_WantsMidiInput
|
|
586
|
+
return true;
|
|
587
|
+
#else
|
|
588
|
+
return false;
|
|
589
|
+
#endif
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
bool FaustPlugInAudioProcessor::producesMidi() const
|
|
593
|
+
{
|
|
594
|
+
#if JucePlugin_ProducesMidiOutput
|
|
595
|
+
return true;
|
|
596
|
+
#else
|
|
597
|
+
return false;
|
|
598
|
+
#endif
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
double FaustPlugInAudioProcessor::getTailLengthSeconds() const
|
|
602
|
+
{
|
|
603
|
+
return 0.0;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
int FaustPlugInAudioProcessor::getNumPrograms()
|
|
607
|
+
{
|
|
608
|
+
return 1; // NB: some hosts don't cope very well if you tell them there are 0 programs,
|
|
609
|
+
// so this should be at least 1, even if you're not really implementing programs.
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
int FaustPlugInAudioProcessor::getCurrentProgram()
|
|
613
|
+
{
|
|
614
|
+
return 0;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
void FaustPlugInAudioProcessor::setCurrentProgram (int index)
|
|
618
|
+
{}
|
|
619
|
+
|
|
620
|
+
const juce::String FaustPlugInAudioProcessor::getProgramName (int index)
|
|
621
|
+
{
|
|
622
|
+
return juce::String();
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
void FaustPlugInAudioProcessor::changeProgramName (int index, const juce::String& newName)
|
|
626
|
+
{}
|
|
627
|
+
|
|
628
|
+
bool FaustPlugInAudioProcessor::supportsDoublePrecisionProcessing() const
|
|
629
|
+
{
|
|
630
|
+
return sizeof(FAUSTFLOAT) == 8;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
//==============================================================================
|
|
634
|
+
void FaustPlugInAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock)
|
|
635
|
+
{
|
|
636
|
+
// Reset DSP adaptation
|
|
637
|
+
fFirstCall = true;
|
|
638
|
+
|
|
639
|
+
#ifdef JUCE_POLY
|
|
640
|
+
fSynth->setCurrentPlaybackSampleRate (sampleRate);
|
|
641
|
+
#else
|
|
642
|
+
|
|
643
|
+
// Setting the DSP control values has already been done
|
|
644
|
+
// by 'buildUserInterface(&fStateUI)', using the saved values or the default ones.
|
|
645
|
+
// What has to be done to finish the DSP initialization is done now.
|
|
646
|
+
mydsp::classInit(int(sampleRate));
|
|
647
|
+
fDSP->instanceConstants(int(sampleRate));
|
|
648
|
+
fDSP->instanceClear();
|
|
649
|
+
|
|
650
|
+
// Get latency metadata
|
|
651
|
+
struct LatencyMeta : public Meta {
|
|
652
|
+
|
|
653
|
+
float fLatencyFrames = -1.f;
|
|
654
|
+
float fLatencySec = -1.f;
|
|
655
|
+
|
|
656
|
+
void declare(const char* key, const char* value)
|
|
657
|
+
{
|
|
658
|
+
if (std::string(key) == "latency_frames" || std::string(key) == "latency_samples") {
|
|
659
|
+
fLatencyFrames = std::atof(value);
|
|
660
|
+
} else if (std::string(key) == "latency_sec") {
|
|
661
|
+
fLatencySec = std::atof(value);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
LatencyMeta meta;
|
|
667
|
+
fDSP->metadata(&meta);
|
|
668
|
+
if (meta.fLatencyFrames > 0) {
|
|
669
|
+
setLatencySamples(meta.fLatencyFrames);
|
|
670
|
+
} else if (meta.fLatencySec > 0) {
|
|
671
|
+
setLatencySamples(meta.fLatencySec * sampleRate);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
#endif
|
|
675
|
+
#ifdef MAGIC_LEVEL_SOURCE
|
|
676
|
+
magicState.prepareToPlay(sampleRate, samplesPerBlock);
|
|
677
|
+
fOutputMeter->setupSource(getMainBusNumOutputChannels(), sampleRate, 500, 200);
|
|
678
|
+
#endif
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
bool FaustPlugInAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const
|
|
682
|
+
{
|
|
683
|
+
// Always return true and have the DSP adapts its buffer layout with a dsp_adapter (see 'prepareToPlay' and 'process')
|
|
684
|
+
return true;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
template <typename FloatType>
|
|
688
|
+
void FaustPlugInAudioProcessor::process (juce::AudioBuffer<FloatType>& buffer, juce::MidiBuffer& midiMessages)
|
|
689
|
+
{
|
|
690
|
+
juce::ScopedNoDenormals noDenormals;
|
|
691
|
+
|
|
692
|
+
/*
|
|
693
|
+
prepareToPlay is possibly called several times with different values for sampleRate
|
|
694
|
+
and isUsingDoublePrecision() state (this has been seen in particular with VTS3),
|
|
695
|
+
making proper sample format (float/double) and the inputs/outputs layout adaptation
|
|
696
|
+
more complex at this stage.
|
|
697
|
+
|
|
698
|
+
So adapting the sample format (float/double) and the inputs/outputs layout is done
|
|
699
|
+
once at first process call even if this possibly allocates memory, which is not RT safe.
|
|
700
|
+
*/
|
|
701
|
+
if (fFirstCall) {
|
|
702
|
+
fFirstCall = false;
|
|
703
|
+
|
|
704
|
+
// Possible sample size adaptation
|
|
705
|
+
if (supportsDoublePrecisionProcessing()) {
|
|
706
|
+
if (isUsingDoublePrecision()) {
|
|
707
|
+
// Nothing to do
|
|
708
|
+
} else {
|
|
709
|
+
fDSP = std::make_unique<dsp_sample_adapter<double, float>>(fDSP.release());
|
|
710
|
+
}
|
|
711
|
+
} else {
|
|
712
|
+
if (isUsingDoublePrecision()) {
|
|
713
|
+
fDSP = std::make_unique<dsp_sample_adapter<float, double>>(fDSP.release());
|
|
714
|
+
} else {
|
|
715
|
+
// Nothing to do
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
// Possibly adapt DSP inputs/outputs number
|
|
720
|
+
if (fDSP->getNumInputs() > getTotalNumInputChannels() || fDSP->getNumOutputs() > getTotalNumOutputChannels()) {
|
|
721
|
+
fDSP = std::make_unique<dsp_adapter>(fDSP.release(), getTotalNumInputChannels(), getTotalNumOutputChannels(), 4096);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
#ifdef JUCE_POLY
|
|
726
|
+
fSynth->renderNextBlock(buffer, midiMessages, 0, buffer.getNumSamples());
|
|
727
|
+
#else
|
|
728
|
+
#if defined(MIDICTRL)
|
|
729
|
+
// Read MIDI input events from midiMessages
|
|
730
|
+
fMIDIHandler->decodeBuffer(midiMessages);
|
|
731
|
+
// Then write MIDI output events to midiMessages
|
|
732
|
+
fMIDIHandler->encodeBuffer(midiMessages);
|
|
733
|
+
#endif
|
|
734
|
+
// MIDI timestamp is expressed in frames
|
|
735
|
+
fDSP->compute(-1, buffer.getNumSamples(),
|
|
736
|
+
(FAUSTFLOAT**)buffer.getArrayOfReadPointers(),
|
|
737
|
+
(FAUSTFLOAT**)buffer.getArrayOfWritePointers());
|
|
738
|
+
#endif
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
//==============================================================================
|
|
742
|
+
#ifndef PLUGIN_MAGIC
|
|
743
|
+
bool FaustPlugInAudioProcessor::hasEditor() const
|
|
744
|
+
{
|
|
745
|
+
return true;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
juce::AudioProcessorEditor* FaustPlugInAudioProcessor::createEditor()
|
|
749
|
+
{
|
|
750
|
+
return new FaustPlugInAudioProcessorEditor (*this);
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
//==============================================================================
|
|
754
|
+
void FaustPlugInAudioProcessor::getStateInformation (juce::MemoryBlock& destData)
|
|
755
|
+
{
|
|
756
|
+
// You should use this method to store your parameters in the memory block.
|
|
757
|
+
// You could do that either as raw data, or use the XML or ValueTree classes
|
|
758
|
+
// as intermediaries to make it easy to save and load complex data.
|
|
759
|
+
|
|
760
|
+
fStateUI.getStateInformation(destData);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
void FaustPlugInAudioProcessor::setStateInformation (const void* data, int sizeInBytes)
|
|
764
|
+
{
|
|
765
|
+
// You should use this method to restore your parameters from this memory block,
|
|
766
|
+
// whose contents will have been created by the getStateInformation() call.
|
|
767
|
+
|
|
768
|
+
fStateUI.setStateInformation(data, sizeInBytes);
|
|
769
|
+
}
|
|
770
|
+
#endif
|
|
771
|
+
//==============================================================================
|
|
772
|
+
// This creates new instances of the plugin..
|
|
773
|
+
juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter()
|
|
774
|
+
{
|
|
775
|
+
return new FaustPlugInAudioProcessor();
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
//==============================================================================
|
|
779
|
+
#ifndef PLUGIN_MAGIC
|
|
780
|
+
FaustPlugInAudioProcessorEditor::FaustPlugInAudioProcessorEditor (FaustPlugInAudioProcessor& p)
|
|
781
|
+
: juce::AudioProcessorEditor (&p), processor (p)
|
|
782
|
+
{
|
|
783
|
+
#ifdef JUCE_POLY
|
|
784
|
+
p.fSynth->buildUserInterface(&fJuceGUI);
|
|
785
|
+
#else
|
|
786
|
+
p.fDSP->buildUserInterface(&fJuceGUI);
|
|
787
|
+
#endif
|
|
788
|
+
|
|
789
|
+
addAndMakeVisible(fJuceGUI);
|
|
790
|
+
|
|
791
|
+
juce::Rectangle<int> recommendedSize = fJuceGUI.getSize();
|
|
792
|
+
setSize (recommendedSize.getWidth(), recommendedSize.getHeight());
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
//==============================================================================
|
|
796
|
+
void FaustPlugInAudioProcessorEditor::paint (juce::Graphics& g)
|
|
797
|
+
{
|
|
798
|
+
g.fillAll (juce::Colours::white);
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
void FaustPlugInAudioProcessorEditor::resized()
|
|
802
|
+
{
|
|
803
|
+
fJuceGUI.setBounds(getLocalBounds());
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
#endif
|
|
807
|
+
// Globals
|
|
808
|
+
std::list<GUI*> GUI::fGuiList;
|
|
809
|
+
ztimedmap GUI::gTimedZoneMap;
|