zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 0776bad2080e0a860913f5d50b26f72c6fb820b1
parent d2ef3ac36ae840898392e8814e54985eeb689bcd
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Thu,  8 Sep 2016 10:26:19 -0400

Add OSC Effect Preset Support

Diffstat:
Msrc/Effects/Alienwah.cpp | 10++++++++--
Msrc/Effects/Chorus.cpp | 12++++++++++--
Msrc/Effects/Distorsion.cpp | 14++++++++++----
Msrc/Effects/DynamicFilter.cpp | 7++++++-
Msrc/Effects/Echo.cpp | 10++++++++--
Msrc/Effects/Phaser.cpp | 13+++++++++++--
Msrc/Effects/Reverb.cpp | 7++++++-
7 files changed, 59 insertions(+), 14 deletions(-)

diff --git a/src/Effects/Alienwah.cpp b/src/Effects/Alienwah.cpp @@ -20,13 +20,19 @@ using std::complex; #define rObject Alienwah -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports Alienwah::ports = { - {"preset::i", rOptions(Alienwah 1, Alienwah 2, Alienwah 3, Alienwah 4) + {"preset::i", rProp(parameter) + rOptions(wah 1, wah 2, wah 3, wah 4) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); rEnd}, //Pvolume/Ppanning are common rEffPar(Pfreq, 2, rShort("freq"), "Effect Frequency"), diff --git a/src/Effects/Chorus.cpp b/src/Effects/Chorus.cpp @@ -21,13 +21,21 @@ using namespace std; #define rObject Chorus -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports Chorus::ports = { - {"preset::i", rOptions(Alienwah 1, Alienwah 2, Alienwah 3, Alienwah 4) + {"preset::i", rProp(parameter) + rOptions(Chorus1, Chorus2, Chorus3, Celeste1, Celeste2, + Flange1, Flange2, Flange3, Flange4, Flange5) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); + rEnd}, //Pvolume/Ppanning are common rEffPar(Pfreq, 2, rShort("freq"), "Effect Frequency"), diff --git a/src/Effects/Distorsion.cpp b/src/Effects/Distorsion.cpp @@ -20,21 +20,27 @@ #include <rtosc/port-sugar.h> #define rObject Distorsion -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports Distorsion::ports = { - {"preset::i", rOptions(Alienwah 1, Alienwah 2, Alienwah 3, Alienwah 4) + {"preset::i", rProp(parameter) + rOptions(Overdrive 1, Overdrive 2, A. Exciter 1, A. Exciter 2, Guitar Amp, + Quantisize) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); rEnd}, //Pvolume/Ppanning are common rEffPar(Plrcross, 2, rShort("l/r"), "Left/Right Crossover"), rEffPar(Pdrive, 3, rShort("drive"), "Input amplification"), rEffPar(Plevel, 4, rShort("output"), "Output amplification"), rEffPar(Ptype, 5, rShort("type"), - rOptions(Undistorted, - Arctangent, Asymmetric, Pow, Sine, Quantisize, + rOptions(Arctangent, Asymmetric, Pow, Sine, Quantisize, Zigzag, Limiter, Upper Limiter, Lower Limiter, Inverse Limiter, Clip, Asym2, Pow2, sigmoid), "Distortion Shape"), diff --git a/src/Effects/DynamicFilter.cpp b/src/Effects/DynamicFilter.cpp @@ -20,13 +20,18 @@ #include <rtosc/port-sugar.h> #define rObject DynamicFilter -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports DynamicFilter::ports = { {"preset::i", rOptions(WahWah, AutoWah, Sweep, VocalMorph1, VocalMorph1) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); rEnd}, //Pvolume/Ppanning are common rEffPar(Pfreq, 2, rShort("freq"), "Effect Frequency"), diff --git a/src/Effects/Echo.cpp b/src/Effects/Echo.cpp @@ -22,14 +22,20 @@ #define MAX_DELAY 2 #define rObject Echo -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports Echo::ports = { - {"preset::i", rOptions(Echo 1, Echo 2, Echo 3, Simple Echo, Canyon, Panning Echo 1, Panning Echo 2, Panning Echo 3, Feedback Echo) + {"preset::i", rOptions(Echo 1, Echo 2, Echo 3, Simple Echo, Canyon, Panning Echo 1, + Panning Echo 2, Panning Echo 3, Feedback Echo) rProp(parameter) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); rEnd}, //Pvolume/Ppanning are common rEffPar(Pdelay, 2, rShort("delay"), "Length of Echo"), diff --git a/src/Effects/Phaser.cpp b/src/Effects/Phaser.cpp @@ -25,13 +25,22 @@ using namespace std; #define rObject Phaser -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports Phaser::ports = { - {"preset::i", rOptions(Alienwah 1, Alienwah 2, Alienwah 3, Alienwah 4) + {"preset::i", rProp(parameter) + rOptions(Phaser 1, Phaser 2, Phaser 3, Phaser 4, + Phaser 5, Phaser 6, + APhaser 1, APhaser 2, APhaser 3, APhaser 4, + APhaser 5, APhaser 6) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); rEnd}, //Pvolume/Ppanning are common rEffPar(lfo.Pfreq, 2, rShort("freq"), ""), diff --git a/src/Effects/Reverb.cpp b/src/Effects/Reverb.cpp @@ -21,7 +21,7 @@ #include <rtosc/port-sugar.h> #define rObject Reverb -#define rBegin [](const char *, rtosc::RtData &) { +#define rBegin [](const char *msg, rtosc::RtData &d) { #define rEnd } rtosc::Ports Reverb::ports = { @@ -31,6 +31,11 @@ rtosc::Ports Reverb::ports = { rProp(parameter) rDoc("Instrument Presets"), 0, rBegin; + rObject *o = (rObject*)d.obj; + if(rtosc_narguments(msg)) + o->setpreset(rtosc_argument(msg, 0).i); + else + d.reply(d.loc, "i", o->Ppreset); rEnd}, //Pvolume/Ppanning are common rEffPar(Ptime, 2, rShort("time"), "Length of Reverb"),