├── .bundle └── config ├── .github ├── dependabot.yml └── workflows │ ├── CI.yml │ └── jekyll.yml ├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── DEVELOPING.md ├── Gemfile ├── Gemfile.lock ├── README.md ├── README_MACOS.txt.in ├── README_WINDOWS.txt.in ├── TODO ├── _config.yml ├── _data └── releases.yml ├── assets ├── css │ └── style.scss └── img │ ├── github.png │ └── supercollider.png ├── cmake_modules ├── FindFFTW3f.cmake ├── FindSTK.cmake ├── FindSuperCollider3.cmake └── cmake_uninstall.cmake.in ├── external_libraries └── TLSF-2.4.6 │ ├── COPYING │ ├── Changelog │ ├── GPL.txt │ ├── LGPL-2.1.txt │ ├── README │ ├── TODO │ ├── examples │ ├── Makefile │ ├── test.c │ ├── test1.c │ ├── test2.c │ ├── test3.c │ └── test4.c │ └── src │ ├── Makefile │ ├── target.h │ ├── tlsf.c │ └── tlsf.h ├── index.md ├── license.txt ├── osx_package ├── CMakeLists.txt ├── CMakeOSXBundle.cmake └── README-for-mac-distro.txt ├── package └── create_package.sh ├── quarks ├── CMakeLists.txt ├── DIRECTORY │ ├── AYUGens.quark │ ├── BatUGens.quark │ ├── BerlachUGens.quark │ ├── BhobUGens.quark │ ├── BlackrainUGens.quark │ ├── GlitchUGens.quark │ ├── JoshUGens.quark │ ├── LadspaUGens.quark │ ├── LoopBufUGens.quark │ ├── MCLDUGens.quark │ ├── MLfftwUGens.quark │ ├── MdaUGens.quark │ ├── MembraneUGens.quark │ ├── NCAnalysisUGens.quark │ ├── RFWUGens.quark │ ├── RMEQSuiteUGens.quark │ ├── SLUGens.quark │ ├── StkUGens.quark │ ├── TagSystemUGens.quark │ └── VOSIMUGens.quark ├── Generate_Quark.scd └── SC3pluginsQuarks.help.scd ├── source ├── ATK │ ├── AtkUGens.cpp │ └── sc │ │ ├── LICENSE │ │ └── README.md ├── AYUGens │ ├── AY_UGen.cpp │ ├── AY_libayemu │ │ ├── include │ │ │ ├── ayemu.h │ │ │ ├── ayemu_8912.h │ │ │ └── ayemu_vtxfile.h │ │ └── src │ │ │ └── ay8912.c │ └── sc │ │ ├── AY.sc │ │ ├── AYUGens.html │ │ └── HelpSource │ │ └── Classes │ │ └── AY.schelp ├── AntiAliasingOscillators │ ├── AntiAliasingOscillators.cpp │ └── sc │ │ ├── Classes │ │ └── AntiAliasingOscillators.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── BlitB3.schelp │ │ ├── BlitB3Saw.schelp │ │ ├── BlitB3Square.schelp │ │ ├── BlitB3Tri.schelp │ │ ├── DPW3Tri.schelp │ │ └── DPW4Saw.schelp ├── AuditoryModeling │ ├── AuditoryModelingUGens.cpp │ ├── MeddisHairCell.cpp │ ├── MeddisHairCell.h │ ├── SimpleHairCell.cpp │ ├── SimpleHairCell.h │ └── sc │ │ ├── Classes │ │ └── AuditoryModeling.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── Gammatone.schelp │ │ ├── HairCell.schelp │ │ └── Meddis.schelp ├── BBCut2UGens │ ├── BBCut2UGens.cpp │ ├── DrumTrack.cpp │ └── sc │ │ ├── AnalyseEvents2.sc │ │ ├── AutoTrack.sc │ │ ├── DrumTrack.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── AnalyseEvents2.schelp │ │ ├── AutoTrack.schelp │ │ └── DrumTrack.schelp ├── BatUGens │ ├── BatPVUgens.cpp │ ├── BatUGens.cpp │ └── sc │ │ ├── BatUGens.html │ │ ├── BatUGens.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── Coyote.schelp │ │ ├── FrameCompare.schelp │ │ ├── MarkovSynth.schelp │ │ ├── TrigAvg.schelp │ │ └── WAmp.schelp ├── BerlachUGens │ ├── BerlachUGens.cpp │ ├── Oversamp.h │ ├── sc │ │ ├── BerlachUGens.html │ │ ├── classes │ │ │ ├── BFilters.sc │ │ │ ├── BLBufRd.sc │ │ │ ├── OSNonlinear.sc │ │ │ └── PeakEQ.sc │ │ └── tests │ │ │ ├── blbufrd-test.scd │ │ │ ├── osnonlinear-test.scd │ │ │ └── oversamp-test.scd │ └── sinctab.h ├── BetablockerUGens │ ├── BetaBlockerUGens.h │ ├── BetaBlockerUGensUnused.cpp │ ├── BetablockerUGens-todo │ ├── BetablockerUGens.cpp │ ├── betablocker │ │ ├── instructions.h │ │ ├── machine.cpp │ │ ├── machine.h │ │ ├── thread.cpp │ │ └── thread.h │ └── sc │ │ ├── BBlockerProgram.sc │ │ ├── BetablockerUGens.sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── BBlockerBuf.schelp │ │ │ ├── BBlockerProgram.schelp │ │ │ ├── DetaBlockerBuf.schelp │ │ │ └── betablocker-01-small.png │ │ └── examples │ │ ├── BBlockerBuf-examples.scd │ │ ├── BBlockerBuf.scd │ │ ├── BBlockerProgram.scd │ │ └── BetaBlocker-examplePrograms.scd ├── BhobUGens │ ├── BhobChaos.cpp │ ├── BhobFFT.cpp │ ├── BhobFilt.cpp │ ├── BhobGrain.cpp │ ├── BhobNoise.cpp │ └── sc │ │ ├── BhobUGens.html │ │ ├── HelpSource │ │ ├── Classes │ │ │ ├── Dbrown2.schelp │ │ │ ├── DoubleNestedAllpassC.schelp │ │ │ ├── DoubleNestedAllpassL.schelp │ │ │ ├── DoubleNestedAllpassN.schelp │ │ │ ├── Fhn2DC.schelp │ │ │ ├── Fhn2DL.schelp │ │ │ ├── Fhn2DN.schelp │ │ │ ├── GaussTrig.schelp │ │ │ ├── Gbman2DC.schelp │ │ │ ├── Gbman2DL.schelp │ │ │ ├── Gbman2DN.schelp │ │ │ ├── Gendy4.schelp │ │ │ ├── Gendy5.schelp │ │ │ ├── Henon2DC.schelp │ │ │ ├── Henon2DL.schelp │ │ │ ├── Henon2DN.schelp │ │ │ ├── LFBrownNoise0.schelp │ │ │ ├── LFBrownNoise1.schelp │ │ │ ├── LFBrownNoise2.schelp │ │ │ ├── Latoocarfian2DC.schelp │ │ │ ├── Latoocarfian2DL.schelp │ │ │ ├── Latoocarfian2DN.schelp │ │ │ ├── Lorenz2DC.schelp │ │ │ ├── Lorenz2DL.schelp │ │ │ ├── Lorenz2DN.schelp │ │ │ ├── LorenzTrig.schelp │ │ │ ├── MoogLadder.schelp │ │ │ ├── NLFiltC.schelp │ │ │ ├── NLFiltL.schelp │ │ │ ├── NLFiltN.schelp │ │ │ ├── NestedAllpassC.schelp │ │ │ ├── NestedAllpassL.schelp │ │ │ ├── NestedAllpassN.schelp │ │ │ ├── PV_CommonMag.schelp │ │ │ ├── PV_CommonMul.schelp │ │ │ ├── PV_Compander.schelp │ │ │ ├── PV_Cutoff.schelp │ │ │ ├── PV_MagGate.schelp │ │ │ ├── PV_MagMinus.schelp │ │ │ ├── PV_Morph.schelp │ │ │ ├── PV_SoftWipe.schelp │ │ │ ├── PV_XFade.schelp │ │ │ ├── Plorenz.schelp │ │ │ ├── RLPFD.schelp │ │ │ ├── Standard2DC.schelp │ │ │ ├── Standard2DL.schelp │ │ │ ├── Standard2DN.schelp │ │ │ ├── Streson.schelp │ │ │ ├── TBetaRand.schelp │ │ │ ├── TBrownRand.schelp │ │ │ ├── TGaussRand.schelp │ │ │ ├── TGrains2.schelp │ │ │ └── TGrains3.schelp │ │ └── Guides │ │ │ ├── EQExamples.schelp │ │ │ ├── FilterComparisons.schelp │ │ │ ├── MoreChaos.schelp │ │ │ └── ProbalisticNoiseUGens.schelp │ │ └── classes │ │ ├── ChaosPatterns.sc │ │ ├── EQ.sc │ │ ├── bhobChaos.sc │ │ ├── bhobFFT.sc │ │ ├── bhobGens.sc │ │ └── osx │ │ └── asEnv.sc ├── BlackrainUGens │ ├── BlackrainUGens.cpp │ └── sc │ │ ├── BlackrainUGens.html │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── AmplitudeMod.schelp │ │ │ ├── BMoog.schelp │ │ │ ├── IIRFilter.schelp │ │ │ └── SVF.schelp │ │ └── blackrain_ugens.sc ├── CMakeLists.txt ├── ChaosUGens │ ├── NoiseRing.cpp │ ├── PredPrey.cpp │ └── sc │ │ ├── Examples │ │ ├── NoiseRing.scd │ │ └── PredPrey.scd │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── ArneodoCoulletTresser.schelp │ │ │ ├── DNoiseRing.schelp │ │ │ └── LotkaVolterra.schelp │ │ ├── NoiseRing.sc │ │ └── PredPrey.sc ├── ConcatUGens │ ├── Concat.cpp │ └── sc │ │ ├── Concat.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── Concat.schelp │ │ └── Concat2.schelp ├── DEINDUGens │ ├── DiodeRingMod.cpp │ ├── GreyholeRaw.cpp │ ├── JPverbRaw.cpp │ ├── RMS.cpp │ ├── complexRes.cpp │ ├── faust_src │ │ ├── GreyholeRaw.cpp │ │ ├── GreyholeRaw.dsp │ │ ├── GreyholeRaw.sc │ │ ├── JPverbRaw.cpp │ │ ├── JPverbRaw.dsp │ │ ├── README.md │ │ └── jprev.h │ ├── include │ │ ├── faust │ │ │ ├── au │ │ │ │ └── AUUI.h │ │ │ ├── audio │ │ │ │ ├── alsa-dsp.h │ │ │ │ ├── android-dsp.h │ │ │ │ ├── audio.h │ │ │ │ ├── channels.h │ │ │ │ ├── coreaudio-dsp.h │ │ │ │ ├── coreaudio-ios-dsp.h │ │ │ │ ├── dummy-audio.h │ │ │ │ ├── jack-dsp.h │ │ │ │ ├── juce-dsp.h │ │ │ │ ├── netjack-dsp.h │ │ │ │ ├── ofaudio-dsp.h │ │ │ │ ├── opensles-android-dsp.h │ │ │ │ ├── osc-dsp.h │ │ │ │ ├── portaudio-dsp.h │ │ │ │ └── rtaudio-dsp.h │ │ │ ├── dsp │ │ │ │ ├── dsp-adapter.h │ │ │ │ ├── dsp-bench.h │ │ │ │ ├── dsp-combiner.h │ │ │ │ ├── dsp-tools.h │ │ │ │ ├── dsp.h │ │ │ │ ├── faust-engine.h │ │ │ │ ├── faust-poly-engine.h │ │ │ │ ├── poly-dsp.h │ │ │ │ ├── proxy-dsp.h │ │ │ │ ├── sound-player.h │ │ │ │ └── timed-dsp.h │ │ │ ├── gui │ │ │ │ ├── APIUI.h │ │ │ │ ├── ControlUI.h │ │ │ │ ├── FUI.h │ │ │ │ ├── GUI.h │ │ │ │ ├── HTTPDControler.h │ │ │ │ ├── JSONUI.h │ │ │ │ ├── JuceGUI.h │ │ │ │ ├── JuceOSCUI.h │ │ │ │ ├── JuceParameterUI.h │ │ │ │ ├── JuceStateUI.h │ │ │ │ ├── MapUI.h │ │ │ │ ├── MetaDataUI.h │ │ │ │ ├── MidiUI.h │ │ │ │ ├── OCVUI.h │ │ │ │ ├── OSCControler.h │ │ │ │ ├── OSCUI.h │ │ │ │ ├── PathBuilder.h │ │ │ │ ├── PrintUI.h │ │ │ │ ├── RosCI.h │ │ │ │ ├── RosUI.h │ │ │ │ ├── SimpleParser.h │ │ │ │ ├── Styles │ │ │ │ │ ├── Blue.qrc │ │ │ │ │ ├── Blue.qss │ │ │ │ │ ├── Default.qrc │ │ │ │ │ ├── Default.qss │ │ │ │ │ ├── Grey.qrc │ │ │ │ │ ├── Grey.qss │ │ │ │ │ ├── Salmon.qrc │ │ │ │ │ └── Salmon.qss │ │ │ │ ├── UI.h │ │ │ │ ├── ValueConverter.h │ │ │ │ ├── console.h │ │ │ │ ├── faustgtk.h │ │ │ │ ├── faustqt.h │ │ │ │ ├── httpdUI.h │ │ │ │ ├── jsonfaustui.h │ │ │ │ ├── meta.h │ │ │ │ └── ring-buffer.h │ │ │ ├── midi │ │ │ │ ├── RtMidi.cpp │ │ │ │ ├── RtMidi.h │ │ │ │ ├── bela-midi.h │ │ │ │ ├── jack-midi.h │ │ │ │ ├── juce-midi.h │ │ │ │ ├── midi.h │ │ │ │ └── rt-midi.h │ │ │ ├── misc.h │ │ │ ├── osc │ │ │ │ ├── FaustFactory.h │ │ │ │ ├── FaustNode.h │ │ │ │ ├── Message.h │ │ │ │ ├── MessageDriven.h │ │ │ │ ├── MessageProcessor.h │ │ │ │ ├── RootNode.h │ │ │ │ └── smartpointer.h │ │ │ ├── sound-file.h │ │ │ ├── unity │ │ │ │ └── AudioPluginInterface.h │ │ │ └── vst │ │ │ │ ├── faust.h │ │ │ │ ├── voice.h │ │ │ │ └── vstui.h │ │ └── jprev.h │ └── sc │ │ ├── DiodeRingMod.sc │ │ ├── Greyhole.sc │ │ ├── HelpSource │ │ ├── Classes │ │ │ ├── ComplexRes.schelp │ │ │ ├── DiodeRingMod.schelp │ │ │ ├── Greyhole-logo-small.png │ │ │ ├── Greyhole-logo.jpg │ │ │ ├── Greyhole.schelp │ │ │ ├── GreyholeRaw.schelp │ │ │ ├── JPverb-logo-small.png │ │ │ ├── JPverb-logo.jpg │ │ │ ├── JPverb.schelp │ │ │ ├── JPverbRaw.schelp │ │ │ └── RMS.schelp │ │ └── Overviews │ │ │ ├── DEIND.jpg │ │ │ ├── DEIND.png │ │ │ └── DEIND.schelp │ │ ├── JPverb.sc │ │ ├── RMS.sc │ │ ├── complexRes.sc │ │ └── examples │ │ ├── DiodeRingMod.scd │ │ ├── compar.pdf │ │ ├── compar.scd │ │ ├── comparFeedback.scd │ │ └── complexRes.scd ├── DWGUGens │ ├── DWGBowed.cpp │ ├── DWGPlucked.cpp │ ├── dwglib │ │ ├── DWG.cpp │ │ └── DWG.hpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── DWGBowed.schelp │ │ │ ├── DWGBowedSimple.schelp │ │ │ ├── DWGBowedTor.schelp │ │ │ ├── DWGPlucked.schelp │ │ │ ├── DWGPlucked2.schelp │ │ │ └── DWGPluckedStiff.schelp │ │ └── classes │ │ ├── DWGBowed.sc │ │ └── DWGPlucked.sc ├── DistortionUGens │ ├── DistortionUGens.cpp │ └── sc │ │ ├── DistortionPlugins.sc │ │ ├── DistortionUGens.html │ │ └── HelpSource │ │ └── Classes │ │ ├── CrossoverDistortion.schelp │ │ ├── Decimator.schelp │ │ ├── Disintegrator.schelp │ │ ├── SineShaper.schelp │ │ └── SmoothDecimator.schelp ├── GlitchUGens │ ├── GlitchUGens.cpp │ └── sc │ │ ├── GlitchUGens.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── GlitchBPF.schelp │ │ ├── GlitchBRF.schelp │ │ ├── GlitchHPF.schelp │ │ └── GlitchRHPF.schelp ├── HOAUGens │ ├── HOAAzimuthRotator1.cpp │ ├── HOAAzimuthRotator10.cpp │ ├── HOAAzimuthRotator2.cpp │ ├── HOAAzimuthRotator3.cpp │ ├── HOAAzimuthRotator4.cpp │ ├── HOAAzimuthRotator5.cpp │ ├── HOAAzimuthRotator6.cpp │ ├── HOAAzimuthRotator7.cpp │ ├── HOAAzimuthRotator8.cpp │ ├── HOAAzimuthRotator9.cpp │ ├── HOABeamDirac2HOA1.cpp │ ├── HOABeamDirac2HOA10.cpp │ ├── HOABeamDirac2HOA2.cpp │ ├── HOABeamDirac2HOA3.cpp │ ├── HOABeamDirac2HOA4.cpp │ ├── HOABeamDirac2HOA5.cpp │ ├── HOABeamDirac2HOA6.cpp │ ├── HOABeamDirac2HOA7.cpp │ ├── HOABeamDirac2HOA8.cpp │ ├── HOABeamDirac2HOA9.cpp │ ├── HOABeamHCardio2HOA1.cpp │ ├── HOABeamHCardio2HOA2.cpp │ ├── HOABeamHCardio2HOA3.cpp │ ├── HOABeamHCardio2Mono1.cpp │ ├── HOABeamHCardio2Mono2.cpp │ ├── HOABeamHCardio2Mono3.cpp │ ├── HOAConverterAcnN3d2AcnSn3d1.cpp │ ├── HOAConverterAcnN3d2AcnSn3d10.cpp │ ├── HOAConverterAcnN3d2AcnSn3d2.cpp │ ├── HOAConverterAcnN3d2AcnSn3d3.cpp │ ├── HOAConverterAcnN3d2AcnSn3d4.cpp │ ├── HOAConverterAcnN3d2AcnSn3d5.cpp │ ├── HOAConverterAcnN3d2AcnSn3d6.cpp │ ├── HOAConverterAcnN3d2AcnSn3d7.cpp │ ├── HOAConverterAcnN3d2AcnSn3d8.cpp │ ├── HOAConverterAcnN3d2AcnSn3d9.cpp │ ├── HOAConverterAcnN3d2FuMa1.cpp │ ├── HOAConverterAcnN3d2FuMa2.cpp │ ├── HOAConverterAcnN3d2FuMa3.cpp │ ├── HOAConverterAcnSn3d2FuMa1.cpp │ ├── HOAConverterAcnSn3d2FuMa2.cpp │ ├── HOAConverterAcnSn3d2FuMa3.cpp │ ├── HOAConverterFuma2AcnN3d1.cpp │ ├── HOAConverterFuma2AcnN3d2.cpp │ ├── HOAConverterFuma2AcnN3d3.cpp │ ├── HOAConverterFuma2AcnSn3d1.cpp │ ├── HOAConverterFuma2AcnSn3d2.cpp │ ├── HOAConverterFuma2AcnSn3d3.cpp │ ├── HOADecBinaural1.cpp │ ├── HOADecBinaural2.cpp │ ├── HOADecLebedev061.cpp │ ├── HOADecLebedev261.cpp │ ├── HOADecLebedev262.cpp │ ├── HOADecLebedev263.cpp │ ├── HOADecLebedev501.cpp │ ├── HOADecLebedev502.cpp │ ├── HOADecLebedev503.cpp │ ├── HOADecLebedev504.cpp │ ├── HOADecLebedev505.cpp │ ├── HOAEncEigenMike1.cpp │ ├── HOAEncEigenMike2.cpp │ ├── HOAEncEigenMike3.cpp │ ├── HOAEncEigenMike4.cpp │ ├── HOAEncLebedev501.cpp │ ├── HOAEncLebedev502.cpp │ ├── HOAEncLebedev503.cpp │ ├── HOAEncLebedev504.cpp │ ├── HOAEncLebedev505.cpp │ ├── HOAEncoder1.cpp │ ├── HOAEncoder2.cpp │ ├── HOAEncoder3.cpp │ ├── HOAEncoder4.cpp │ ├── HOAEncoder5.cpp │ ├── HOAMirror1.cpp │ ├── HOAMirror10.cpp │ ├── HOAMirror2.cpp │ ├── HOAMirror3.cpp │ ├── HOAMirror4.cpp │ ├── HOAMirror5.cpp │ ├── HOAMirror6.cpp │ ├── HOAMirror7.cpp │ ├── HOAMirror8.cpp │ ├── HOAMirror9.cpp │ ├── HOAPanLebedev061.cpp │ ├── HOAPanLebedev261.cpp │ ├── HOAPanLebedev262.cpp │ ├── HOAPanLebedev263.cpp │ ├── HOAPanLebedev501.cpp │ ├── HOAPanLebedev502.cpp │ ├── HOAPanLebedev503.cpp │ ├── HOAPanLebedev504.cpp │ ├── HOAPanLebedev505.cpp │ ├── HOARotator1.cpp │ ├── HOARotator2.cpp │ ├── HOARotator3.cpp │ ├── HOARotator4.cpp │ └── sc │ │ ├── Classes │ │ ├── HOAAzimuthRotator1.sc │ │ ├── HOAAzimuthRotator10.sc │ │ ├── HOAAzimuthRotator2.sc │ │ ├── HOAAzimuthRotator3.sc │ │ ├── HOAAzimuthRotator4.sc │ │ ├── HOAAzimuthRotator5.sc │ │ ├── HOAAzimuthRotator6.sc │ │ ├── HOAAzimuthRotator7.sc │ │ ├── HOAAzimuthRotator8.sc │ │ ├── HOAAzimuthRotator9.sc │ │ ├── HOABeamDirac2HOA1.sc │ │ ├── HOABeamDirac2HOA10.sc │ │ ├── HOABeamDirac2HOA2.sc │ │ ├── HOABeamDirac2HOA3.sc │ │ ├── HOABeamDirac2HOA4.sc │ │ ├── HOABeamDirac2HOA5.sc │ │ ├── HOABeamDirac2HOA6.sc │ │ ├── HOABeamDirac2HOA7.sc │ │ ├── HOABeamDirac2HOA8.sc │ │ ├── HOABeamDirac2HOA9.sc │ │ ├── HOABeamHCardio2HOA1.sc │ │ ├── HOABeamHCardio2HOA2.sc │ │ ├── HOABeamHCardio2HOA3.sc │ │ ├── HOABeamHCardio2Mono1.sc │ │ ├── HOABeamHCardio2Mono2.sc │ │ ├── HOABeamHCardio2Mono3.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d1.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d10.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d2.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d3.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d4.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d5.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d6.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d7.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d8.sc │ │ ├── HOAConverterAcnN3d2AcnSn3d9.sc │ │ ├── HOAConverterAcnN3d2FuMa1.sc │ │ ├── HOAConverterAcnN3d2FuMa2.sc │ │ ├── HOAConverterAcnN3d2FuMa3.sc │ │ ├── HOAConverterAcnSn3d2FuMa1.sc │ │ ├── HOAConverterAcnSn3d2FuMa2.sc │ │ ├── HOAConverterAcnSn3d2FuMa3.sc │ │ ├── HOAConverterFuma2AcnN3d1.sc │ │ ├── HOAConverterFuma2AcnN3d2.sc │ │ ├── HOAConverterFuma2AcnN3d3.sc │ │ ├── HOAConverterFuma2AcnSn3d1.sc │ │ ├── HOAConverterFuma2AcnSn3d2.sc │ │ ├── HOAConverterFuma2AcnSn3d3.sc │ │ ├── HOADecBinaural1.sc │ │ ├── HOADecBinaural2.sc │ │ ├── HOADecLebedev061.sc │ │ ├── HOADecLebedev261.sc │ │ ├── HOADecLebedev262.sc │ │ ├── HOADecLebedev263.sc │ │ ├── HOADecLebedev501.sc │ │ ├── HOADecLebedev502.sc │ │ ├── HOADecLebedev503.sc │ │ ├── HOADecLebedev504.sc │ │ ├── HOADecLebedev505.sc │ │ ├── HOAEncEigenMike1.sc │ │ ├── HOAEncEigenMike2.sc │ │ ├── HOAEncEigenMike3.sc │ │ ├── HOAEncEigenMike4.sc │ │ ├── HOAEncLebedev501.sc │ │ ├── HOAEncLebedev502.sc │ │ ├── HOAEncLebedev503.sc │ │ ├── HOAEncLebedev504.sc │ │ ├── HOAEncLebedev505.sc │ │ ├── HOAEncoder1.sc │ │ ├── HOAEncoder2.sc │ │ ├── HOAEncoder3.sc │ │ ├── HOAEncoder4.sc │ │ ├── HOAEncoder5.sc │ │ ├── HOAMirror1.sc │ │ ├── HOAMirror10.sc │ │ ├── HOAMirror2.sc │ │ ├── HOAMirror3.sc │ │ ├── HOAMirror4.sc │ │ ├── HOAMirror5.sc │ │ ├── HOAMirror6.sc │ │ ├── HOAMirror7.sc │ │ ├── HOAMirror8.sc │ │ ├── HOAMirror9.sc │ │ ├── HOAPanLebedev061.sc │ │ ├── HOAPanLebedev261.sc │ │ ├── HOAPanLebedev262.sc │ │ ├── HOAPanLebedev263.sc │ │ ├── HOAPanLebedev501.sc │ │ ├── HOAPanLebedev502.sc │ │ ├── HOAPanLebedev503.sc │ │ ├── HOAPanLebedev504.sc │ │ ├── HOAPanLebedev505.sc │ │ ├── HOARotator1.sc │ │ ├── HOARotator2.sc │ │ ├── HOARotator3.sc │ │ └── HOARotator4.sc │ │ └── README.md ├── JoshUGens │ ├── AmbisonicUGens.cpp │ ├── JoshAmbiUGens.cpp │ ├── JoshGrainUGens.cpp │ ├── JoshPVUGens.cpp │ ├── JoshUGens.cpp │ ├── PermUGens.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── AtsAmp.schelp │ │ │ ├── AtsBand.schelp │ │ │ ├── AtsFile.schelp │ │ │ ├── AtsFreq.schelp │ │ │ ├── AtsNoiSynth.schelp │ │ │ ├── AtsParInfo.schelp │ │ │ ├── AtsSynth.schelp │ │ │ ├── BFDecode1.schelp │ │ │ ├── BFEncode1.schelp │ │ │ ├── BFEncode2.schelp │ │ │ ├── BFEncodeSter.schelp │ │ │ ├── BFManipulate.schelp │ │ │ ├── Balance.schelp │ │ │ ├── BufGrain.schelp │ │ │ ├── BufGrainB.schelp │ │ │ ├── BufGrainI.schelp │ │ │ ├── FMGrain.schelp │ │ │ ├── FMGrainB.schelp │ │ │ ├── FMGrainI.schelp │ │ │ ├── FMHDecode1.schelp │ │ │ ├── FMHEncode1.schelp │ │ │ ├── FMHEncode2.schelp │ │ │ ├── LPCSynth.schelp │ │ │ ├── LPCVals.schelp │ │ │ ├── Maxamp.schelp │ │ │ ├── Metro.schelp │ │ │ ├── MonoGrain.schelp │ │ │ ├── MonoGrainBF.schelp │ │ │ ├── MoogVCF.schelp │ │ │ ├── PVInfo.schelp │ │ │ ├── PVSynth.schelp │ │ │ ├── PV_BinBufRd.schelp │ │ │ ├── PV_BinDelay.schelp │ │ │ ├── PV_BinPlayBuf.schelp │ │ │ ├── PV_BufRd.schelp │ │ │ ├── PV_EvenBin.schelp │ │ │ ├── PV_Freeze.schelp │ │ │ ├── PV_FreqBuffer.schelp │ │ │ ├── PV_Invert.schelp │ │ │ ├── PV_MagBuffer.schelp │ │ │ ├── PV_MagMap.schelp │ │ │ ├── PV_MaxMagN.schelp │ │ │ ├── PV_MinMagN.schelp │ │ │ ├── PV_NoiseSynthF.schelp │ │ │ ├── PV_NoiseSynthP.schelp │ │ │ ├── PV_OddBin.schelp │ │ │ ├── PV_PartialSynthF.schelp │ │ │ ├── PV_PartialSynthP.schelp │ │ │ ├── PV_PlayBuf.schelp │ │ │ ├── PV_RecordBuf.schelp │ │ │ ├── PV_SpectralEnhance.schelp │ │ │ ├── PV_SpectralMap.schelp │ │ │ ├── PanX.schelp │ │ │ ├── PermMod.schelp │ │ │ ├── PermModArray.schelp │ │ │ ├── PermModT.schelp │ │ │ ├── SinGrain.schelp │ │ │ ├── SinGrainB.schelp │ │ │ ├── SinGrainBBF.schelp │ │ │ ├── SinGrainBF.schelp │ │ │ ├── SinGrainI.schelp │ │ │ ├── SinGrainIBF.schelp │ │ │ ├── WarpOverlap.schelp │ │ │ └── WarpZ.schelp │ │ ├── JoshUGens.html │ │ └── classes │ │ ├── Ambisonics.sc │ │ ├── AmbisonicsSC2.sc │ │ ├── AtsFile.sc │ │ ├── AtsSynth.sc │ │ ├── AudioMSG.sc │ │ ├── Balance.sc │ │ ├── Class Files │ │ ├── BiquadEQ.sc │ │ ├── CheapVerb.sc │ │ └── SC2 Compat.sc │ │ ├── CombLP.sc │ │ ├── Feedback.sc │ │ ├── FreeVerb1.sc │ │ ├── GrainSynths.sc │ │ ├── JoshPV.sc │ │ ├── LPCSynth.sc │ │ ├── Maxamp.sc │ │ ├── Metro.sc │ │ ├── MoogVCF.sc │ │ ├── PVSynth.sc │ │ ├── PanX.sc │ │ ├── PermUGens.sc │ │ ├── Phaser.sc │ │ ├── PosRatio.sc │ │ ├── SinTone.sc │ │ ├── TTendency.sc │ │ ├── UHJ.sc │ │ ├── Vocode.sc │ │ ├── Vocoder.sc │ │ ├── WarpOverlap.sc │ │ ├── WarpZ.sc │ │ └── joshfilts.sc ├── LadspaUGen │ ├── LadspaUGen.cpp │ ├── ladspa.h │ ├── ladspalist.c │ ├── sc │ │ ├── HelpSource │ │ │ └── Classes │ │ │ │ └── LADSPA.schelp │ │ ├── LadspaUGen.sc │ │ ├── README │ │ └── test.scd │ ├── search.c │ └── utils.h ├── LoopBufUGens │ ├── LoopBuf.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── FormantTable.schelp │ │ │ └── LoopBuf.schelp │ │ ├── LoopBufUGens.html │ │ └── classes │ │ ├── LJP Classes │ │ ├── Extensions │ │ │ ├── Function-benchmark.sc │ │ │ ├── Integer-asPaddedString.sc │ │ │ ├── SeqCol-asAddendsOf.sc │ │ │ ├── SeqCol-newFromFile.sc │ │ │ ├── SimpleNumber-asTimeString.sc │ │ │ ├── midinote.sc │ │ │ └── tuningScale.sc │ │ ├── FormantTable.sc │ │ ├── Phrase.sc │ │ ├── ProbabilityDistributions.sc │ │ ├── Scale.sc │ │ └── View │ │ │ └── SCEnvelopeEdit.sc │ │ └── LoopBuf.sc ├── MCLDUGens │ ├── MCLDBufferUGens.cpp │ ├── MCLDCepstrumUGens.cpp │ ├── MCLDChaosUGens.cpp │ ├── MCLDDistortionUGens.cpp │ ├── MCLDFFTUGens.cpp │ ├── MCLDFilterUGens.cpp │ ├── MCLDGetenvUGen.cpp │ ├── MCLDOscUGens.cpp │ ├── MCLDPollUGens.cpp │ ├── MCLDSOMUGens.cpp │ ├── MCLDSparseUGens.cpp │ ├── MCLDTreeUGens.cpp │ ├── MCLDTriggeredStatsUgens.cpp │ ├── MCLD_CQ_UGens.cpp.OFF │ └── sc │ │ ├── Help │ │ ├── CQ_Diff.html │ │ ├── FFTComplexDev.html │ │ ├── FFTDiffMags.html │ │ ├── FFTFlux.html │ │ ├── FFTMKL.html │ │ ├── FFTPhaseDev.html │ │ ├── FFTSubbandPower.html │ │ ├── FincoSprottL.html │ │ ├── FincoSprottM.html │ │ ├── FincoSprottS.html │ │ ├── OnsetsDS.html │ │ ├── PV_DiffMags.html │ │ ├── PV_MagExp.html │ │ ├── PV_MagLog.html │ │ ├── PV_MagMulAdd.html │ │ ├── PV_MagSubtract.html │ │ ├── PV_Whiten.html │ │ ├── SOMAreaWr.html │ │ ├── SOMTrain_2D_example.html │ │ ├── SOMTrain_3D_example.html │ │ ├── attachments │ │ │ └── Friction │ │ │ │ └── friction1-diaram.png │ │ └── trainFromFile.html │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── ArrayMax.schelp │ │ │ ├── ArrayMin.schelp │ │ │ ├── BufMax.schelp │ │ │ ├── BufMin.schelp │ │ │ ├── Cepstrum.schelp │ │ │ ├── Crest.schelp │ │ │ ├── FFTCrest.schelp │ │ │ ├── FFTPeak.schelp │ │ │ ├── FFTPower.schelp │ │ │ ├── FFTSlope.schelp │ │ │ ├── FFTSpread.schelp │ │ │ ├── FFTSubbandFlatness.schelp │ │ │ ├── FFTSubbandPower.schelp │ │ │ ├── Friction.schelp │ │ │ ├── GaussClass.schelp │ │ │ ├── Getenv.schelp │ │ │ ├── Goertzel.schelp │ │ │ ├── ICepstrum.schelp │ │ │ ├── InsideOut.schelp │ │ │ ├── KMeansRT.schelp │ │ │ ├── ListTrig.schelp │ │ │ ├── ListTrig2.schelp │ │ │ ├── Logger.schelp │ │ │ ├── MatchingP.schelp │ │ │ ├── MeanTriggered.schelp │ │ │ ├── MedianTriggered.schelp │ │ │ ├── NearestN.schelp │ │ │ ├── PV_ExtractRepeat.schelp │ │ │ ├── PV_MagSmooth.schelp │ │ │ ├── Perlin3.schelp │ │ │ ├── PlaneTree.schelp │ │ │ ├── PulseDPW.schelp │ │ │ ├── RosslerL.schelp │ │ │ ├── SOMRd.schelp │ │ │ ├── SOMTrain.schelp │ │ │ ├── SawDPW.schelp │ │ │ ├── Squiz.schelp │ │ │ ├── TextVU.schelp │ │ │ ├── WaveLoss.schelp │ │ │ └── friction1-diagram.png │ │ ├── MCLDBufferUGens.sc │ │ ├── MCLDCepstrumUGens.sc │ │ ├── MCLDChaosUGens.sc │ │ ├── MCLDDistortionUGens.sc │ │ ├── MCLDFFTUGens.sc │ │ ├── MCLDFilterUGens.sc │ │ ├── MCLDGetenvUGen.sc │ │ ├── MCLDOscUGens.sc │ │ ├── MCLDPollUGens.sc │ │ ├── MCLDSparseUGens.sc │ │ ├── MCLDTreeUGens.sc │ │ ├── MCLDTriggeredStatsUGens.sc │ │ ├── MCLDUGens.html │ │ ├── MCLD_CQ_UGens.sc │ │ ├── OnsetsDS.sc │ │ ├── Perlin3.html │ │ └── SOMTrain.sc ├── MdaUGens │ ├── MdaUGens.cpp │ ├── mdaPianoData.h │ ├── mdaPiano_sc3.h │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ └── MdaPiano.schelp │ │ ├── MdaUGens.html │ │ └── MdaUGens.sc ├── MembraneUGens │ ├── Membrane.cpp │ ├── Membrane_shape.c │ ├── Membrane_shape.h │ ├── membrane.lhs │ ├── sc │ │ ├── CHANGES │ │ ├── HelpSource │ │ │ └── Classes │ │ │ │ ├── MembraneCircle.schelp │ │ │ │ └── MembraneHexagon.schelp │ │ ├── MembraneUGens.html │ │ ├── MembraneUGens.sc │ │ └── README │ └── triangulation.pde ├── NCAnalysisUGens │ ├── LPCAnalysis.cpp │ ├── LPCAnalysis.h │ ├── LPCAnalyzer.cpp │ ├── MedianSeparation.cpp │ ├── NCAnalysis.cpp │ ├── NCAnalysis.h │ ├── SMS.cpp │ ├── TPV.cpp │ ├── WalshHadamard.cpp │ ├── WaveletDaub.cpp │ ├── kaplandaub.h │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── LPCAnalyzer.schelp │ │ │ ├── MedianSeparation.schelp │ │ │ ├── SMS.schelp │ │ │ ├── TPV.schelp │ │ │ ├── WalshHadamard.schelp │ │ │ └── WaveletDaub.schelp │ │ ├── NCAnalysisUGens.html │ │ ├── classes │ │ ├── LPCAnalyzer.sc │ │ ├── MedianSeparation.sc │ │ ├── SMS.sc │ │ ├── TPV.sc │ │ ├── WalshHadamard.sc │ │ └── WaveletDaub.sc │ │ └── help │ │ ├── LPCAnalyzer.html │ │ ├── SMS.html │ │ ├── TPV.html │ │ ├── WalshHadamard.html │ │ └── WaveletDaub.html ├── NHUGens │ ├── NHHall.cpp │ ├── nh_hall.hpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ └── NHHall.schelp │ │ └── NHHall.sc ├── Neuromodules │ ├── Neuromodules.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── Dneuromodule.schelp │ │ │ └── neuromodule.png │ │ ├── Neuromodule-test.scd │ │ └── Neuromodules.sc ├── NovaDiskIO │ ├── CMakeLists.txt │ ├── NovaDiskIO.cpp │ ├── NovaUtils.hpp │ ├── sc │ │ └── classes │ │ │ └── NovaDiskIOUGens.sc │ ├── sync │ │ ├── .gitattributes │ │ ├── doc │ │ │ ├── Jamfile.v2 │ │ │ ├── changelog.qbk │ │ │ ├── gen_references.xsl │ │ │ ├── notes_for_maintainers.qbk │ │ │ └── sync.qbk │ │ ├── include │ │ │ └── boost │ │ │ │ └── sync │ │ │ │ ├── condition_variables.hpp │ │ │ │ ├── condition_variables │ │ │ │ ├── condition_variable.hpp │ │ │ │ ├── condition_variable_any.hpp │ │ │ │ ├── cv_status.hpp │ │ │ │ └── notify_all_at_thread_exit.hpp │ │ │ │ ├── detail │ │ │ │ ├── atomic.hpp │ │ │ │ ├── auto_handle.hpp │ │ │ │ ├── condition_variables │ │ │ │ │ ├── basic_condition_variable_windows.hpp │ │ │ │ │ ├── condition_variable_any_generic.hpp │ │ │ │ │ ├── condition_variable_any_windows.hpp │ │ │ │ │ ├── condition_variable_posix.hpp │ │ │ │ │ └── condition_variable_windows.hpp │ │ │ │ ├── config.hpp │ │ │ │ ├── events │ │ │ │ │ ├── auto_reset_event_emulation.hpp │ │ │ │ │ ├── auto_reset_event_futex.hpp │ │ │ │ │ ├── auto_reset_event_semaphore.hpp │ │ │ │ │ ├── auto_reset_event_windows.hpp │ │ │ │ │ ├── basic_event_windows.hpp │ │ │ │ │ ├── manual_reset_event_emulation.hpp │ │ │ │ │ ├── manual_reset_event_futex.hpp │ │ │ │ │ ├── manual_reset_event_mach.hpp │ │ │ │ │ └── manual_reset_event_windows.hpp │ │ │ │ ├── footer.hpp │ │ │ │ ├── futex.hpp │ │ │ │ ├── header.hpp │ │ │ │ ├── interlocked.hpp │ │ │ │ ├── link_config.hpp │ │ │ │ ├── lockable_wrapper.hpp │ │ │ │ ├── mutexes │ │ │ │ │ ├── basic_mutex_windows.hpp │ │ │ │ │ ├── mutex_posix.hpp │ │ │ │ │ ├── mutex_windows.hpp │ │ │ │ │ ├── shared_spin_mutex.hpp │ │ │ │ │ ├── spin_mutex.hpp │ │ │ │ │ ├── timed_mutex_posix.hpp │ │ │ │ │ └── timed_mutex_windows.hpp │ │ │ │ ├── pause.hpp │ │ │ │ ├── pthread.hpp │ │ │ │ ├── pthread_mutex_locks.hpp │ │ │ │ ├── semaphore │ │ │ │ │ ├── basic_semaphore_mach.hpp │ │ │ │ │ ├── semaphore_dispatch.hpp │ │ │ │ │ ├── semaphore_emulation.hpp │ │ │ │ │ ├── semaphore_mach.hpp │ │ │ │ │ ├── semaphore_posix.hpp │ │ │ │ │ └── semaphore_windows.hpp │ │ │ │ ├── semaphore_config.hpp │ │ │ │ ├── system_error.hpp │ │ │ │ ├── throw_exception.hpp │ │ │ │ ├── time_traits.hpp │ │ │ │ ├── time_units.hpp │ │ │ │ ├── tss.hpp │ │ │ │ ├── waitable_timer.hpp │ │ │ │ └── weak_linkage.hpp │ │ │ │ ├── events.hpp │ │ │ │ ├── events │ │ │ │ ├── auto_reset_event.hpp │ │ │ │ └── manual_reset_event.hpp │ │ │ │ ├── exceptions.hpp │ │ │ │ ├── exceptions │ │ │ │ ├── lock_error.hpp │ │ │ │ ├── overflow_error.hpp │ │ │ │ ├── resource_error.hpp │ │ │ │ ├── runtime_exception.hpp │ │ │ │ └── wait_error.hpp │ │ │ │ ├── locks.hpp │ │ │ │ ├── locks │ │ │ │ ├── lock_guard.hpp │ │ │ │ ├── lock_guard_fwd.hpp │ │ │ │ ├── lock_options.hpp │ │ │ │ ├── shared_lock.hpp │ │ │ │ ├── shared_lock_fwd.hpp │ │ │ │ ├── shared_lock_guard.hpp │ │ │ │ ├── shared_lock_guard_fwd.hpp │ │ │ │ ├── unique_lock.hpp │ │ │ │ ├── unique_lock_fwd.hpp │ │ │ │ ├── unlock_guard.hpp │ │ │ │ ├── unlock_guard_fwd.hpp │ │ │ │ ├── upgrade_lock.hpp │ │ │ │ └── upgrade_lock_fwd.hpp │ │ │ │ ├── mutexes.hpp │ │ │ │ ├── mutexes │ │ │ │ ├── mutex.hpp │ │ │ │ ├── shared_spin_mutex.hpp │ │ │ │ ├── spin_mutex.hpp │ │ │ │ └── timed_mutex.hpp │ │ │ │ ├── semaphore.hpp │ │ │ │ ├── support │ │ │ │ ├── boost_chrono.hpp │ │ │ │ ├── boost_date_time.hpp │ │ │ │ ├── posix_time.hpp │ │ │ │ └── std_chrono.hpp │ │ │ │ ├── thread_specific │ │ │ │ ├── at_thread_exit.hpp │ │ │ │ └── thread_specific_ptr.hpp │ │ │ │ └── traits │ │ │ │ └── is_condition_variable_compatible.hpp │ │ ├── index.html │ │ ├── src │ │ │ ├── tss_manager.hpp │ │ │ ├── tss_pthread.cpp │ │ │ ├── tss_windows.cpp │ │ │ ├── tss_windows_dll.cpp │ │ │ ├── tss_windows_hooks.hpp │ │ │ └── tss_windows_pe.cpp │ │ └── test │ │ │ ├── Jamfile.v2 │ │ │ └── run │ │ │ ├── at_thread_exit.cpp │ │ │ ├── chrono_system_clock_time_t_mismatch.cpp │ │ │ ├── condition_test_common.hpp │ │ │ ├── condition_variable.cpp │ │ │ ├── condition_variable_notify_all.cpp │ │ │ ├── condition_variable_notify_one.cpp │ │ │ ├── condition_variable_timed_wait_times_out.cpp │ │ │ ├── event_test.cpp │ │ │ ├── mutex_test.cpp │ │ │ ├── semaphore_test.cpp │ │ │ ├── thread_specific_ptr.cpp │ │ │ └── utils.hpp │ └── tlsf_allocator.hpp ├── OteyPianoUGens │ ├── OteyPiano.cpp │ ├── README │ ├── dwgs.cpp │ ├── dwgs.h │ ├── filter.cpp │ ├── filter.h │ ├── hammer.cpp │ ├── hammer.h │ ├── piano.h │ ├── reverb.cpp │ ├── reverb.h │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── OteyPiano.schelp │ │ │ └── OteyPianoStrings.schelp │ │ └── classes │ │ └── OteyPiano.sc ├── PitchDetection │ ├── PitchDetection.cpp │ ├── PitchDetection.h │ ├── Qitch.cpp │ ├── Qitch.h │ ├── Tartini.cpp │ ├── Tartini.h │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── Qitch.schelp │ │ │ └── Tartini.schelp │ │ ├── classes │ │ ├── Qitch.sc │ │ └── Tartini.sc │ │ └── extraqitchfiles │ │ ├── QspeckernN1024SR44100.wav │ │ ├── QspeckernN2048SR44100.wav │ │ ├── QspeckernN2048SR48000.wav │ │ ├── QspeckernN4096SR44100.wav │ │ ├── QspeckernN4096SR48000.wav │ │ ├── QspeckernN8192SR44100.wav │ │ └── source │ │ └── speckernels.m ├── QuantityUGens │ ├── QuantityUGens.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── MovingAverage.schelp │ │ │ └── MovingSum.schelp │ │ ├── MovingSum.sc │ │ └── Tests │ │ └── TestMovingSum.sc ├── RFWUGens │ ├── RFWUGens.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── AverageOutput.schelp │ │ │ └── SwitchDelay.schelp │ │ ├── README.txt │ │ ├── RFWUGens.html │ │ └── classes │ │ ├── AverageOutput.sc │ │ └── SwitchDelay.sc ├── RMEQSuiteUGens │ ├── RMEQSuite.cpp │ └── sc │ │ ├── RMEQ.sc │ │ ├── RMEQSuiteUGens.html │ │ └── Spreader.html ├── SCMIRUGens │ ├── AttackSlope.cpp │ ├── BeatStatistics.cpp │ ├── Chromagram.cpp │ ├── FeatureSave.cpp │ ├── KeyClarity.cpp │ ├── KeyMode.cpp │ ├── OnsetStatistics.cpp │ ├── SensoryDissonance.cpp │ └── sc │ │ ├── Classes │ │ ├── AttackSlope.sc │ │ ├── BeatStatistics.sc │ │ ├── Chromagram.sc │ │ ├── FeatureSave.sc │ │ ├── KeyClarity.sc │ │ ├── KeyMode.sc │ │ ├── OnsetStatistics.sc │ │ ├── SensoryDissonance.sc │ │ └── SpectralEntropy.sc │ │ └── HelpSource │ │ └── Classes │ │ ├── AttackSlope.schelp │ │ ├── BeatStatistics.schelp │ │ ├── Chromagram.schelp │ │ ├── FeatureSave.schelp │ │ ├── KeyClarity.schelp │ │ ├── KeyMode.schelp │ │ ├── OnsetStatistics.schelp │ │ ├── SensoryDissonance.schelp │ │ └── SpectralEntropy.schelp ├── SLUGens │ ├── SLUGens.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── Breakcore.schelp │ │ │ ├── Brusselator.schelp │ │ │ ├── DoubleWell.schelp │ │ │ ├── DoubleWell2.schelp │ │ │ ├── DoubleWell3.schelp │ │ │ ├── EnvDetect.schelp │ │ │ ├── EnvFollow.schelp │ │ │ ├── FitzHughNagumo.schelp │ │ │ ├── GravityGrid.schelp │ │ │ ├── GravityGrid2.schelp │ │ │ ├── Instruction.schelp │ │ │ ├── KmeansToBPSet1.schelp │ │ │ ├── LPCError.schelp │ │ │ ├── LTI.schelp │ │ │ ├── Max.schelp │ │ │ ├── NL.schelp │ │ │ ├── NL2.schelp │ │ │ ├── NTube.schelp │ │ │ ├── Oregonator.schelp │ │ │ ├── PrintVal.schelp │ │ │ ├── SLOnset.schelp │ │ │ ├── Sieve1.schelp │ │ │ ├── SortBuf.schelp │ │ │ ├── SpruceBudworm.schelp │ │ │ ├── TermanWang.schelp │ │ │ ├── TwoTube.schelp │ │ │ ├── VMScan2D.schelp │ │ │ ├── WaveTerrain.schelp │ │ │ ├── WeaklyNonlinear.schelp │ │ │ └── WeaklyNonlinear2.schelp │ │ └── classes │ │ └── SLUGens.sc ├── SkUGens │ ├── FM7.cpp │ └── sc │ │ ├── FM7.sc │ │ └── HelpSource │ │ └── Classes │ │ └── FM7.schelp ├── StkInst │ ├── CMakeLists.txt │ ├── StkInst.cpp │ ├── sc │ │ ├── HelpSource │ │ │ └── Classes │ │ │ │ ├── Stk.schelp │ │ │ │ ├── StkGlobals.schelp │ │ │ │ └── StkInst.schelp │ │ └── classes │ │ │ └── StkInst.sc │ └── stkinsttest.lua ├── StkUGens │ ├── STKAlloc.h │ ├── StkAll.cpp │ └── sc │ │ ├── STKclassdefs.sc │ │ ├── STKinstructions.scd │ │ ├── STKtest.scd │ │ └── StkUGens.html ├── SummerUGens │ ├── SummerUGens.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── Summer.schelp │ │ │ └── WrapSummer.schelp │ │ └── Summer.sc ├── TJUGens │ ├── Dfm1.cpp │ ├── Dfm1.h │ ├── Dfm1Lut.cpp │ ├── Dfm1Lut.h │ ├── NoiseGen.cpp │ ├── NoiseGen.h │ ├── TJUGens.cpp │ ├── TJUGens.h │ └── sc │ │ ├── DFM1_README.txt │ │ ├── HelpSource │ │ └── Classes │ │ │ └── DFM1.schelp │ │ └── TJUGens.sc ├── TagSystemUGens │ ├── TagSystemUgens.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── DbufTag.schelp │ │ │ ├── Dfsm.schelp │ │ │ └── Dtag.schelp │ │ ├── SymbolicMachines.sc │ │ ├── TagSystemUGens.html │ │ └── TagSystemUgens.sc ├── VBAPUGens │ ├── VBAP.cpp │ └── sc │ │ ├── CircleRamp.sc │ │ ├── HelpSource │ │ └── Classes │ │ │ ├── CircleRamp.schelp │ │ │ ├── VBAP.schelp │ │ │ ├── VBAPSpeaker.schelp │ │ │ └── VBAPSpeakerArray.schelp │ │ └── vbap.sc ├── VOSIMUGens │ ├── VOSIM.cpp │ └── sc │ │ ├── HelpSource │ │ └── Classes │ │ │ └── VOSIM.schelp │ │ └── VOSIM.sc └── local │ └── readme.txt ├── update_list_in_readme.bash └── website └── index.php /.bundle/config: -------------------------------------------------------------------------------- 1 | --- 2 | BUNDLE_PATH: "vendor/bundle" 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'bundler' 4 | directory: '/' 5 | schedule: 6 | interval: 'monthly' 7 | target-branch: 'main' 8 | - package-ecosystem: 'github-actions' 9 | directory: '/' 10 | schedule: 11 | interval: 'monthly' 12 | target-branch: 'main' 13 | -------------------------------------------------------------------------------- /.github/workflows/jekyll.yml: -------------------------------------------------------------------------------- 1 | name: jekyll 2 | on: 3 | # push: # for testing this action 4 | pull_request: 5 | paths: 6 | - '_data/**' 7 | - '.bundle/**' 8 | - 'assets/**' 9 | - 'index.*' 10 | - '_config.yml' 11 | - 'Gemfile*' 12 | - 'README.md' 13 | 14 | jobs: 15 | build: 16 | runs-on: ubuntu-20.04 17 | name: 'jekyll build' 18 | env: 19 | # use BUNDLE_ env vars to set 'bundle config' options 20 | # needs to be set for all steps 21 | BUNDLE_FORCE_RUBY_PLATFORM: 'true' # avoid platform mismatch for nokogiri 22 | steps: 23 | - name: checkout sc3-plugins 24 | uses: actions/checkout@v4 25 | with: 26 | submodules: recursive 27 | - name: setup ruby and build 28 | uses: ruby/setup-ruby@v1 29 | with: 30 | ruby-version: 3.3 31 | bundler: 'Gemfile.lock' 32 | bundler-cache: true # this will run bundle install 33 | 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | build* 3 | package/*.tar.bz2 4 | package/*.asc 5 | source/local/*.cpp 6 | source/local/*.scd 7 | source/local/*.sc 8 | source/local/*.schelp 9 | source/local/*.html 10 | *.patch 11 | 12 | *~ 13 | *.orig 14 | 15 | CMakeCache.txt 16 | CMakeFiles 17 | CMakeScripts 18 | Makefile 19 | cmake_install.cmake 20 | install_manifest.txt 21 | cmake_uninstall.cmake 22 | CPackConfig.cmake 23 | CPackSourceConfig.cmake 24 | 25 | _site/ 26 | vendor/ 27 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "external_libraries/nova-simd"] 2 | path = external_libraries/nova-simd 3 | url = https://github.com/timblechmann/nova-simd.git 4 | [submodule "external_libraries/stk"] 5 | path = external_libraries/stk 6 | url = https://github.com/thestk/stk.git 7 | -------------------------------------------------------------------------------- /DEVELOPING.md: -------------------------------------------------------------------------------- 1 | sc3-plugins: Information for Developers 2 | ======================================= 3 | 4 | ## Building on Windows 5 | 6 | This is doable (with VS 2013, also tested with 2019), but you will have to manually set the CMake variables 7 | `FFTW3F_INCLUDE_DIR` and `FFTW3F_LIBRARY` to the directory of FFTW3 and the lib file created while 8 | building SuperCollider. See the SuperCollider repo's `README_WINDOWS.md` file for instructions 9 | related to that. 10 | 11 | ## Packaging / Releasing 12 | 13 | ### Release 14 | 15 | When a release is made, a binary is automatically uploaded for macOS, but will need to be renamed. 16 | 17 | ### Windows packaging 18 | 19 | Build the `package` target to generate a zip file. 20 | 21 | ### macOS packaging 22 | 23 | Build the `package` target to generate a tarball. 24 | 25 | Another (legacy) option is to set `-DOSX_PACKAGE=ON` when configuring cmake, and then building the 26 | `install` target. This will generate a `dmg`. There is no real benefit to using this, and it may be 27 | removed in future versions of this software. 28 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | gem 'github-pages', group: :jekyll_plugins 3 | -------------------------------------------------------------------------------- /README_MACOS.txt.in: -------------------------------------------------------------------------------- 1 | ------------------------------------------------------------------------ 2 | Supercollider ${PROJECT_VERSION} Plugins for macOS 3 | ------------------------------------------------------------------------ 4 | 5 | Before installation, please uninstall any previous version of the 6 | plugins from your system. 7 | 8 | To install the plugins, place the SC3plugins folder into one of the 9 | SuperCollider extension folders listed below, depending on your 10 | operating system and installation type: 11 | 12 | Default installation in `Platform.userExtensionDir`: 13 | ~/Library/Application Support/SuperCollider/Extensions 14 | 15 | System-wide installation in `Platform.systemExtensionDir`: 16 | /Library/Application Support/SuperCollider/Extensions 17 | 18 | You can verify these locations by executing the corresponding command 19 | from within SuperCollider. 20 | -------------------------------------------------------------------------------- /README_WINDOWS.txt.in: -------------------------------------------------------------------------------- 1 | ------------------------------------------------------------------------ 2 | Supercollider ${PROJECT_VERSION} Plugins for Windows 3 | ------------------------------------------------------------------------ 4 | 5 | Before installation, please uninstall any previous version of the 6 | plugins from your system. 7 | 8 | To install the plugins, place the SC3plugins folder into one of the 9 | SuperCollider extension folders listed below, depending on your 10 | operating system and installation type: 11 | 12 | Default installation in userExtensionsDir: 13 | C:\Users\\AppData\Local\SuperCollider\Extensions 14 | 15 | System-wide installation: 16 | C:\ProgramData\SuperCollider\Extensions 17 | 18 | You can verify these locations by executing the corresponding command 19 | from within SuperCollider. 20 | 21 | *Note* for 32-bit version with supernova plugins: the bundle is split into two 22 | folders, `plugins` (containing the binary plugins) and `SC3plugins` ( 23 | containing class-, help- and other files). This separation is required by 24 | supernova. Just move both folders into any of the Extensions directories. 25 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | TODO: 2 | - fix MCLD*.cpp.OFF so they build 3 | - fix TJUGens so they build with gcc-4.0 on osx 4 | - remove scfft_old (MCLD, NCAnalysis and PitchDetection use it) 5 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | remote_theme: pages-themes/cayman@v0.2.0 2 | plugins: 3 | - jekyll-remote-theme 4 | sass: 5 | style: compressed 6 | release_baseurl: "https://github.com/supercollider/sc3-plugins/releases" 7 | -------------------------------------------------------------------------------- /_data/releases.yml: -------------------------------------------------------------------------------- 1 | - tag: Version-3.13.0 2 | - tag: Version-3.13.0-rc1 3 | - tag: Version-3.11.1 4 | - tag: Version-3.11.0 5 | - tag: Version-3.11.0-rc2 6 | - tag: Version-3.10.0 7 | - tag: Version-3.9.1 8 | -------------------------------------------------------------------------------- /assets/img/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/assets/img/github.png -------------------------------------------------------------------------------- /assets/img/supercollider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/assets/img/supercollider.png -------------------------------------------------------------------------------- /cmake_modules/FindFFTW3f.cmake: -------------------------------------------------------------------------------- 1 | # Find single-precision (float) version of FFTW3 2 | 3 | FIND_PATH( 4 | FFTW3F_INCLUDE_DIR 5 | NAMES fftw3.h 6 | HINTS $ENV{FFTW3_DIR}/include 7 | "$ENV{ProgramW6432}/fftw" 8 | "$ENV{ProgramFiles}/fftw" 9 | PATHS /usr/local/include 10 | /usr/include 11 | ) 12 | 13 | FIND_LIBRARY( 14 | FFTW3F_LIBRARY 15 | NAMES fftw3f libfftw3f libfftw3f-3.lib 16 | HINTS $ENV{FFTW3_DIR}/lib 17 | "$ENV{ProgramW6432}/fftw" 18 | "$ENV{ProgramFiles}/fftw" 19 | PATHS /usr/local/lib 20 | /usr/lib 21 | ) 22 | 23 | SET(FFTW3F_FOUND "NO") 24 | 25 | IF( FFTW3F_INCLUDE_DIR AND FFTW3F_LIBRARY ) 26 | SET(FFTW3F_FOUND "YES") 27 | ENDIF() 28 | -------------------------------------------------------------------------------- /cmake_modules/FindSTK.cmake: -------------------------------------------------------------------------------- 1 | # Find STK 2 | 3 | FIND_PATH( 4 | STK_INCLUDE_DIR 5 | NAMES Stk.h 6 | HINTS $ENV{STK_DIR}/include 7 | PATHS /usr/local/include/stk 8 | /usr/local/include 9 | /usr/include/stk 10 | /usr/include 11 | ) 12 | 13 | FIND_LIBRARY( 14 | STK_LIBRARY 15 | NAMES stk libstk 16 | HINTS $ENV{STK_DIR}/lib 17 | PATHS /usr/local/lib 18 | /usr/lib 19 | ) 20 | 21 | SET(STK_FOUND "NO") 22 | 23 | IF( STK_INCLUDE_DIR AND STK_LIBRARY ) 24 | SET(STK_FOUND "YES") 25 | ENDIF() 26 | -------------------------------------------------------------------------------- /cmake_modules/FindSuperCollider3.cmake: -------------------------------------------------------------------------------- 1 | # Find the SuperCollider development headers 2 | # 3 | # This module defines these variables: 4 | # 5 | # SC_FOUND 6 | # True if the SC3 header files were found 7 | # 8 | # SC_PATH 9 | # The path to the SC source+header files 10 | 11 | 12 | # 13 | # Find the telltale header file 14 | # 15 | GET_FILENAME_COMPONENT(SOURCEPARENT "${CMAKE_CURRENT_SOURCE_DIR}" PATH) 16 | find_path(SC_PATH NAMES plugin_interface/SC_PlugIn.h 17 | PATHS "${SOURCEPARENT}" 18 | PATH_SUFFIXES SuperCollider) 19 | 20 | set(SC_FOUND FALSE) 21 | if(IS_DIRECTORY ${SC_PATH}) 22 | set(SC_FOUND TRUE) 23 | endif() 24 | -------------------------------------------------------------------------------- /cmake_modules/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | IF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 2 | MESSAGE(FATAL_ERROR "Cannot find install manifest: \"@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt\"") 3 | ENDIF(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 4 | 5 | FILE(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) 6 | STRING(REGEX REPLACE "\n" ";" files "${files}") 7 | FOREACH(file ${files}) 8 | MESSAGE(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") 9 | IF(EXISTS "$ENV{DESTDIR}${file}") 10 | EXEC_PROGRAM( 11 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 12 | OUTPUT_VARIABLE rm_out 13 | RETURN_VALUE rm_retval 14 | ) 15 | IF(NOT "${rm_retval}" STREQUAL 0) 16 | MESSAGE(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") 17 | ENDIF(NOT "${rm_retval}" STREQUAL 0) 18 | ELSE(EXISTS "$ENV{DESTDIR}${file}") 19 | MESSAGE(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") 20 | ENDIF(EXISTS "$ENV{DESTDIR}${file}") 21 | ENDFOREACH(file) 22 | -------------------------------------------------------------------------------- /external_libraries/TLSF-2.4.6/TODO: -------------------------------------------------------------------------------- 1 | To do list 2 | ========== 3 | 4 | * Add mmap/sbrk support (DONE - V2.4). 5 | 6 | * TLSF rounds-up request size to the head of a free list. 7 | It has been shown to be a good policy for small blocks (<2048). 8 | But for larger blocks this policy may cause excesive fragmentation. 9 | A deeper analisys should be done. 10 | -------------------------------------------------------------------------------- /external_libraries/TLSF-2.4.6/examples/test.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "tlsf.h" 4 | 5 | #define POOL_SIZE 1024 * 1024 6 | 7 | 8 | // Pool size is in bytes. 9 | char pool[POOL_SIZE]; 10 | 11 | int 12 | main(void){ 13 | int *ptr[100]; 14 | int i, free_mem; 15 | 16 | free_mem = init_memory_pool(POOL_SIZE, pool); 17 | printf("Total free memory= %d\n", free_mem); 18 | for (i=0; i< 100; i++) 19 | if (!(ptr[i]=malloc_ex(1024, pool))){ 20 | printf("Error\n"); 21 | exit(-1); 22 | } 23 | for (i=0; i< 100; i++) 24 | free_ex(ptr[i], pool); 25 | 26 | destroy_memory_pool(pool); 27 | printf("Test OK\n"); 28 | exit(0); 29 | } 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /external_libraries/TLSF-2.4.6/examples/test3.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "tlsf.h" 4 | 5 | #define POOL_SIZE 1024 * 10 6 | 7 | 8 | // Pool size is in bytes. 9 | char p0[POOL_SIZE]; 10 | char p1[POOL_SIZE]; 11 | char p2[POOL_SIZE]; 12 | char p3[POOL_SIZE]; 13 | 14 | int main(void){ 15 | char *ptr; 16 | 17 | printf("Pools' addresses: (0) %p (1) %p (2) %p (3) %p\n", p0, p1, p2, p3); 18 | init_memory_pool(POOL_SIZE, p0); 19 | add_new_area(p3, POOL_SIZE, p0); 20 | add_new_area(p1, POOL_SIZE, p0); 21 | add_new_area(p2, POOL_SIZE, p0); 22 | 23 | if (!(ptr=malloc_ex(POOL_SIZE*2, p0))){ 24 | printf("Error\n"); 25 | exit(-1); 26 | } 27 | 28 | free_ex(ptr, p0); 29 | 30 | destroy_memory_pool(p0); 31 | printf("Test OK\n"); 32 | exit(0); 33 | } 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /external_libraries/TLSF-2.4.6/examples/test4.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "tlsf.h" 4 | 5 | int main(void){ 6 | int *ptr[100]; 7 | int i; 8 | 9 | for (i=0; i< 100; i++) 10 | if (!(ptr[i]=tlsf_malloc(1024))){ 11 | printf("Error\n"); 12 | exit(-1); 13 | } 14 | 15 | for (i=0; i< 100; i++) 16 | tlsf_free(ptr[i]); 17 | 18 | printf("Test OK\n"); 19 | 20 | exit(0); 21 | } 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /external_libraries/TLSF-2.4.6/src/Makefile: -------------------------------------------------------------------------------- 1 | WARNINGS = -Wextra -Wall -Wwrite-strings -Wstrict-prototypes \ 2 | -Wmissing-prototypes -Wno-long-long -Wstrict-aliasing=2 3 | 4 | CFLAGS+= -g -O2 -I$(TLSF_PATH) $(WARNINGS) 5 | CFLAGS+= -DTLSF_USE_LOCKS=1 6 | CFLAGS+= -DUSE_MMAP=1 7 | CFLAGS+= -DUSE_SBRK=1 8 | 9 | # CFLAGS+=-ftest-coverage -fprofile-arcs 10 | CC=gcc 11 | 12 | all: tlsf.o 13 | 14 | tlsf.o: tlsf.h tlsf.c Makefile 15 | 16 | clean: 17 | $(RM) -rf *.o *~ *.c.gcov *.gcda *.gcno 18 | 19 | indent: 20 | indent -kr -l120 -br -ce -npsl -nut -i4 *.[hc] 21 | 22 | -------------------------------------------------------------------------------- /external_libraries/TLSF-2.4.6/src/target.h: -------------------------------------------------------------------------------- 1 | #ifndef _TARGET_H_ 2 | #define _TARGET_H_ 3 | 4 | #include 5 | 6 | #define TLSF_MLOCK_T pthread_mutex_t 7 | #define TLSF_CREATE_LOCK(l) pthread_mutex_init (l, NULL) 8 | #define TLSF_DESTROY_LOCK(l) pthread_mutex_destroy(l) 9 | #define TLSF_ACQUIRE_LOCK(l) pthread_mutex_lock(l) 10 | #define TLSF_RELEASE_LOCK(l) pthread_mutex_unlock(l) 11 | 12 | #endif 13 | -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | # Releases 2 | {% assign latest=site.data.releases.first %} 3 | Download latest release: {{ latest.tag }} 4 | 5 | Older releases can be found on [github releases page]({{ site.release_baseurl }}). 6 | 7 | {% include_relative README.md %} 8 | 9 | # About this website 10 | 11 | To locally build and modify this [`jekyll`](https://jekyllrb.com) site you'll need the following ruby gems: 12 | 13 | ```bash 14 | $ gem install bundler jekyll 15 | ``` 16 | 17 | Then, inside the repository main folder: 18 | 19 | ```bash 20 | $ bundle install 21 | ``` 22 | 23 | and follow the instructions. 24 | 25 | ### Adding a new release 26 | 27 | Add the release **at the top** of the releases page (`_data/releases.yml`), so that the main download 28 | button link will be automagically updated :) 29 | -------------------------------------------------------------------------------- /osx_package/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Apple dmg packaging: 2 | # cpack does not package *.dmg without a proper *.app so use OSX_PACKAGE option 3 | # and a cmake script bundles the dmg 4 | install(CODE "set(osx_readme \"${CMAKE_SOURCE_DIR}/osx_package/README-for-mac-distro.txt\")") 5 | install(CODE "set(license \"${CMAKE_SOURCE_DIR}/license.txt\")") 6 | install(SCRIPT "${CMAKE_SOURCE_DIR}/osx_package/CMakeOSXBundle.cmake") 7 | -------------------------------------------------------------------------------- /osx_package/CMakeOSXBundle.cmake: -------------------------------------------------------------------------------- 1 | # CMAKE_INSTALL_PACKAGE should be 'sc3-plugins//build_osx' 2 | # this is the folder layout for the generated dmg ('build_osx' is not included): 3 | # build_osx/README.txt 4 | # build_osx/License.txt 5 | # build_osx/SC3plugins 6 | execute_process(COMMAND cp "${osx_readme}" "${CMAKE_INSTALL_PREFIX}/README.txt" 7 | COMMAND cp "${license}" "${CMAKE_INSTALL_PREFIX}" 8 | COMMAND hdiutil create 9 | -srcfolder "${CMAKE_INSTALL_PREFIX}" 10 | -format "UDZO" -volname "SC3-plugins" 11 | "${CMAKE_INSTALL_PREFIX}/SC3ExtPlugins.dmg") 12 | -------------------------------------------------------------------------------- /quarks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if (APPLE) 2 | set(INSTALL_DESTINATION_QUARKS "SC3plugins") 3 | else() 4 | set(INSTALL_DESTINATION_QUARKS "share/SuperCollider/SC3plugins") 5 | endif() 6 | 7 | install(DIRECTORY "DIRECTORY" 8 | DESTINATION "${INSTALL_DESTINATION_QUARKS}" 9 | PATTERN "*" 10 | PATTERN "*.txt" EXCLUDE 11 | PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) 12 | install(FILES SC3pluginsQuarks.help.scd 13 | DESTINATION "${INSTALL_DESTINATION_QUARKS}" 14 | PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) 15 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/AYUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "AYUGens", 3 | \path: "AYUGens", 4 | \summary: "sc3-plugins:AYUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "AYUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/BatUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "BatUGens", 3 | \path: "BatUGens", 4 | \summary: "sc3-plugins:BatUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "BatUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/BerlachUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "BerlachUGens", 3 | \path: "BerlachUGens", 4 | \summary: "sc3-plugins:BerlachUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "BerlachUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/BhobUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "BhobUGens", 3 | \path: "BhobUGens", 4 | \summary: "sc3-plugins:BhobUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "BhobUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/BlackrainUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "BlackrainUGens", 3 | \path: "BlackrainUGens", 4 | \summary: "sc3-plugins:BlackrainUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "BlackrainUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/GlitchUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "GlitchUGens", 3 | \path: "GlitchUGens", 4 | \summary: "sc3-plugins:GlitchUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "GlitchUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.4 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/JoshUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "JoshUGens", 3 | \path: "JoshUGens", 4 | \summary: "sc3-plugins:JoshUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "JoshUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \dependencies: ["RMEQSuiteUGens"], 9 | \version: 3.3 10 | ) 11 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/LadspaUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "LadspaUGens", 3 | \path: "LadspaUGens", 4 | \summary: "sc3-plugins:LadspaUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "LadspaUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/LoopBufUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "LoopBufUGens", 3 | \path: "LoopBufUGens", 4 | \summary: "sc3-plugins:LoopBufUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "LoopBufUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/MCLDUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "MCLDUGens", 3 | \path: "MCLDUGens", 4 | \summary: "sc3-plugins:MCLDUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "MCLDUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/MLfftwUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "MLfftwUGens", 3 | \path: "MLfftwUGens", 4 | \summary: "sc3-plugins:MLfftwUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "MLfftwUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/MdaUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "MdaUGens", 3 | \path: "MdaUGens", 4 | \summary: "sc3-plugins:MdaUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "MdaUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/MembraneUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "MembraneUGens", 3 | \path: "MembraneUGens", 4 | \summary: "sc3-plugins:MembraneUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "MembraneUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/NCAnalysisUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "NCAnalysisUGens", 3 | \path: "NCAnalysisUGens", 4 | \summary: "sc3-plugins:NCAnalysisUGens", 5 | \author: "sc3-plugins:Nick Collins", 6 | \helpdoc: "NCAnalysisUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: nil 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/RFWUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "RFWUGens", 3 | \path: "RFWUGens", 4 | \summary: "sc3-plugins:RFWUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "RFWUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/RMEQSuiteUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "RMEQSuiteUGens", 3 | \path: "RMEQSuiteUGens", 4 | \summary: "sc3-plugins:RMEQSuiteUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "RMEQSuiteUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/SLUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "SLUGens", 3 | \path: "SLUGens", 4 | \summary: "sc3-plugins:SLUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "SLUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/StkUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "StkUGens", 3 | \path: "StkUGens", 4 | \summary: "sc3-plugins:StkUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "StkUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/TagSystemUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "TagSystemUGens", 3 | \path: "TagSystemUGens", 4 | \summary: "sc3-plugins:TagSystemUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "TagSystemUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/DIRECTORY/VOSIMUGens.quark: -------------------------------------------------------------------------------- 1 | ( 2 | \name: "VOSIMUGens", 3 | \path: "VOSIMUGens", 4 | \summary: "sc3-plugins:VOSIMUGens", 5 | \author: "sc3-plugins", 6 | \helpdoc: "VOSIMUGens.html", 7 | \url: "http://sc3-plugins.sourceforge.net", 8 | \version: 3.3 9 | ) 10 | -------------------------------------------------------------------------------- /quarks/SC3pluginsQuarks.help.scd: -------------------------------------------------------------------------------- 1 | /// Installing sc3-plugins quarks 2 | 3 | // If you installed the sc3-plugins to a user location: 4 | ~sc3plugs = Quarks( 5 | reposPath: "https://sc3-plugins.svn.sourceforge.net/svnroot/sc3-plugins/build", 6 | localPath: Platform.userAppSupportDir +/+ "SC3plugins" 7 | ); 8 | 9 | // If the sc3-plugins were installed to a system wide location: 10 | ~sc3plugs = Quarks( 11 | reposPath: "https://sc3-plugins.svn.sourceforge.net/svnroot/sc3-plugins/build", 12 | localPath: Platform.systemAppSupportDir +/+ "SC3plugins" 13 | ); 14 | 15 | 16 | // Get a GUI of the available Quarks and install the ones you want to try out: 17 | ~sc3plugs.gui; 18 | 19 | 20 | // For more general Help on Quarks, see the Quarks helpfile -------------------------------------------------------------------------------- /source/AYUGens/AY_libayemu/src/ay8912.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/AYUGens/AY_libayemu/src/ay8912.c -------------------------------------------------------------------------------- /source/AYUGens/sc/AY.sc: -------------------------------------------------------------------------------- 1 | AY : UGen { 2 | 3 | *ar { | tonea=1777, toneb=1666, tonec=1555, 4 | noise=1, control = 7, 5 | vola=15, volb=15, volc=15, 6 | envfreq=4, envstyle=1, 7 | chiptype = 0, 8 | mul = 1, add = 0 | 9 | 10 | ^this.multiNew('audio', tonea, toneb, tonec, 11 | noise, control, 12 | vola, volb, volc, 13 | envfreq, envstyle, 14 | chiptype).madd(mul, add) 15 | } 16 | 17 | *categories { ^ #["UGens>Oscillators"] } 18 | 19 | *freqtotone { |freq| 20 | // Approximate empirical... 21 | //^(109300 / (freq - 3.70727)) 22 | ^(110300 / (freq - 0.5)) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /source/AYUGens/sc/AYUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | AYUGens 8 | 9 | 10 | 11 | 12 | 13 |

