-Added APC volume support using MIDI. Needs refactoring to scale to any controller

This commit is contained in:
Harry van Haaren 2013-07-27 21:59:20 +01:00
parent 5148aec4e5
commit 112d850848
3 changed files with 33 additions and 2 deletions

View file

@ -20,6 +20,7 @@ namespace Event
RECORD,
TRACK_SIGNAL_LEVEL,
TRACK_VOLUME,
LOOPER_LOAD,
LOOPER_STATE,
@ -62,6 +63,23 @@ class EventMasterVol : public EventBase
}
};
class EventTrackVol : public EventBase
{
public:
int type() { return int(TRACK_VOLUME); }
uint32_t size() { return sizeof(EventTrackVol); }
int track;
float vol;
EventTrackVol(){};
EventTrackVol(int t, float v)
{
track = t;
vol = v;
}
};
class EventLooperState : public EventBase
{
public:

View file

@ -66,12 +66,20 @@ void handleGuiEvents()
gui->getTrack(ev.track)->progress.value(ev.progress);
//jack->setLooperLoopLength( ev.track, ev.scale );
} break; }
case Event::TRACK_SIGNAL_LEVEL: {
if ( availableRead >= sizeof(EventTrackSignalLevel) ) {
EventTrackSignalLevel ev;
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackSignalLevel) );
gui->getTrack(ev.track)->getVolume()->amplitude( ev.left, ev.right );
} break; }
case Event::TRACK_VOLUME: {
if ( availableRead >= sizeof(EventTrackVol) ) {
EventTrackVol ev;
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackVol) );
gui->getTrack(ev.track)->getVolume()->value( ev.vol );
} break; }
case Event::GUI_PRINT: {
if ( availableRead >= sizeof(EventGuiPrint) ) {
EventGuiPrint ev;

View file

@ -73,7 +73,13 @@ void Looper::midi(unsigned char* data)
{
switch ( data[1] )
{
case 7: gain = int(data[2])/127.f; break;
//case 7: gain = int(data[2])/127.f; break;
case 7:{
printf("volue\n");
// volume from APC
EventTrackVol e( track, data[2] / 127.f );
writeToGuiRingbuffer( &e ); }
break;
}
}
@ -204,7 +210,6 @@ void Looper::process(int nframes, Buffers* buffers)
}
}
}
}