zynaddsubfx

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

commit 1a0693fd91a0e1af2fbbf9dd42901da70eb44675
parent 2e241ede6674e52c62d83e37c2da24e5f403bde4
Author: Johannes Lorenz <[email protected]>
Date:   Wed, 24 Sep 2014 14:37:31 +0200

Changed many rtosc-c-args to i-args.

Diffstat:
Msrc/Misc/Master.cpp | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Msrc/Misc/MiddleWare.cpp | 2+-
Msrc/UI/ADnoteUI.fl | 12++++++------
Msrc/UI/FilterUI.fl | 4++--
Msrc/UI/Fl_Osc_Check.cpp | 7+++++--
Msrc/UI/Fl_Osc_Choice.H | 2+-
Msrc/UI/Fl_Osc_Choice.cpp | 2+-
Msrc/UI/Fl_Osc_Counter.cpp | 12+++++++-----
Msrc/UI/Fl_Osc_Dial.cpp | 7++++---
Msrc/UI/Fl_Osc_Roller.cpp | 2+-
Msrc/UI/Fl_Osc_Slider.cpp | 6++++--
Msrc/UI/Fl_Osc_VSlider.H | 2+-
Msrc/UI/Fl_Osc_VSlider.cpp | 6++++--
Msrc/UI/MasterUI.fl | 4++--
Msrc/UI/PADnoteUI.fl | 2+-
Msrc/UI/VirKeyboard.fl | 4++--
16 files changed, 105 insertions(+), 38 deletions(-)