AYUGens

14 | 15 |

sc3-plugins:AYUGens

16 | 17 |

by sc3-plugins

18 | 19 | AY.html
20 |
AYUGens.html
21 | -------------------------------------------------------------------------------- /source/AuditoryModeling/sc/Classes/AuditoryModeling.sc: -------------------------------------------------------------------------------- 1 | Meddis : UGen { 2 | *ar { 3 | arg input, mul=1.0, add=0.0; 4 | ^this.multiNew('audio', input).madd(mul, add) 5 | } 6 | *kr { 7 | arg input, mul=1.0, add=0.0; 8 | ^this.multiNew('control', input).madd(mul, add) 9 | } 10 | } 11 | 12 | 13 | HairCell : UGen { 14 | *ar { 15 | arg input, spontaneousrate=0.0, boostrate=200.0, restorerate=1000.0, loss=0.99, mul=1.0, add=0.0; 16 | ^this.multiNew('audio', input, spontaneousrate, boostrate, restorerate, loss).madd(mul, add) 17 | } 18 | *kr { 19 | arg input, spontaneousrate=0.0, boostrate=200.0, restorerate=1000.0, loss=0.99, mul=1.0, add=0.0; 20 | ^this.multiNew('control', input, spontaneousrate, boostrate, restorerate, loss).madd(mul, add) 21 | } 22 | } 23 | 24 | Gammatone : UGen { 25 | *ar { 26 | arg input, centrefrequency=440.0, bandwidth= 200.0, mul=1.0, add=0.0; 27 | ^this.multiNew('audio', input, centrefrequency, bandwidth).madd(mul, add) 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /source/BBCut2UGens/sc/AnalyseEvents2.sc: -------------------------------------------------------------------------------- 1 | //This file is part of MLfftwUGens. Copyright (C) 2006 Nicholas M.Collins distributed under the terms of the GNU General Public License full notice in file MachineListening.license 2 | 3 | //This file is part of The BBCut Library. Copyright (C) 2001 Nick M.Collins distributed under the terms of the GNU General Public License full notice in file BBCutLibrary.help 4 | 5 | //could have a starttime input for accuracy but should be unnecessary 6 | 7 | AnalyseEvents2 : UGen { 8 | 9 | *ar { arg in,bufnum=0,threshold=0.34, triggerid=101, circular=0, pitch=0; //, debugbufnum=0; 10 | 11 | ^this.multiNew('audio',in,bufnum,threshold,triggerid, circular, pitch); //, debugbufnum; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /source/BBCut2UGens/sc/AutoTrack.sc: -------------------------------------------------------------------------------- 1 | //This file is part of The BBCut Library. Copyright (C) 2001 Nick M.Collins distributed under the terms of the GNU General Public License full notice in file BBCutLibrary.help 2 | 3 | //synonym for BeatTrack these days, since BeatTrack went in core 4 | AutoTrack { 5 | 6 | *kr { arg in, lock=0; 7 | 8 | ^BeatTrack.kr(in, lock); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /source/BBCut2UGens/sc/DrumTrack.sc: -------------------------------------------------------------------------------- 1 | //This file is part of The BBCut Library. Copyright (C) 2001 Nick M.Collins distributed under the terms of the GNU General Public License full notice in file BBCutLibrary.help 2 | 3 | //4 outs 4 | DrumTrack : MultiOutUGen { 5 | 6 | *kr { arg in,lock=0,dynleak=0.0,tempowt=0.0,phasewt=0.0,basswt=0.0,patternwt=1.0, prior, kicksensitivity=1.0,snaresensitivity=1.0, debugmode=0; 7 | 8 | ^this.multiNew('control',in,lock, dynleak,tempowt,phasewt,basswt,patternwt,prior ? (-10),kicksensitivity,snaresensitivity,debugmode); 9 | } 10 | 11 | init { arg ... theInputs; 12 | inputs = theInputs; 13 | ^this.initOutputs(4, rate); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /source/BatUGens/sc/BatUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | BatUGens 8 | 9 | 10 | 11 | 12 | 13 |

BatUGens

14 | 15 |

sc3-plugins:BatUGens

16 | 17 |

by sc3-plugins

18 | 19 |
BatUGens.html
20 |
Help/Coyote.html
21 |
Help/MarkovSynth.html
22 |
Help/TrigAvg.html
23 |
Help/WAmp.html
24 | -------------------------------------------------------------------------------- /source/BatUGens/sc/HelpSource/Classes/TrigAvg.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: TrigAvg 2 | SUMMARY:: triggered signal averager 3 | RELATED:: Classes/WAmp, Classes/Amplitude 4 | CATEGORIES:: UGens>Analysis, UGens>Maths 5 | 6 | DESCRIPTION:: 7 | 8 | Averages the absolute values of its input between triggers. 9 | 10 | CLASSMETHODS:: 11 | 12 | METHOD::kr 13 | 14 | ARGUMENT::in 15 | Signal Input 16 | 17 | ARGUMENT::trig 18 | When triggered, TrigAvg forgets the past average and starts averaging from zero. 19 | 20 | EXAMPLES:: 21 | 22 | CODE:: 23 | // average some values 24 | x = { TrigAvg.kr(MouseX.kr(0,1000).round(100), MouseY.kr(-1, 1)).poll }.play; 25 | x.free; 26 | 27 | x = { TrigAvg.kr(SinOsc.ar(1), Impulse.kr(0.5)).poll }.play; 28 | x.free; 29 | :: 30 | -------------------------------------------------------------------------------- /source/BatUGens/sc/HelpSource/Classes/WAmp.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: WAmp 2 | SUMMARY:: windowed amplitude follower 3 | RELATED:: Classes/Amplitude, Classes/TrigAvg 4 | CATEGORIES:: UGens>Analysis>Amplitude 5 | 6 | DESCRIPTION:: 7 | 8 | Averages and outputs the absolute value of incoming signals received between now and (now - winSize) seconds. 9 | 10 | CLASSMETHODS:: 11 | 12 | METHOD::kr 13 | 14 | ARGUMENT::in 15 | Signal input. 16 | 17 | ARGUMENT::winSize 18 | The window size in seconds. Not modulatable. 19 | 20 | EXAMPLES:: 21 | 22 | CODE:: 23 | // Averaging WhiteNoise, 5 seconds. 24 | x = { WAmp.kr(WhiteNoise.ar(), 5).poll }.play; 25 | x.free; 26 | :: 27 | -------------------------------------------------------------------------------- /source/BerlachUGens/sc/BerlachUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 |

BerlachUGens

17 |

sc3-plugins:BerlachUGens

18 |

by sc3-plugins

19 | 20 | 21 | -------------------------------------------------------------------------------- /source/BerlachUGens/sc/classes/BFilters.sc: -------------------------------------------------------------------------------- 1 | LPF1 : UGen { 2 | *ar { arg in, freq=1000; 3 | ^this.multiNew('audio', in, freq); 4 | } 5 | *kr { arg in, freq=1000; 6 | ^this.multiNew('control', in, freq); 7 | } 8 | } 9 | 10 | LPFVS6 : UGen { 11 | *ar { arg in, freq=1000, slope=0.5; 12 | ^this.multiNew('audio', in, freq, slope); 13 | } 14 | *kr { arg in, freq=1000, slope=0.5; 15 | ^this.multiNew('control', in, freq, slope); 16 | } 17 | } 18 | 19 | 20 | LPF18 : UGen { 21 | *ar { 22 | arg in, freq=100, res=1, dist=0.4; 23 | ^this.multiNew('audio', in, freq, res, dist); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/BerlachUGens/sc/classes/BLBufRd.sc: -------------------------------------------------------------------------------- 1 | BLBufRd : UGen { 2 | *ar { arg bufnum=0, phase=0, ratio=1; 3 | ^this.multiNew('audio', bufnum, phase, ratio); 4 | } 5 | *kr { arg bufnum=0, phase=0, ratio=1; 6 | ^this.multiNew('control', bufnum, phase, ratio); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/BerlachUGens/sc/classes/PeakEQ.sc: -------------------------------------------------------------------------------- 1 | PeakEQ4 : UGen { 2 | *ar {arg in, freq = 1200.0, rs = 1.0, db = 0.0; 3 | ^this.multiNew('audio', in, freq, rs, db); 4 | } 5 | } 6 | 7 | PeakEQ2 : UGen { 8 | *ar {arg in, freq = 1200.0, rs = 1.0, db = 0.0; 9 | ^this.multiNew('audio', in, freq, rs, db); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/BerlachUGens/sc/tests/blbufrd-test.scd: -------------------------------------------------------------------------------- 1 | s.quit 2 | s.boot 3 | 4 | // fill a buffer with an impulse-train 5 | b = Buffer.alloc(Server.default, Server.default.sampleRate*2, 1); 6 | { RecordBuf.ar(Blip.ar(440, SampleRate.ir/440), b.bufnum) }.play 7 | 8 | // play back with double speed - heavy aliasing occurs with BufRd and cubic interpolation 9 | { Pan2.ar(BufRd.ar(1, b.bufnum, Phasor.ar(1, 2, 0, BufFrames.ir(b.bufnum)))) }.play 10 | 11 | // no aliasing with BLBufRd 12 | { Pan2.ar(BLBufRd.ar(b.bufnum, Phasor.ar(1, 2, 0, BufFrames.ir(b.bufnum)), 2)) }.play 13 | 14 | // compare BLBufRD and BufRd with a variable playback rate 15 | { var rat = MouseX.kr(1,4.0); Pan2.ar(BLBufRd.ar(b.bufnum, Phasor.ar(1, rat, 0, BufFrames.ir(b.bufnum)), rat*1.25)) }.play 16 | 17 | { Pan2.ar(BufRd.ar(1, b.bufnum, Phasor.ar(1, MouseX.kr(1,4.0), 0, BufFrames.ir(b.bufnum)))) }.play 18 | -------------------------------------------------------------------------------- /source/BerlachUGens/sc/tests/osnonlinear-test.scd: -------------------------------------------------------------------------------- 1 | s.quit 2 | s.boot 3 | 4 | // Compare various simple nonlinear functions (clip, wrap..) and 5 | // their oversampled versions. 6 | // Sweep the input sinewave with the mouse and listen for the aliasing 7 | 8 | { Clipper4.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), -0.2, 0.2) }.play 9 | { Clipper8.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), -0.2, 0.2) }.play 10 | { SinOsc.ar(MouseX.kr(200, 5000), 0, 2).clip2(0.2) }.play 11 | 12 | { OSWrap4.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), -0.2, 0.2) }.play 13 | { OSWrap8.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), -0.2, 0.2) }.play 14 | { SinOsc.ar(MouseX.kr(200, 5000), 0, 2).wrap2(0.2) }.play 15 | 16 | { OSFold4.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), -0.2, 0.2) }.play 17 | { OSFold8.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), -0.2, 0.2) }.play 18 | { SinOsc.ar(MouseX.kr(200, 5000), 0, 2).fold2(0.2) }.play 19 | 20 | { OSTrunc4.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), 0.2) }.play 21 | { OSTrunc8.ar(SinOsc.ar(MouseX.kr(200, 5000), 0, 2), 0.2) }.play 22 | { SinOsc.ar(MouseX.kr(200, 5000)).trunc(0.2) }.play -------------------------------------------------------------------------------- /source/BerlachUGens/sc/tests/oversamp-test.scd: -------------------------------------------------------------------------------- 1 | s.quit 2 | s.boot 3 | 4 | // bypass (upsamples the signal by 8 and downsamples by 8) 5 | { OS8.ar(SinOsc.ar(200)) * 0.5 }.play; 6 | 7 | { SinOsc.ar(200) * 0.5 }.play; -------------------------------------------------------------------------------- /source/BetablockerUGens/BetablockerUGens-todo: -------------------------------------------------------------------------------- 1 | struct Betablocker : public Unit 2 | { 3 | Betablocker(void) : machine() 4 | {} 5 | 6 | ~Betablocker(void) 7 | {} 8 | 9 | machine bblocker; 10 | }; 11 | 12 | void Betablocker_Ctor(Betablocker* unit) 13 | { 14 | new(unit) Betablocker(); 15 | } 16 | 17 | void Betablocker_Dtor(Betablocker* unit) 18 | { 19 | unit->~Betablocker(); 20 | } 21 | -------------------------------------------------------------------------------- /source/BetablockerUGens/betablocker/instructions.h: -------------------------------------------------------------------------------- 1 | typedef unsigned char u8; 2 | typedef char s8; 3 | typedef unsigned int u32; 4 | typedef int s32; 5 | 6 | 7 | #define NOP 0 8 | #define ORG 1 9 | #define EQU 2 10 | #define JMP 3 11 | #define JMPZ 4 12 | #define PSHL 5 13 | #define PSH 6 14 | #define PSHI 7 15 | #define POP 8 16 | #define POPI 9 17 | #define ADD 10 18 | #define SUB 11 19 | #define INC 12 20 | #define DEC 13 21 | #define AND 14 22 | #define OR 15 23 | #define XOR 16 24 | #define NOT 17 25 | #define ROR 18 26 | #define ROL 19 27 | #define PIP 20 28 | #define PDP 21 29 | #define DUP 22 30 | #define NOTE 23 31 | #define VOX 24 32 | #define STOP 25 33 | -------------------------------------------------------------------------------- /source/BetablockerUGens/sc/BetablockerUGens.sc: -------------------------------------------------------------------------------- 1 | DetaBlockerBuf : DUGen { 2 | *new { arg bufnum = 0, startpoint = 0; 3 | ^this.multiNew('demand', bufnum, startpoint) 4 | } 5 | } 6 | 7 | BBlockerBuf : MultiOutUGen { 8 | *ar { arg freq, bufnum = 0, startpoint = 0; 9 | //arg freq = 440.0, iphase = 0.0; 10 | ^this.multiNew('audio', bufnum, freq, startpoint) 11 | } 12 | 13 | init { arg ... theInputs; 14 | inputs = theInputs; 15 | ^this.initOutputs(9, rate); 16 | } 17 | } 18 | 19 | 20 | // without mul and add. 21 | /* 22 | Betablocker : UGen { 23 | *ar { 24 | //arg freq = 440.0, iphase = 0.0; 25 | //^this.multiNew('audio', freq, iphase) 26 | ^this.multiNew('audio') 27 | } 28 | *kr { 29 | // arg freq = 440.0, iphase = 0.0; 30 | //^this.multiNew('control', freq, iphase) 31 | ^this.multiNew('control') 32 | } 33 | } 34 | */ 35 | 36 | /* 37 | DetaBlocker01 : DUGen { 38 | *new { arg length = inf; 39 | ^this.multiNew('demand', length) 40 | } 41 | } 42 | */ 43 | 44 | 45 | -------------------------------------------------------------------------------- /source/BetablockerUGens/sc/HelpSource/Classes/betablocker-01-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/BetablockerUGens/sc/HelpSource/Classes/betablocker-01-small.png -------------------------------------------------------------------------------- /source/BetablockerUGens/sc/examples/BBlockerBuf.scd: -------------------------------------------------------------------------------- 1 | ( 2 | Ndef(\many, { 3 | var num = 60; 4 | var pos, src; 5 | var b = {BBlockerProgram().fillUpRandom_(true).makeCollection.as(LocalBuf)}!num; 6 | 7 | #pos, src = ({|i| BBlockerBuf.ar(s.sampleRate, b[i])}!num).flop; 8 | Pan2.ar(LeakDC.ar(src) * 0.02, pos).sum.tanh; 9 | }) 10 | ) 11 | 12 | Ndef(\many).play 13 | 14 | Ndef(\many).fadeTime = 30 15 | 16 | ( 17 | Tdef(\manyPlay, { 18 | loop{ 19 | (2*Ndef(\many).fadeTime).wait; 20 | Ndef(\many).rebuild; 21 | } 22 | }).play 23 | ) 24 | 25 | Tdef(\manyPlay).stop 26 | Ndef(\many).free(10) -------------------------------------------------------------------------------- /source/BetablockerUGens/sc/examples/BBlockerProgram.scd: -------------------------------------------------------------------------------- 1 | a = BBlockerProgram([\ORG, \INC, \INC, \JMP, 1]) 2 | a.makeCollection -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Dbrown2.schelp: -------------------------------------------------------------------------------- 1 | class:: Dbrown2 2 | summary:: demand rate brownian movement with Gendyn distributions 3 | related:: Classes/Dbrown, Classes/Demand, Classes/Duty, Classes/TDuty 4 | categories:: UGens>Demand 5 | 6 | 7 | Description:: 8 | 9 | Dbrown2 returns numbers in the continuous range between lo and hi. The arguments can be a number or any other ugen. 10 | 11 | 12 | classmethods:: 13 | 14 | method::new 15 | 16 | argument::lo 17 | minimum value 18 | 19 | argument::hi 20 | maximum value 21 | 22 | argument::step 23 | maximum step for each new value 24 | 25 | argument::dist 26 | gendyn distribution (see link::Classes/Gendy1::) 27 | 28 | argument::length 29 | number of values to create 30 | 31 | 32 | Examples:: 33 | 34 | code:: 35 | ( 36 | { 37 | var a, freq, trig; 38 | a = Dbrown2(0, 15, 1, [1, 4], inf); 39 | trig = Dust.kr(MouseX.kr(1, 40, 1)); 40 | freq = Demand.kr(trig, 0, a) * 30 + 340; 41 | SinOsc.ar(freq) * 0.1 42 | 43 | }.play; 44 | ) 45 | :: 46 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/GaussTrig.schelp: -------------------------------------------------------------------------------- 1 | class:: GaussTrig 2 | summary:: impulses around a certain frequency 3 | related:: Classes/Impulse, Classes/Dust 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | classmethods:: 8 | 9 | method::ar, kr 10 | 11 | argument::freq 12 | mean frequency 13 | 14 | argument::dev 15 | random deviation from mean (0 <= dev < 1) 16 | 17 | 18 | Examples:: 19 | 20 | code:: 21 | ( 22 | SynthDef("help-GaussTrig", { arg out=0; 23 | Out.ar(out, 24 | Ringz.ar( 25 | WhiteNoise.ar( 26 | Decay.kr( 27 | GaussTrig.kr(10.dup, MouseX.kr(0, 0.9), 0.5), 28 | 0.02, 29 | 0.2 30 | ) 31 | ), 32 | 2000, 33 | 0.02 34 | ).fold2(0.2) 35 | ) 36 | }).play; 37 | ) 38 | :: 39 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Gbman2DC.schelp: -------------------------------------------------------------------------------- 1 | class:: Gbman2DC 2 | summary:: gingerbreadman map 2D chaotic generator 3 | related:: Classes/Gbman2DN, Classes/Gbman2DL 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x(n+1) = 1 - y(n) + |x(n)| 11 | y(n+1) = x(n) 12 | :: 13 | 14 | 15 | classmethods:: 16 | 17 | method::ar, kr 18 | 19 | argument::minfreq, maxfreq 20 | iteration frequency in Hertz 21 | 22 | argument::x0 23 | initial value of x 24 | 25 | argument::y0 26 | initial value of y 27 | 28 | 29 | Examples:: 30 | 31 | code:: 32 | { Gbman2DC.ar(MouseX.kr(20, SampleRate.ir*0.25), MouseX.kr(80, SampleRate.ir), 0.1) }.play(s); 33 | 34 | { Gbman2DC.ar(11025, 22050, -0.7, -2.7, 0.1) }.play(s); 35 | 36 | { Gbman2DC.ar(2200, 8800, 1.2, 2.0002, 0.1) }.play(s); 37 | :: 38 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Gbman2DL.schelp: -------------------------------------------------------------------------------- 1 | class:: Gbman2DL 2 | summary:: gingerbreadman map 2D chaotic generator 3 | related:: Classes/Gbman2DN, Classes/Gbman2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x(n+1) = 1 - y(n) + |x(n)| 11 | y(n+1) = x(n) 12 | :: 13 | 14 | 15 | classmethods:: 16 | 17 | method::ar, kr 18 | 19 | argument::minfreq, maxfreq 20 | iteration frequency in Hertz 21 | 22 | argument::x0 23 | initial value of x 24 | 25 | argument::y0 26 | initial value of y 27 | 28 | 29 | Examples:: 30 | 31 | code:: 32 | { Gbman2DL.ar(MouseX.kr(20, SampleRate.ir*0.25), MouseX.kr(80, SampleRate.ir), 0.1) }.play(s); 33 | 34 | { Gbman2DL.ar(11025, 22050, -0.7, -2.7, 0.1) }.play(s); 35 | 36 | { Gbman2DL.ar(2200, 8800, 1.2, 2.0002, 0.1) }.play(s); 37 | :: 38 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Gbman2DN.schelp: -------------------------------------------------------------------------------- 1 | class:: Gbman2DN 2 | summary:: gingerbreadman map 2D chaotic generator 3 | related:: Classes/Gbman2DL, Classes/Gbman2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x(n+1) = 1 - y(n) + |x(n)| 11 | y(n+1) = x(n) 12 | :: 13 | 14 | 15 | classmethods:: 16 | 17 | method::ar, kr 18 | 19 | argument::minfreq, maxfreq 20 | iteration frequency in Hertz 21 | 22 | argument::x0 23 | initial value of x 24 | 25 | argument::y0 26 | initial value of y 27 | 28 | 29 | Examples:: 30 | 31 | code:: 32 | { Gbman2DN.ar(MouseX.kr(20, SampleRate.ir*0.25), MouseX.kr(80, SampleRate.ir), 0.1) }.play(s); 33 | 34 | { Gbman2DN.ar(11025, 22050, -0.7, -2.7, 0.1) }.play(s); 35 | 36 | { Gbman2DN.ar(2200, 8800, 1.2, 2.0002, 0.1) }.play(s); 37 | :: 38 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Henon2DC.schelp: -------------------------------------------------------------------------------- 1 | class:: Henon2DC 2 | summary:: henon map 2D chaotic generator 3 | related:: Classes/Henon2DN, Classes/Henon2DL 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | y = b * x(n) 11 | x(n+2) = 1 - ax(n+1)^2 + y 12 | :: 13 | 14 | 15 | classmethods:: 16 | 17 | method::ar, kr 18 | 19 | argument::minfreq, maxfreq 20 | iteration frequency in Hertz 21 | 22 | argument::a, b 23 | equation variables 24 | 25 | argument::x0 26 | initial value of x 27 | 28 | argument::y0 29 | initial value of y 30 | 31 | 32 | Examples:: 33 | 34 | code:: 35 | { Henon2DC.ar(SampleRate.ir/4, SampleRate.ir/2, MouseX.kr(1,1.4), MouseY.kr(0,0.3)) * 0.2 }.play(s); 36 | 37 | ( 38 | { Henon2DC.ar( 39 | 2200, 8800, 40 | LFNoise2.kr(1, 0.2, 1.2), 41 | LFNoise2.kr(1, 0.15, 0.15) 42 | ) * 0.2 }.play(s); 43 | ) 44 | 45 | { SinOsc.ar(Henon2DC.ar(20, 40, MouseX.kr(1,1.4), MouseY.kr(0,0.3))*800+900)*0.4 }.play(s); 46 | :: 47 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Henon2DL.schelp: -------------------------------------------------------------------------------- 1 | class:: Henon2DL 2 | summary:: henon map 2D chaotic generator 3 | related:: Classes/Henon2DN, Classes/Henon2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | y = b * x(n) 11 | x(n+2) = 1 - ax(n+1)^2 + y 12 | :: 13 | 14 | 15 | classmethods:: 16 | 17 | method::ar, kr 18 | 19 | argument::minfreq, maxfreq 20 | iteration frequency in Hertz 21 | 22 | argument::a, b 23 | equation variables 24 | 25 | argument::x0 26 | initial value of x 27 | 28 | argument::y0 29 | initial value of y 30 | 31 | 32 | Examples:: 33 | 34 | code:: 35 | { Henon2DL.ar(SampleRate.ir/4, SampleRate.ir, MouseX.kr(1,1.4), MouseY.kr(0,0.3)) * 0.2 }.play(s); 36 | 37 | ( 38 | { Henon2DL.ar( 39 | 2200, 8800, 40 | LFNoise2.kr(1, 0.2, 1.2), 41 | LFNoise2.kr(1, 0.15, 0.15) 42 | ) * 0.2 }.play(s); 43 | ) 44 | 45 | { SinOsc.ar(Henon2DL.ar(20, 40, MouseX.kr(1,1.4), MouseY.kr(0,0.3))*800+900)*0.4 }.play(s); 46 | :: 47 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Henon2DN.schelp: -------------------------------------------------------------------------------- 1 | class:: Henon2DN 2 | summary:: henon map 2D chaotic generator 3 | related:: Classes/Henon2DL, Classes/Henon2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | y = b * x(n) 11 | x(n+2) = 1 - ax(n+1)^2 + y 12 | :: 13 | 14 | 15 | classmethods:: 16 | 17 | method::ar, kr 18 | 19 | argument::minfreq, maxfreq 20 | iteration frequency in Hertz 21 | 22 | argument::a, b 23 | equation variables 24 | 25 | argument::x0 26 | initial value of x 27 | 28 | argument::y0 29 | initial value of y 30 | 31 | 32 | Examples:: 33 | 34 | code:: 35 | { Henon2DN.ar(SampleRate.ir/4, SampleRate.ir, MouseX.kr(1,1.4), MouseY.kr(0,0.3)) * 0.2 }.play(s); 36 | 37 | ( 38 | { Henon2DN.ar( 39 | 2200, 8800, 40 | LFNoise2.kr(1, 0.2, 1.2), 41 | LFNoise2.kr(1, 0.15, 0.15) 42 | ) * 0.2 }.play(s); 43 | ) 44 | 45 | { SinOsc.ar(Henon2DN.ar(20, 40, MouseX.kr(1,1.4), MouseY.kr(0,0.3))*800+900)*0.4 }.play(s); 46 | :: 47 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/LFBrownNoise0.schelp: -------------------------------------------------------------------------------- 1 | class:: LFBrownNoise0 2 | summary:: random walk step 3 | related:: Classes/LFBrownNoise1, Classes/LFBrownNoise2 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | Random walk with Gendyn distributions. 10 | 11 | classmethods:: 12 | 13 | method::ar, kr 14 | 15 | argument::freq 16 | approximate rate at which to generate random values. 17 | 18 | argument::dev 19 | scale maximum step (0-1). 20 | 21 | argument::dist 22 | Gendyn distribution to use (0-5: see link::Classes/Gendy1:: for details). 23 | 24 | 25 | Examples:: 26 | 27 | code:: 28 | ( 29 | SynthDef("help-LFNoise0", { arg out=0; 30 | Out.ar(out, 31 | LFBrownNoise0.ar(1000, 1, MouseX.kr(0, 5), 0.25) 32 | ) 33 | }).play; 34 | ) 35 | 36 | //use as frequency control 37 | ( 38 | SynthDef("help-LFNoise0", { arg out=0; 39 | Out.ar(out, 40 | SinOsc.ar( 41 | LFBrownNoise0.ar(8, 0.1, 2, 400, 450), 42 | 0, 0.2 43 | ) 44 | ) 45 | }).play; 46 | ) 47 | :: 48 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/LFBrownNoise1.schelp: -------------------------------------------------------------------------------- 1 | class:: LFBrownNoise1 2 | summary:: random walk linear interp 3 | related:: Classes/LFBrownNoise0, Classes/LFBrownNoise2 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | Random walk with Gendyn distributions. 10 | 11 | classmethods:: 12 | 13 | method::ar, kr 14 | 15 | argument::freq 16 | approximate rate at which to generate random values. 17 | 18 | argument::dev 19 | scale maximum step (0-1). 20 | 21 | argument::dist 22 | Gendyn distribution to use (0-5: see link::Classes/Gendy1:: for details). 23 | 24 | 25 | Examples:: 26 | 27 | code:: 28 | ( 29 | SynthDef("help-LFNoise1", { arg out=0; 30 | Out.ar(out, 31 | LFBrownNoise1.ar(1000, 1, MouseX.kr(0, 5), 0.25) 32 | ) 33 | }).play; 34 | ) 35 | 36 | //use as frequency control 37 | ( 38 | SynthDef("help-LFNoise1", { arg out=0; 39 | Out.ar(out, 40 | SinOsc.ar( 41 | LFBrownNoise1.ar(8.dup, 0.2, 2, 400, 450), 42 | 0, 0.2 43 | ) 44 | ) 45 | }).play; 46 | ) 47 | :: 48 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/LFBrownNoise2.schelp: -------------------------------------------------------------------------------- 1 | class:: LFBrownNoise2 2 | summary:: random walk cubic interp 3 | related:: Classes/LFBrownNoise0, Classes/LFBrownNoise1 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | Random walk with Gendyn distributions. 10 | 11 | classmethods:: 12 | 13 | method::ar, kr 14 | 15 | argument::freq 16 | approximate rate at which to generate random values. 17 | 18 | argument::dev 19 | scale maximum step (0-1). 20 | 21 | argument::dist 22 | Gendyn distribution to use (0-5: see link::Classes/Gendy1:: for details). 23 | 24 | 25 | Examples:: 26 | 27 | code:: 28 | ( 29 | SynthDef("help-LFNoise2", { arg out=0; 30 | Out.ar(out, 31 | LFBrownNoise2.ar(1000, 1, MouseX.kr(0, 5), 0.25) 32 | ) 33 | }).play; 34 | ) 35 | 36 | //use as frequency control 37 | ( 38 | SynthDef("help-LFNoise2", { arg out=0; 39 | Out.ar(out, 40 | SinOsc.ar( 41 | LFBrownNoise2.kr(8.dup, 0.2, 0, 400, 450), 42 | 0, 0.2 43 | ) 44 | ) 45 | }).play; 46 | ) 47 | :: 48 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/LorenzTrig.schelp: -------------------------------------------------------------------------------- 1 | class:: LorenzTrig 2 | summary:: lorenz chaotic trigger generator 3 | related:: Classes/Lorenz2DN 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x' = s(y - x) 11 | y' = x(r - z) - y 12 | z' = xy - bz 13 | :: 14 | 15 | 16 | classmethods:: 17 | 18 | method::ar, kr 19 | 20 | argument::minfreq 21 | minimum frequency in Hertz 22 | 23 | argument::maxfreq 24 | maximum frequency in Hertz 25 | 26 | argument::s, r, b 27 | equation variables 28 | 29 | argument::h 30 | integration time step 31 | 32 | argument::x0 33 | initial value of x 34 | 35 | argument::y0 36 | initial value of y 37 | 38 | argument::z0 39 | initial value of z 40 | 41 | 42 | Examples:: 43 | 44 | code:: 45 | { LorenzTrig.ar(11025, 44100) }.play(s); 46 | 47 | // randomly modulate params 48 | ( 49 | { LorenzTrig.ar( 50 | 11025, 44100, 51 | LFNoise0.kr(1, 2, 10), 52 | 20, 53 | LFNoise0.kr(1, 1.5, 2), 54 | 0.02 55 | ) * 0.2 }.play(s); 56 | ) 57 | 58 | // as a frequency control 59 | { SinOsc.ar(Decay.ar(LorenzTrig.ar(1, 8, h:0.02))*800+900)*0.4 }.play(s); 60 | :: 61 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/MoogLadder.schelp: -------------------------------------------------------------------------------- 1 | class:: MoogLadder 2 | summary:: Moog Filter Emulation 3 | related:: Classes/MoogFF 4 | categories:: UGens>Filters 5 | 6 | 7 | Description:: 8 | 9 | 10 | classmethods:: 11 | 12 | method::ar, kr 13 | 14 | argument::in 15 | audio input 16 | 17 | argument::ffreq 18 | cutoff freq 19 | 20 | argument::res 21 | resonance (0-1) 22 | 23 | 24 | Examples:: 25 | 26 | code:: 27 | { MoogLadder.ar(Mix(LFSaw.ar([120, 180], 0, 0.33)), LinExp.kr(LFCub.kr(0.1, 0.5*pi), -1, 1, 180, 8500), 0.75).dup }.play 28 | :: 29 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/PV_Cutoff.schelp: -------------------------------------------------------------------------------- 1 | class:: PV_Cutoff 2 | summary:: zero bins with interpolation 3 | related:: Classes/PV_SoftWipe, Classes/PV_BrickWall 4 | categories:: UGens>FFT 5 | 6 | 7 | Description:: 8 | 9 | Clears bins above or below a cutoff point. Interpolate. 10 | 11 | classmethods:: 12 | 13 | method::new 14 | 15 | argument::buffer 16 | fft buffer 17 | 18 | argument::wipe 19 | can range between -1 and +1. if wipe == 0 then there is no effect. if wipe > 0 then it acts like a high pass filter, clearing bins from the bottom up. 20 | if wipe < 0 then it acts like a low pass filter, clearing bins from the top down. 21 | 22 | 23 | Examples:: 24 | 25 | code:: 26 | s.boot; 27 | 28 | b = Buffer.alloc(s,2048,1); 29 | 30 | ( 31 | SynthDef("help-brick", { arg out=0, bufnum=0; 32 | var in, chain; 33 | in = {WhiteNoise.ar(0.2)}.dup; 34 | chain = FFT(bufnum, in); 35 | chain = PV_Cutoff(chain, SinOsc.kr(0.1)); 36 | Out.ar(out, IFFT(chain).dup); 37 | }).play(s,[\out, 0, \bufnum, b.bufnum]); 38 | ) 39 | :: 40 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/PV_MagMinus.schelp: -------------------------------------------------------------------------------- 1 | class:: PV_MagMinus 2 | summary:: subtract spectral energy 3 | related:: Classes/PV_MagGate 4 | categories:: UGens>FFT 5 | 6 | 7 | Description:: 8 | 9 | Subtracts buffer B's magnitudes from buffer A. 10 | 11 | classmethods:: 12 | 13 | method::new 14 | 15 | argument::bufferA 16 | fft buffer A. 17 | 18 | argument::bufferB 19 | fft buffer B. 20 | 21 | argument::remove 22 | scale the removal process. 23 | 24 | Examples:: 25 | 26 | code:: 27 | s.boot; 28 | ( 29 | b = Buffer.alloc(s, 2048, 1); 30 | c = Buffer.alloc(s, 2048, 1); 31 | d = Buffer.read(s, "sounds/a11wlk01.wav"); 32 | ) 33 | 34 | ( 35 | SynthDef("help-magMinus", { arg out=0, bufnumA=0, bufnumB=1, soundBufnum=2; 36 | var inA, inB, chainA, chainB, chain; 37 | inA = PlayBuf.ar(1, soundBufnum, BufRateScale.kr(soundBufnum), loop: 1); 38 | inB = WhiteNoise.ar(LFNoise2.kr(20).max(0)); 39 | chainA = FFT(bufnumA, inA); 40 | chainB = FFT(bufnumB, inB); 41 | chain = PV_MagMinus(chainA, chainB, MouseX.kr(0, 1)); 42 | Out.ar(out, IFFT(chain).dup); 43 | }).play(s,[\out, 0, \bufnumA, b.bufnum, \bufnumB, c.bufnum, \soundBufnum, d.bufnum]); 44 | ) 45 | :: 46 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/RLPFD.schelp: -------------------------------------------------------------------------------- 1 | class:: RLPFD 2 | summary:: TB303 Filter Emulation 3 | related:: Classes/MoogLadder 4 | categories:: UGens>Filters 5 | 6 | 7 | Description:: 8 | 9 | This filter can be a little quiet, so i often multiply it by 3 or so. Watch out for high frequencies + hi res + hi dist = feedback. 10 | 11 | 12 | classmethods:: 13 | 14 | method::ar, kr 15 | 16 | argument::in 17 | audio input 18 | 19 | argument::ffreq 20 | cutoff freq 21 | 22 | argument::res 23 | resonance (0-1) 24 | 25 | argument::dist 26 | distortion (0-1). interacts with resonance 27 | 28 | 29 | Examples:: 30 | 31 | code:: 32 | { RLPFD.ar(Mix(LFSaw.ar([120, 180], 0, 0.33)), LinExp.kr(LFCub.kr(0.1, 0.5*pi), -1, 1, 280, 1500), 0.6, 0.5, mul:3).dup }.play 33 | :: 34 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Standard2DC.schelp: -------------------------------------------------------------------------------- 1 | class:: Standard2DC 2 | summary:: standard map 2D chaotic generator 3 | related:: Classes/Standard2DN, Classes/Standard2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x(n+1) = (x(n) + y(n+1)) % 2pi 11 | y(n+1) = (y(n) + ksin(x(n))) % 2pi 12 | :: 13 | 14 | classmethods:: 15 | 16 | method::ar, kr 17 | 18 | argument::minfreq, maxfreq 19 | iteration frequency in Hertz 20 | 21 | argument::k 22 | perturbation amount 23 | 24 | argument::x0 25 | initial value of x 26 | 27 | argument::y0 28 | initial value of y 29 | 30 | 31 | Examples:: 32 | 33 | code:: 34 | { Standard2DC.ar(220, 11025, mul:0.3) }.play(s); 35 | 36 | // mouse-controlled param 37 | { Standard2DC.ar(8000, 20000, MouseX.kr(0.9,4), mul:0.3) }.play(s); 38 | 39 | // as a frequency control 40 | { SinOsc.ar(Standard2DC.ar(10, 20, MouseX.kr(0.9,4))*800+900)*0.4 }.play(s); 41 | :: 42 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Standard2DL.schelp: -------------------------------------------------------------------------------- 1 | class:: Standard2DL 2 | summary:: standard map 2D chaotic generator 3 | related:: Classes/Standard2DN, Classes/Standard2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x(n+1) = (x(n) + y(n+1)) % 2pi 11 | y(n+1) = (y(n) + ksin(x(n))) % 2pi 12 | :: 13 | 14 | classmethods:: 15 | 16 | method::ar, kr 17 | 18 | argument::minfreq, maxfreq 19 | iteration frequency in Hertz 20 | 21 | argument::k 22 | perturbation amount 23 | 24 | argument::x0 25 | initial value of x 26 | 27 | argument::y0 28 | initial value of y 29 | 30 | 31 | Examples:: 32 | 33 | code:: 34 | { Standard2DL.ar(220, 11025, mul:0.3) }.play(s); 35 | 36 | // mouse-controlled param 37 | { Standard2DL.ar(11025, 44100, MouseX.kr(0.9,4), mul:0.3) }.play(s); 38 | 39 | // as a frequency control 40 | { SinOsc.ar(Standard2DL.ar(10, 20, MouseX.kr(0.9,4))*800+900)*0.4 }.play(s); 41 | :: 42 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Standard2DN.schelp: -------------------------------------------------------------------------------- 1 | class:: Standard2DN 2 | summary:: standard map 2D chaotic generator 3 | related:: Classes/Standard2DL, Classes/Standard2DC 4 | categories:: UGens>Generators>Stochastic 5 | 6 | 7 | Description:: 8 | 9 | code:: 10 | x(n+1) = (x(n) + y(n+1)) % 2pi 11 | y(n+1) = (y(n) + ksin(x(n))) % 2pi 12 | :: 13 | 14 | classmethods:: 15 | 16 | method::ar, kr 17 | 18 | argument::minfreq, maxfreq 19 | iteration frequency in Hertz 20 | 21 | argument::k 22 | perturbation amount 23 | 24 | argument::x0 25 | initial value of x 26 | 27 | argument::y0 28 | initial value of y 29 | 30 | 31 | Examples:: 32 | 33 | code:: 34 | { Standard2DN.ar(220, 11025, mul:0.3) }.play(s); 35 | 36 | // mouse-controlled param 37 | { Standard2DN.ar(SampleRate.ir/2, SampleRate.ir, MouseX.kr(0.9,4), mul:0.3) }.play(s); 38 | 39 | // as a frequency control 40 | { SinOsc.ar(Standard2DN.ar(10, 20, MouseX.kr(0.9,4))*800+900)*0.4 }.play(s); 41 | :: 42 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/Streson.schelp: -------------------------------------------------------------------------------- 1 | class:: Streson 2 | summary:: String resonance filter 3 | categories:: UGens>Filters 4 | 5 | 6 | Description:: 7 | 8 | This filter is based on Victor Lazzrini's csound opcode by the same name. 9 | 10 | 11 | classmethods:: 12 | 13 | method::ar, kr 14 | 15 | argument::input 16 | audio input 17 | 18 | argument::delayTime 19 | delay (1/ffreq) 20 | 21 | argument::res 22 | resonance (0-1) 23 | 24 | 25 | Examples:: 26 | 27 | code:: 28 | { Streson.ar(LFSaw.ar([220, 180], 0, mul:EnvGen.kr(Env.asr(0.5, 1, 0.02), 1.0) * 0.2), LinExp.kr(LFCub.kr(0.1, 0.5*pi), -1, 1, 280, 377).reciprocal, 0.9, 0.3) }.play 29 | :: 30 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/TBrownRand.schelp: -------------------------------------------------------------------------------- 1 | class:: TBrownRand 2 | summary:: triggered random walk generator 3 | related:: Classes/TRand, Classes/TBetaRand, Classes/TGaussRand 4 | categories:: UGens>Random, UGens>Triggers 5 | 6 | 7 | Description:: 8 | 9 | Generates a random walk from lo to hi with a Gendyn distribution each time the trig signal changes from nonpositive to positive values. 10 | 11 | classmethods:: 12 | 13 | method::ar, kr 14 | 15 | argument::lo 16 | minimum value 17 | 18 | argument::hi 19 | maximum value 20 | 21 | argument::dev 22 | maximum step (0-1) 23 | 24 | argument::dist 25 | Gendyn distribution (0-5: see link::Classes/Gendy1:: for details) 26 | 27 | argument::trig 28 | trigger signal 29 | 30 | 31 | Examples:: 32 | 33 | code:: 34 | ( 35 | { 36 | var trig = Dust.kr(10); 37 | SinOsc.ar( 38 | TBrownRand.kr(300, 3000, 1.0, MouseX.kr(0, 5), trig) 39 | ) * 0.1 40 | }.play; 41 | ) 42 | 43 | ( 44 | { 45 | var trig = Dust.kr(10); 46 | Pan2.ar( 47 | SinOsc.ar(LinExp.kr(TBrownRand.kr(dev:0.2, trig:trig), 0, 1, 300, 3000)), 48 | TBrownRand.kr(-1.0, 1.0, 1.0, 4, trig), 49 | 0.1 50 | ) 51 | }.play; 52 | ) 53 | :: 54 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/HelpSource/Classes/TGaussRand.schelp: -------------------------------------------------------------------------------- 1 | class:: TGaussRand 2 | summary:: triggered gaussian random distribution 3 | related:: Classes/TRand, Classes/TBetaRand, Classes/TBrownRand 4 | categories:: UGens>Random, UGens>Triggers 5 | 6 | 7 | Description:: 8 | 9 | Generates a random float value in gaussian distribution from code::lo:: to code::hi:: each time the trigger signal changes from nonpositive to positive values. 10 | 11 | classmethods:: 12 | 13 | method::ar, kr 14 | 15 | argument::lo 16 | minimum value 17 | 18 | argument::hi 19 | maximum value 20 | 21 | argument::trig 22 | trigger signal 23 | 24 | 25 | Examples:: 26 | 27 | code:: 28 | ( 29 | { 30 | var trig; 31 | trig = Dust.kr(10); 32 | Pan2.ar(SinOsc.ar( 33 | TGaussRand.kr(300, 3000, trig) 34 | ), 35 | TGaussRand.kr(-1, 1, trig), 36 | 0.1 37 | ) 38 | }.play; 39 | ) 40 | :: 41 | -------------------------------------------------------------------------------- /source/BhobUGens/sc/classes/EQ.sc: -------------------------------------------------------------------------------- 1 | BhobLoShelf { 2 | *ar {|in, freq, amp| 3 | var wc, a0, allpass; 4 | wc=pi * freq * SampleDur.ir; 5 | a0=(1 - wc)/(1 + wc); 6 | allpass=FOS.ar(in, a0.neg, 1, a0, -1); 7 | ^(0.5 * (in + allpass + (amp * (in-allpass)))) 8 | } 9 | } 10 | 11 | BhobHiShelf { 12 | *ar {|in, freq, amp| 13 | var wc, a0, allpass; 14 | wc=pi * freq * SampleDur.ir; 15 | a0=(1 - wc)/(1 + wc); 16 | allpass=FOS.ar(in, a0.neg, 1, a0, 1); 17 | ^(0.5 * (in + allpass + (amp * (in-allpass)))) 18 | } 19 | } 20 | 21 | BhobTone { 22 | *ar {|in, tone| 23 | ^Mix([HiShelf.ar(in, 10000, tone), LoShelf.ar(in, 100, tone.reciprocal)]) 24 | } 25 | } -------------------------------------------------------------------------------- /source/BhobUGens/sc/classes/osx/asEnv.sc: -------------------------------------------------------------------------------- 1 | + EnvelopeView { 2 | asEnv {|curves, timeScale=1, levelScale=1, levelBias=0, releaseNode, loopNode=0| 3 | var val, times, levels; 4 | times=Array.new; 5 | val=this.value; 6 | levels=val[1]; 7 | curves=curves ? Array.fill(val[0].size, 0); 8 | curves=curves.asArray; 9 | (val[0].size-1).do({|i| 10 | times=times.add(val[0][i+1] - val[0][i]); 11 | }); 12 | (timeScale != 1).if({ times=times * timeScale }); 13 | (levelScale != 1).if({ levels=levels * levelScale }); 14 | (levelBias != 0).if({ levels=levels + levelBias }); 15 | ^Env(levels, times, curves, releaseNode, loopNode); 16 | } 17 | } -------------------------------------------------------------------------------- /source/BlackrainUGens/sc/BlackrainUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | BlackrainUGens 8 | 9 | 10 | 11 | 12 | 13 |

BlackrainUGens

14 | 15 |

sc3-plugins:BlackrainUGens

16 | 17 |

by sc3-plugins

18 | 19 |
BlackrainUGens.html
20 |
Help/AmplitudeMod.help.rtf
21 |
Help/BMoog.help.rtf
22 |
Help/IIRFilter.help.rtf
23 |
Help/SVF.help.rtf
24 | -------------------------------------------------------------------------------- /source/ChaosUGens/sc/Examples/NoiseRing.scd: -------------------------------------------------------------------------------- 1 | s.reboot; 2 | s.unmute; 3 | s.mute; 4 | 5 | 6 | // plot 7 | { 8 | Demand.ar(Impulse.ar(1000), 0, DNoiseRing(change: 0.1, numBits: 32)) * (2**32).reciprocal 9 | }.plot(1) 10 | 11 | // plain 32bit value scaled to 0..1 and out of the speaker 12 | {Demand.ar(Impulse.ar(10000), 0, DNoiseRing(change: MouseX.kr(0, 1), chance: 0.51, numBits: 32)) * (2**32).reciprocal}.play 13 | 14 | // as a sequencer 15 | { 16 | var freq = (Demand.ar(Impulse.ar(10), 0, DNoiseRing(change: MouseX.kr(0, 1), chance: MouseY.kr(0, 1), numBits: 32))).linlin(0, 2**32, 40, 40+48).midicps.poll; 17 | 18 | SinOsc.ar(freq)!2 19 | }.play -------------------------------------------------------------------------------- /source/ChaosUGens/sc/NoiseRing.sc: -------------------------------------------------------------------------------- 1 | // author: Julian Parker & Till Bovermann 2 | // license: GPL2+ 3 | // year: 2013 4 | 5 | // without mul and add. 6 | DNoiseRing : DUGen { 7 | *new { arg change = 0.5, chance = 0.5, shift = 1, numBits = 8, resetval = 0; 8 | ^this.multiNew('demand', change, chance, shift, numBits, resetval) 9 | } 10 | } -------------------------------------------------------------------------------- /source/ConcatUGens/sc/Concat.sc: -------------------------------------------------------------------------------- 1 | //Concat UGens by Nick Collins, originally 2006 2 | 3 | Concat : UGen { 4 | 5 | *ar { arg control, source, storesize=1.0, seektime=1.0, seekdur=1.0, matchlength=0.05, freezestore=0, zcr=1.0, lms=1.0, sc=1.0, st=0.0, randscore=0.0, mul = 1.0, add = 0.0; 6 | ^this.multiNew('audio',control, source, storesize, seektime, seekdur, matchlength, freezestore, zcr, lms, sc, st, randscore).madd(mul, add); 7 | } 8 | } 9 | 10 | 11 | Concat2 : UGen { 12 | 13 | *ar { arg control, source, storesize=1.0, seektime=1.0, seekdur=1.0, matchlength=0.05, freezestore=0, zcr=1.0, lms=1.0, sc=1.0, st=0.0, randscore=0.0,threshold=0.01, mul = 1.0, add = 0.0; 14 | 15 | ^this.multiNew('audio',control, source, storesize, seektime, seekdur, matchlength, freezestore, zcr, lms, sc, st, randscore,threshold).madd(mul, add); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /source/DEINDUGens/faust_src/GreyholeRaw.sc: -------------------------------------------------------------------------------- 1 | FaustGreyholeRaw : MultiOutUGen 2 | { 3 | *ar { | in1, in2, damping(0.0), delaytime(0.2), diffusion(0.5), feedback(0.9), moddepth(0.1), modfreq(2.0), size(1.0) | 4 | ^this.multiNew('audio', in1, in2, damping, delaytime, diffusion, feedback, moddepth, modfreq, size) 5 | } 6 | 7 | *kr { | in1, in2, damping(0.0), delaytime(0.2), diffusion(0.5), feedback(0.9), moddepth(0.1), modfreq(2.0), size(1.0) | 8 | ^this.multiNew('control', in1, in2, damping, delaytime, diffusion, feedback, moddepth, modfreq, size) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 2.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(2, rate) 26 | } 27 | 28 | name { ^"FaustGreyholeRaw" } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /source/DEINDUGens/include/faust/gui/Styles/Blue.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Blue.qss 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/DEINDUGens/include/faust/gui/Styles/Default.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Default.qss 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/DEINDUGens/include/faust/gui/Styles/Grey.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Grey.qss 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/DEINDUGens/include/faust/gui/Styles/Salmon.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Salmon.qss 4 | 5 | 6 | -------------------------------------------------------------------------------- /source/DEINDUGens/include/faust/vst/voice.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////// 2 | // Faust VST Voice 3 | ////////////////////////////////////////////////////// 4 | 5 | #ifndef __VST_VOICE_H__ 6 | #define __VST_VOICE_H__ 7 | 8 | //#include "../audio/dsp.h" 9 | 10 | class Voice : public vstUI { 11 | public: 12 | Voice(int samplingRate) 13 | : vstUI(), m_dsp() 14 | { 15 | m_dsp.init(samplingRate); 16 | m_dsp.buildUserInterface(this); 17 | } 18 | 19 | mydsp m_dsp; 20 | }; //end of Voice vlass 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /source/DEINDUGens/sc/DiodeRingMod.sc: -------------------------------------------------------------------------------- 1 | // author: Julian Parker & Till Bovermann 2 | // license: GPL2+ 3 | // year: 2013 4 | 5 | // without mul and add. 6 | DiodeRingMod : UGen { 7 | *ar { arg car = 0.0, mod = 0.0; 8 | ^this.multiNew('audio', car, mod) 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /source/DEINDUGens/sc/Greyhole.sc: -------------------------------------------------------------------------------- 1 | // author: Julian Parker 2 | // license: GPL2+ 3 | // year: 2013 4 | 5 | Greyhole { 6 | *ar { | in, delayTime(2.0), damp(0.0), size(1.0), diff(0.707), feedback(0.9), modDepth(0.1), modFreq(2.0)| 7 | in = in.asArray; 8 | 9 | ^GreyholeRaw.ar(in.first, in.last, 10 | damp, delayTime, diff, feedback, modDepth, modFreq, size) 11 | } 12 | } 13 | 14 | GreyholeRaw : MultiOutUGen 15 | { 16 | *ar { | in1, in2, damping(0.0), delaytime(2.0), diffusion(0.5), feedback(0.9), moddepth(0.1), modfreq(2.0), size(1.0) | 17 | ^this.multiNew('audio', in1, in2, damping, delaytime, diffusion, feedback, moddepth, modfreq, size) 18 | } 19 | 20 | checkInputs { 21 | if (rate == 'audio', { 22 | 2.do({|i| 23 | if (inputs.at(i).rate != 'audio', { 24 | ^(" input at index " + i + "(" + inputs.at(i) + 25 | ") is not audio rate"); 26 | }); 27 | }); 28 | }); 29 | ^this.checkValidInputs 30 | } 31 | 32 | init { | ... theInputs | 33 | inputs = theInputs 34 | ^this.initOutputs(2, rate) 35 | } 36 | 37 | name { ^"GreyholeRaw" } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /source/DEINDUGens/sc/HelpSource/Classes/Greyhole-logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/HelpSource/Classes/Greyhole-logo-small.png -------------------------------------------------------------------------------- /source/DEINDUGens/sc/HelpSource/Classes/Greyhole-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/HelpSource/Classes/Greyhole-logo.jpg -------------------------------------------------------------------------------- /source/DEINDUGens/sc/HelpSource/Classes/JPverb-logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/HelpSource/Classes/JPverb-logo-small.png -------------------------------------------------------------------------------- /source/DEINDUGens/sc/HelpSource/Classes/JPverb-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/HelpSource/Classes/JPverb-logo.jpg -------------------------------------------------------------------------------- /source/DEINDUGens/sc/HelpSource/Overviews/DEIND.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/HelpSource/Overviews/DEIND.jpg -------------------------------------------------------------------------------- /source/DEINDUGens/sc/HelpSource/Overviews/DEIND.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/HelpSource/Overviews/DEIND.png -------------------------------------------------------------------------------- /source/DEINDUGens/sc/RMS.sc: -------------------------------------------------------------------------------- 1 | RMS : UGen { 2 | *ar { arg in, lpFreq=10; 3 | ^this.multiNew('audio', in, lpFreq); 4 | } 5 | *kr { arg in, lpFreq=10; 6 | ^this.multiNew('control', in, lpFreq); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/DEINDUGens/sc/complexRes.sc: -------------------------------------------------------------------------------- 1 | // author: Julian Parker & Till Bovermann 2 | // license: GPL2+ 3 | // year: 2013 4 | 5 | // without mul and add. 6 | ComplexRes : UGen { 7 | *ar { arg in = 0.0, freq = 100.0, decay = 0.2; 8 | ^this.multiNew('audio', in, freq, decay) 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /source/DEINDUGens/sc/examples/compar.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/DEINDUGens/sc/examples/compar.pdf -------------------------------------------------------------------------------- /source/DEINDUGens/sc/examples/complexRes.scd: -------------------------------------------------------------------------------- 1 | s.reboot; 2 | 3 | {[0.1,0.1]*ComplexRes.ar(Pulse.ar(0.1,0.001,0.1),50+ 5000*SinOsc.ar(50),0.5)}.play; -------------------------------------------------------------------------------- /source/DWGUGens/sc/classes/DWGBowed.sc: -------------------------------------------------------------------------------- 1 | DWGBowedSimple : UGen 2 | { 3 | *ar { arg freq=440, velb=0.5, force=1, gate=1, pos=0.14, release=0.1, c1=1, c3=30; 4 | ^this.multiNew('audio',freq, velb, force, gate,pos,release,c1,c3); 5 | } 6 | } 7 | DWGBowed : UGen 8 | { 9 | *ar { arg freq=440, velb=0.5, force=1, gate=1, pos=0.14, release=0.1, c1=1, c3=3,impZ=0.55, fB=2; 10 | ^this.multiNew('audio',freq, velb, force, gate,pos,release,c1,c3,impZ,fB); 11 | } 12 | } 13 | DWGBowedTor : UGen 14 | { 15 | *ar { arg freq=440, velb=0.5, force=1, gate=1, pos=0.14, release=0.1, c1=1, c3=3,impZ=0.55, fB=2, mistune=5.2, c1tor=1, c3tor=3000, iZtor=1.8; 16 | ^this.multiNew('audio',freq, velb, force, gate,pos,release,c1,c3,impZ,fB,mistune,c1tor,c3tor,iZtor); 17 | } 18 | } 19 | DWGSoundBoard : UGen 20 | { 21 | *ar { arg inp=0,c1=20,c3=20,mix=0.8,d1=199,d2=211,d3=223,d4=227,d5=229,d6=233,d7=239,d8=241; 22 | ^this.multiNew('audio',inp,c1,c3,mix,d1,d2,d3,d4,d5,d6,d7,d8); 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /source/DWGUGens/sc/classes/DWGPlucked.sc: -------------------------------------------------------------------------------- 1 | DWGPlucked : UGen 2 | { 3 | *ar { arg freq=440, amp=0.5, gate=1, pos=0.14, c1=1, c3=30, inp= 0, release=0.1; 4 | ^this.multiNew('audio',freq, amp, gate,pos,c1,c3,inp,release); 5 | } 6 | } 7 | DWGPluckedStiff : UGen 8 | { 9 | *ar { arg freq=440, amp=0.5, gate=1, pos=0.14, c1=1, c3=30, inp= 0, release=0.1, fB=2; 10 | ^this.multiNew('audio',freq, amp, gate,pos,c1,c3,inp,release, fB); 11 | } 12 | } 13 | DWGPlucked2 : UGen 14 | { 15 | *ar { arg freq=440, amp=0.5, gate=1, pos=0.14, c1=1, c3=30, inp= 0, release=0.1, mistune=1.008, mp = 0.55, gc = 0.01; 16 | ^this.multiNew('audio',freq, amp, gate,pos,c1,c3,inp,release,mistune,mp,gc); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /source/DistortionUGens/sc/DistortionPlugins.sc: -------------------------------------------------------------------------------- 1 | CrossoverDistortion : UGen { 2 | 3 | *ar { arg in, amp = 0.5, smooth=0.5, mul=1.0, add=0; 4 | 5 | ^this.multiNew('audio', in, amp, smooth).madd(mul, add) 6 | 7 | } 8 | } 9 | 10 | SmoothDecimator : UGen { 11 | 12 | *ar { arg in, rate=44100.0, smoothing=0.5, mul=1.0, add=0; 13 | 14 | ^this.multiNew('audio', in, rate, smoothing).madd(mul, add) 15 | 16 | } 17 | } 18 | 19 | Decimator : UGen { 20 | 21 | *ar { arg in, rate=44100.0, bits=24, mul=1.0, add=0; 22 | 23 | ^this.multiNew('audio', in, rate, bits).madd(mul, add) 24 | 25 | } 26 | } 27 | 28 | SineShaper : UGen { 29 | 30 | *ar { arg in, limit=1.0, mul=1.0, add=0; 31 | 32 | ^this.multiNew('audio', in, limit).madd(mul, add) 33 | 34 | } 35 | } 36 | 37 | Disintegrator : UGen { 38 | 39 | *ar { arg in, probability=0.5, multiplier=0.0, mul=1.0, add=0; 40 | 41 | ^this.multiNew('audio', in, probability, multiplier).madd(mul, add) 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /source/DistortionUGens/sc/DistortionUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | LadspaUGens 8 | 9 | 10 | 11 | 12 | 13 |

LadspaUGens

14 | 15 |

sc3-plugins:LadspaUGens

16 | 17 |

by sc3-plugins

18 | 19 |
LadspaUGens.html
20 | -------------------------------------------------------------------------------- /source/DistortionUGens/sc/HelpSource/Classes/Disintegrator.schelp: -------------------------------------------------------------------------------- 1 | class:: Disintegrator 2 | summary:: port of some ladspa plugins 3 | related:: Classes/CrossoverDistortion, Classes/Decimator, Classes/SmoothDecimator, Classes/SineShaper 4 | categories:: UGens>Filters 5 | 6 | 7 | Description:: 8 | Amplifies random half-cycles of it's input by multiplier. Set multiplier to 0 and vary probability for a weird fade effect, or set multiplier to -1 and probability to 0.5 to turn pitched sounds into noise. 9 | 10 | note:: 11 | Port of a similarly-named ladspa plugin, description at link::http://www.ladspa.org/cmt/plugins.html::. Plugin ID 1846. 12 | :: 13 | 14 | classmethods:: 15 | 16 | method::ar 17 | 18 | argument::in 19 | The input signal. 20 | 21 | argument::probability 22 | 23 | argument::multiplier 24 | 25 | argument::mul 26 | Output will be multiplied by this value. 27 | 28 | argument::add 29 | This value will be added to the output. 30 | 31 | 32 | Examples:: 33 | 34 | code:: 35 | {Disintegrator.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 1), MouseY.kr(0, 1))}.play 36 | 37 | {Disintegrator.ar(SoundIn.ar, MouseX.kr(0, 44100), MouseY.kr(0, 1))}.play 38 | :: 39 | -------------------------------------------------------------------------------- /source/DistortionUGens/sc/HelpSource/Classes/SineShaper.schelp: -------------------------------------------------------------------------------- 1 | class:: SineShaper 2 | summary:: port of some ladspa plugins 3 | related:: Classes/CrossoverDistortion, Classes/SmoothingDecimator, Classes/Decimator, Classes/Disintegrator 4 | categories:: UGens>Filters 5 | 6 | 7 | Description:: 8 | Wave Shaper (Sine-Based). 9 | 10 | 11 | classmethods:: 12 | 13 | method::ar 14 | 15 | argument::in 16 | The input signal. 17 | 18 | argument::limit 19 | 20 | 21 | argument::mul 22 | Output will be multiplied by this value. 23 | 24 | argument::add 25 | This value will be added to the output. 26 | 27 | 28 | Examples:: 29 | 30 | code:: 31 | {SineShaper.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 1))}.play 32 | 33 | {SineShaper.ar(SoundIn.ar, MouseX.kr(0, 1))}.play 34 | :: 35 | -------------------------------------------------------------------------------- /source/DistortionUGens/sc/HelpSource/Classes/SmoothDecimator.schelp: -------------------------------------------------------------------------------- 1 | class:: SmoothDecimator 2 | summary:: Smooth samplerate and bitrate reduction 3 | related:: Classes/CrossoverDistortion, Classes/Decimator, Classes/SineShaper, Classes/Disintegrator 4 | categories:: UGens>Filters 5 | 6 | 7 | Description:: 8 | Decimates (reduces the effective sample rate). 9 | 10 | 11 | classmethods:: 12 | 13 | method::ar 14 | 15 | argument::in 16 | The input signal. 17 | 18 | argument::rate 19 | The rate at which the output signal will be resampled. 20 | 21 | argument::smoothing 22 | The amount of smoothing on the output signal. 23 | 24 | argument::mul 25 | Output will be multiplied by this value. 26 | 27 | argument::add 28 | This value will be added to the output. 29 | 30 | 31 | Examples:: 32 | 33 | code:: 34 | {SmoothDecimator.ar(SinOsc.ar([400, 404], 0, 0.2), MouseX.kr(0, 44100), MouseY.kr(0, 1))}.play 35 | 36 | {SmoothDecimator.ar(SoundIn.ar, MouseX.kr(0, 44100), MouseY.kr(0, 1))}.play 37 | :: 38 | -------------------------------------------------------------------------------- /source/GlitchUGens/sc/GlitchUGens.sc: -------------------------------------------------------------------------------- 1 | GlitchRHPF : Filter { 2 | 3 | *ar { arg in = 0.0, freq = 440.0, rq = 1.0, mul = 1.0, add = 0.0; 4 | ^this.multiNew('audio', in, freq, rq).madd(mul, add) 5 | } 6 | *kr { arg in = 0.0, freq = 440.0, rq = 1.0, mul = 1.0, add = 0.0; 7 | ^this.multiNew('control', in, freq, rq).madd(mul, add) 8 | } 9 | } 10 | 11 | GlitchHPF : Filter { 12 | 13 | *ar { arg in = 0.0, freq = 440.0, mul = 1.0, add = 0.0; 14 | ^this.multiNew('audio', in, freq).madd(mul, add) 15 | } 16 | *kr { arg in = 0.0, freq = 440.0, mul = 1.0, add = 0.0; 17 | ^this.multiNew('control', in, freq).madd(mul, add) 18 | } 19 | } 20 | 21 | GlitchBPF : Filter { 22 | 23 | *ar { arg in = 0.0, freq = 440.0, rq = 1.0, mul = 1.0, add = 0.0; 24 | ^this.multiNew('audio', in, freq, rq).madd(mul, add) 25 | } 26 | *kr { arg in = 0.0, freq = 440.0, rq = 1.0, mul = 1.0, add = 0.0; 27 | ^this.multiNew('control', in, freq, rq).madd(mul, add) 28 | } 29 | } 30 | 31 | GlitchBRF : GlitchBPF {} 32 | -------------------------------------------------------------------------------- /source/GlitchUGens/sc/HelpSource/Classes/GlitchHPF.schelp: -------------------------------------------------------------------------------- 1 | class:: GlitchHPF 2 | summary:: backward compatibility 3 | related:: Classes/HPF 4 | categories:: UGens>Filters>Linear, UGens>Filters>GlitchUGens 5 | 6 | 7 | Description:: 8 | 9 | after sc3.4 HPF and RHPF were changed to use double-precision floats (svn revision: 10300 - 8sep2010). GlitchHPF and GlitchRHPF can be used as drop-in replacements to get the old behavior back. Good for very noise and glitchy sounds. 10 | 11 | 12 | classmethods:: 13 | 14 | method::ar, kr 15 | 16 | argument::in 17 | The input signal. 18 | 19 | argument::freq 20 | Cutoff frequency in Hertz. 21 | 22 | argument::mul 23 | Output will be multiplied by this value. 24 | 25 | argument::add 26 | This value will be added to the output. 27 | 28 | 29 | Examples:: 30 | 31 | code:: 32 | //code that utilizes the glitch. 33 | //warning! extremely loud. 34 | //note: might not sound the same on all soundcards 35 | ( 36 | {GlitchHPF.ar( 37 | BrownNoise.ar(1.dup), 38 | 0.5, 39 | Saw.kr(1, 10) 40 | )}.play; 41 | ) 42 | :: 43 | -------------------------------------------------------------------------------- /source/GlitchUGens/sc/HelpSource/Classes/GlitchRHPF.schelp: -------------------------------------------------------------------------------- 1 | class:: GlitchRHPF 2 | summary:: backward compatibility 3 | related:: Classes/RHPF 4 | categories:: UGens>Filters>Linear, UGens>Filters>GlitchUGens 5 | 6 | 7 | Description:: 8 | 9 | after sc3.4 HPF and RHPF were changed to use double-precision floats (svn revision: 10300 - 8sep2010). GlitchHPF and GlitchRHPF can be used as drop-in replacements to get the old behavior back. Good for very noise and glitchy sounds. 10 | 11 | 12 | classmethods:: 13 | 14 | method::ar, kr 15 | 16 | argument::in 17 | The input signal. 18 | 19 | argument::freq 20 | Cutoff frequency in Hertz. 21 | 22 | argument::rq 23 | The reciprocal of Q (bandwidth / cutoffFreq). 24 | 25 | argument::mul 26 | Output will be multiplied by this value. 27 | 28 | argument::add 29 | This value will be added to the output. 30 | 31 | 32 | Examples:: 33 | 34 | code:: 35 | //code that utilizes the glitch. 36 | //warning! extremely loud. 37 | //note: might not sound the same on all soundcards 38 | ( 39 | {GlitchRHPF.ar( 40 | BrownNoise.ar(1.dup), 41 | 0.5, 42 | Saw.kr(1, 10) 43 | )}.play; 44 | ) 45 | :: 46 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAAzimuthRotator1.sc: -------------------------------------------------------------------------------- 1 | HOAAzimuthRotator1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, azimuth(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, azimuth) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, azimuth(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, azimuth) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAAzimuthRotator1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAAzimuthRotator2.sc: -------------------------------------------------------------------------------- 1 | HOAAzimuthRotator2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAAzimuthRotator2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAAzimuthRotator3.sc: -------------------------------------------------------------------------------- 1 | HOAAzimuthRotator3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, azimuth(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, azimuth) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, azimuth(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, azimuth) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAAzimuthRotator3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOABeamDirac2HOA1.sc: -------------------------------------------------------------------------------- 1 | HOABeamDirac2HOA1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, on(0.0), crossfade(1.0), gain(0.0), azimuth(0.0), elevation(0.0), timer_manual(0.0), focus(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, on, crossfade, gain, azimuth, elevation, timer_manual, focus) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, on(0.0), crossfade(1.0), gain(0.0), azimuth(0.0), elevation(0.0), timer_manual(0.0), focus(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, on, crossfade, gain, azimuth, elevation, timer_manual, focus) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOABeamDirac2HOA1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOABeamHCardio2HOA1.sc: -------------------------------------------------------------------------------- 1 | HOABeamHCardio2HOA1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, azimuth(0.0), elevation(0.0), int_float(0.0), order(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, azimuth, elevation, int_float, order) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, azimuth(0.0), elevation(0.0), int_float(0.0), order(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, azimuth, elevation, int_float, order) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOABeamHCardio2HOA1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOABeamHCardio2HOA2.sc: -------------------------------------------------------------------------------- 1 | HOABeamHCardio2HOA2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth(0.0), elevation(0.0), int_float(0.0), order(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth, elevation, int_float, order) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth(0.0), elevation(0.0), int_float(0.0), order(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, azimuth, elevation, int_float, order) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(25, rate) 26 | } 27 | 28 | name { ^"HOABeamHCardio2HOA2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOABeamHCardio2Mono1.sc: -------------------------------------------------------------------------------- 1 | HOABeamHCardio2Mono1 : UGen 2 | { 3 | *ar { | in1, in2, in3, in4, int_float(0.0), order(0.0), output_gain(0.0), azimuth(0.0), elevation(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, int_float, order, output_gain, azimuth, elevation) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, int_float(0.0), order(0.0), output_gain(0.0), azimuth(0.0), elevation(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, int_float, order, output_gain, azimuth, elevation) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | name { ^"HOABeamHCardio2Mono1" } 24 | 25 | 26 | info { ^"Generated with Faust" } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOABeamHCardio2Mono2.sc: -------------------------------------------------------------------------------- 1 | HOABeamHCardio2Mono2 : UGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, int_float(0.0), order(0.0), output_gain(0.0), azimuth(0.0), elevation(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, int_float, order, output_gain, azimuth, elevation) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, int_float(0.0), order(0.0), output_gain(0.0), azimuth(0.0), elevation(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, int_float, order, output_gain, azimuth, elevation) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | name { ^"HOABeamHCardio2Mono2" } 24 | 25 | 26 | info { ^"Generated with Faust" } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnN3d2AcnSn3d1.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnN3d2AcnSn3d1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4 | 4 | ^this.multiNew('audio', in1, in2, in3, in4) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4 | 8 | ^this.multiNew('control', in1, in2, in3, in4) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnN3d2AcnSn3d1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnN3d2AcnSn3d2.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnN3d2AcnSn3d2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnN3d2AcnSn3d2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnN3d2AcnSn3d3.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnN3d2AcnSn3d3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnN3d2AcnSn3d3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnN3d2FuMa1.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnN3d2FuMa1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4 | 4 | ^this.multiNew('audio', in1, in2, in3, in4) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4 | 8 | ^this.multiNew('control', in1, in2, in3, in4) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnN3d2FuMa1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnN3d2FuMa2.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnN3d2FuMa2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnN3d2FuMa2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnN3d2FuMa3.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnN3d2FuMa3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnN3d2FuMa3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnSn3d2FuMa1.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnSn3d2FuMa1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4 | 4 | ^this.multiNew('audio', in1, in2, in3, in4) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4 | 8 | ^this.multiNew('control', in1, in2, in3, in4) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnSn3d2FuMa1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnSn3d2FuMa2.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnSn3d2FuMa2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnSn3d2FuMa2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterAcnSn3d2FuMa3.sc: -------------------------------------------------------------------------------- 1 | HOAConverterAcnSn3d2FuMa3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAConverterAcnSn3d2FuMa3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterFuma2AcnN3d1.sc: -------------------------------------------------------------------------------- 1 | HOAConverterFuma2AcnN3d1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4 | 4 | ^this.multiNew('audio', in1, in2, in3, in4) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4 | 8 | ^this.multiNew('control', in1, in2, in3, in4) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAConverterFuma2AcnN3d1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterFuma2AcnN3d2.sc: -------------------------------------------------------------------------------- 1 | HOAConverterFuma2AcnN3d2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAConverterFuma2AcnN3d2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterFuma2AcnN3d3.sc: -------------------------------------------------------------------------------- 1 | HOAConverterFuma2AcnN3d3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAConverterFuma2AcnN3d3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterFuma2AcnSn3d1.sc: -------------------------------------------------------------------------------- 1 | HOAConverterFuma2AcnSn3d1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4 | 4 | ^this.multiNew('audio', in1, in2, in3, in4) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4 | 8 | ^this.multiNew('control', in1, in2, in3, in4) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAConverterFuma2AcnSn3d1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterFuma2AcnSn3d2.sc: -------------------------------------------------------------------------------- 1 | HOAConverterFuma2AcnSn3d2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAConverterFuma2AcnSn3d2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAConverterFuma2AcnSn3d3.sc: -------------------------------------------------------------------------------- 1 | HOAConverterFuma2AcnSn3d3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16 | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAConverterFuma2AcnSn3d3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecBinaural1.sc: -------------------------------------------------------------------------------- 1 | HOADecBinaural1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, inputs_gain, outputs_gain) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, inputs_gain, outputs_gain) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(2, rate) 26 | } 27 | 28 | name { ^"HOADecBinaural1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecBinaural2.sc: -------------------------------------------------------------------------------- 1 | HOADecBinaural2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain(0.0), outputs_gain(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain, outputs_gain) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain(0.0), outputs_gain(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain, outputs_gain) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(2, rate) 26 | } 27 | 28 | name { ^"HOADecBinaural2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecLebedev061.sc: -------------------------------------------------------------------------------- 1 | HOADecLebedev061 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, inputs_gain, outputs_gain, yes, speakers_radius) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 8 | ^this.multiNew('control', in1, in2, in3, in4, inputs_gain, outputs_gain, yes, speakers_radius) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(6, rate) 26 | } 27 | 28 | name { ^"HOADecLebedev061" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecLebedev261.sc: -------------------------------------------------------------------------------- 1 | HOADecLebedev261 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, inputs_gain, outputs_gain, yes, speakers_radius) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 8 | ^this.multiNew('control', in1, in2, in3, in4, inputs_gain, outputs_gain, yes, speakers_radius) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(26, rate) 26 | } 27 | 28 | name { ^"HOADecLebedev261" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecLebedev262.sc: -------------------------------------------------------------------------------- 1 | HOADecLebedev262 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain, outputs_gain, yes, speakers_radius) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain, outputs_gain, yes, speakers_radius) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(26, rate) 26 | } 27 | 28 | name { ^"HOADecLebedev262" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecLebedev501.sc: -------------------------------------------------------------------------------- 1 | HOADecLebedev501 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, inputs_gain, outputs_gain, yes, speakers_radius) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 8 | ^this.multiNew('control', in1, in2, in3, in4, inputs_gain, outputs_gain, yes, speakers_radius) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(50, rate) 26 | } 27 | 28 | name { ^"HOADecLebedev501" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOADecLebedev502.sc: -------------------------------------------------------------------------------- 1 | HOADecLebedev502 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain, outputs_gain, yes, speakers_radius) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain(0.0), outputs_gain(0.0), yes(0.0), speakers_radius(1.07) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, inputs_gain, outputs_gain, yes, speakers_radius) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(50, rate) 26 | } 27 | 28 | name { ^"HOADecLebedev502" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAEncoder1.sc: -------------------------------------------------------------------------------- 1 | HOAEncoder1 : MultiOutUGen 2 | { 3 | *ar { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 4 | ^this.multiNew('audio', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 5 | } 6 | 7 | *kr { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 8 | ^this.multiNew('control', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 1.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAEncoder1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAEncoder2.sc: -------------------------------------------------------------------------------- 1 | HOAEncoder2 : MultiOutUGen 2 | { 3 | *ar { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 4 | ^this.multiNew('audio', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 5 | } 6 | 7 | *kr { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 8 | ^this.multiNew('control', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 1.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAEncoder2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAEncoder3.sc: -------------------------------------------------------------------------------- 1 | HOAEncoder3 : MultiOutUGen 2 | { 3 | *ar { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 4 | ^this.multiNew('audio', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 5 | } 6 | 7 | *kr { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 8 | ^this.multiNew('control', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 1.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOAEncoder3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAEncoder4.sc: -------------------------------------------------------------------------------- 1 | HOAEncoder4 : MultiOutUGen 2 | { 3 | *ar { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 4 | ^this.multiNew('audio', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 5 | } 6 | 7 | *kr { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 8 | ^this.multiNew('control', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 1.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(25, rate) 26 | } 27 | 28 | name { ^"HOAEncoder4" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAEncoder5.sc: -------------------------------------------------------------------------------- 1 | HOAEncoder5 : MultiOutUGen 2 | { 3 | *ar { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 4 | ^this.multiNew('audio', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 5 | } 6 | 7 | *kr { | in1, gain_0(0.0), radius_0(2.0), azimuth_0(0.0), elevation_0(0.0), yes(0.0), speaker_radius_0(1.07) | 8 | ^this.multiNew('control', in1, gain_0, radius_0, azimuth_0, elevation_0, yes, speaker_radius_0) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 1.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(36, rate) 26 | } 27 | 28 | name { ^"HOAEncoder5" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAMirror1.sc: -------------------------------------------------------------------------------- 1 | HOAMirror1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, front_back(0.0), left_right(0.0), up_down(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, front_back, left_right, up_down) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, front_back(0.0), left_right(0.0), up_down(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, front_back, left_right, up_down) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOAMirror1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOAMirror2.sc: -------------------------------------------------------------------------------- 1 | HOAMirror2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, front_back(0.0), left_right(0.0), up_down(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, front_back, left_right, up_down) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, front_back(0.0), left_right(0.0), up_down(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, front_back, left_right, up_down) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOAMirror2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOARotator1.sc: -------------------------------------------------------------------------------- 1 | HOARotator1 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, pitch(0.0), roll(0.0), yaw(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, pitch, roll, yaw) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, pitch(0.0), roll(0.0), yaw(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, pitch, roll, yaw) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 4.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(4, rate) 26 | } 27 | 28 | name { ^"HOARotator1" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOARotator2.sc: -------------------------------------------------------------------------------- 1 | HOARotator2 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, pitch(0.0), roll(0.0), yaw(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, pitch, roll, yaw) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, pitch(0.0), roll(0.0), yaw(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, pitch, roll, yaw) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 9.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(9, rate) 26 | } 27 | 28 | name { ^"HOARotator2" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/HOAUGens/sc/Classes/HOARotator3.sc: -------------------------------------------------------------------------------- 1 | HOARotator3 : MultiOutUGen 2 | { 3 | *ar { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, pitch(0.0), roll(0.0), yaw(0.0) | 4 | ^this.multiNew('audio', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, pitch, roll, yaw) 5 | } 6 | 7 | *kr { | in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, pitch(0.0), roll(0.0), yaw(0.0) | 8 | ^this.multiNew('control', in1, in2, in3, in4, in5, in6, in7, in8, in9, in10, in11, in12, in13, in14, in15, in16, pitch, roll, yaw) 9 | } 10 | 11 | checkInputs { 12 | if (rate == 'audio', { 13 | 16.do({|i| 14 | if (inputs.at(i).rate != 'audio', { 15 | ^(" input at index " + i + "(" + inputs.at(i) + 16 | ") is not audio rate"); 17 | }); 18 | }); 19 | }); 20 | ^this.checkValidInputs 21 | } 22 | 23 | init { | ... theInputs | 24 | inputs = theInputs 25 | ^this.initOutputs(16, rate) 26 | } 27 | 28 | name { ^"HOARotator3" } 29 | 30 | 31 | info { ^"Generated with Faust" } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/HelpSource/Classes/AtsBand.schelp: -------------------------------------------------------------------------------- 1 | TITLE:: AtsBand 2 | summary:: (put short description here) 3 | categories:: Undocumented classes, Libraries>JoshUGens 4 | related:: Classes/AtsFile 5 | keyword:: JoshUGens 6 | 7 | DESCRIPTION:: 8 | This class is missing documentation. 9 | 10 | 11 | CLASSMETHODS:: 12 | 13 | METHOD:: ar 14 | 15 | ARGUMENT:: atsbuffer 16 | The buffer number that contains the AtsFile information. 17 | 18 | ARGUMENT:: band 19 | 20 | ARGUMENT:: filePointer 21 | 22 | ARGUMENT:: mul 23 | 24 | ARGUMENT:: add 25 | 26 | 27 | INSTANCEMETHODS:: 28 | 29 | 30 | EXAMPLES:: 31 | 32 | code:: 33 | (some example code) 34 | :: 35 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/HelpSource/Classes/LPCVals.schelp: -------------------------------------------------------------------------------- 1 | TITLE:: LPCVals 2 | summary:: Utilize LPC data 3 | categories:: Libraries>JoshUGens, UGens>Analysis:Synthesis 4 | related:: Classes/LPCAna, Classes/LPCFile, Classes/LPCSynth 5 | 6 | DESCRIPTION:: 7 | LPCVals returns pitch, rms and error data from the LPC data file. 8 | 9 | 10 | CLASSMETHODS:: 11 | 12 | METHOD:: kr 13 | 14 | 15 | ARGUMENT:: buffer 16 | The buffer where data is stored from LPCFile (see link::Classes/LPCFile::). 17 | 18 | ARGUMENT:: pointer 19 | A pointer into the LPC data file, where 0 is the begining and 1 is the end. 20 | 21 | METHOD:: ar 22 | 23 | 24 | ARGUMENT:: buffer 25 | The buffer where data is stored from LPCFile (see link::Classes/LPCFile::). 26 | 27 | ARGUMENT:: pointer 28 | A pointer into the LPC data file, where 0 is the begining and 1 is the end. 29 | 30 | 31 | INSTANCEMETHODS:: 32 | 33 | METHOD:: init 34 | 35 | 36 | EXAMPLES:: 37 | 38 | code:: 39 | (some example code) 40 | :: 41 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/HelpSource/Classes/MoogVCF.schelp: -------------------------------------------------------------------------------- 1 | TITLE:: MoogVCF 2 | summary:: Moog filter emulation 3 | categories:: Libraries>JoshUGens, UGens>Filters 4 | keyword:: JoshUGens, Moog, VCF 5 | 6 | DESCRIPTION:: 7 | MoogVCF is a port of the CSound opcode moogvcf written by Josep Comajuncosas and Hans Mikelson. This UGen is a digital emulation of the Moog diode ladder filter configuration. It is based loosely on the paper emphasis::Analyzing the Moog VCF with Considerations for Digital Implemnetation:: by Stilson and Smith (link::#https://ccrma.stanford.edu#CCRMA::). 8 | 9 | CLASSMETHODS:: 10 | 11 | METHOD:: ar 12 | 13 | ARGUMENT:: in 14 | Audio input. 15 | 16 | ARGUMENT:: fco 17 | Cutoff frequency 18 | 19 | ARGUMENT:: res 20 | Resonance (0 to 1). 21 | 22 | ARGUMENT:: mul 23 | 24 | 25 | ARGUMENT:: add 26 | 27 | 28 | 29 | INSTANCEMETHODS:: 30 | 31 | 32 | EXAMPLES:: 33 | 34 | code:: 35 | s.boot; 36 | 37 | ( 38 | { 39 | MoogVCF.ar( 40 | Pulse.ar([40,121],[0.3,0.7]), 41 | SinOsc.kr(LFNoise0.kr(0.42).range(0.001,2.2)).range(30,4200),0.8 42 | )}.play(s); 43 | ) 44 | :: 45 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/HelpSource/Classes/PV_Invert.schelp: -------------------------------------------------------------------------------- 1 | TITLE:: PV_Invert 2 | summary:: Invert FFT frames 3 | categories:: Libraries>JoshUGens, UGens>FFT 4 | 5 | DESCRIPTION:: 6 | 7 | 8 | CLASSMETHODS:: 9 | 10 | METHOD:: new 11 | 12 | ARGUMENT:: buffer 13 | An FFT buffer. 14 | 15 | INSTANCEMETHODS:: 16 | 17 | 18 | EXAMPLES:: 19 | 20 | code:: 21 | SynthDef(\invert, {arg buffer; 22 | var in, chain; 23 | // a sample signal (strong sin tone, little PinkNoise) 24 | in = SinOsc.ar(440, 0, 0.4) + PinkNoise.ar(0.1); 25 | chain = FFT(buffer, in); 26 | chain = PV_Invert(chain); 27 | Out.ar(0, [in, IFFT(chain) * 0.5]); 28 | }).add; 29 | 30 | s.boot; 31 | 32 | s.sendMsg(\b_alloc, 0, 2048) 33 | 34 | s.sendMsg(\s_new, \invert, 1000, 0, 1, \buffer, 0); 35 | :: -------------------------------------------------------------------------------- /source/JoshUGens/sc/HelpSource/Classes/PV_MaxMagN.schelp: -------------------------------------------------------------------------------- 1 | TITLE:: PV_MaxMagN 2 | summary:: Return the N strongest bins 3 | categories:: Libraries>JoshUGens, UGens>FFT 4 | 5 | DESCRIPTION:: 6 | 7 | CLASSMETHODS:: 8 | 9 | METHOD:: new 10 | 11 | ARGUMENT:: buffer 12 | 13 | ARGUMENT:: numbins 14 | 15 | 16 | 17 | INSTANCEMETHODS:: 18 | 19 | 20 | EXAMPLES:: 21 | 22 | code:: 23 | s.boot; 24 | 25 | ( 26 | SynthDef(\maxmag, {arg fftbuf; 27 | var in, chain, out; 28 | in = SinOsc.ar(440, 0, 0.5) + PinkNoise.ar * 0.5; 29 | chain = FFT(fftbuf, in); 30 | // let the strongest (0 - 1023) partials through 31 | chain = PV_MaxMagN(chain, MouseX.kr(0,1023)); 32 | out = IFFT(chain); 33 | Out.ar(0, out); 34 | }).add; 35 | ) 36 | 37 | // the fft buf 38 | s.sendMsg(\b_alloc, 0, 2048); 39 | // start the synth 40 | s.sendMsg(\s_new, \maxmag, z = s.nextNodeID, 0, 1, \fftbuf, 0); 41 | // free it 42 | s.sendMsg(\n_free, z); 43 | s.sendMsg(\b_free, 0); 44 | 45 | s.quit 46 | :: -------------------------------------------------------------------------------- /source/JoshUGens/sc/HelpSource/Classes/PV_MinMagN.schelp: -------------------------------------------------------------------------------- 1 | TITLE:: PV_MinMagN 2 | summary:: Return the N weakest bins 3 | categories:: Libraries>JoshUGens, UGens>FFT 4 | 5 | DESCRIPTION:: 6 | 7 | 8 | CLASSMETHODS:: 9 | 10 | 11 | INSTANCEMETHODS:: 12 | 13 | 14 | EXAMPLES:: 15 | 16 | code:: 17 | s.boot; 18 | 19 | ( 20 | SynthDef(\minmag, {arg fftbuf; 21 | var in, chain, out; 22 | in = SinOsc.ar(440, 0, 0.5) + PinkNoise.ar * 0.5; 23 | chain = FFT(fftbuf, in); 24 | // let the weakest (0 - 1023) partials through 25 | chain = PV_MinMagN(chain, MouseX.kr(0,1023)); 26 | out = IFFT(chain); 27 | Out.ar(0, out); 28 | }).add; 29 | ) 30 | 31 | // the fft buf 32 | s.sendMsg(\b_alloc, 0, 2048); 33 | // start the synth 34 | s.sendMsg(\s_new, \minmag, z = s.nextNodeID, 0, 1, \fftbuf, 0); 35 | // free it 36 | s.sendMsg(\n_free, z); 37 | s.sendMsg(\b_free, 0); 38 | 39 | s.quit 40 | :: -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/AudioMSG.sc: -------------------------------------------------------------------------------- 1 | AudioMSG : UGen { *ar { arg in, index=0pi, mul = 1.0, add=0.0; // ^SinOsc.ar( 0, ( in*0.5pi ) + SinOsc.ar( 0, in*2pi, index ), mul, add ) 2 | ^this.multiNew('audio', in, index).madd(mul, add); 3 | } } 4 | 5 | //(in*0.5pi) + (in*2pi*index) 6 | /* 7 | 8 | s = Server.internal.boot; 9 | s.scope(1); 10 | {AudioMSG.ar(SinOsc.ar(440, 0, 0.3), MouseX.kr(0, 2pi))}.play(s); 11 | s.quit; 12 | */ -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Balance.sc: -------------------------------------------------------------------------------- 1 | Balance : UGen { 2 | *ar {arg in, test, hp = 10, stor = 0, mul = 1, add = 0; 3 | ^this.multiNew('audio', in, test, hp, stor).madd(mul, add); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Class Files/BiquadEQ.sc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/JoshUGens/sc/classes/Class Files/BiquadEQ.sc -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Class Files/CheapVerb.sc: -------------------------------------------------------------------------------- 1 | CheapVerb { *ar { arg in, decayTime=1, numDelays=6, mul=1.0, add=0.0; var out, numCh, maxDelayTime=0.05; out = in; numCh = in.size; numDelays.do({ out = AllpassN.ar( out, maxDelayTime, (numCh > 0).if({ // if in is multi channel, make seperate delay time for each channel Array.fill( numCh, { arg i; maxDelayTime.rand }) },{ maxDelayTime.rand }), decayTime ) }); ^out * mul + add } } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Class Files/SC2 Compat.sc: -------------------------------------------------------------------------------- 1 | //AudioIn { 2 | // *ar { arg channel = 1, mul=1.0, add=0.0; 3 | // var chanOffset, consecutiveOrSingleton; 4 | // channel = channel.asArray; 5 | // // check to see if channels array is consecutive 6 | // consecutiveOrSingleton = (channel.size == 1) or: 7 | // {channel.every({arg item, i; ((i==0) or: {item == (channel.at(i-1)+1)})})}; 8 | // chanOffset = NumOutputBuses.ir - 1; 9 | // ^consecutiveOrSingleton.if({ 10 | // //"more efficient, yay".postln; 11 | // In.ar(chanOffset + channel.minItem, channel.size) 12 | // },{ 13 | // //"yet compatible, yay".postln; 14 | // In.ar(chanOffset + channel) 15 | // }).madd(mul,add) 16 | // } 17 | //} 18 | 19 | TapN { 20 | *ar {arg bufnum, numChannels=1, delaytime = 0.2, mul = 1.0, add = 0.0; 21 | ^PlayBuf.ar( numChannels, bufnum, 1.0, 1.0, delaytime*BufSampleRate.kr(bufnum) * -1, 1.0).madd(mul,add) 22 | } 23 | } 24 | 25 | DelayWr { 26 | *ar { arg bufnum, in = 0.0; 27 | ^RecordBuf.ar( in, bufnum ) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/CombLP.sc: -------------------------------------------------------------------------------- 1 | CombLP : UGen { 2 | *ar { arg in = 0.0, gate = 1.0, maxdelaytime = 0.2, delaytime = 0.2, decaytime = 1.0, 3 | coef = 0.5, mul = 1.0, add = 0.0; 4 | ^this.multiNew('audio', in, gate, maxdelaytime, delaytime, decaytime, coef).madd(mul, add)} 5 | } 6 | 7 | 8 | /* 9 | 10 | a = { 11 | Out.ar(1, CombLP.ar(WhiteNoise.ar(0.5), MouseX.kr(0, 1), 0.1, 200.reciprocal, 5, 0.02, 0.2))}.play(s) 12 | a.free; 13 | */ -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Feedback.sc: -------------------------------------------------------------------------------- 1 | Feedback { 2 | //basic feedback class... buffer size needs to be the same as the delayTime 3 | //e.g. for a 0.1 sec delay time, a buffer should be allocated as such: 4 | //s.sendMsg(\b_alloc, 1, 44100*0.1, 1); 5 | *ar {arg in, feedbackpct = 1, delayTime = 0.1, bufnum = -1, mul = 1; 6 | var trig, delayedSignals; 7 | trig = Impulse.ar(delayTime.reciprocal); 8 | delayedSignals = (PlayBuf.ar(1, bufnum, 1, 1, 0, 1.0) 9 | * feedbackpct) + in; 10 | RecordBuf.ar(delayedSignals, bufnum, 0, 1.0, 0.0, 1.0, 1.0, 1); 11 | ^(delayedSignals * mul); 12 | } 13 | } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Maxamp.sc: -------------------------------------------------------------------------------- 1 | Maxamp : UGen { 2 | *ar {arg in, numSamps = 1000; 3 | ^this.multiNew('audio', in, numSamps); 4 | } 5 | } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Metro.sc: -------------------------------------------------------------------------------- 1 | Metro : UGen { 2 | *ar {arg bpm, numBeats, mul = 1, add = 0; 3 | ^this.multiNew('audio', bpm, numBeats).madd(mul, add) 4 | } 5 | 6 | *kr {arg bpm, numBeats, mul = 1, add = 0; 7 | ^this.multiNew('control', bpm, numBeats).madd(mul, add) 8 | } 9 | } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/MoogVCF.sc: -------------------------------------------------------------------------------- 1 | //MoogVCF.ar(in, fco, res, mul, add); fco = filter cut-off, res = resonance (0 -> 1) 2 | 3 | MoogVCF : UGen { 4 | *ar {arg in, fco, res, mul = 1, add = 0; 5 | ^this.multiNew('audio', in, fco, res).madd(mul, add); 6 | } 7 | } 8 | 9 | /* 10 | 11 | s.boot; 12 | 13 | {a = Blip.ar(20, 2000); 14 | MoogVCF.ar(a, MouseY.kr(50, 1760), SinOsc.ar(0.1, 0, 0.4, 0.5), 1)}.play(s); 15 | 16 | */ -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/PVSynth.sc: -------------------------------------------------------------------------------- 1 | 2 | PVSynth : UGen { 3 | *categories {^#["UGens>Analysis:Synthesis"]} 4 | 5 | *ar { 6 | arg pvbuffer, numBins = 0, binStart = 0, binSkip = 1, 7 | filePointer = 0, freqMul = 1.0, freqAdd = 0.0, mul=1.0, add=0.0; 8 | ^this.multiNew('audio', pvbuffer, numBins, binStart, 9 | binSkip, filePointer, freqMul, freqAdd).madd(mul, add) 10 | } 11 | } 12 | 13 | PVInfo : MultiOutUGen { 14 | *categories {^#["UGens>Analysis:Synthesis"]} 15 | 16 | *ar { 17 | arg pvbuffer, binNum = 0, filePointer = 0, mul = 1, add = 0; 18 | ^this.multiNew('audio', pvbuffer, binNum, filePointer).madd(mul, add) 19 | } 20 | 21 | *kr { 22 | arg pvbuffer, binNum = 0, filePointer = 0, mul = 1, add = 0; 23 | ^this.multiNew('control', pvbuffer, binNum, filePointer).madd(mul, add) 24 | } 25 | 26 | init {arg ... theInputs; 27 | inputs = theInputs; 28 | ^this.initOutputs(2, rate); 29 | } 30 | } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/PanX.sc: -------------------------------------------------------------------------------- 1 | PanX : MultiOutUGen { 2 | 3 | *ar { arg numChans, in, pos = 0.0, level = 1.0, width = 2.0; 4 | ^this.multiNew('audio', numChans, in, pos, level, width ) 5 | } 6 | *kr { arg numChans, in, pos = 0.0, level = 1.0, width = 2.0; 7 | ^this.multiNew('control', numChans, in, pos, level, width ) 8 | } 9 | init { arg numChans ... theInputs; 10 | inputs = theInputs; 11 | channels = Array.fill(numChans, { arg i; OutputProxy(rate,this, i) }); 12 | ^channels 13 | } 14 | } 15 | 16 | PanX2D : MultiOutUGen { 17 | 18 | *ar { arg numChansX, numChansY, in, posX = 0.0, posY = 0.0, level = 1.0, widthX = 2.0, widthY=2.0; 19 | ^PanX.ar( numChansX, 20 | PanX.ar( numChansY, in, posY, level, widthY ) 21 | , posX, level, widthX 22 | ); 23 | } 24 | 25 | *kr { arg numChansX, numChansY, in, posX = 0.0, posY = 0.0, level = 1.0, widthX = 2.0, widthY=2.0; 26 | ^PanX.kr( numChansX, 27 | PanX.kr( numChansY, in, posY, level, widthY ) 28 | , posX, level, widthX 29 | ); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/Phaser.sc: -------------------------------------------------------------------------------- 1 | Phaser { *help { arg method, argument; ^Switch(method.asSymbol) .case(\note, {"\nWritten by CK 1/3/02. first version"}) .case(\short_desc, {"Phaser with phase argument"}) .case(\long_desc, {"Sawtooth oscillator. Output ranges from (0 to mul starting at phase) + add."}) .caseIncludes([\ar,\kr],{ Switch(argument.asSymbol) .case( 'freq', {"frequency in Hertz"} ) .case( 'phase', {"starting phase (between 0 and mul)"} ) .case( 'mul', {"maximum value"} ) .result }) .case(\examples, {"\nEXAMPLES:\n" "\n(\nSynth.plot({ Phaser.ar( 500, 0.5, 1 ) })\n)" "\n\n(\nSynth.plot({ Phaser.ar( 500, 1, 2 ).fold2(1) })\n)" }) .case(\nil,{HELP(this)}) .resultStr } *kr { arg freq = 440.0, phase=0, mul = 1.0, add = 0.0; var halfmul; halfmul = mul/2; ^LFSaw.kr( freq, halfmul, mul + phase ).wrap2(halfmul) + halfmul + add; } *ar { arg freq = 440.0, phase=0, mul = 1.0, add = 0.0; var halfmul; halfmul = mul/2; ^LFSaw.ar( freq, halfmul, mul + phase ).wrap2(halfmul) + halfmul + add; } } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/PosRatio.sc: -------------------------------------------------------------------------------- 1 | PosRatio : UGen { 2 | *ar {arg in, period = 100, thresh = 0.1; 3 | ^this.multiNew('audio', in, period, thresh); 4 | } 5 | } 6 | 7 | /* 8 | // period, in hertz to poll for. 100 will look for the number of positive values corresponding to 9 | // 1/100 of a second 10 | 11 | s = Server.internal.boot; 12 | s.scope(2) 13 | {a = SinOsc.ar(440, 0, 0.5, MouseX.kr(-0.5, 0.51));[a,PosRatio.ar(a, 10)]}.scope 14 | 15 | s.quit; 16 | x-axis (pins horizontal) 17 | 1g 0.67 18 | 0g 0.55 19 | -1g 0.43 20 | 0.67+(0.12*2.75) 21 | InterplPairs([[0, -3.584], [1.0, 2.75]]) 22 | 23 | y-axis (pins vertical) 24 | 25 | 1g 0.62 26 | 0g 0.5 27 | -1g 0.38 28 | */ -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/SinTone.sc: -------------------------------------------------------------------------------- 1 | // outputs sin values based on the sin functiom (rather than table lookup). More CPU, no error 2 | 3 | SinTone : UGen { 4 | *ar {arg freq = 440, phase = 0, mul = 1, add = 0; 5 | ^this.multiNew('audio', freq, phase).madd(mul, add) 6 | } 7 | } -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/TTendency.sc: -------------------------------------------------------------------------------- 1 | TTendency : UGen { 2 | 3 | *ar {arg trigger, dist = 0, parX = 0, parY = 1, parA = 0, parB = 0; 4 | ^this.multiNew('audio', trigger, dist, parX, parY, parA, parB); 5 | } 6 | 7 | *kr {arg trigger, dist = 0, parX = 0, parY = 1, parA = 0, parB = 0; 8 | ^this.multiNew('control', trigger, dist, parX, parY, parA, parB); 9 | } 10 | } 11 | 12 | /* 13 | dist types: 14 | 0 = uniform 15 | 1 = lowpass 16 | 2 = highpass 17 | 3 = mean 18 | 4 = beta 19 | 5 = cauchy 20 | 6 = gauss 21 | 7 = poisson 22 | 8 = expRand 23 | 9 = exponential 24 | 10 = gamma 25 | 11 = laplace 26 | 12 = alaplace 27 | 13 = hcos 28 | 14 = logistic 29 | 15 = arcsin 30 | 31 | */ -------------------------------------------------------------------------------- /source/JoshUGens/sc/classes/WarpZ.sc: -------------------------------------------------------------------------------- 1 | WarpZ : MultiOutUGen { 2 | *ar { arg numChannels = 1, bufnum=0, pointer=0, freqScale = 1, 3 | windowSize = 0.2, envbufnum = -1, overlaps = 8, windowRandRatio = 0.0, interp=1, 4 | zeroSearch = 0, zeroStart = 0, mul = 1, add = 0; 5 | ^this.multiNew('audio', numChannels, bufnum, pointer, freqScale, 6 | windowSize, envbufnum, overlaps, windowRandRatio, interp, zeroSearch, zeroStart) 7 | .madd(mul, add); 8 | } 9 | 10 | init { arg argNumChannels ... theInputs; 11 | inputs = theInputs; 12 | ^this.initOutputs(argNumChannels, rate); 13 | } 14 | argNamesInputsOffset { ^2 } 15 | 16 | } -------------------------------------------------------------------------------- /source/LadspaUGen/sc/LadspaUGen.sc: -------------------------------------------------------------------------------- 1 | LADSPA : MultiOutUGen { 2 | classvar <>ladspalist_path; 3 | *ar {|nChans, id ... args| 4 | ^this.multiNewList(['audio',nChans,id] ++ args); 5 | } 6 | init {|... theInputs| 7 | inputs = theInputs; 8 | channels = {|n| OutputProxy(rate, this, n)} ! inputs[0]; 9 | if (inputs[0] == 1, { ^channels[0] }); 10 | ^channels 11 | } 12 | *initClass { 13 | ladspalist_path = LADSPA.filenameSymbol.asString.dirname+/+"ladspalist"; 14 | ^super; 15 | } 16 | *listPlugins { 17 | ladspalist_path.quote.unixCmd; 18 | } 19 | } 20 | 21 | /* 22 | perhaps we should interface with the ladspalist utility in a clever way? for example generate class wrappers for each ladspa plugin according? or some other way to make things easier than having to specify the unique ID? 23 | then we could handle number of output-channels, default args and such.. 24 | Or at least create a GUI browser that can create a textstring with the arguments for a specific plugin, etc.. 25 | */ 26 | -------------------------------------------------------------------------------- /source/LadspaUGen/sc/test.scd: -------------------------------------------------------------------------------- 1 | //glame lowpass iir and whitenoise 2 | play{LADSPA.ar(1,1891,1000+LFNoise1.kr(10,800),2,LADSPA.ar(1,1050,1!2))} 3 | 4 | x=play{|r=2,cf=2000|LADSPA.ar(1,1219,0.2,0.2,0.9,0.9,1,LADSPA.ar(1,1891,cf+LFNoise1.kr(r,cf*0.8),2,LADSPA.ar(1,1050,0.1!2)))} 5 | x.set(\r,5) 6 | x.set(\cf,5000) 7 | 8 | 9 | //not found plugin, just silent 10 | play{LADSPA.ar(1,500)} 11 | 12 | play{LADSPA.ar(1,1050,0.1!2)} 13 | 14 | play{Pan2.ar(WhiteNoise.ar(0.1),0)} 15 | play{Pan2.ar(LADSPA.ar(1,1050,0.1),0)} 16 | 17 | //plate reverb, mono input, stereo output. 18 | play{LADSPA.ar(2,1779,PinkNoise.ar(LFNoise1.ar(10,0.5)),0.5,0.9,0.5,0.9)} 19 | 20 | //plate reverb, stereo in/out. 21 | play{LADSPA.ar(2,1795,PinkNoise.ar(LFNoise1.ar(2)),PinkNoise.ar(LFNoise1.ar(10)),0.5,0.7,0.5,0.7)} 22 | 23 | play{Limiter.ar(({|i|LADSPA.ar(1,1412,SinOsc.ar(i*20+40,0,LFNoise1.ar(0.1)),SinOsc.ar(i*20+500+LFNoise1.kr(0.01,10),0,LFNoise1.ar(0.1)))*0.4}!7).sum!2)} 24 | 25 | play{LADSPA.ar(1!2,1209,0.4,0.01,SinOsc.ar([50,200],0,LFNoise1.kr(0.1)).sum)} 26 | -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/LoopBufUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | LoopBufUGens 8 | 9 | 10 | 11 | 12 | 13 |

LoopBufUGens

14 | 15 |

sc3-plugins:LoopBufUGens

16 | 17 |

by sc3-plugins

18 | 19 |
LoopBufUGens.html
20 |
help/FreqScope.help.rtf
21 |
help/LoopBuf.help.rtf
22 |
help/SCEnvelopeEdit.help.rtf
23 |
help/SCFreqScope.help.rtf
24 | -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/classes/LJP Classes/Extensions/Function-benchmark.sc: -------------------------------------------------------------------------------- 1 | +Function{ 2 | // time in ms to evaluate function num times 3 | benchmark{ arg num=1; 4 | var time1, time2, total; 5 | total = 0; 6 | num.do({ arg i; 7 | time1 = Main.elapsedTime; 8 | this.value; 9 | time2 = Main.elapsedTime; 10 | total = total + time2 - time1; 11 | }); 12 | ^(total*1000) 13 | } 14 | } -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/classes/LJP Classes/Extensions/Integer-asPaddedString.sc: -------------------------------------------------------------------------------- 1 | + Integer { 2 | 3 | asPaddedString { arg size = 2, padChar = "0", padSide = \left; 4 | var string, stringSize; 5 | 6 | string = this.asString; 7 | stringSize = string.size; 8 | 9 | if(padSide == \right, { 10 | (size - stringSize).do({ 11 | string = string ++ padChar; 12 | }); 13 | },{ 14 | (size - stringSize).do({ 15 | string = padChar ++ string; 16 | }); 17 | }); 18 | ^string 19 | } 20 | } 21 | 22 | +SequenceableCollection { 23 | asPaddedString { ^this.performUnaryOp('asPaddedString') } 24 | } -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/classes/LJP Classes/Extensions/SimpleNumber-asTimeString.sc: -------------------------------------------------------------------------------- 1 | + SimpleNumber{ 2 | 3 | // receiver is a time in seconds 4 | // returns string "hh:mm:ss:ttt" where t is milliseconds 5 | asTimeStringLJP{ 6 | var decimal, hours, minutes, seconds, mseconds, string; 7 | decimal = this.asInteger; 8 | 9 | hours = (decimal.div(3600)).asString; 10 | if(hours.size < 2, { hours = "0" ++ hours }); 11 | 12 | minutes = (decimal.div(60) % 60).asString; 13 | if(minutes.size < 2, { minutes = "0" ++ minutes }); 14 | 15 | seconds = (decimal % 60).asString; 16 | if(seconds.size < 2, { seconds = "0" ++ seconds }); 17 | 18 | mseconds = (this.frac*1000).round.asInteger.asString; 19 | if(mseconds.size < 3, { 20 | mseconds = "0" ++ mseconds; 21 | if(mseconds.size < 3, { mseconds = "0" ++ mseconds }); 22 | }); 23 | 24 | ^(hours ++ ":" ++ minutes ++ ":" ++ seconds ++ ":" ++ mseconds).asString 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/classes/LJP Classes/Extensions/midinote.sc: -------------------------------------------------------------------------------- 1 | +SimpleNumber { 2 | 3 | midinote { 4 | var midi, notes; 5 | midi = (this + 0.5).asInteger; 6 | notes = ["c ", "c#", "d ", "d#", "e ", "f ", "f#", "g ", "g#", "a ", "a#", "b "]; 7 | ^(notes[midi%12] ++ midi.div(12)) 8 | } 9 | } 10 | 11 | +String { 12 | notemidi { 13 | var twelves, ones, octaveIndex, midis; 14 | 15 | midis = Dictionary[($c->0),($d->2),($e->4),($f->5),($g->7),($a->9),($b->11)]; 16 | ones = midis.at(this[0].toLower); 17 | 18 | if( (this[1].isDecDigit), { 19 | octaveIndex = 1; 20 | },{ 21 | octaveIndex = 2; 22 | if( (this[1] == $#) || (this[1].toLower == $s) || (this[1] == $+), { 23 | ones = ones + 1; 24 | },{ 25 | if( (this[1] == $b) || (this[1].toLower == $f) || (this[1] == $-), { 26 | ones = ones - 1; 27 | }); 28 | }); 29 | }); 30 | twelves = (this.copyRange(octaveIndex, this.size).asInteger) * 12; 31 | ^(twelves + ones) 32 | } 33 | } 34 | 35 | +SequenceableCollection { 36 | 37 | midinote { ^this.performUnaryOp('midinote') } 38 | notemidi { ^this.performUnaryOp('notemidi') } 39 | } -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/classes/LJP Classes/Extensions/tuningScale.sc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/LoopBufUGens/sc/classes/LJP Classes/Extensions/tuningScale.sc -------------------------------------------------------------------------------- /source/LoopBufUGens/sc/classes/LoopBuf.sc: -------------------------------------------------------------------------------- 1 | // LoopBuf by Lance Putnam 2004 2 | // lance@uwalumni.com 3 | 4 | LoopBuf : MultiOutUGen { 5 | *ar { arg numChannels, bufnum=0, rate=1.0, gate=1.0, startPos=0.0, startLoop, endLoop, interpolation=2; 6 | ^this.multiNew('audio', numChannels, bufnum, rate, gate, startPos, startLoop, endLoop, interpolation) 7 | } 8 | 9 | init { arg argNumChannels ... theInputs; 10 | inputs = theInputs; 11 | ^this.initOutputs(argNumChannels, rate); 12 | } 13 | argNamesInputsOffset { ^2 } 14 | } 15 | 16 | //FLoopBuf : LoopBuf { 17 | //} -------------------------------------------------------------------------------- /source/MCLDUGens/sc/Help/PV_DiffMags.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 |


17 |

Please see PV_MagSubtract

18 | 19 | 20 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/Help/attachments/Friction/friction1-diaram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/MCLDUGens/sc/Help/attachments/Friction/friction1-diaram.png -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/BufMax.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: BufMax 2 | summary:: detect the largest value (and its position) in an array of UGens 3 | categories:: UGens>Multichannel, UGens>Analysis 4 | related:: Classes/BufMin, Classes/ArrayMax 5 | 6 | DESCRIPTION:: 7 | 8 | Finds the largest value in a Buffer, and outputs the value and the index. 9 | 10 | 11 | (Note: doesn't currently handle multichannel buffers in any clever way, treats them as if they were single-channel.) 12 | 13 | CLASSMETHODS:: 14 | 15 | METHOD:: kr 16 | argument:: bufnum 17 | argument:: gate 18 | You don't need to make use of the gate control: if you do use it, the calculation is only performed when gate>0. 19 | returns:: # val, index 20 | 21 | 22 | EXAMPLES:: 23 | 24 | code:: 25 | s.boot; 26 | 27 | b = Buffer.alloc(s, 100); 28 | b.zero; 29 | b.set(33, 1.034); 30 | // This should detect the 33rd value as the highest... 31 | x = {BufMax.kr(b).poll}.play; 32 | 33 | // ...until we set a new winner... 34 | b.set(74, 1.038); 35 | :: 36 | 37 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/BufMin.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: BufMin 2 | summary:: detect the largest value (and its position) in an array of UGens 3 | categories:: UGens>Multichannel, UGens>Analysis 4 | related:: Classes/ArrayMin, Classes/BufMax 5 | 6 | DESCRIPTION:: 7 | 8 | Finds the smallest value in a Buffer, and outputs the value and the index. 9 | 10 | 11 | (Note: doesn't currently handle multichannel buffers in any clever way, treats them as if they were single-channel.) 12 | 13 | CLASSMETHODS:: 14 | 15 | METHOD:: kr 16 | argument:: bufnum 17 | argument:: gate 18 | You don't need to make use of the gate control: if you do use it, the calculation is only performed when gate>0. 19 | returns:: # val, index 20 | 21 | 22 | EXAMPLES:: 23 | 24 | code:: 25 | s.boot; 26 | 27 | b = Buffer.alloc(s, 100); 28 | b.zero; 29 | b.set(33, -1.034); 30 | // This should detect the 33rd value as the highest... 31 | x = {BufMin.kr(b).poll}.play; 32 | 33 | // ...until we set a new winner... 34 | b.set(74, -1.038); 35 | :: 36 | 37 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/FFTSlope.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: FFTSlope 2 | summary:: Spectral slope 3 | categories:: UGens>Analysis, UGens>FFT 4 | 5 | DESCRIPTION:: 6 | Given an FFT chain, this measures the spectral slope, which is the slope of the linear correlation line derived from the spectral magnitudes. 7 | 8 | CLASSMETHODS:: 9 | METHOD:: kr 10 | argument:: buffer 11 | 12 | EXAMPLES:: 13 | 14 | code:: 15 | // Very artificial example - just filtering some noise. 16 | s.boot; 17 | b = Buffer.alloc(s,2048,1); 18 | ( 19 | x = { 20 | var in, chain, freq, val; 21 | freq = MouseX.kr(20000, 1000, 1); 22 | in = LPF.ar(WhiteNoise.ar, freq); 23 | chain = FFT(b.bufnum, in); 24 | 25 | val = FFTSlope.kr(chain); 26 | 27 | Out.ar(0, in.dup * 0.1); 28 | (val * 10000).poll(10); // Poll but scaled so more readable! 29 | }.play(s); 30 | ) 31 | x.free; 32 | :: 33 | 34 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/ICepstrum.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: ICepstrum 2 | summary:: Transform a cepstrum back to a spectrum 3 | categories:: UGens>FFT 4 | related:: Classes/Cepstrum 5 | 6 | DESCRIPTION:: 7 | See link::Classes/Cepstrum::. 8 | 9 | CLASSMETHODS:: 10 | 11 | METHOD:: new 12 | argument:: cepchain 13 | a cepstral chain, such as that produced by Cepstrum or any PV_ UGens that have operated on a cepstrum. 14 | argument:: fftbuf 15 | The FFT buffer, typically the one that was the original source used for the forward transform. 16 | returns:: a standard FFT chain. 17 | 18 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/InsideOut.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: InsideOut 2 | summary:: Distortion by subtracting magnitude from 1 3 | categories:: UGens>Filters 4 | 5 | DESCRIPTION:: 6 | If the signal is positive, outputs (1 - input). 7 | 8 | If the signal is negative, outputs ( - 1 - input). 9 | 10 | It really distorts an audio signal. MIND YOUR EARS! 11 | 12 | 13 | EXAMPLES:: 14 | 15 | code:: 16 | s = Server.internal.boot; 17 | x = {InsideOut.ar(SinOsc.ar(220) + PinkNoise.ar(0.9), 0.1)}.scope; 18 | x.free; 19 | // Wear headphones and turn the vol down for this one 20 | x = {InsideOut.ar(AudioIn.ar([1,2]).mean, 0.01).dup(2)}.scope; 21 | x.free; 22 | :: 23 | 24 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/ListTrig2.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: ListTrig2 2 | summary:: Emit a sequence of triggers at specified time offsets 3 | categories:: UGens>Buffer 4 | related:: Classes/ListTrig, Classes/Logger 5 | 6 | DESCRIPTION:: 7 | Just like ListTrig, but takes a list of time-intervals ("deltas") rather than a list of time offsets. 8 | 9 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/Perlin3.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: Perlin3 2 | summary:: 3D Perlin Noise 3 | categories:: UGens>Generators>Chaotic 4 | 5 | DESCRIPTION:: 6 | Perlin noise is a type of gradient noise devised by Ken Perlin, and commonly used to add texture to objects rendered in computer graphics. It is deterministic: for a given input co-ordinate it always returns the same output value. To make audible noise you will typically need to define some trajectory through the co-ordinate space. 7 | 8 | 9 | EXAMPLES:: 10 | 11 | 12 | code:: 13 | s.boot 14 | 15 | {Perlin3.ar(Integrator.ar(K2A.ar(MouseX.kr(0, 0.1))), Integrator.ar(K2A.ar(MouseY.kr(0, 0.1))))}.play(s) 16 | 17 | {Perlin3.ar(*{Line.ar(0, 1000, 30)}.dup(3))}.plot(1) 18 | :: 19 | 20 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/PulseDPW.schelp: -------------------------------------------------------------------------------- 1 | CLASS:: PulseDPW 2 | summary:: super-efficient square-wave oscillator with low aliasing 3 | categories:: UGens>Generators 4 | related:: Classes/SawDPW 5 | 6 | DESCRIPTION:: 7 | Use this just like the Pulse UGen - as with SawDPW, this uses the "Differentiated Parabolic Wave" technique to create a waveform extremely efficiently and with low (but not zero) aliasing. 8 | 9 | freq - Frequency in Hertz (control rate) 10 | 11 | width - Pulse width ratio from zero to one. 0.5 makes a square wave. This cannot be modulated. 12 | 13 | This is actually a "pseudo-ugen" based on SawDPW rather than a separate UGen in itself, but is still very efficient. Compare the CPU usage in these examples: 14 | 15 | EXAMPLES:: 16 | code:: 17 | // modulate frequency 18 | { Pulse .ar(XLine.kr(40,4000,6),0.1, 0.2) }.play; 19 | { PulseDPW.ar(XLine.kr(40,4000,6),0.1, 0.2) }.play; 20 | 21 | // two band limited square waves thru a resonant low pass filter 22 | { RLPF.ar(Pulse .ar([100,250],0.5,0.1), XLine.kr(8000,400,5), 0.05) }.play; 23 | { RLPF.ar(PulseDPW.ar([100,250],0.5,0.1), XLine.kr(8000,400,5), 0.05) }.play; 24 | :: 25 | 26 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/HelpSource/Classes/friction1-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/MCLDUGens/sc/HelpSource/Classes/friction1-diagram.png -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLDCepstrumUGens.sc: -------------------------------------------------------------------------------- 1 | /** 2 | * Cepstrum ugens for SC 3 | * (c) 2009, 2010 Dan Stowell, all rights reserved. 4 | * Released under the GPL, v2 or later. 5 | */ 6 | 7 | Cepstrum : PV_ChainUGen 8 | { 9 | *new { | cepbuf, fftchain | 10 | ^this.multiNew('control', cepbuf, fftchain) 11 | } 12 | } 13 | 14 | ICepstrum : Cepstrum { 15 | *new { | cepchain, fftbuf | 16 | ^this.multiNew('control', cepchain, fftbuf) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLDFilterUGens.sc: -------------------------------------------------------------------------------- 1 | 2 | Friction : Filter { 3 | 4 | *ar { | in, friction = 0.5, spring = 0.414, damp = 0.313, mass = 0.1, beltmass = 1, mul=1, add=0 | 5 | ^this.multiNew('audio', in, friction, spring, damp, mass, beltmass).madd(mul, add) 6 | } 7 | *kr { | in, friction = 0.5, spring = 0.414, damp = 0.313, mass = 0.1, beltmass = 1, mul=1, add=0 | 8 | ^this.multiNew('control', in, friction, spring, damp, mass, beltmass).madd(mul, add) 9 | } 10 | *categories { ^ #["UGens>Filters>Chaotic"] } 11 | } 12 | 13 | Crest : UGen { 14 | *kr { | in, numsamps=400, gate=1, mul=1, add=0 | 15 | ^this.multiNew('control', in, numsamps, gate).madd(mul, add) 16 | } 17 | *categories { ^ #["UGens>Analysis"] } 18 | } 19 | 20 | Goertzel : MultiOutUGen { 21 | 22 | *kr { arg in = 0.0, bufsize=1024, freq, hop=1; 23 | ^this.multiNew('control', in, bufsize, freq, hop) 24 | } 25 | init { arg ... theInputs; 26 | inputs = theInputs; 27 | ^this.initOutputs(2, rate); // outputs [real, imag] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLDGetenvUGen.sc: -------------------------------------------------------------------------------- 1 | Getenv : UGen { 2 | *new { |key, defaultval=0| 3 | ^this.multiNewList(['scalar', key, defaultval]); 4 | } 5 | *new1 { | rate, key, defaultval | 6 | key = key ? \SHLVL; // SHLVL is numeric, at least... 7 | 8 | key = key.asString.collectAs(_.ascii, Array); 9 | ^super.new.rate_(rate).addToSynth.init([key.size, defaultval] ++ key); 10 | } 11 | 12 | init { arg theInputs; 13 | // store the inputs as an array 14 | inputs = theInputs; 15 | } 16 | *categories { ^ #["UGens>InfoUGens"] } 17 | } 18 | 19 | /* 20 | s.boot 21 | {Clockmus.kr.poll(10)}.play 22 | ( 23 | x = { 24 | var t1,s1,t2,s2,t3; 25 | t1 = Clockmus.kr; 26 | s1 = SinOsc.ar((300..400)).mean; 27 | t2 = Clockmus.kr; 28 | s2 = SinOsc.ar((300..320)).mean; 29 | t3 = Clockmus.kr; 30 | (t2-t1).poll(1, "101 sines"); 31 | (t3-t2).poll(1, "21 sines"); 32 | [s1, s2] 33 | }.play 34 | ) 35 | x.trace 36 | */ 37 | Clockmus : UGen { 38 | *kr { 39 | ^this.multiNew('control') 40 | } 41 | *categories { ^ #["UGens>InfoUGens"] } 42 | } 43 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLDOscUGens.sc: -------------------------------------------------------------------------------- 1 | SawDPW : UGen { 2 | *ar { arg freq = 440.0, iphase = 0.0, mul = 1.0, add = 0.0; 3 | ^this.multiNew('audio', freq, iphase).madd(mul, add) 4 | } 5 | 6 | *kr { arg freq = 440.0, iphase = 0.0, mul = 1.0, add = 0.0; 7 | ^this.multiNew('control', freq, iphase).madd(mul, add) 8 | } 9 | } 10 | 11 | 12 | PulseDPW { 13 | *ar { arg freq=440.0, width = 0.5, mul = 1.0, add = 0.0; 14 | ^this.new('ar', freq, width, mul, add); 15 | } 16 | 17 | *kr { arg freq=440.0, width = 0.5, mul = 1.0, add = 0.0; 18 | ^this.new('kr', freq, width, mul, add); 19 | } 20 | 21 | // The difference between two saws can be a square 22 | *new { arg rate='ar', freq=440.0, width = 0.5, mul = 1.0, add = 0.0; 23 | ^( 24 | SawDPW.perform(rate, freq, 0) 25 | - 26 | SawDPW.perform(rate, freq, (width+width).wrap(-1, 1)) 27 | ).madd(mul, add); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLDSparseUGens.sc: -------------------------------------------------------------------------------- 1 | MatchingP : MultiOutUGen { 2 | 3 | *ar { arg dict=0, in=0, dictsize=1, ntofind=1, hop=1, method=0; 4 | ^this.multiNew('audio', dict, in, dictsize, ntofind, hop, method) 5 | } 6 | *kr { arg dict=0, in=0, dictsize=1, ntofind=1, hop=1, method=0; 7 | ^this.multiNew('control', dict, in, dictsize, ntofind, hop, method) 8 | } 9 | init { arg ... theInputs; 10 | inputs = theInputs; 11 | ^this.initOutputs(2 + (theInputs[3]*2), rate); 12 | } 13 | *categories { ^ #["UGens>Buffer", "UGens>Analysis"] } 14 | } 15 | 16 | MatchingPResynth : UGen { 17 | *ar { arg dict, method=0, trigger, residual=0 ... activs; 18 | ^this.multiNewList(['audio', dict, method, (activs.size / 2), trigger, residual] ++ activs) 19 | } 20 | *kr { arg dict, method=0, trigger, residual=0 ... activs; 21 | ^this.multiNewList(['control', dict, method, (activs.size / 2), trigger, residual] ++ activs) 22 | } 23 | *categories { ^ #["UGens>Buffer", "UGens>Analysis"] } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLDTriggeredStatsUGens.sc: -------------------------------------------------------------------------------- 1 | MeanTriggered : Filter { 2 | 3 | *ar { arg in = 0.0, trig=0.0, length = 10, mul = 1.0, add = 0.0; 4 | ^this.multiNew('audio', in, trig, length).madd(mul, add) 5 | } 6 | *kr { arg in = 0.0, trig=0.0, length = 10, mul = 1.0, add = 0.0; 7 | ^this.multiNew('control', in, trig, length).madd(mul, add) 8 | } 9 | *categories { ^ #["UGens>Analysis", "UGens>Maths"] } 10 | } 11 | 12 | MedianTriggered : Filter { 13 | 14 | *ar { arg in = 0.0, trig=0.0, length = 10, mul = 1.0, add = 0.0; 15 | ^this.multiNew('audio', in, trig, length).madd(mul, add) 16 | } 17 | *kr { arg in = 0.0, trig=0.0, length = 10, mul = 1.0, add = 0.0; 18 | ^this.multiNew('control', in, trig, length).madd(mul, add) 19 | } 20 | *categories { ^ #["UGens>Analysis", "UGens>Maths"] } 21 | } 22 | -------------------------------------------------------------------------------- /source/MCLDUGens/sc/MCLD_CQ_UGens.sc: -------------------------------------------------------------------------------- 1 | CQ_Diff : MultiOutUGen { // Based on Qitch 2 | 3 | *kr { arg in1 = 0.0, in2 = 0.0, databufnum; 4 | ^this.multiNew('control', in1, in2, databufnum) 5 | } 6 | 7 | 8 | init { arg ... theInputs; 9 | inputs = theInputs; 10 | ^this.initOutputs(1, rate); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/MdaUGens/sc/MdaUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | MdaUGens 8 | 9 | 10 | 11 | 12 | 13 |

MdaUGens

14 | 15 |

sc3-plugins:MdaUGens

16 | 17 |

by sc3-plugins

18 | 19 | MdaUGens.html
20 |
Help/MdaPiano.html
21 | -------------------------------------------------------------------------------- /source/MdaUGens/sc/MdaUGens.sc: -------------------------------------------------------------------------------- 1 | /* 2 | MdaUGens: UGens ported from Paul Kellett's VST plugins http://mda.smartelectronix.com/ 3 | MdaPiano ported to SC3 by Dan Stowell. 4 | 5 | (c) Paul Kellett, Dan Stowell 6 | The mda plug-ins are released under the MIT license or under the GPL 7 | "either version 2 of the License, or (at your option) any later version". 8 | */ 9 | MdaPiano : MultiOutUGen { 10 | *ar { 11 | | freq=440.0, gate=1, vel=100, decay=0.8, release=0.8, hard=0.8, velhard=0.8, muffle=0.8, velmuff=0.8, velcurve=0.8, stereo=0.2, tune=0.5, random=0.1, stretch=0.1, sustain=0, mul=1, add=0 | 12 | ^this.multiNew('audio', freq, gate, vel, decay, release, hard, velhard, muffle, velmuff, velcurve, stereo, tune, random, stretch, sustain).madd(mul, add) 13 | } 14 | 15 | init { arg ... theInputs; 16 | inputs = theInputs; 17 | ^this.initOutputs(2, rate); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/MembraneUGens/Membrane_shape.h: -------------------------------------------------------------------------------- 1 | 2 | #ifdef __cplusplus 3 | extern "C" { 4 | #endif 5 | 6 | #define SHAPE_N 2 7 | 8 | typedef struct { 9 | int id; 10 | int x; 11 | int y; 12 | int is_edge; 13 | } t_point; 14 | 15 | typedef struct { 16 | t_point *a; 17 | t_point *b; 18 | } t_line; 19 | 20 | typedef struct { 21 | int shape_type; 22 | t_line **lines; 23 | int lines_n; 24 | t_point **points; 25 | int points_n; 26 | int edge_n; 27 | } t_shape; 28 | 29 | extern t_shape *getShape(int shape_type, int size); 30 | extern void free_shape(t_shape *shape); 31 | 32 | #ifdef __cplusplus 33 | } 34 | #endif 35 | -------------------------------------------------------------------------------- /source/MembraneUGens/sc/CHANGES: -------------------------------------------------------------------------------- 1 | 2 | 20080328 - patch from dan stowell with some nice efficiencies saving 1/3 cpu 3 | - use RTAlloc/RTFree in MembraneCirc.cpp 4 | 20080330 - zero allocated memory... 5 | - combine Membrane and MembraneCirc into Membrane.cpp, giving 6 | MembraneCircle and MembraneHexagon UGens 7 | - some tweaks by Dan Stowell while adding to the sc3-plugins SVN repository 8 | -------------------------------------------------------------------------------- /source/MembraneUGens/sc/MembraneUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | MembraneUGens 8 | 9 | 10 | 11 | 12 | 13 |

MembraneUGens

14 | 15 |

sc3-plugins:MembraneUGens

16 | 17 |

by sc3-plugins

18 | 19 |
MembraneUGens.html
20 |
Help/MembraneCircle.html
21 | -------------------------------------------------------------------------------- /source/MembraneUGens/sc/MembraneUGens.sc: -------------------------------------------------------------------------------- 1 | MembraneCircle : UGen { 2 | *ar { arg excitation, tension=0.05, loss = 0.99999, mul = 1.0, add = 0.0; 3 | ^this.multiNew('audio', excitation, tension, loss).madd(mul, add) 4 | } 5 | checkInputs { ^this.checkSameRateAsFirstInput } 6 | } 7 | 8 | MembraneHexagon : MembraneCircle { 9 | *ar { arg excitation, tension=0.05, loss = 0.99999, mul = 1.0, add = 0.0; 10 | ^this.multiNew('audio', excitation, tension, loss).madd(mul, add) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/NCAnalysis.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * NCAnalysis.cpp 3 | * xSC3ExtPlugins-Universal 4 | * 5 | * Created by Nick Collins on 24/03/2009. 6 | * Copyright 2009 Nick Collins. All rights reserved. 7 | * 8 | */ 9 | 10 | #include "NCAnalysis.h" 11 | 12 | 13 | 14 | extern "C" 15 | { 16 | } 17 | 18 | 19 | InterfaceTable *ft; 20 | 21 | 22 | void init_SCComplex(InterfaceTable *inTable); 23 | 24 | extern void loadSMS(InterfaceTable *inTable); 25 | extern void loadTPV(InterfaceTable *inTable); 26 | extern void loadWaveletDaub(InterfaceTable *inTable); 27 | extern void loadWalshHadamard(InterfaceTable *inTable); 28 | extern void loadLPCAnalyzer(InterfaceTable *inTable); 29 | extern void loadMedianSeparation(InterfaceTable *inTable); 30 | 31 | 32 | PluginLoad(NCAnalysis) 33 | { 34 | 35 | ft= inTable; 36 | 37 | init_SCComplex(inTable); 38 | 39 | //scfft_global_init(); 40 | 41 | loadSMS(inTable); 42 | loadTPV(inTable); 43 | loadWaveletDaub(inTable); 44 | loadWalshHadamard(inTable); 45 | loadLPCAnalyzer(inTable); 46 | loadMedianSeparation(inTable); 47 | } 48 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/NCAnalysis.h: -------------------------------------------------------------------------------- 1 | /* 2 | * NCAnalysis.h 3 | * xSC3ExtPlugins-Universal 4 | * 5 | * Created by Nick Collins on 24/03/2009. 6 | * Copyright 2009 Nick Collins. All rights reserved. 7 | * 8 | */ 9 | 10 | //#include 11 | 12 | #include "SC_fftlib.h" 13 | #include "FFT_UGens.h" 14 | //#include "SCComplex.h" 15 | //#include "SC_PlugIn.h" 16 | 17 | 18 | 19 | //#undef scfft_create 20 | //#undef scfft_dofft 21 | //#undef scfft_doifft 22 | //#undef scfft_destroy 23 | //#include "SC_fftlib_old.h" 24 | //#include "SC_Constants.h" 25 | 26 | //#include 27 | #include 28 | #include 29 | //#include 30 | //#include 31 | 32 | //#include "FFT_UGens.h" 33 | 34 | //declared in FFT_UGens.h 35 | //extern InterfaceTable *ft; 36 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/HelpSource/Classes/WaveletDaub.schelp: -------------------------------------------------------------------------------- 1 | class:: WaveletDaub 2 | summary:: decomposition into Daub4 wavelets, and reconstruction 3 | related:: Classes/WalshHadamard 4 | categories:: UGens>Analysis 5 | 6 | 7 | Description:: 8 | 9 | Wavelet transform using the Daub4 basis. 10 | 11 | The plug-in demonstrates the transform in the context of a filter; choose how many of the strong::n:: basis elements to use in the reconstruction. 12 | 13 | 14 | Classmethods:: 15 | 16 | method::ar 17 | 18 | argument::input 19 | Original signal to effect 20 | 21 | argument::n 22 | size of wavelet transform. Must be divisible by 64, the standard blocksize. 23 | 24 | argument::which 25 | Basis elements whose indices are below this number will be zeroed. The default 0 means the identity transform, all basis elements will be used in the reconstruction. 26 | 27 | 28 | Examples:: 29 | 30 | code:: 31 | {var n= 1024; WaveletDaub.ar(SoundIn.ar, n, MouseX.kr(0,n))}.play 32 | 33 | {var n= 1024; WaveletDaub.ar(Saw.ar(MouseY.kr(50,10000, 'exponential'),0.5), n, MouseX.kr(0,n))}.play 34 | :: 35 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/NCAnalysisUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | NCAnalysisUGens 8 | 9 | 10 | 11 | 12 | 13 |

NCAnalysisUGens

14 | 15 |

sc3-plugins:NCAnalysisUGens

16 | 17 |

by sc3-plugins:Nick Collins

18 | 19 |
help/SMS.html
20 |
help/TPV.html
21 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/classes/LPCAnalyzer.sc: -------------------------------------------------------------------------------- 1 | LPCAnalyzer : UGen 2 | { 3 | *ar { arg input=0, source=0.01, n=256, p=10,testE=0,delta=0.999, windowtype=0, mul = 1.0, add = 0.0; 4 | ^this.multiNew('audio',input, source, n, p, testE, delta, windowtype).madd(mul, add); 5 | } 6 | } -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/classes/MedianSeparation.sc: -------------------------------------------------------------------------------- 1 | 2 | 3 | //only triggers from FFT input 4 | 5 | //PV_ChainUGen 6 | //2 outputs for separate FFTs 7 | MedianSeparation : MultiOutUGen { 8 | 9 | *new { 10 | //paper notes p=2 better quality 11 | arg fft, fftharmonic, fftpercussive, fftsize=1024, mediansize=17, hardorsoft=0, p=2, medianormax=0; 12 | 13 | ^this.multiNew('control', fft, fftharmonic, fftpercussive, fftsize, mediansize, hardorsoft, p, medianormax); 14 | } 15 | 16 | init { arg ... theInputs; 17 | inputs = theInputs; 18 | ^this.initOutputs(2, rate); 19 | } 20 | 21 | } 22 | 23 | 24 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/classes/SMS.sc: -------------------------------------------------------------------------------- 1 | 2 | SMS : MultiOutUGen 3 | { 4 | *ar { arg input,maxpeaks=80, currentpeaks=80, tolerance=4, noisefloor= 0.2, freqmult=1.0,freqadd=0.0, formantpreserve=0, useifft=0, ampmult=1.0, graphicsbufnum, mul=1.0, add=0.0; 5 | ^this.multiNew('audio',input,maxpeaks, currentpeaks, tolerance, noisefloor, freqmult,freqadd,formantpreserve, useifft, ampmult, graphicsbufnum ? -1).madd(mul, add); 6 | } 7 | 8 | init { arg ... theInputs; 9 | inputs = theInputs; 10 | ^this.initOutputs(2, rate); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/classes/TPV.sc: -------------------------------------------------------------------------------- 1 | TPV : UGen { 2 | 3 | *ar { arg chain, windowsize=1024, hopsize=512, maxpeaks=80, currentpeaks, freqmult=1.0, tolerance=4, noisefloor= 0.2, mul=1.0, add=0.0; 4 | 5 | ^this.multiNew('audio',chain, windowsize, hopsize, maxpeaks, currentpeaks, freqmult, tolerance, noisefloor).madd(mul, add); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/classes/WalshHadamard.sc: -------------------------------------------------------------------------------- 1 | WalshHadamard : UGen { 2 | 3 | *ar { arg input, which=0,mul=1.0, add=0.0; 4 | 5 | ^this.multiNew('audio',input, which).madd(mul, add); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/NCAnalysisUGens/sc/classes/WaveletDaub.sc: -------------------------------------------------------------------------------- 1 | WaveletDaub : UGen { 2 | 3 | *ar { arg input, n=64, which=0,mul=1.0, add=0.0; 4 | 5 | ^this.multiNew('audio',input,n, which).madd(mul, add); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/Neuromodules/sc/HelpSource/Classes/neuromodule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/Neuromodules/sc/HelpSource/Classes/neuromodule.png -------------------------------------------------------------------------------- /source/NovaDiskIO/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_library(SNDFILE sndfile) 2 | 3 | if(CPP11 AND NOT(SNDFILE MATCHES -NOTFOUND) ) 4 | 5 | include_directories(../../external_libraries/TLSF-2.4.6/src/ sync/include) 6 | BUILD_PLUGIN(NovaDiskIO 7 | "NovaDiskIO.cpp;../../external_libraries/TLSF-2.4.6/src/tlsf.c" 8 | "sndfile" 9 | "NovaDiskIO") 10 | endif() 11 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/doc/changelog.qbk: -------------------------------------------------------------------------------- 1 | [/ 2 | Copyright Vicente J. Botet Escriba 2013. 3 | Copyright Andrey Semashev 2013. 4 | Copyright Tim Blechmann 2013. 5 | Distributed under the Boost Software License, Version 1.0. 6 | (See accompanying file LICENSE_1_0.txt or copy at 7 | http://www.boost.org/LICENSE_1_0.txt) 8 | 9 | This document is a part of Boost.Sync library documentation. 10 | /] 11 | 12 | [section:changelog Changelog] 13 | 14 | [heading 1.0, Boost 1.55] 15 | 16 | This is the first release of the library since extraction from __boost_thread__. 17 | 18 | [endsect] 19 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/condition_variables.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Andrey Semashev 7 | */ 8 | /*! 9 | * \file condition_variables.hpp 10 | * 11 | * \brief This header includes all condition variable types. 12 | */ 13 | 14 | #ifndef BOOST_SYNC_CONDITION_VARIABLES_HPP_INCLUDED_ 15 | #define BOOST_SYNC_CONDITION_VARIABLES_HPP_INCLUDED_ 16 | 17 | #include 18 | 19 | #ifdef BOOST_HAS_PRAGMA_ONCE 20 | #pragma once 21 | #endif 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | #endif // BOOST_SYNC_CONDITION_VARIABLES_HPP_INCLUDED_ 28 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/detail/footer.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Andrey Semashev 7 | */ 8 | 9 | #if !defined(BOOST_SYNC_ENABLE_WARNINGS) 10 | 11 | #if defined(_MSC_VER) 12 | 13 | #pragma warning(pop) 14 | 15 | #elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 16 | 17 | #pragma GCC diagnostic pop 18 | 19 | #endif 20 | 21 | #endif // !defined(BOOST_SYNC_ENABLE_WARNINGS) 22 | 23 | #include 24 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/events.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Tim Blechmann 7 | */ 8 | /*! 9 | * \file events.hpp 10 | * 11 | * \brief This header includes all event types. 12 | */ 13 | 14 | #ifndef BOOST_SYNC_EVENTS_HPP_INCLUDED_ 15 | #define BOOST_SYNC_EVENTS_HPP_INCLUDED_ 16 | 17 | #include 18 | 19 | #ifdef BOOST_HAS_PRAGMA_ONCE 20 | #pragma once 21 | #endif 22 | 23 | #include 24 | #include 25 | 26 | #endif // BOOST_SYNC_EVENTS_HPP_INCLUDED_ 27 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/exceptions.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Andrey Semashev 7 | */ 8 | /*! 9 | * \file exceptions.hpp 10 | * 11 | * \brief This header includes all exception types. 12 | */ 13 | 14 | #ifndef BOOST_SYNC_EXCEPTIONS_HPP_INCLUDED_ 15 | #define BOOST_SYNC_EXCEPTIONS_HPP_INCLUDED_ 16 | 17 | #include 18 | 19 | #ifdef BOOST_HAS_PRAGMA_ONCE 20 | #pragma once 21 | #endif 22 | 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | #endif // BOOST_SYNC_EXCEPTIONS_HPP_INCLUDED_ 30 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/locks.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Andrey Semashev 7 | */ 8 | /*! 9 | * \file locks.hpp 10 | * 11 | * \brief This header includes all lock types. 12 | */ 13 | 14 | #ifndef BOOST_SYNC_LOCKS_HPP_INCLUDED_ 15 | #define BOOST_SYNC_LOCKS_HPP_INCLUDED_ 16 | 17 | #include 18 | 19 | #ifdef BOOST_HAS_PRAGMA_ONCE 20 | #pragma once 21 | #endif 22 | 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | 30 | #endif // BOOST_SYNC_LOCKS_HPP_INCLUDED_ 31 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/locks/lock_guard_fwd.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2007 Anthony Williams 7 | * (C) Copyright 2011-2012 Vicente J. Botet Escriba 8 | * (C) Copyright 2013 Andrey Semashev 9 | */ 10 | /*! 11 | * \file locks/lock_guard_fwd.hpp 12 | * 13 | * \brief This header declares an exclusive lock guard. 14 | */ 15 | 16 | #ifndef BOOST_SYNC_LOCKS_LOCK_GUARD_FWD_HPP_INCLUDED_ 17 | #define BOOST_SYNC_LOCKS_LOCK_GUARD_FWD_HPP_INCLUDED_ 18 | 19 | #include 20 | 21 | #ifdef BOOST_HAS_PRAGMA_ONCE 22 | #pragma once 23 | #endif 24 | 25 | #include 26 | 27 | namespace boost { 28 | 29 | namespace sync { 30 | 31 | /*! 32 | * \brief A unique lock scope guard 33 | */ 34 | template< typename Mutex > 35 | class lock_guard; 36 | 37 | } // namespace sync 38 | 39 | } // namespace boost 40 | 41 | #include 42 | 43 | #endif // BOOST_SYNC_LOCKS_LOCK_GUARD_FWD_HPP_INCLUDED_ 44 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/locks/shared_lock_fwd.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2007 Anthony Williams 7 | * (C) Copyright 2011-2012 Vicente J. Botet Escriba 8 | * (C) Copyright 2013 Andrey Semashev 9 | */ 10 | /*! 11 | * \file locks/shared_lock_fwd.hpp 12 | * 13 | * \brief This header declares a shared lock guard. 14 | */ 15 | 16 | #ifndef BOOST_SYNC_LOCKS_SHARED_LOCK_FWD_HPP_INCLUDED_ 17 | #define BOOST_SYNC_LOCKS_SHARED_LOCK_FWD_HPP_INCLUDED_ 18 | 19 | #include 20 | 21 | #ifdef BOOST_HAS_PRAGMA_ONCE 22 | #pragma once 23 | #endif 24 | 25 | #include 26 | 27 | namespace boost { 28 | 29 | namespace sync { 30 | 31 | /*! 32 | * \brief A unique lock scope guard 33 | */ 34 | template< typename Mutex > 35 | class shared_lock; 36 | 37 | } // namespace sync 38 | 39 | } // namespace boost 40 | 41 | #include 42 | 43 | #endif // BOOST_SYNC_LOCKS_SHARED_LOCK_FWD_HPP_INCLUDED_ 44 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/locks/unique_lock_fwd.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2007 Anthony Williams 7 | * (C) Copyright 2011-2012 Vicente J. Botet Escriba 8 | * (C) Copyright 2013 Andrey Semashev 9 | */ 10 | /*! 11 | * \file locks/unique_lock_fwd.hpp 12 | * 13 | * \brief This header declares an exclusive lock guard. 14 | */ 15 | 16 | #ifndef BOOST_SYNC_LOCKS_UNIQUE_LOCK_FWD_HPP_INCLUDED_ 17 | #define BOOST_SYNC_LOCKS_UNIQUE_LOCK_FWD_HPP_INCLUDED_ 18 | 19 | #include 20 | 21 | #ifdef BOOST_HAS_PRAGMA_ONCE 22 | #pragma once 23 | #endif 24 | 25 | #include 26 | 27 | namespace boost { 28 | 29 | namespace sync { 30 | 31 | /*! 32 | * \brief A unique lock scope guard 33 | */ 34 | template< typename Mutex > 35 | class unique_lock; 36 | 37 | } // namespace sync 38 | 39 | } // namespace boost 40 | 41 | #include 42 | 43 | #endif // BOOST_SYNC_LOCKS_UNIQUE_LOCK_FWD_HPP_INCLUDED_ 44 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/locks/unlock_guard_fwd.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Andrey Semashev 7 | */ 8 | /*! 9 | * \file locks/unlock_guard_fwd.hpp 10 | * 11 | * \brief This header declares a scope guard that temporarily releases the lock. 12 | */ 13 | 14 | #ifndef BOOST_SYNC_LOCKS_UNLOCK_GUARD_FWD_HPP_INCLUDED_ 15 | #define BOOST_SYNC_LOCKS_UNLOCK_GUARD_FWD_HPP_INCLUDED_ 16 | 17 | #include 18 | 19 | #ifdef BOOST_HAS_PRAGMA_ONCE 20 | #pragma once 21 | #endif 22 | 23 | #include 24 | 25 | namespace boost { 26 | 27 | namespace sync { 28 | 29 | /*! 30 | * \brief An unlock scope guard 31 | */ 32 | template< typename Lockable > 33 | class unlock_guard; 34 | 35 | } // namespace sync 36 | 37 | } // namespace boost 38 | 39 | #include 40 | 41 | #endif // BOOST_SYNC_LOCKS_UNLOCK_GUARD_FWD_HPP_INCLUDED_ 42 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/include/boost/sync/mutexes.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Distributed under the Boost Software License, Version 1.0. 3 | * (See accompanying file LICENSE_1_0.txt or copy at 4 | * http://www.boost.org/LICENSE_1_0.txt) 5 | * 6 | * (C) Copyright 2013 Andrey Semashev 7 | */ 8 | /*! 9 | * \file mutexes.hpp 10 | * 11 | * \brief This header includes all mutex types. 12 | */ 13 | 14 | #ifndef BOOST_SYNC_MUTEXES_HPP_INCLUDED_ 15 | #define BOOST_SYNC_MUTEXES_HPP_INCLUDED_ 16 | 17 | #include 18 | 19 | #ifdef BOOST_HAS_PRAGMA_ONCE 20 | #pragma once 21 | #endif 22 | 23 | #include 24 | #include 25 | #include 26 | #include 27 | 28 | #endif // BOOST_SYNC_MUTEXES_HPP_INCLUDED_ 29 | -------------------------------------------------------------------------------- /source/NovaDiskIO/sync/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Automatic redirection failed, please go to 7 |
doc/html/index.html  
8 |

© Copyright Andrey Semashev, 2013

9 |

© Copyright Vicente J. Botet Escriba, 2013

10 |

© Copyright Tim Blechmann, 2013

11 |

Distributed under the Boost Software License, Version 1.0. (See accompanying 12 | file LICENSE_1_0.txt or copy 13 | at www.boost.org/LICENSE_1_0.txt)

14 | 15 | 16 | -------------------------------------------------------------------------------- /source/OteyPianoUGens/reverb.h: -------------------------------------------------------------------------------- 1 | #ifndef REVERB_H 2 | #define REVERB_H 3 | #include "SC_PlugIn.h" 4 | extern InterfaceTable *ft; 5 | extern World * gWorld; 6 | class Reverb { 7 | public: 8 | Reverb(float c1, float c3, float a, float mix, float Fs); 9 | ~Reverb(); 10 | float reverb(float in); 11 | void* operator new(size_t sz){ 12 | return RTAlloc(gWorld, sizeof(Reverb)); 13 | } 14 | void operator delete(void* pObject) { 15 | RTFree(gWorld, (Reverb*)pObject); 16 | } 17 | float mix; 18 | Delay d[8]; 19 | float A[8][8]; 20 | float o[8]; 21 | float b[8]; 22 | float c[8]; 23 | Filter decay[8]; 24 | }; 25 | 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /source/OteyPianoUGens/sc/classes/OteyPiano.sc: -------------------------------------------------------------------------------- 1 | OteyPiano : UGen 2 | { 3 | 4 | *ar { arg freq=440,vel=1,t_gate=0,rmin=0.35,rmax=2,rampl=4,rampr=8,rcore=1,lmin=0.07,lmax=1.4,lampl= -4,lampr=4,rho=1,e=1,zb=1,zh=0,mh=1,k=0.2,alpha=1,p=1,hpos=0.142,loss=1,detune=0.0003,hammer_type=1; 5 | ^this.multiNew('audio',freq, vel, t_gate, rmin, rmax, rampl, rampr, rcore, lmin, lmax, lampl, lampr, rho, e, zb, zh, mh, k, alpha, p, hpos, loss,detune,hammer_type); 6 | } 7 | } 8 | 9 | OteyPianoStrings : UGen 10 | { 11 | *ar { arg freq=440,vel=1,t_gate=0,rmin=0.35,rmax=2,rampl=4,rampr=8,rcore=1,lmin=0.07,lmax=1.4,lampl= -4,lampr=4,rho=1,e=1,zb=1,zh=0,mh=1,k=0.2,alpha=1,p=1,hpos=0.142,loss=1,detune=0.0003,hammer_type=1; 12 | ^this.multiNew('audio',freq, vel, t_gate, rmin, rmax, rampl, rampr, rcore, lmin, lmax, lampl, lampr, rho, e, zb, zh, mh, k, alpha, p, hpos, loss,detune,hammer_type); 13 | } 14 | } 15 | 16 | OteySoundBoard : UGen 17 | { 18 | *ar { arg inp=0,c1=20,c3=20,mix=0.8; 19 | ^this.multiNew('audio',inp,c1,c3,mix); 20 | } 21 | } -------------------------------------------------------------------------------- /source/PitchDetection/sc/classes/Qitch.sc: -------------------------------------------------------------------------------- 1 | //constant Q transform, cross correlation spectral template and instantaneous frequency pitch tracker 2 | 3 | Qitch : MultiOutUGen { 4 | 5 | *kr { arg in = 0.0, databufnum, ampThreshold=0.01, algoflag=1, ampbufnum, minfreq=0, maxfreq=2500; 6 | ^this.multiNew('control', in, databufnum, ampThreshold, algoflag, ampbufnum ? (-1), minfreq, maxfreq) 7 | } 8 | 9 | init { arg ... theInputs; 10 | inputs = theInputs; 11 | ^this.initOutputs(2, rate); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /source/PitchDetection/sc/classes/Tartini.sc: -------------------------------------------------------------------------------- 1 | //conversion of Tartini pitch tracking algorithm, from Philip MacLeod's Tartini project 2 | 3 | Tartini : MultiOutUGen { 4 | 5 | *kr { arg in = 0.0, threshold=0.93, n=2048, k=0, overlap=1024, smallCutoff=0.5; 6 | ^this.multiNew('control', in, threshold, n, k, overlap, smallCutoff) 7 | } 8 | 9 | init { arg ... theInputs; 10 | inputs = theInputs; 11 | ^this.initOutputs(2, rate); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /source/PitchDetection/sc/extraqitchfiles/QspeckernN1024SR44100.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/PitchDetection/sc/extraqitchfiles/QspeckernN1024SR44100.wav -------------------------------------------------------------------------------- /source/PitchDetection/sc/extraqitchfiles/QspeckernN2048SR44100.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/PitchDetection/sc/extraqitchfiles/QspeckernN2048SR44100.wav -------------------------------------------------------------------------------- /source/PitchDetection/sc/extraqitchfiles/QspeckernN2048SR48000.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/PitchDetection/sc/extraqitchfiles/QspeckernN2048SR48000.wav -------------------------------------------------------------------------------- /source/PitchDetection/sc/extraqitchfiles/QspeckernN4096SR44100.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/PitchDetection/sc/extraqitchfiles/QspeckernN4096SR44100.wav -------------------------------------------------------------------------------- /source/PitchDetection/sc/extraqitchfiles/QspeckernN4096SR48000.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/PitchDetection/sc/extraqitchfiles/QspeckernN4096SR48000.wav -------------------------------------------------------------------------------- /source/PitchDetection/sc/extraqitchfiles/QspeckernN8192SR44100.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/supercollider/sc3-plugins/d2d7f8e8a141dd8611f268aaea52feb56620b8f2/source/PitchDetection/sc/extraqitchfiles/QspeckernN8192SR44100.wav -------------------------------------------------------------------------------- /source/QuantityUGens/sc/MovingSum.sc: -------------------------------------------------------------------------------- 1 | /* 2 | Michael McCrea mtm5@uw.edu 3 | Jo Anderson j.anderson@ambisonictoolkit.net 4 | 2018 5 | */ 6 | 7 | // A sum of samples over a variable rectangular window of time 8 | MovingSum : UGen { 9 | 10 | *ar { arg in, numsamp=40, maxsamp=400; 11 | ^this.multiNew('audio', in, numsamp, maxsamp); 12 | } 13 | 14 | *kr { arg in, numsamp=40, maxsamp=400; 15 | ^this.multiNew('control', in, numsamp, maxsamp); 16 | } 17 | 18 | } 19 | 20 | // An average of samples over a variable rectangular window of time 21 | MovingAverage : UGen { 22 | 23 | *ar { arg in, numsamp=40, maxsamp=400; 24 | ^this.multiNew('audio', in, numsamp, maxsamp); 25 | } 26 | 27 | *kr { arg in, numsamp=40, maxsamp=400; 28 | ^this.multiNew('control', in, numsamp, maxsamp); 29 | } 30 | 31 | *power { arg in, numsamp=40, maxsamp=400; 32 | ^this.perform( UGen.methodSelectorForRate(in.rate), 33 | in.squared, numsamp, maxsamp 34 | ) 35 | } 36 | 37 | *rms { arg in, numsamp=40, maxsamp=400; 38 | ^this.power(in, numsamp, maxsamp).sqrt 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /source/RFWUGens/sc/HelpSource/Classes/AverageOutput.schelp: -------------------------------------------------------------------------------- 1 | class:: AverageOutput 2 | summary:: calculates mean average of audio or control rate signal 3 | related:: Classes/RunningSum 4 | categories:: UGens>Analysis 5 | 6 | 7 | Description:: 8 | 9 | The mean average output since the last received trigger. 10 | 11 | 12 | Classmethods:: 13 | 14 | method::ar, kr 15 | 16 | argument::in 17 | input signal. 18 | 19 | argument::trig 20 | if changes from <= 0 to > 0, resets average and count to zero. 21 | 22 | 23 | Examples:: 24 | 25 | code:: 26 | // stepper cycles between 0 and 1, average hovers around 0.5 27 | a = { AverageOutput.kr(Stepper.kr(Impulse.kr(1), min: 0, max: 1)).poll }.play; 28 | 29 | a.free; 30 | :: 31 | -------------------------------------------------------------------------------- /source/RFWUGens/sc/RFWUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | RFWUGens 8 | 9 | 10 | 11 | 12 | 13 |

RFWUGens

14 | 15 |

sc3-plugins:RFWUGens

16 | 17 |

by sc3-plugins

18 | 19 | RFWUGens.html
20 |
Help/AverageOutput.html
21 |
Help/SwitchDelay.html
22 | -------------------------------------------------------------------------------- /source/RFWUGens/sc/classes/AverageOutput.sc: -------------------------------------------------------------------------------- 1 | AverageOutput : UGen { 2 | *ar { 3 | arg in, trig=0.0, mul=1.0, add=0.0; 4 | ^this.multiNew('audio', in, trig).madd(mul, add); 5 | } 6 | 7 | *kr { 8 | arg in, trig=0.0, mul=1.0, add=0.0; 9 | ^this.multiNew('control', in, trig).madd(mul, add); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/RFWUGens/sc/classes/SwitchDelay.sc: -------------------------------------------------------------------------------- 1 | SwitchDelay : UGen { 2 | *ar { arg in, drylevel=1.0, wetlevel=1.0, delaytime=1.0, delayfactor=0.7, maxdelaytime=20.0, mul=1.0, add=0.0; 3 | ^this.multiNew('audio', in, drylevel, wetlevel, delaytime, delayfactor, maxdelaytime).madd(mul, add) 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /source/RMEQSuiteUGens/sc/RMEQSuiteUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | RMEQSuiteUGens 8 | 9 | 10 | 11 | 12 | 13 |

RMEQSuiteUGens

14 | 15 |

sc3-plugins:RMEQSuiteUGens

16 | 17 |

by sc3-plugins

18 | 19 |
RMEQSuiteUGens.html
20 |
Spreader.html
21 | -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/AttackSlope.sc: -------------------------------------------------------------------------------- 1 | /* 2 | AttackSlope : MultiOutUGen 3 | { 4 | *kr { arg windowsize,leak,minenergy,minaverage,mingap; 5 | ^this.multiNew('audio',windowsize,leak,minenergy,minaverage,mingap); 6 | } 7 | 8 | //outputs 9 | //[0] onset trigger 10 | //[1] corrected to minima time of last onset 11 | //[2] most recent slope measurement 12 | //[3] average slope calculation 13 | //[4] detection function 14 | //[5] peakpick function 15 | 16 | init { arg ... theInputs; 17 | inputs = theInputs; 18 | ^this.initOutputs(5, rate); 19 | } 20 | } 21 | */ 22 | 23 | AttackSlope : MultiOutUGen 24 | { 25 | *kr { arg input,windowsize=1024,peakpicksize=20,leak=0.999,energythreshold=0.01,sumthreshold=20,mingap=30, numslopesaveraged=10; 26 | ^this.multiNew('audio',input,windowsize,peakpicksize,leak,energythreshold,sumthreshold,mingap,numslopesaveraged); 27 | } 28 | 29 | init { arg ... theInputs; 30 | inputs = theInputs; 31 | ^this.initOutputs(6, rate); 32 | } 33 | 34 | } -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/BeatStatistics.sc: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | //input 4 | FFT 5 | 6 | //outputs 7 | 8 | [0] entropy 9 | [1] ratio top value to second highest 10 | //[2] 11 | 12 | */ 13 | 14 | BeatStatistics : MultiOutUGen 15 | { 16 | *kr { arg fft, leak = 0.995, numpreviousbeats=4; 17 | ^this.multiNew('control',fft, leak, numpreviousbeats); 18 | } 19 | 20 | init { arg ... theInputs; 21 | inputs = theInputs; 22 | ^this.initOutputs(4, rate); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/Chromagram.sc: -------------------------------------------------------------------------------- 1 | Chromagram : MultiOutUGen { 2 | 3 | *kr { 4 | arg fft, fftsize=2048, n=12, tuningbase=32.703195662575, octaves=8, integrationflag=0, coeff=0.9, octaveratio=2, perframenormalize=0; 5 | ^this.multiNew('control', fft, fftsize, n, tuningbase, octaves, integrationflag, coeff, octaveratio, perframenormalize); 6 | } 7 | 8 | init { arg ... theInputs; 9 | inputs = theInputs; 10 | 11 | ^this.initOutputs(theInputs[2], rate); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/FeatureSave.sc: -------------------------------------------------------------------------------- 1 | FeatureSave : UGen { 2 | 3 | *kr {arg features, trig; 4 | 5 | 6 | ^this.multiNewList(['control', features.size.max(1), trig] ++ features.asArray) 7 | } 8 | 9 | } 10 | 11 | -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/KeyClarity.sc: -------------------------------------------------------------------------------- 1 | //transient input not currently used but reserved for future use in downweighting frames which have high transient content 2 | 3 | KeyClarity : UGen { 4 | 5 | *kr { arg chain,keydecay=2.0,chromaleak= 0.5; //transient=0.0; 6 | 7 | ^this.multiNew('control',chain,keydecay,chromaleak); //transient; 8 | } 9 | } -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/KeyMode.sc: -------------------------------------------------------------------------------- 1 | //transient input not currently used but reserved for future use in downweighting frames which have high transient content 2 | 3 | KeyMode : UGen { 4 | 5 | *kr { arg chain,keydecay=2.0,chromaleak= 0.5; //transient=0.0; 6 | 7 | ^this.multiNew('control',chain,keydecay,chromaleak); //transient; 8 | } 9 | } -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/OnsetStatistics.sc: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | //input 4 | control rate onset trigger signal 5 | 6 | //outputs 7 | 8 | [0] density (number of onsets in window) 9 | [1] mean IOI 10 | [2] variance IOI 11 | //[3] staggered proximity to now? score more by close to now (kurtosis IOI?) 12 | 13 | */ 14 | 15 | OnsetStatistics : MultiOutUGen 16 | { 17 | *kr { arg input, windowsize = 1.0, hopsize = 0.1; 18 | ^this.multiNew('control',input,windowsize,hopsize); 19 | } 20 | 21 | init { arg ... theInputs; 22 | inputs = theInputs; 23 | ^this.initOutputs(3, rate); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/SensoryDissonance.sc: -------------------------------------------------------------------------------- 1 | SensoryDissonance : UGen { 2 | 3 | *kr { 4 | arg fft, maxpeaks=100, peakthreshold=0.1, norm, clamp=1.0; 5 | 6 | norm = norm ?? {0.01/maxpeaks}; 7 | 8 | ^this.multiNew('control', fft, maxpeaks, peakthreshold, norm, clamp); 9 | } 10 | 11 | } 12 | -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/Classes/SpectralEntropy.sc: -------------------------------------------------------------------------------- 1 | SpectralEntropy : MultiOutUGen { 2 | 3 | *kr { 4 | arg fft, fftsize=2048, numbands=1; 5 | 6 | if(numbands>fftsize) { 7 | 8 | numbands = fftsize; 9 | }; 10 | 11 | ^this.multiNew('control', fft, fftsize, numbands); 12 | } 13 | 14 | init { arg ... theInputs; 15 | inputs = theInputs; 16 | 17 | ^this.initOutputs(theInputs[2], rate); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/SCMIRUGens/sc/HelpSource/Classes/FeatureSave.schelp: -------------------------------------------------------------------------------- 1 | class:: FeatureSave 2 | summary:: Storing feature data from UGens in NRT mode 3 | categories:: UGens>Analysis 4 | keyword:: NRT mode, feature data 5 | 6 | Description:: 7 | 8 | Create files of feature data from analysis UGens in NRT mode. 9 | 10 | 11 | classmethods:: 12 | 13 | method::kr 14 | 15 | argument::features 16 | input feature array for sampling on triggers 17 | argument::trig 18 | Trigger input, one stored feature vector at each trigger. Note that trig must be at least (-0.01) to trigger, to allow bufnums of 0 to act as a trigger when driving things from FFT analysis 19 | 20 | Examples:: 21 | 22 | code:: 23 | 24 | //Should really only do this in NRT, but does work if low load in RT 25 | ( 26 | a = { 27 | 28 | ~featuresave = FeatureSave.kr(SinOsc.kr,Impulse.kr(10)-0.5); 29 | 30 | }.play 31 | ) 32 | 33 | s.sendMsg("/u_cmd", a.nodeID, ~featuresave.synthIndex, "createfile", "testfile2.data") 34 | 35 | s.sendMsg("/u_cmd", a.nodeID, ~featuresave.synthIndex, "closefile") 36 | 37 | 38 | :: 39 | -------------------------------------------------------------------------------- /source/SLUGens/sc/HelpSource/Classes/EnvFollow.schelp: -------------------------------------------------------------------------------- 1 | class:: EnvFollow 2 | summary:: Envelope Follower 3 | related:: Classes/EnvDetect 4 | categories:: UGens>Analysis 5 | //SLUGens released under the GNU GPL as extensions for SuperCollider 3, by Nick Collins, http://composerprogrammer.com/index.html 6 | keyword:: SLUGens 7 | 8 | 9 | Description:: 10 | Envelope follower from Hoffmann and Cook 2008 DAFx paper. 11 | 12 | 13 | Examples:: 14 | 15 | code:: 16 | { var source = SinOsc.ar(40); var env = EnvFollow.ar(source, 0.999); [source,env] }.plot(0.5) 17 | 18 | 19 | { var source = SoundIn.ar; var env = EnvFollow.ar(source, MouseX.kr(0.9,0.999)); env }.play 20 | :: 21 | 22 | -------------------------------------------------------------------------------- /source/SLUGens/sc/HelpSource/Classes/LPCError.schelp: -------------------------------------------------------------------------------- 1 | class:: LPCError 2 | summary:: Linear Predictive Coding Gone Wrong 3 | categories:: UGens>Analysis 4 | //SLUGens released under the GNU GPL as extensions for SuperCollider 3, by Nick Collins, http://composerprogrammer.com/index.html 5 | keyword:: SLUGens 6 | 7 | 8 | Description:: 9 | Experimental use of LPC on a block by block basis. The interesting thing is the imperfections introduced by the resynthesis. 10 | 11 | classmethods:: 12 | 13 | method::ar 14 | 15 | 16 | argument::input 17 | What do you think you put here? 18 | argument::p 19 | Number of filter coefficients with which to model the signal within 64 sample blocks, 1-64. 20 | 21 | 22 | Examples:: 23 | 24 | code:: 25 | {LPCError.ar(AudioIn.ar, MouseX.kr(1,64))}.play 26 | 27 | {LPCError.ar(SinOsc.ar(LFNoise0.kr(0.2,400,500)), MouseX.kr(1,64))}.play 28 | 29 | {LPCError.ar(Resonz.ar(Mix(Saw.ar(100*[1,0.9,0.8,0.7,0.5])),1000,0.1,2), MouseX.kr(1,64))}.play 30 | 31 | :: 32 | 33 | -------------------------------------------------------------------------------- /source/StkUGens/STKAlloc.h: -------------------------------------------------------------------------------- 1 | 2 | #ifndef _STKAlloc_H_ 3 | #define _STKAlloc_H_ 4 | 5 | /* 6 | C.A. Hresko 2004 7 | in Ctor. 8 | STKAlloc(unit->mWorld, unit->stkPool, unit->instrument, Instrument, 80); 9 | 10 | simple macro which allocates memory for use with STK instruments 11 | to delete allocated memory, you must: 12 | 13 | 14 | unit->instrument->~Instrument(); 15 | RTFree(unit->mWorld, unit->instrument); 16 | 17 | inside the Unit Generator Dtor function 18 | */ 19 | 20 | #define STKAlloc(_World_, _STKPtr_, _STKInstrument_, _Arg_) \ 21 | void * _STKMem_ = RTAlloc(_World_, sizeof(_STKInstrument_)); \ 22 | _STKPtr_ = new(_STKMem_) _STKInstrument_(_Arg_); 23 | 24 | #define STKAlloc0(_World_, _STKPtr_, _STKInstrument_) \ 25 | void * _STKMem_ = RTAlloc(_World_, sizeof(_STKInstrument_)); \ 26 | _STKPtr_ = new(_STKMem_) _STKInstrument_(); 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /source/StkUGens/sc/StkUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | StkUGens 8 | 9 | 10 | 11 | 12 | 13 |

StkUGens

14 | 15 |

sc3-plugins:StkUGens

16 | 17 |

by sc3-plugins

18 | 19 | STKinstructions.rtf
20 | STKtest.scd
21 | 22 | 23 | -------------------------------------------------------------------------------- /source/SummerUGens/sc/HelpSource/Classes/Summer.schelp: -------------------------------------------------------------------------------- 1 | class:: Summer 2 | summary:: Pulse counter with floating point steps 3 | related:: Classes/Stepper, Classes/PulseCount, Classes/WrapSummer 4 | categories:: UGens>Triggers 5 | 6 | 7 | Description:: 8 | 9 | Summer, based on link::Classes/Stepper::, but allowing floats as inputs, so that you can increment a sum with each step. 10 | 11 | 12 | classmethods:: 13 | 14 | method::ar, kr 15 | 16 | argument::trig 17 | 18 | The trigger. Trigger can be any signal. A trigger happens when the signal changes from non-positive to positive. 19 | 20 | argument::step 21 | The step size. Can be a link::Classes/Float:: 22 | 23 | argument::reset 24 | 25 | Resets the counter to code::resetval:: when triggered. 26 | 27 | argument::resetval 28 | 29 | Value to which the counter is reset when it receives a reset trigger. 30 | 31 | Examples:: 32 | 33 | code:: 34 | {SinOsc.ar(Summer.kr(Impulse.kr(5), 1.5, 0, 0).poll * 100, 0, 0.1)}.play; 35 | 36 | ( 37 | { 38 | var trig = Dust.kr(5); 39 | var reset = Impulse.kr(0.5); 40 | SinOsc.ar(Summer.kr(trig, [0.5, 0.25], reset, 1) * 100, 0, 0.1) 41 | }.play; 42 | ) 43 | :: 44 | -------------------------------------------------------------------------------- /source/SummerUGens/sc/Summer.sc: -------------------------------------------------------------------------------- 1 | Summer : UGen { 2 | 3 | *ar { arg trig=0, step=1, reset=0, resetval=0; 4 | ^this.multiNew('audio', trig, step, reset, resetval) 5 | } 6 | *kr { arg trig=0, step=1, reset=0, resetval=0; 7 | ^this.multiNew('control', trig, step, reset, resetval) 8 | } 9 | checkInputs { ^this.checkSameRateAsFirstInput } 10 | } 11 | 12 | WrapSummer : UGen { 13 | 14 | *ar { arg trig=0, step=1, min=0, max=1, reset=0, resetval; 15 | ^this.multiNew('audio', trig, step, min, max, reset, resetval ? min) 16 | } 17 | *kr { arg trig=0, step=1, min=0, max=1, reset=0, resetval; 18 | ^this.multiNew('control', trig, step, min, max, reset, resetval ? min) 19 | } 20 | checkInputs { ^this.checkSameRateAsFirstInput } 21 | } 22 | -------------------------------------------------------------------------------- /source/TJUGens/TJUGens.h: -------------------------------------------------------------------------------- 1 | /* 2 | * TJUGens.h 3 | * Plugins 4 | * 5 | * Created by Jonathan Stutters on 16/12/2010. 6 | * Copyright 2010 JS IT Services. All rights reserved. 7 | * 8 | */ 9 | 10 | -------------------------------------------------------------------------------- /source/TJUGens/sc/TJUGens.sc: -------------------------------------------------------------------------------- 1 | DFM1 : UGen { 2 | *ar { arg in, freq = 1000.0, res = 0.1, inputgain = 1.0, type = 0.0, noiselevel= 0.0003, mul = 1.0, add = 0.0; 3 | ^this.multiNew('audio', in, freq, res, inputgain, type, noiselevel).madd(mul, add) 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /source/TagSystemUGens/sc/SymbolicMachines.sc: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dfsm : DUGen { 4 | 5 | *new { arg rules, n = 1, rgen; 6 | ^this.multiNewList(['demand', n, rgen ?? { Dwhite.new }] ++ this.convertRules(rules)) 7 | } 8 | 9 | *convertRules { arg rules; 10 | var states, nextStates, sizes, data; 11 | 12 | // if exit state not given, add one. 13 | if(rules.size.odd) { rules = rules ++ 0.0 }; 14 | 15 | // reformat in a more uniform way. 16 | // exitstate is treated as initial state 17 | 18 | rules = rules.rotate(1); 19 | 20 | states = rules[0, 2..]; 21 | nextStates = rules[1, 3..]; 22 | 23 | sizes = nextStates.collect { |x| x.asArray.size }; 24 | data = states ++ nextStates.flat; 25 | 26 | ^[states.size] ++ sizes ++ data 27 | 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /source/TagSystemUGens/sc/TagSystemUGens.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | TagSystemUGens 8 | 9 | 10 | 11 | 12 | 13 |

TagSystemUGens

14 | 15 |

sc3-plugins:TagSystemUGens

16 | 17 |

by sc3-plugins

18 | 19 |
TagSystemUGens.html
20 |
Help/DbufTag.htm
21 |
Help/Dfsm.html
22 |
Help/Dfsm.rtf
23 |
Help/Dfsm_test.rtf
24 |
Help/Dtag.htm
25 | -------------------------------------------------------------------------------- /source/TagSystemUGens/sc/TagSystemUgens.sc: -------------------------------------------------------------------------------- 1 | DbufTag : DUGen { 2 | var <>axiom, <>rules; 3 | *new { arg bufnum, v, axiom, rules, recycle=0, mode=0; 4 | ^this.multiNewList(['demand', bufnum, v, recycle, mode] 5 | ++ this.convertRules(axiom, rules)).axiom_(axiom).rules_(rules) 6 | } 7 | 8 | *convertRules { arg axiom, rules; 9 | ^[axiom.size, rules.size] ++ axiom ++ rules.collect(_.size) ++ rules.flatten(1) 10 | } 11 | allSymbols { 12 | ^Dseq([ 13 | Dseq(axiom), 14 | Dswitch(rules.collect { |x| Dseq(x) }, this) 15 | ]) 16 | } 17 | 18 | } 19 | 20 | Dtag : DbufTag { 21 | *new { arg bufsize, v, axiom, rules, recycle=0, mode=0; 22 | ^this.multiNewList(['demand', bufsize, v, recycle, mode] 23 | ++ this.convertRules(axiom, rules)).axiom_(axiom).rules_(rules) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /source/VBAPUGens/sc/CircleRamp.sc: -------------------------------------------------------------------------------- 1 | CircleRamp : Filter { 2 | 3 | *ar { arg in = 0.0, lagTime = 0.1, circmin = -180, circmax = 180, mul = 1.0, add = 0.0; 4 | ^this.multiNew('audio', in, lagTime, circmin, circmax).madd(mul, add) 5 | } 6 | *kr { arg in = 0.0, lagTime = 0.1, circmin = -180, circmax = 180, mul = 1.0, add = 0.0; 7 | ^this.multiNew('control', in, lagTime, circmin, circmax).madd(mul, add) 8 | } 9 | } 10 | 11 | + UGen { 12 | 13 | circleRamp { arg lagTime=0.1, circmin = -180, circmax = 180; 14 | ^CircleRamp.multiNew(this.rate, this, lagTime, circmin, circmax) 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /source/VOSIMUGens/sc/VOSIM.sc: -------------------------------------------------------------------------------- 1 | VOSIM : UGen { 2 | *ar { arg trig = 0.1, freq = 400.0, nCycles = 1,decay = 0.9, mul = 1.0, add = 0.0; 3 | ^this.multiNew('audio', trig, freq, nCycles, decay).madd(mul, add) 4 | } 5 | } -------------------------------------------------------------------------------- /source/local/readme.txt: -------------------------------------------------------------------------------- 1 | 2 | This folder makes it easy to build simple SuperCollider plugins: 3 | 4 | **EVERY** .cpp file you place in this folder will be assumed to define a 5 | SuperCollider plugin, and will be compiled as part of the sc3-plugins build 6 | process. (You can softlink .cpp files in here if you like.) 7 | 8 | Note that this simple approach isn't suitable for all plugins - if you have 9 | plugins which need auxiliary .h or .cpp files, or which use external lilbraries, 10 | they probably need their own custom build commands. 11 | 12 | -------------------------------------------------------------------------------- /update_list_in_readme.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | READMEPATH=README.md 4 | TEMPPATH=README.md.tmp 5 | 6 | # take a copy of the readme, with any generated links filtered back out 7 | cat "$READMEPATH" | sed -Ee "/^\* \[\w+\]\(.*\)$/d" > "$TEMPPATH" 8 | 9 | # find .schelp files, and use it to generate links to scdoc 10 | #for f in `find source/*/sc -name "*.schelp" | sort | sed s:..\/source\/::` 11 | for h in `find source -name "*.schelp" | sed -Ee "s/^.*\/(.*)\.schelp/\\1/g" -e '/-/d' | sort` 12 | do 13 | echo "* [$h](http://doc.sccode.org/Classes/$h.html)" >> "$TEMPPATH" 14 | done 15 | 16 | # copy the finished readme back into place 17 | mv -f "$TEMPPATH" "$READMEPATH" --------------------------------------------------------------------------------