zynaddsubfx

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

commit 361f02f7dcc36877ee03df740d56429044e81cd4
parent d3421c30a2a1547b5849ff117bc021dc7d949daf
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Tue, 13 Oct 2015 14:49:10 -0400

Enhance Oscdoc Output

Diffstat:
Msrc/Containers/NotePool.cpp | 2+-
Msrc/Effects/EffectMgr.cpp | 8+++++---
Msrc/Misc/Config.cpp | 8++++----
Msrc/Misc/Master.cpp | 31++++++++++++++++++-------------
Msrc/Misc/Microtonal.cpp | 2+-
Msrc/Misc/Part.cpp | 24+++++++++++++++---------
Msrc/Misc/PresetExtractor.cpp | 4++--
Msrc/Misc/Util.h | 4++--
Msrc/Params/ADnoteParameters.cpp | 29+++++++++++++++++++----------
Msrc/Params/FilterParams.cpp | 9+++++----
Msrc/Params/PADnoteParameters.cpp | 13++++++++-----
Msrc/Params/SUBnoteParameters.cpp | 6++++--
Msrc/Synth/OscilGen.cpp | 4++--
Msrc/Synth/Resonance.cpp | 2+-
14 files changed, 87 insertions(+), 59 deletions(-)

diff --git a/src/Containers/NotePool.cpp b/src/Containers/NotePool.cpp @@ -242,7 +242,7 @@ void NotePool::cleanup(void) ndesc[i].size = new_length[i]; if(new_length[i] != 0) ndesc[cum_new++] = ndesc[i]; - else + else ndesc[i].status = Part::KEY_OFF; } memset(ndesc+cum_new, 0, sizeof(*ndesc)*(POLYPHONY-cum_new)); diff --git a/src/Effects/EffectMgr.cpp b/src/Effects/EffectMgr.cpp @@ -45,7 +45,8 @@ static const rtosc::Ports local_ports = { rSelf(EffectMgr), rPaste, rRecurp(filterpars, "Filter Parameter for Dynamic Filter"), - {"parameter#128::i:T:F", rProp(alias) rDoc("Parameter Accessor"), NULL, + {"parameter#128::i:T:F", rProp(parameter) rProp(alias) rDoc("Parameter Accessor"), + NULL, [](const char *msg, rtosc::RtData &d) { EffectMgr *eff = (EffectMgr*)d.obj; @@ -65,7 +66,7 @@ static const rtosc::Ports local_ports = { d.broadcast(d.loc, "i", eff->geteffectparrt(atoi(mm))); } }}, - {"preset::i", rProp(alias) rDoc("Effect Preset Selector"), NULL, + {"preset::i", rProp(parameter) rProp(alias) rDoc("Effect Preset Selector"), NULL, [](const char *msg, rtosc::RtData &d) { char loc[1024]; @@ -101,7 +102,8 @@ static const rtosc::Ports local_ports = { eq->getFilter(a,b); d.reply(d.loc, "bb", sizeof(a), a, sizeof(b), b); }}, - {"efftype::i", rDoc("Get Effect Type"), NULL, [](const char *m, rtosc::RtData &d) + {"efftype::i", rProp(parameter) rDoc("Get Effect Type"), NULL, + [](const char *m, rtosc::RtData &d) { EffectMgr *eff = (EffectMgr*)d.obj; if(rtosc_narguments(m)) { diff --git a/src/Misc/Config.cpp b/src/Misc/Config.cpp @@ -32,7 +32,7 @@ #include "XMLwrapper.h" #define rStdString(name, len, ...) \ - {STRINGIFY(name) "::s", rMap(length, len) DOC(__VA_ARGS__), NULL, rStringCb(name,len)} + {STRINGIFY(name) "::s", rMap(length, len) rProp(parameter) DOC(__VA_ARGS__), NULL, rStringCb(name,len)} #define rStdStringCb(name, length) rBOIL_BEGIN \ if(!strcmp("", args)) {\ data.reply(loc, "s", obj->name); \ @@ -57,7 +57,7 @@ static const rtosc::Ports ports = { rToggle(cfg.BankUIAutoClose, "Automatic Closing of BackUI After Patch Selection"), rParamI(cfg.GzipCompression, "Level of Gzip Compression For Save Files"), rParamI(cfg.Interpolation, "Level of Interpolation, Linear/Cubic"), - {"cfg.presetsDirList", rProp(parameter) rDoc("list of preset search directories"), 0, + {"cfg.presetsDirList", rDoc("list of preset search directories"), 0, [](const char *msg, rtosc::RtData &d) { Config &c = *(Config*)d.obj; @@ -90,7 +90,7 @@ static const rtosc::Ports ports = { rtosc_amessage(buffer, sizeof(buffer), d.loc, types, args); d.reply(buffer); }}, - {"cfg.bankRootDirList", rProp(parameter) rDoc("list of bank search directories"), 0, + {"cfg.bankRootDirList", rDoc("list of bank search directories"), 0, [](const char *msg, rtosc::RtData &d) { Config &c = *(Config*)d.obj; @@ -133,7 +133,7 @@ static const rtosc::Ports ports = { rParamI(cfg.VirKeybLayout, "Keyboard Layout For Virtual Piano Keyboard"), //rParamS(cfg.LinuxALSAaudioDev), //rParamS(cfg.nameTag) - {"cfg.OscilPower::i", rDoc("Size Of Oscillator Wavetable"), 0, + {"cfg.OscilPower::i", rProp(parameter) rDoc("Size Of Oscillator Wavetable"), 0, [](const char *msg, rtosc::RtData &d) { Config &c = *(Config*)d.obj; diff --git a/src/Misc/Master.cpp b/src/Misc/Master.cpp @@ -53,7 +53,9 @@ using namespace rtosc; static const Ports sysefxPort = { - {"part#" STRINGIFY(NUM_MIDI_PARTS) "::i", 0, 0, [](const char *m, RtData&d) + {"part#" STRINGIFY(NUM_MIDI_PARTS) "::i", rProp(parameter) + rDoc("gain on part to sysefx routing"), 0, + [](const char *m, RtData&d) { //ok, this is going to be an ugly workaround //we know that if we are here the message previously MUST have @@ -80,7 +82,8 @@ static const Ports sysefxPort = static const Ports sysefsendto = { - {"to#" STRINGIFY(NUM_SYS_EFX) "::i", 0, 0, [](const char *m, RtData&d) + {"to#" STRINGIFY(NUM_SYS_EFX) "::i", + rProp(parameter) rDoc("sysefx to sysefx routing gain"), 0, [](const char *m, RtData&d) { //same ugly workaround as before const char *index_1 = m; @@ -113,10 +116,10 @@ static const Ports master_ports = { rArrayI(Pinsparts, NUM_INS_EFX, "Part to insert part onto"), {"echo", rDoc("Hidden port to echo messages"), 0, [](const char *m, RtData&d) { d.reply(m-1);}}, - {"get-vu", rDoc("Grab VU Data"), 0, [](const char *, RtData &d) { + {"get-vu:", rDoc("Grab VU Data"), 0, [](const char *, RtData &d) { Master *m = (Master*)d.obj; d.reply("/vu-meter", "bb", sizeof(m->vu), &m->vu, sizeof(float)*NUM_MIDI_PARTS, m->vuoutpeakpart);}}, - {"reset-vu", rDoc("Grab VU Data"), 0, [](const char *, RtData &d) { + {"reset-vu:", rDoc("Grab VU Data"), 0, [](const char *, RtData &d) { Master *m = (Master*)d.obj; m->vuresetpeaks();}}, {"load-part:ib", rProp(internal) rDoc("Load Part From Middleware"), 0, [](const char *msg, RtData &d) { @@ -130,14 +133,14 @@ static const Ports master_ports = { p->initialize_rt(); //printf("part %d is now pointer %p\n", i, p); }}, - {"Pvolume::i", rDoc("Master Volume"), 0, + {"Pvolume::i", rProp(parameter) rDoc("Master Volume"), 0, [](const char *m, rtosc::RtData &d) { if(rtosc_narguments(m)==0) { d.reply(d.loc, "i", ((Master*)d.obj)->Pvolume); } else if(rtosc_narguments(m)==1 && rtosc_type(m,0)=='i') { ((Master*)d.obj)->setPvolume(limit<char>(rtosc_argument(m,0).i,0,127)); d.broadcast(d.loc, "i", ((Master*)d.obj)->Pvolume);}}}, - {"volume::i", rDoc("Master Volume"), 0, + {"volume::i", rProp(parameter) rDoc("Master Volume"), 0, [](const char *m, rtosc::RtData &d) { if(rtosc_narguments(m)==0) { d.reply(d.loc, "i", ((Master*)d.obj)->Pvolume); @@ -201,7 +204,8 @@ static const Ports master_ports = { [](const char *m, RtData &d){ Master *M = (Master*)d.obj; M->midi.clear_entry(rtosc_argument(m,0).s);}}, - {"close-ui", rDoc("Request to close any connection named \"GUI\""), 0, [](const char *, RtData &d) { + {"close-ui:", rDoc("Request to close any connection named \"GUI\""), 0, + [](const char *, RtData &d) { d.reply("/close-ui", "");}}, {"add-rt-memory:bi", rProp(internal) rDoc("Add Additional Memory To RT MemPool"), 0, [](const char *msg, RtData &d) @@ -221,12 +225,13 @@ static const Ports master_ports = { d.reply("/oscilsize", "f", m.synth.oscilsize_f); d.reply("/oscilsize", "i", m.synth.oscilsize); }}, - {"undo_pause",0,0,[](const char *, rtosc::RtData &d) - {d.reply("/undo_pause", "");}}, - {"undo_resume",0,0,[](const char *, rtosc::RtData &d) - {d.reply("/undo_resume", "");}}, - {"config/", 0, &Config::ports, [](const char *, rtosc::RtData &){}}, - {"presets/", 0, &preset_ports, rBOIL_BEGIN + {"undo_pause:",rProp(internal) rDoc("pause undo event recording"),0, + [](const char *, rtosc::RtData &d) {d.reply("/undo_pause", "");}}, + {"undo_resume:",rProp(internal) rDoc("resume undo event recording"),0, + [](const char *, rtosc::RtData &d) {d.reply("/undo_resume", "");}}, + {"config/", rDoc("Top Level Application Configuration Parameters"), &Config::ports, + [](const char *, rtosc::RtData &){}}, + {"presets/", rDoc("Parameter Presets"), &preset_ports, rBOIL_BEGIN SNIP preset_ports.dispatch(msg, data); rBOIL_END}, diff --git a/src/Misc/Microtonal.cpp b/src/Misc/Microtonal.cpp @@ -67,7 +67,7 @@ const rtosc::Ports Microtonal::ports = { rString(Pname, MICROTONAL_MAX_NAME_LEN, "Microtonal Name"), rString(Pcomment, MICROTONAL_MAX_NAME_LEN, "Microtonal Name"), - {"octavesize:", 0, 0, [](const char*, RtData &d) + {"octavesize:", rDoc("Get octave size"), 0, [](const char*, RtData &d) { Microtonal &m = *(Microtonal*)d.obj; d.reply(d.loc, "i", m.getoctavesize()); diff --git a/src/Misc/Part.cpp b/src/Misc/Part.cpp @@ -83,11 +83,15 @@ static const Ports partPorts = { rString(Pname, PART_MAX_NAME_LEN, "Kit User Specified Label"), rArray(Pefxroute, NUM_PART_EFX, "Effect Routing"), rArrayT(Pefxbypass, NUM_PART_EFX, "If an effect is bypassed"), - {"captureMin:", NULL, NULL, [](const char *, RtData &r) + {"captureMin:", rDoc("Capture minimum valid note"), NULL, + [](const char *, RtData &r) {Part *p = (Part*)r.obj; p->Pminkey = p->lastnote;}}, - {"captureMax:", NULL, NULL, [](const char *, RtData &r) + {"captureMax:", rDoc("Capture maximum valid note"), NULL, + [](const char *, RtData &r) {Part *p = (Part*)r.obj; p->Pmaxkey = p->lastnote;}}, - {"polyType::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"polyType::c:i", rProp(parameter) rOptions(Polyphonic, Monophonic, Legato) + rDoc("synthesis polyphony type"), NULL, + [](const char *msg, RtData &d) { Part *p = (Part*)d.obj; if(!rtosc_narguments(msg)) { @@ -109,7 +113,8 @@ static const Ports partPorts = { p->Ppolymode = 0; p->Plegatomode = 1; }}}, - {"clear:", rProp(internal) rDoc("Reset Part To Defaults"), 0, [](const char *, RtData &d) + {"clear:", rProp(internal) rDoc("Reset Part To Defaults"), 0, + [](const char *, RtData &d) { //XXX todo forward this event for middleware to handle //Part *p = (Part*)d.obj; @@ -160,23 +165,24 @@ static const Ports kitPorts = { rToggle(Ppadenabled, "PADsynth enable"), rParamZyn(Psendtoparteffect, "Effect Levels"), rString(Pname, PART_MAX_NAME_LEN, "Kit User Specified Label"), - {"captureMin:", NULL, NULL, [](const char *, RtData &r) + {"captureMin:", rDoc("Capture minimum valid note"), NULL, + [](const char *, RtData &r) {Part::Kit *p = (Part::Kit*)r.obj; p->Pminkey = p->parent->lastnote;}}, - {"captureMax:", NULL, NULL, [](const char *, RtData &r) + {"captureMax:", rDoc("Capture maximum valid note"), NULL, [](const char *, RtData &r) {Part::Kit *p = (Part::Kit*)r.obj; p->Pmaxkey = p->parent->lastnote;}}, - {"padpars-data:b", rProp(internal), 0, + {"padpars-data:b", rProp(internal) rDoc("Set PADsynth data pointer"), 0, [](const char *msg, RtData &d) { rObject &o = *(rObject*)d.obj; assert(o.padpars == NULL); o.padpars = *(decltype(o.padpars)*)rtosc_argument(msg, 0).b.data; }}, - {"adpars-data:b", rProp(internal), 0, + {"adpars-data:b", rProp(internal) rDoc("Set ADsynth data pointer"), 0, [](const char *msg, RtData &d) { rObject &o = *(rObject*)d.obj; assert(o.adpars == NULL); o.adpars = *(decltype(o.adpars)*)rtosc_argument(msg, 0).b.data; }}, - {"subpars-data:b", rProp(internal), 0, + {"subpars-data:b", rProp(internal) rDoc("Set SUBsynth data pointer"), 0, [](const char *msg, RtData &d) { rObject &o = *(rObject*)d.obj; assert(o.subpars == NULL); diff --git a/src/Misc/PresetExtractor.cpp b/src/Misc/PresetExtractor.cpp @@ -99,8 +99,8 @@ const rtosc::Ports real_preset_ports = const rtosc::Ports preset_ports { {"scan-for-presets:", rDoc("Scan For Presets"), 0, dummy}, - {"copy:s:ss:si:ssi", rDoc("Copy <s> URL to <s> Name/Clipboard from subfield <i>"), 0, dummy}, - {"paste:s:ss:si:ssi", rDoc("Paste <s> URL to <s> File-Name/Clipboard from subfield <i>"), 0, dummy}, + {"copy:s:ss:si:ssi", rDoc("Copy (s)URL to (s) Name/Clipboard from subfield (i)"), 0, dummy}, + {"paste:s:ss:si:ssi", rDoc("Paste (s) URL to (s) File-Name/Clipboard from subfield (i)"), 0, dummy}, {"clipboard-type:", rDoc("Type Stored In Clipboard"), 0, dummy}, {"delete:s", rDoc("Delete the given preset file"), 0, dummy}, }; diff --git a/src/Misc/Util.h b/src/Misc/Util.h @@ -157,12 +157,12 @@ char *rtosc_splat(const char *path, std::set<std::string>); {STRINGIFY(name) "::i", rProp(parameter) rMap(min, 0) rMap(max, 127) DOC(__VA_ARGS__), NULL, rParamICb(name)} #define rSelf(type) \ -{"self", rProp(internal) rMap(class, type) rDoc("port metadata"), 0, \ +{"self:", rProp(internal) rMap(class, type) rDoc("port metadata"), 0, \ [](const char *, rtosc::RtData &d){ \ d.reply(d.loc, "b", sizeof(d.obj), &d.obj);}}\ #define rPaste \ -{"preset-type", rProp(internal), 0, \ +{"preset-type:", rProp(internal) rDoc("clipboard type of object"), 0, \ [](const char *, rtosc::RtData &d){ \ rObject *obj = (rObject*)d.obj; \ d.reply(d.loc, "s", obj->type);}},\ diff --git a/src/Params/ADnoteParameters.cpp b/src/Params/ADnoteParameters.cpp @@ -108,14 +108,16 @@ static const Ports voicePorts = { //weird stuff for PCoarseDetune - {"detunevalue:", NULL, NULL, [](const char *, RtData &d) + {"detunevalue:", rMap(unit,cents) rDoc("Get detune in cents"), NULL, + [](const char *, RtData &d) { rObject *obj = (rObject *)d.obj; //TODO check if this is accurate or if PCoarseDetune is utilized //TODO do the same for the other engines d.reply(d.loc, "f", getdetune(obj->PDetuneType, 0, obj->PDetune)); }}, - {"octave::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"octave::c:i", rProp(parameter) rDoc("Octave note offset"), NULL, + [](const char *msg, RtData &d) { rObject *obj = (rObject *)d.obj; if(!rtosc_narguments(msg)) { @@ -128,7 +130,8 @@ static const Ports voicePorts = { obj->PCoarseDetune = k*1024 + obj->PCoarseDetune%1024; } }}, - {"coarsedetune::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"coarsedetune::c:i", rProp(parameter) rDoc("Coarse note detune"), NULL, + [](const char *msg, RtData &d) { rObject *obj = (rObject *)d.obj; if(!rtosc_narguments(msg)) { @@ -143,14 +146,15 @@ static const Ports voicePorts = { }}, //weird stuff for PCoarseDetune - {"FMdetunevalue:", NULL, NULL, [](const char *, RtData &d) + {"FMdetunevalue:", rMap(unit,cents) rDoc("Get modulator detune"), NULL, [](const char *, RtData &d) { rObject *obj = (rObject *)d.obj; //TODO check if this is accurate or if PCoarseDetune is utilized //TODO do the same for the other engines d.reply(d.loc, "f", getdetune(obj->PFMDetuneType, 0, obj->PFMDetune)); }}, - {"FMoctave::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"FMoctave::c:i", rProp(parameter) rDoc("Octave note offset for modulator"), NULL, + [](const char *msg, RtData &d) { rObject *obj = (rObject *)d.obj; if(!rtosc_narguments(msg)) { @@ -163,7 +167,8 @@ static const Ports voicePorts = { obj->PFMCoarseDetune = k*1024 + obj->PFMCoarseDetune%1024; } }}, - {"FMcoarsedetune::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"FMcoarsedetune::c:i", rProp(parameter) rDoc("Coarse note detune for modulator"), + NULL, [](const char *msg, RtData &d) { rObject *obj = (rObject *)d.obj; if(!rtosc_narguments(msg)) { @@ -178,7 +183,8 @@ static const Ports voicePorts = { }}, //Reader - {"unisonFrequencySpreadCents:", NULL, NULL, [](const char *, RtData &d) + {"unisonFrequencySpreadCents:", rMap(unit,cents) rDoc("Unison Frequency Spread"), + NULL, [](const char *, RtData &d) { rObject *obj = (rObject *)d.obj; d.reply(d.loc, "f", obj->getUnisonFrequencySpreadCents()); @@ -224,12 +230,14 @@ static const Ports globalPorts = { rParamZyn(Hrandgrouping, "How randomness is applied to multiple voices using the same oscil"), //weird stuff for PCoarseDetune - {"detunevalue:", NULL, NULL, [](const char *, RtData &d) + {"detunevalue:", rMap(unit,cents) rDoc("Get detune in cents"), NULL, + [](const char *, RtData &d) { rObject *obj = (rObject *)d.obj; d.reply(d.loc, "f", getdetune(obj->PDetuneType, 0, obj->PDetune)); }}, - {"octave::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"octave::c:i", rProp(parameter) rDoc("Octave note offset"), NULL, + [](const char *msg, RtData &d) { rObject *obj = (rObject *)d.obj; if(!rtosc_narguments(msg)) { @@ -242,7 +250,8 @@ static const Ports globalPorts = { obj->PCoarseDetune = k*1024 + obj->PCoarseDetune%1024; } }}, - {"coarsedetune::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"coarsedetune::c:i", rProp(parameter) rDoc("Coarse note detune"), NULL, + [](const char *msg, RtData &d) { rObject *obj = (rObject *)d.obj; if(!rtosc_narguments(msg)) { diff --git a/src/Params/FilterParams.cpp b/src/Params/FilterParams.cpp @@ -105,13 +105,14 @@ const rtosc::Ports FilterParams::ports = { if(rtosc_narguments(msg)) rChangeCb; }}, - {"centerfreq:", NULL, NULL, - [](const char *, RtData &d) { + {"centerfreq:", rDoc("Get the center frequency of the formant's graph"), + NULL, [](const char *, RtData &d) { FilterParams *obj = (FilterParams *) d.obj; d.reply(d.loc, "f", obj->getcenterfreq()); }}, - {"octavesfreq:", NULL, NULL, - [](const char *, RtData &d) { + {"octavesfreq:", + rDoc("Get the number of octave that the formant functions applies to"), + NULL, [](const char *, RtData &d) { FilterParams *obj = (FilterParams *) d.obj; d.reply(d.loc, "f", obj->getoctavesfreq()); }}, diff --git a/src/Params/PADnoteParameters.cpp b/src/Params/PADnoteParameters.cpp @@ -113,7 +113,7 @@ static const rtosc::Ports PADnotePorts = d.reply(d.loc, "i", p->Pbandwidth); }}}, - {"bandwidthvalue:", NULL, NULL, + {"bandwidthvalue:", rMap(unit, cents) rDoc("Get Bandwidth"), NULL, [](const char *, rtosc::RtData &d) { PADnoteParameters *p = ((PADnoteParameters*)d.obj); d.reply(d.loc, "f", p->setPbandwidth(p->Pbandwidth)); @@ -141,7 +141,7 @@ static const rtosc::Ports PADnotePorts = d.reply(d.loc, "b", n*sizeof(float), tmp); d.reply(d.loc, "i", realbw); delete[] tmp;}}, - {"sample#64:ifb", rDoc("Nothing to see here"), 0, + {"sample#64:ifb", rProp(internal) rDoc("Nothing to see here"), 0, [](const char *m, rtosc::RtData &d) { PADnoteParameters *p = (PADnoteParameters*)d.obj; @@ -155,12 +155,14 @@ static const rtosc::Ports PADnotePorts = //XXX TODO memory managment (deallocation of smp buffer) }}, //weird stuff for PCoarseDetune - {"detunevalue:", NULL, NULL, [](const char *, RtData &d) + {"detunevalue:", rMap(unit,cents) rDoc("Get detune value"), NULL, + [](const char *, RtData &d) { PADnoteParameters *obj = (PADnoteParameters *)d.obj; d.reply(d.loc, "f", getdetune(obj->PDetuneType, 0, obj->PDetune)); }}, - {"octave::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"octave::c:i", rProp(parameter) rDoc("Octave note offset"), NULL, + [](const char *msg, RtData &d) { PADnoteParameters *obj = (PADnoteParameters *)d.obj; if(!rtosc_narguments(msg)) { @@ -173,7 +175,8 @@ static const rtosc::Ports PADnotePorts = obj->PCoarseDetune = k*1024 + obj->PCoarseDetune%1024; } }}, - {"coarsedetune::c:i", NULL, NULL, [](const char *msg, RtData &d) + {"coarsedetune::c:i", rProp(parameter) rDoc("Coarse note detune"), NULL, + [](const char *msg, RtData &d) { PADnoteParameters *obj = (PADnoteParameters *)d.obj; if(!rtosc_narguments(msg)) { diff --git a/src/Params/SUBnoteParameters.cpp b/src/Params/SUBnoteParameters.cpp @@ -93,7 +93,8 @@ static const rtosc::Ports SUBnotePorts = { d.reply(d.loc, "f", getdetune(obj->PDetuneType, 0, obj->PDetune)); }}, //weird stuff for PCoarseDetune - {"octave::c:i", rDoc("Note octave shift"), NULL, [](const char *msg, RtData &d) + {"octave::c:i", rProp(parameter) rDoc("Note octave shift"), NULL, + [](const char *msg, RtData &d) { SUBnoteParameters *obj = (SUBnoteParameters *)d.obj; if(!rtosc_narguments(msg)) { @@ -106,7 +107,8 @@ static const rtosc::Ports SUBnotePorts = { obj->PCoarseDetune = k*1024 + obj->PCoarseDetune%1024; } }}, - {"coarsedetune::c:i", rDoc("Note coarse detune"), NULL, [](const char *msg, RtData &d) + {"coarsedetune::c:i", rProp(parameter) rDoc("Note coarse detune"), NULL, + [](const char *msg, RtData &d) { SUBnoteParameters *obj = (SUBnoteParameters *)d.obj; if(!rtosc_narguments(msg)) { diff --git a/src/Synth/OscilGen.cpp b/src/Synth/OscilGen.cpp @@ -75,7 +75,7 @@ const rtosc::Ports OscilGen::ports = { PC(adaptiveharmonicspar), //TODO update to rArray and test - {"phase#128::c", rDoc("Sets harmonic phase"), + {"phase#128::c", rProp(parameter) rDoc("Sets harmonic phase"), NULL, [](const char *m, rtosc::RtData &d) { const char *mm = m; while(*mm && !isdigit(*mm)) ++mm; @@ -86,7 +86,7 @@ const rtosc::Ports OscilGen::ports = { phase = rtosc_argument(m,0).i; }}, //TODO update to rArray and test - {"magnitude#128::c", rDoc("Sets harmonic magnitude"), + {"magnitude#128::c", rProp(parameter) rDoc("Sets harmonic magnitude"), NULL, [](const char *m, rtosc::RtData &d) { //printf("I'm at '%s'\n", d.loc); const char *mm = m; diff --git a/src/Synth/Resonance.cpp b/src/Synth/Resonance.cpp @@ -44,7 +44,7 @@ const rtosc::Ports Resonance::ports = { rAction(smooth, "Smooth out frequency response"), rAction(zero, "Reset frequency response"), //UI Value listeners - {"centerfreq:", rDoc("Get center frequency"), NULL, + {"centerfreq:", rDoc("Get center frequency") rMap(unit, Hz), NULL, [](const char *, RtData &d) {d.reply(d.loc, "f", ((rObject*)d.obj)->getcenterfreq());}}, {"octavesfreq:", rDoc("Get center freq of graph"), NULL,