Browse Source

Update zynaddsubfx

tags/1.9.7
falkTX 10 years ago
parent
commit
dcdebf1375
3 changed files with 45 additions and 20 deletions
  1. +24
    -13
      source/native-plugins/zynaddsubfx/Effects/EffectMgr.cpp
  2. +2
    -2
      source/native-plugins/zynaddsubfx/Effects/EffectMgr.h
  3. +19
    -5
      source/native-plugins/zynaddsubfx/UI/SUBnoteUI.fl

+ 24
- 13
source/native-plugins/zynaddsubfx/Effects/EffectMgr.cpp View File

@@ -43,7 +43,7 @@ static const rtosc::Ports local_ports = {
rSelf(EffectMgr),
rPaste,
rRecurp(filterpars, "Filter Parameter for Dynamic Filter"),
{"parameter#64::i", rProp(alias) rDoc("Parameter Accessor"), NULL,
{"parameter#128::i", rProp(alias) rDoc("Parameter Accessor"), NULL,
[](const char *msg, rtosc::RtData &d)
{
EffectMgr *eff = (EffectMgr*)d.obj;
@@ -52,8 +52,10 @@ static const rtosc::Ports local_ports = {

if(!rtosc_narguments(msg))
d.reply(d.loc, "i", eff->geteffectparrt(atoi(mm)));
else
else {
eff->seteffectparrt(atoi(mm), rtosc_argument(msg, 0).i);
d.broadcast(d.loc, "i", eff->geteffectparrt(atoi(mm)));
}
}},
{"preset::i", rProp(alias) rDoc("Effect Preset Selector"), NULL,
[](const char *msg, rtosc::RtData &d)
@@ -61,8 +63,10 @@ static const rtosc::Ports local_ports = {
EffectMgr *eff = (EffectMgr*)d.obj;
if(!rtosc_narguments(msg))
d.reply(d.loc, "i", eff->getpreset());
else
else {
eff->changepresetrt(rtosc_argument(msg, 0).i);
d.broadcast(d.loc, "i", eff->getpreset());
}
}},
{"eq-coeffs:", rProp(internal) rDoc("Get equalizer Coefficients"), NULL,
[](const char *, rtosc::RtData &d)
@@ -81,9 +85,10 @@ static const rtosc::Ports local_ports = {
{"efftype::i", rDoc("Get Effect Type"), NULL, [](const char *m, rtosc::RtData &d)
{
EffectMgr *eff = (EffectMgr*)d.obj;
if(rtosc_narguments(m))
if(rtosc_narguments(m)) {
eff->changeeffectrt(rtosc_argument(m,0).i);
else
d.broadcast(d.loc, "i", eff->nefx);
} else
d.reply(d.loc, "i", eff->nefx);
}},
{"efftype:b", rProp(internal) rDoc("Pointer swap EffectMgr"), NULL,
@@ -141,7 +146,7 @@ void EffectMgr::defaults(void)
}

//Change the effect
void EffectMgr::changeeffectrt(int _nefx)
void EffectMgr::changeeffectrt(int _nefx, bool avoidSmash)
{
cleanup();
if(nefx == _nefx && efx != NULL)
@@ -185,6 +190,10 @@ void EffectMgr::changeeffectrt(int _nefx)

if(efx)
filterpars = efx->filterpars;

if(!avoidSmash)
for(int i=0; i<128; ++i)
settings[i] = geteffectparrt(i);
}

void EffectMgr::changeeffect(int _nefx)
@@ -203,8 +212,8 @@ int EffectMgr::geteffect(void)
// Initialize An Effect in RT context
void EffectMgr::init(void)
{
changeeffectrt(nefx);
changepresetrt(preset);
changeeffectrt(nefx, true);
changepresetrt(preset, true);
for(int i=0; i<128; ++i)
seteffectparrt(i, settings[i]);
}
@@ -240,11 +249,14 @@ void EffectMgr::changepreset(unsigned char npreset)
}

// Change the preset of the current effect
void EffectMgr::changepresetrt(unsigned char npreset)
void EffectMgr::changepresetrt(unsigned char npreset, bool avoidSmash)
{
preset = npreset;
if(efx)
efx->setpreset(npreset);
if(!avoidSmash)
for(int i=0; i<128; ++i)
settings[i] = geteffectparrt(i);
}

//Change a parameter of the current effect
@@ -368,11 +380,10 @@ void EffectMgr::setdryonly(bool value)

void EffectMgr::paste(EffectMgr &e)
{
changeeffectrt(e.nefx);
changepresetrt(e.preset);
for(int i=0;i<128;++i){
changeeffectrt(e.nefx, true);
changepresetrt(e.preset, true);
for(int i=0;i<128;++i)
seteffectparrt(e.settings[i], i);
}
}

void EffectMgr::add2XML(XMLwrapper *xml)


+ 2
- 2
source/native-plugins/zynaddsubfx/Effects/EffectMgr.h View File

@@ -62,11 +62,11 @@ class EffectMgr:public Presets
void kill(void) REALTIME;
void cleanup(void) REALTIME;

void changeeffectrt(int nefx_) REALTIME;
void changeeffectrt(int nefx_, bool avoidSmash=false) REALTIME;
void changeeffect(int nefx_) NONREALTIME;
int geteffect(void);
void changepreset(unsigned char npreset) NONREALTIME;
void changepresetrt(unsigned char npreset) REALTIME;
void changepresetrt(unsigned char npreset, bool avoidSmash=false) REALTIME;
unsigned char getpreset(void);
void seteffectpar(int npar, unsigned char value) NONREALTIME;
void seteffectparrt(int npar, unsigned char value) REALTIME;


+ 19
- 5
source/native-plugins/zynaddsubfx/UI/SUBnoteUI.fl View File

@@ -52,6 +52,20 @@ class PPSlider {: {public Fl_Slider, public Fl_Osc_Widget}
} {
code {int X=x(),Y=y(),W=w(),H=h();

// catch any (un)learn event first
{
bool middle_mouse = (event == FL_PUSH && Fl::event_state(FL_BUTTON2) && !Fl::event_shift());
bool ctl_click = (event == FL_PUSH && Fl::event_state(FL_BUTTON1) && Fl::event_ctrl());
bool shift_middle = (event == FL_PUSH && Fl::event_state(FL_BUTTON2) && Fl::event_shift());
if(middle_mouse || ctl_click) {
osc->write("/learn", "s", (loc+ext).c_str());
return 1;
} else if(shift_middle) {
osc->write("/unlearn", "s", (loc+ext).c_str());
return 1;
}
}

if ((!Fl::event_buttons())|| (event==0)||(Fl::event_shift()==0)) return(Fl_Slider::handle(event));

if (!Fl::event_inside(X,Y,W,H)) {
@@ -100,7 +114,7 @@ class SUBnoteharmonic {: {public Fl_Osc_Group}
int x=0;
if (Fl::event_button1() || Fl::event() == FL_MOUSEWHEEL) x=127-(int)o->value();
else o->value(127-x);
o->osc->writeValue(o->loc + "Phmag" + to_s(n), (char) x);
o->osc->writeValue(o->loc + o->ext, (char) x);
if (x==0) o->selection_color(0);
else o->selection_color(222);}
tooltip {harmonic's magnitude} xywh {0 15 10 135} type {Vert Knob} box FLAT_BOX selection_color 222 maximum 127 step 1 value 127
@@ -137,16 +151,16 @@ if (Fl::event_button1() || Fl::event() == FL_MOUSEWHEEL) x=127-(int)o->value();
code {n=n_;
make_window();
harmonic->show();
osc->createLink(base+"Phmag"+to_s(n), mag);
mag->ext = "Phmag" + to_s(n);
mag->oscRegister(mag->ext.c_str());
osc->createLink(base+"Phrelbw"+to_s(n), bw);
osc->requestValue(base+"Phmag"+to_s(n));
osc->requestValue(base+"Phrelbw"+to_s(n));

end();} {}
}
Function {refresh()} {} {
code {osc->requestValue(base+"Phmag"+to_s(n));
code {// request values for the widgets
mag->oscWrite(mag->ext);
osc->requestValue(base+"Phrelbw"+to_s(n));} {}
}
Function {~SUBnoteharmonic()} {} {


Loading…
Cancel
Save