-GUI Reverb knob events sent to DSP for mixing

This commit is contained in:
Harry van Haaren 2013-07-28 14:56:34 +01:00
parent 6d7c91ba61
commit 43b38fd4d6
6 changed files with 68 additions and 10 deletions

View file

@ -15,10 +15,19 @@
namespace Event
{
enum SEND_TYPE
{
SEND_REV = 0,
SEND_SIDE,
SEND_POST,
};
enum {
MASTER_VOL,
RECORD,
TRACK_SEND,
TRACK_SIGNAL_LEVEL,
TRACK_VOLUME,
@ -80,6 +89,20 @@ class EventTrackVol : public EventBase
}
};
class EventTrackSend : public EventBase
{
public:
int type() { return int(TRACK_SEND); }
uint32_t size() { return sizeof(EventTrackSend); }
int track;
SEND_TYPE send;
float value;
EventTrackSend(){};
EventTrackSend(int t, SEND_TYPE s, int v): track(t), send(s), value(v){}
};
class EventLooperState : public EventBase
{
public:

View file

@ -75,6 +75,22 @@ void handleDspEvents()
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventTimeTempoTap) );
jack->getTimeManager()->tap();
} break; }
case Event::TRACK_SEND: {
if ( availableRead >= sizeof(EventTrackSend) ) {
EventTrackSend ev;
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventTrackSend) );
if ( ev.send == SEND_REV )
jack->getTrackOutput(ev.track)->setReverb( ev.value );
else if ( ev.send == SEND_SIDE )
jack->getTrackOutput(ev.track)->setSidechain( ev.value );
else if ( ev.send == SEND_POST )
jack->getTrackOutput(ev.track)->setPostSidechain( ev.value );
else
{
// nothing
}
} break; }
default:
{
// just do nothing

View file

@ -6,6 +6,10 @@ extern Gui* gui;
extern void luppp_tooltip(std::string s);
//void gtrack_reverb_cb(Avtk::Dial *w, void *data)
void gtrack_button_callback(Fl_Widget *w, void *data)
{
int track = 0;

View file

@ -24,6 +24,7 @@
using namespace std;
static void gtrack_reverb_cb(Fl_Widget *w, void *data);
extern void gtrack_button_callback(Fl_Widget *w, void *data);
class GTrack : public Fl_Group
@ -45,9 +46,9 @@ class GTrack : public Fl_Group
volume(x+65, y +427, 36, 150, "Vol"),
dial2(x+22, y +440 + 0, 30, 30, "S-C"),
dial3(x+22, y +440 + 50, 30, 30, "P-S"),
dial1(x+22, y +440 +100, 30, 30, "Rev"),
side(x+22, y +440 + 0, 30, 30, "S-C"),
post(x+22, y +440 + 50, 30, 30, "P-S"),
rev (x+22, y +440 +100, 30, 30, "Rev"),
progress(x+5, y+ 26, 100, 100, "Source UI")
{
@ -55,6 +56,8 @@ class GTrack : public Fl_Group
clipSel.setID( ID );
rev.callback( gtrack_reverb_cb, this );
volume.callback( gtrack_button_callback, 0 );
progress.maximum(1.0f);
@ -95,14 +98,22 @@ class GTrack : public Fl_Group
Avtk::Volume volume;
Avtk::Dial dial1;
Avtk::Dial dial2;
Avtk::Dial dial3;
Avtk::Dial side;
Avtk::Dial post;
Avtk::Dial rev;
Fl_Progress progress;
static int privateID;
};
void gtrack_reverb_cb(Fl_Widget *w, void *data)
{
GTrack* track = (GTrack*) data;
EventTrackSend e( track->ID, SEND_REV, ((Avtk::Dial*)w)->value() );
writeToDspRingbuffer( &e );
//printf("track %i reverb send %f\n", track->ID, ((Avtk::Dial*)w)->value() );
}
#endif // LUPPP_G_TRACK_H

View file

@ -52,6 +52,10 @@ class Jack
{
return loopers.at(t);
}
TrackOutput* getTrackOutput(int t)
{
return trackOutputs.at(t);
}
Metronome* getMetronome(){return &metronome;}
TimeManager* getTimeManager(){return &timeManager;}

View file

@ -25,22 +25,22 @@ class TrackOutput : public AudioProcessor
/// set main mix, 0-1
void setMaster(float value)
{
_toMaster = value;
}
/// set sidechain mix, 0-1
void setSidechain(float value)
{
_toSidechain = value;
}
/// set post sidechain mix, 0-1
void setPostSidechain(float value)
{
_toPostSidechain = value;
}
/// set reverb mix, 0-1
void setReverb(float value)
{
_toReverb = value;
}
/// copies the track output to master buffer, sidechain & post-side buffer