diff --git a/src/Misc/Master.cpp b/src/Misc/Master.cpp @@ -71,14 +71,14 @@ static Ports localports = { d.reply("/free", "sb", "Part", sizeof(void*), &m->part[i]); m->part[i] = p; printf("part %d is now pointer %p\n", i, p);}}, - {"Pvolume::c", rDoc("Master Volume"), 0, + {"Pvolume::i", rDoc("Master Volume"), 0, [](const char *m, rtosc::RtData &d) { if(rtosc_narguments(m)==0) { d.reply(d.loc, "c", ((Master*)d.obj)->Pvolume); } else if(rtosc_narguments(m)==1 && rtosc_type(m,0)=='c') { ((Master*)d.obj)->setPvolume(limit<char>(rtosc_argument(m,0).i,0,127)); d.broadcast(d.loc, "c", ((Master*)d.obj)->Pvolume);}}}, - {"volume::c", rDoc("Master Volume"), 0, + {"volume::i", rDoc("Master Volume"), 0, [](const char *m, rtosc::RtData &d) { if(rtosc_narguments(m)==0) { d.reply(d.loc, "c", ((Master*)d.obj)->Pvolume); @@ -90,17 +90,17 @@ static Ports localports = { printf("sets volume to value %d\n", ((Master*)d.obj)->Pvolume); d.broadcast(d.loc, "c", ((Master*)d.obj)->Pvolume);}}}, - {"noteOn:ccc", rDoc("Noteon Event"), 0, + {"noteOn:iii", rDoc("Noteon Event"), 0, [](const char *m,RtData &d){ Master *M = (Master*)d.obj; M->noteOn(rtosc_argument(m,0).i,rtosc_argument(m,1).i,rtosc_argument(m,2).i);}}, - {"noteOff:cc", rDoc("Noteoff Event"), 0, + {"noteOff:ii", rDoc("Noteoff Event"), 0, [](const char *m,RtData &d){ Master *M = (Master*)d.obj; M->noteOff(rtosc_argument(m,0).i,rtosc_argument(m,1).i);}}, - {"setController:ccc", rDoc("MIDI CC Event"), 0, + {"setController:iii", rDoc("MIDI CC Event"), 0, [](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);}}, @@ -425,6 +425,57 @@ void Master::partonoff(int npart, int what) } } +template <class T> +struct def_skip +{ + static void skip(const char*& argptr) { argptr += sizeof(T); } +}; + +template <class T> +struct str_skip +{ + static void skip(const char*& argptr) { while(argptr++); /*TODO: 4 padding */ } +}; + +template<class T, class Display = T, template<class T> class SkipsizeFunc = def_skip> +void _dump_prim_arg(const char*& argptr, std::ostream& os) +{ + os << ' ' << (Display)*(const T*)argptr; + SkipsizeFunc<T>::skip(argptr); +} + +void dump_msg(const char* ptr, std::ostream& os = std::cerr) +{ + assert(*ptr == '/'); + os << ptr; + + while(*++ptr) ; // skip address + while(!*++ptr) ; // skip 0s + + assert(*ptr == ','); + os << ' ' << (ptr + 1); + + const char* argptr = ptr; + while(*++argptr) ; // skip type string + while(!*++argptr) ; // skip 0s + + char c; + while((c = *++ptr)) + { + switch(c) + { + case 'i': + _dump_prim_arg<int32_t>(argptr, os); break; + case 'c': + _dump_prim_arg<int32_t, char>(argptr, os); break; + // case 's': + // _dump_prim_arg<char, const char*>(argptr, os); break; + default: + exit(1); + } + } + +} /* * Master audio out (the final sound) @@ -457,11 +508,17 @@ void Master::AudioOut(float *outl, float *outr) } d.matches = 0; //fprintf(stdout, "address '%s'\n", uToB->peak()); - ports.dispatch(msg+1, d); + ports.dispatch(msg+1, d); events++; if(!d.matches) {// && !ports.apropos(msg)) { fprintf(stderr, "%c[%d;%d;%dm", 0x1B, 1, 7 + 30, 0 + 40); fprintf(stderr, "Unknown address '%s'\n", uToB->peak()); + if(strstr(msg, "PFMVelocity")) + dump_msg(msg); + if(ports.apropos(msg)) + fprintf(stderr, " -> best match: '%s'\n", ports.apropos(msg)->name); + if(ports.apropos(msg+1)) + fprintf(stderr, " -> best match: '%s'\n", ports.apropos(msg+1)->name); fprintf(stderr, "%c[%d;%d;%dm", 0x1B, 0, 7 + 30, 0 + 40); } } diff --git a/src/Misc/MiddleWare.cpp b/src/Misc/MiddleWare.cpp @@ -90,7 +90,7 @@ void path_search(const char *m) char buffer[1024*20]; size_t length = rtosc_amessage(buffer, sizeof(buffer), "/paths", types, args); if(length) { - lo_message msg = lo_message_deserialise((void*)buffer, length, NULL); + lo_message msg = lo_message_deserialise((void*)buffer, length, NULL); lo_address addr = lo_address_new_from_url(last_url.c_str()); if(addr) lo_send_message(addr, buffer, msg); diff --git a/src/UI/ADnoteUI.fl b/src/UI/ADnoteUI.fl @@ -285,7 +285,7 @@ o->redraw();} Fl_Value_Slider {} { label Vol tooltip Volume xywh {540 80 160 15} type {Horz Knob} box NO_BOX labelsize 11 align 8 maximum 127 step 1 - code0 {o->init("PFMVolume", 'c');} + code0 {o->init("PFMVolume", 'i');} class Fl_Osc_Slider } Fl_Value_Slider {} { @@ -313,7 +313,7 @@ o->redraw();} Fl_Value_Slider {} { label {F.Damp} tooltip {Modulator Damp at Higher frequency} xywh {540 120 160 15} type {Horz Knob} box NO_BOX labelsize 11 align 8 minimum -64 maximum 63 step 1 - code0 {o->init("PFMVolumeDamp",'c');} + code0 {o->init("PFMVolumeDamp",'i');} class Fl_Osc_Slider } } @@ -350,7 +350,7 @@ oscedit=new OscilEditor(true, loc+"mod-oscil/", osc_i);} callback {oscFM->phase=64-(int) o->value(); fmoscil->redraw();} xywh {645 415 105 15} type {Horz Knob} box NO_BOX labelsize 10 align 5 minimum -64 maximum 63 step 1 - code0 {o->init("PFMoscilphase", 'c');} + code0 {o->init("PFMoscilphase", 'i');} class Fl_Osc_Slider } Fl_Choice extFMoscil { @@ -383,7 +383,7 @@ voiceFMparametersgroup->redraw();} open xywh {635 40 85 20} down_box BORDER_BOX labelsize 10 align 5 textfont 1 textsize 10 code0 {o->add("OFF");} code1 {char tmp[50]; for (int i=0;i<nvoice;i++) {sprintf(tmp,"ExtMod.%2d",i+1);o->add(tmp);};} - code2 {o->init("PFMVoice",-1);} + code2 {o->init("PFMVoice", -1);} code3 {if ((int) o->value() != 0) {modoscil->deactivate();modfrequency->deactivate();}} class Fl_Osc_Choice } {} @@ -532,7 +532,7 @@ o->redraw();} callback {osc->phase=64-(int) o->value(); voiceoscil->redraw();} xywh {10 435 65 10} type {Horz Knob} box NO_BOX labelsize 10 align 5 minimum -64 maximum 63 step 1 - code0 {o->init("Poscilphase", 'c');} + code0 {o->init("Poscilphase", 'i');} class Fl_Osc_Slider } Fl_Check_Button {} { @@ -593,7 +593,7 @@ voiceonbutton->redraw();} open label {Frequency Spread} callback {//unisonspreadoutput->do_callback();} tooltip {Frequency Spread of the Unison} xywh {95 562 125 13} type {Horz Knob} box NO_BOX labelsize 12 align 1 maximum 127 step 1 value 64 - code0 {o->init("Unison_frequency_spread", 'c');} + code0 {o->init("Unison_frequency_spread", 'i');} class Fl_Osc_Slider } Fl_Value_Output unisonspreadoutput { diff --git a/src/UI/FilterUI.fl b/src/UI/FilterUI.fl @@ -389,13 +389,13 @@ formantfiltergraph->redraw();} Fl_Slider cfknob { callback {/*formantfiltergraph->redraw();*/} xywh {551 167 84 15} type {Horz Knob} box FLAT_BOX maximum 127 - code0 {o->init("Pcenterfreq", 'c');} + code0 {o->init("Pcenterfreq", 'i');} class Fl_Osc_Slider } Fl_Slider octknob { callback {/*formantfiltergraph->redraw();*/} xywh {551 185 84 15} type {Horz Knob} box FLAT_BOX maximum 127 - code0 {o->init("Poctavesfreq", 'c');} + code0 {o->init("Poctavesfreq", 'i');} class Fl_Osc_Slider } Fl_Box formantfiltergraph { diff --git a/src/UI/Fl_Osc_Check.cpp b/src/UI/Fl_Osc_Check.cpp @@ -42,8 +42,11 @@ void Fl_Osc_Check::cb(void) if(type == 'T') oscWrite(ext, value() ? "T" : "F"); - else - oscWrite(ext, "c", value()); + else { + if(type=='c') + fprintf(stderr, "invalid `c' from checkbox %s%s, using `i'\n", loc.c_str(), ext.c_str()); + oscWrite(ext, "i", value()); + } } void Fl_Osc_Check::callback(Fl_Callback *cb, void *p) diff --git a/src/UI/Fl_Osc_Choice.H b/src/UI/Fl_Osc_Choice.H @@ -14,7 +14,7 @@ class Fl_Osc_Choice:public Fl_Choice, public Fl_Osc_Widget //void OSC_value(float); - void OSC_value(char); + void OSC_value(char); //Refetch parameter information void update(void); diff --git a/src/UI/Fl_Osc_Choice.cpp b/src/UI/Fl_Osc_Choice.cpp @@ -60,7 +60,7 @@ void Fl_Osc_Choice::OSC_value(char v) void Fl_Osc_Choice::cb(void) { assert(osc); - oscWrite(ext, "c", value()+min); + oscWrite(ext, "i", value()+min); if(cb_data.first) cb_data.first(this, cb_data.second); } diff --git a/src/UI/Fl_Osc_Counter.cpp b/src/UI/Fl_Osc_Counter.cpp @@ -38,16 +38,18 @@ void Fl_Osc_Counter::OSC_value(char v) { value(v); } - + void Fl_Osc_Counter::cb(void) { assert(osc); - if(cb_type == 'c') - oscWrite(ext, "c", (char)(value())); + if(cb_type == 'c') { + fprintf(stderr, "invalid `c' from counter %s%s, using `i'\n", loc.c_str(), ext.c_str()); + oscWrite(ext, "i", (int)(value())); + } else - oscWrite(ext, "i", (int)value()); - + oscWrite(ext, "i", (int)value()); + if(cb_data.first) cb_data.first(this, cb_data.second); } diff --git a/src/UI/Fl_Osc_Dial.cpp b/src/UI/Fl_Osc_Dial.cpp @@ -78,9 +78,10 @@ void Fl_Osc_Dial::cb(void) { assert(osc); - if((maximum()-minimum()) == 127 || (maximum()-minimum()) == 255) - oscWrite(ext, "c", (char)(value()-minimum())); - else +/* if((maximum()-minimum()) == 127 || (maximum()-minimum()) == 255) { + oscWrite(ext, "i", (int)(value()-minimum())); + } + else*/ oscWrite(ext, "i", (int)(value()-minimum())); if(cb_data.first) diff --git a/src/UI/Fl_Osc_Roller.cpp b/src/UI/Fl_Osc_Roller.cpp @@ -45,7 +45,7 @@ void Fl_Osc_Roller::update(void) void Fl_Osc_Roller::cb(void) { - oscWrite(name, "c", (unsigned char)value()); + oscWrite(name, "i", (int)value()); if(cb_data.first) cb_data.first(this, cb_data.second); diff --git a/src/UI/Fl_Osc_Slider.cpp b/src/UI/Fl_Osc_Slider.cpp @@ -55,8 +55,10 @@ void Fl_Osc_Slider::cb(void) oscWrite(ext, "f", val-min_); else if(osc_type == 'i') oscWrite(ext, "i", (int)(val-min_)); - else - oscWrite(ext, "c", (char)(val-min_)); + else { + fprintf(stderr, "invalid `c' from slider %s%s, using `i'\n", loc.c_str(), ext.c_str()); + oscWrite(ext, "i", (int)(val-min_)); + } //OSC_value(val); if(cb_data.first) diff --git a/src/UI/Fl_Osc_VSlider.H b/src/UI/Fl_Osc_VSlider.H @@ -12,7 +12,7 @@ class Fl_Osc_VSlider:public Fl_Value_Slider, public Fl_Osc_Widget virtual ~Fl_Osc_VSlider(void); void OSC_value(char); void OSC_value(float); - void init(std::string, char type = 'c'); + void init(std::string, char type = 'i'); //Refetch parameter information void update(void); diff --git a/src/UI/Fl_Osc_VSlider.cpp b/src/UI/Fl_Osc_VSlider.cpp @@ -41,8 +41,10 @@ void Fl_Osc_VSlider::cb(void) oscWrite(ext, "f", val-minimum()); else if(osc_type == 'i') oscWrite(ext, "i", (int)(val-minimum())); - else - oscWrite(ext, "c", (char)(val-minimum())); + else { + fprintf(stderr, "invalid `c' from vslider %s%s, using `i'\n", loc.c_str(), ext.c_str()); + oscWrite(ext, "i", (int)(val-minimum())); + } //OSC_value(val); if(cb_data.first) diff --git a/src/UI/MasterUI.fl b/src/UI/MasterUI.fl @@ -142,7 +142,7 @@ bankui->show();} } Fl_Slider partvolume { xywh {10 65 30 110} type {Vert Knob} box NO_BOX minimum 127 maximum 0 step 1 value 127 - code0 {o->init("Pvolume", 'c');} + code0 {o->init("Pvolume", 'i');} class Fl_Osc_Slider } Fl_Dial partpanning { @@ -1038,7 +1038,7 @@ bankui->show();} Fl_Slider partpanning { label Pan xywh {185 95 145 15} type {Horz Knob} box NO_BOX labelsize 11 maximum 127 step 1 value 64 - code0 {o->init("Ppanning",'c');} + code0 {o->init("Ppanning",'i');} class Fl_Osc_Slider } Fl_Choice partrcv { diff --git a/src/UI/PADnoteUI.fl b/src/UI/PADnoteUI.fl @@ -705,7 +705,7 @@ cbwidget->do_callback();} Fl_Value_Slider volume { label Vol tooltip Volume xywh {10 50 160 15} type {Horz Knob} box NO_BOX labelsize 11 align 8 maximum 127 step 1 - code0 {o->init("PVolume", 'c');} + code0 {o->init("PVolume", 'i');} class Fl_Osc_VSlider } Fl_Value_Slider vsns { diff --git a/src/UI/VirKeyboard.fl b/src/UI/VirKeyboard.fl @@ -280,7 +280,7 @@ if (rndvelocity!=0){ vel=midivel*(127.0-rndvelocity)/127.0+RND*rndvelocity; }; -osc->write(loc+"noteOn", "ccc", midich,nk+midioct*12,(int)vel);} {} +osc->write(loc+"noteOn", "iii", midich,nk+midioct*12,(int)vel);} {} } Function {relasekey(int nk,int type)} {} { code {if ((nk<0)||(nk>=N_OCT*12)) return; @@ -292,7 +292,7 @@ pressed[nk]=0; damage(1); -osc->write(loc+"noteOff", "cc", midich,nk+12*midioct);} {} +osc->write(loc+"noteOff", "ii", midich,nk+12*midioct);} {} } Function {relaseallkeys(int type)} {} { code {for (int i=0;i<N_OCT*12;i++) relasekey(i,type);} {}