zynaddsubfx

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

commit e4260cc33c52774c079f65ef6ce7c4f36c14c71f
parent 6d554221f91f17073063248255cf82758210b60c
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Sat, 24 Oct 2015 22:27:02 -0400

Rtosc: More Documentation On Rtosc Dispatch

Diffstat:
Msrc/Misc/Master.cpp | 26++++++++++++--------------
Msrc/Misc/Microtonal.cpp | 4++--
Msrc/Misc/Part.cpp | 26++++++++++++++++----------
Msrc/Params/ADnoteParameters.cpp | 3++-
Msrc/Params/LFOParams.cpp | 14+++++++++-----
5 files changed, 41 insertions(+), 32 deletions(-)

diff --git a/src/Misc/Master.cpp b/src/Misc/Master.cpp @@ -131,25 +131,20 @@ static const Ports master_ports = { d.reply("/free", "sb", "Part", sizeof(void*), &m->part[i]); m->part[i] = p; p->initialize_rt(); - //printf("part %d is now pointer %p\n", i, p); - }}, - {"Pvolume::i", rProp(parameter) rDoc("Master Volume"), 0, + }}, + {"Pvolume::i", rProp(parameter) rLinear(0,127) 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", rProp(parameter) rDoc("Master Volume"), 0, + {"volume::i", rProp(parameter) rLinear(0,127) 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') { - //printf("looking at value %d\n", rtosc_argument(m,0).i); - //printf("limited value is %d\n", limit<char>( - // rtosc_argument(m,0).i, 0,127)); ((Master*)d.obj)->setPvolume(limit<char>(rtosc_argument(m,0).i,0,127)); - //printf("sets volume to value %d\n", ((Master*)d.obj)->Pvolume); d.broadcast(d.loc, "i", ((Master*)d.obj)->Pvolume);}}}, {"Psysefxvol#" STRINGIFY(NUM_SYS_EFX) "/::i", 0, &sysefxPort, [](const char *msg, rtosc::RtData &d) { @@ -176,18 +171,21 @@ static const Ports master_ports = { [](const char *m,RtData &d){ Master *M = (Master*)d.obj; M->setController(rtosc_argument(m,0).i,rtosc_argument(m,1).i,rtosc_argument(m,2).i);}}, - {"Panic:", rDoc("Stop All Sound"), 0, + {"Panic:", rDoc("Stop all sound"), 0, [](const char *, RtData &d) { Master &M = *(Master*)d.obj; M.ShutUp(); }}, - {"freeze_state:", rDoc("Internal Read-only Mode"), 0, + {"freeze_state:", rProp(internal) rDoc("Disable OSC event handling\n" + "This sets up a read-only mode from which it's safe for another" + " thread to save parameters"), 0, [](const char *,RtData &d) { Master *M = (Master*)d.obj; std::atomic_thread_fence(std::memory_order_release); M->frozenState = true; d.reply("/state_frozen", "");}}, - {"thaw_state:", rDoc("Internal Read-only Mode"), 0, + {"thaw_state:", rProp(internal) rDoc("Resume handling OSC messages\n" + "See /freeze_state for more information"), 0, [](const char *,RtData &d) { Master *M = (Master*)d.obj; M->frozenState = false;}}, @@ -216,11 +214,11 @@ static const Ports master_ports = { m.memory->addMemory(mem, i); m.pendingMemory = false; }}, - {"samplerate:", rMap(unit, Hz) rDoc("Synthesizer Global Sample Rate"), 0, [](const char *, RtData &d) { + {"samplerate:", rMap(unit, Hz) rDoc("Get synthesizer sample rate"), 0, [](const char *, RtData &d) { Master &m = *(Master*)d.obj; d.reply("/samplerate", "f", m.synth.samplerate_f); }}, - {"oscilsize:", rDoc("Synthesizer Global Oscillator Size"), 0, [](const char *, RtData &d) { + {"oscilsize:", rDoc("Get synthesizer oscillator size"), 0, [](const char *, RtData &d) { Master &m = *(Master*)d.obj; d.reply("/oscilsize", "f", m.synth.oscilsize_f); d.reply("/oscilsize", "i", m.synth.oscilsize); @@ -639,7 +637,7 @@ void Master::AudioOut(float *outl, float *outr) DataObj d{loc_buf, 1024, this, bToU}; memset(loc_buf, 0, sizeof(loc_buf)); int events = 0; - while(uToB && uToB->hasNext() && events < 10) { + while(uToB && uToB->hasNext() && events < 100) { const char *msg = uToB->read(); if(!strcmp(msg, "/load-master")) { diff --git a/src/Misc/Microtonal.cpp b/src/Misc/Microtonal.cpp @@ -58,10 +58,10 @@ const rtosc::Ports Microtonal::ports = { rParamZyn(Pmiddlenote, "Scale degree 0 note"), //TODO check to see if this should be exposed - rParamZyn(Pmapsize, "UNDOCUMENTED"), + rParamZyn(Pmapsize, "Size of key map"), rToggle(Pmappingenabled, "Mapping Enable"), - rParams(Pmapping, "UNDOCUMENTED"), + rParams(Pmapping, 128, "Mapping of keys"), rParamZyn(Pglobalfinedetune, "Fine detune for all notes"), rString(Pname, MICROTONAL_MAX_NAME_LEN, "Microtonal Name"), diff --git a/src/Misc/Part.cpp b/src/Misc/Part.cpp @@ -71,16 +71,18 @@ static const Ports partPorts = { rParamZyn(Pvelsns, "Velocity sensing"), rParamZyn(Pveloffs, "Velocity offset"), rToggle(Pnoteon, "If the channel accepts note on events"), - //TODO FIXME Change to 0=OFF 1=MULTI 2=SINGLE - rParamI(Pkitmode, "Kit mode enable"), + rOption(Pkitmode, rOptions(Off, Multi-Kit, Single-Kit), "Kit mode/enable\n" + "Off - Only the first kit is ever utilized\n" + "Multi-kit - Every applicable kit is run for a note\n" + "Single-kit - The first applicable kit is run for a given note"), rToggle(Pdrummode, "Drum mode enable\n" "When drum mode is enabled all keys are mapped to 12tET and legato is disabled"), - rToggle(Ppolymode, "Polyphoney mode"), - rToggle(Plegatomode, "Legato enable"), + rToggle(Ppolymode, "Polyphony mode"), + rToggle(Plegatomode, "Legato mode"), rParamZyn(info.Ptype, "Class of Instrument"), - rString(info.Pauthor, MAX_INFO_TEXT_SIZE, "Instrument Author"), - rString(info.Pcomments, MAX_INFO_TEXT_SIZE, "Instrument Comments"), - rString(Pname, PART_MAX_NAME_LEN, "Kit User Specified Label"), + rString(info.Pauthor, MAX_INFO_TEXT_SIZE, "Instrument author"), + rString(info.Pcomments, MAX_INFO_TEXT_SIZE, "Instrument comments"), + rString(Pname, PART_MAX_NAME_LEN, "User specified label"), rArray(Pefxroute, NUM_PART_EFX, "Effect Routing"), rArrayT(Pefxbypass, NUM_PART_EFX, "If an effect is bypassed"), {"captureMin:", rDoc("Capture minimum valid note"), NULL, @@ -90,7 +92,13 @@ static const Ports partPorts = { [](const char *, RtData &r) {Part *p = (Part*)r.obj; p->Pmaxkey = p->lastnote;}}, {"polyType::c:i", rProp(parameter) rOptions(Polyphonic, Monophonic, Legato) - rDoc("synthesis polyphony type"), NULL, + rDoc("Synthesis polyphony type\n" + "Polyphonic - Each note is played independently\n" + "Monophonic - A single note is played at a time with" + " envelopes resetting between notes\n" + "Legato - A single note is played at a time without" + " envelopes resetting between notes\n" + ), NULL, [](const char *msg, RtData &d) { Part *p = (Part*)d.obj; @@ -188,8 +196,6 @@ static const Ports kitPorts = { assert(o.subpars == NULL); o.subpars = *(decltype(o.subpars)*)rtosc_argument(msg, 0).b.data; }}, - - // []( }; const Ports &Part::Kit::ports = kitPorts; diff --git a/src/Params/ADnoteParameters.cpp b/src/Params/ADnoteParameters.cpp @@ -95,7 +95,8 @@ static const Ports voicePorts = { //Modulator Stuff - rParamZyn(PFMEnabled, "Modulator Enable/Type"), + rOption(PFMEnabled, rOptions(none, morph, ring modulation, phase modulation, + frequency modulation, pitch modulation), "Modulator mode"), rParamI(PFMVoice, "Modulator Oscillator Selection"), rParamZyn(PFMVolume, "Modulator Magnitude"), rParamZyn(PFMVolumeDamp, "Modulator HF dampening"), diff --git a/src/Params/LFOParams.cpp b/src/Params/LFOParams.cpp @@ -36,13 +36,17 @@ using namespace rtosc; static const rtosc::Ports _ports = { rSelf(LFOParams), rPaste, - rParamF(Pfreq, "frequency of LFO"), + rParamF(Pfreq, rLinear(0.0,1.0), "frequency of LFO\n" + "lfo frequency = (2^(10*Pfreq)-1)/12 * stretch\n" + "true frequency is [0,85.33] Hz"), rParamZyn(Pintensity, "Intensity of LFO"), rParamZyn(Pstartphase, rSpecial(random), "Starting Phase"), - rOption(PLFOtype,"Shape of LFO"), - rParamZyn(Prandomness, rSpecial(disable), "Amplitude Randomness"), - rParamZyn(Pfreqrand, rSpecial(disable), "Frequency Randomness"), - rParamZyn(Pdelay, rSpecial(disable), "Delay before LFO start"), + rOption(PLFOtype, rOptions(sine, triangle, square, ramp-up, ramp-down, + exponential-down1, exponential-down2), "Shape of LFO"), + rParamZyn(Prandomness, rSpecial(disable), "Amplitude Randomness (calculated uniformly at each cycle)"), + rParamZyn(Pfreqrand, rSpecial(disable), "Frequency Randomness (calculated uniformly at each cycle)"), + rParamZyn(Pdelay, rSpecial(disable), "Delay before LFO start\n" + "0..4 second delay"), rToggle(Pcontinous, "Enable for global operation"), rParamZyn(Pstretch, rCentered, "Note frequency stretch"), };