commit 361f02f7dcc36877ee03df740d56429044e81cd4
parent d3421c30a2a1547b5849ff117bc021dc7d949daf
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Tue, 13 Oct 2015 14:49:10 -0400
Enhance Oscdoc Output
Diffstat:
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,