-Updated MIDI bindings, added MasterReturn binding option

This commit is contained in:
Harry van Haaren 2013-11-21 14:11:06 +00:00
parent c8af69d044
commit 17950d7d00
15 changed files with 69 additions and 24 deletions

View file

@ -43,6 +43,7 @@ class Controller
virtual void masterInputTo(int to,float f){}
virtual void masterInputToActive(int to,float f){}
virtual void masterVolume(float f){}
virtual void masterReturnVolume(float f){}
virtual void metronomeEnable(bool b){}
/// FX

View file

@ -429,7 +429,7 @@ void GenericMIDI::midi(unsigned char* midi)
if ( b->status == status && b->data == data )
{
//LUPPP_NOTE("Executing action %i, value %f, b->active %i", b->action, value, int(b->active) );
LUPPP_NOTE("Executing action %s, value %f, b->active %i", Event::getPrettyName(b->action), value, int(b->active) );
switch( b->action )
{
@ -455,18 +455,27 @@ void GenericMIDI::midi(unsigned char* midi)
jack->getGridLogic()->launchScene( b->scene );
break;
case Event::MASTER_RETURN:
jack->getLogic()->masterReturn( RETURN_MAIN, value );
break;
case Event::MASTER_INPUT_VOL:
jack->getLogic()->masterInputVol( value );
break;
case Event::MASTER_INPUT_TO:
LUPPP_NOTE("GenMidi event INPUT_TO %i", b->send );
//LUPPP_NOTE("GenMidi event INPUT_TO %i", b->send );
jack->getLogic()->masterInputTo( b->send, value );
break;
case Event::MASTER_INPUT_TO_ACTIVE:
LUPPP_NOTE("GenMidi event INPUT_TO_ACTIVE %i", b->send );
//LUPPP_NOTE("GenMidi event INPUT_TO_ACTIVE %i", b->send );
jack->getLogic()->masterInputToActive( b->send, b->active );
break;
case Event::TIME_TEMPO_TAP:
jack->getLogic()->tapTempo();
break;
case Event::TIME_BPM:
jack->getLogic()->setBpm( value );
break;
case Event::METRONOME_ACTIVE:
jack->getLogic()->metronomeEnable( b->active );
break;
@ -764,7 +773,6 @@ Binding* GenericMIDI::setupBinding( cJSON* binding )
// check what our send value should be:
tmp->send = -1;
cJSON* sendJson = cJSON_GetObjectItem( binding, "send" );
if ( sendJson )
{

View file

@ -37,7 +37,14 @@ void LupppGUI::masterInputToActive(int to,float f)
void LupppGUI::masterVolume(float f)
{
EventTrackVol e( -1, f );
EventMasterVol e( f );
writeToGuiRingbuffer( &e );
}
void LupppGUI::masterReturnVolume(float f)
{
printf(" return %f ", f );
EventMasterReturn e( RETURN_MAIN, f );
writeToGuiRingbuffer( &e );
}

View file

@ -15,6 +15,7 @@ class LupppGUI : public Controller
std::string getName(){return "Luppp GUI";}
void masterVolume(float f);
void masterReturnVolume(float f);
void masterInputVol(float v);
void masterInputTo(int to,float f);
void masterInputToActive(int to,float f);

View file

@ -72,6 +72,12 @@ void ControllerUpdater::masterVolume(float v)
c.at(i)->masterVolume(v);
}
void ControllerUpdater::masterReturnVolume(float v)
{
for(unsigned int i = 0; i < c.size(); i++)
c.at(i)->masterReturnVolume( v );
}
void ControllerUpdater::setTrackSceneProgress(int t, int s, float p)
{
for(unsigned int i = 0; i < c.size(); i++)

View file

@ -42,6 +42,7 @@ class ControllerUpdater
void mute(int t, bool b);
void masterVolume(float v);
void masterReturnVolume(float v);
void masterInputToActive(int to, bool v);
void masterInputTo( int inputTo, float vol );
void masterInputVol( float vol );

View file

@ -15,6 +15,7 @@ const char* EventTrackRecordArm::prettyName = "track:record_arm";
const char* EventTimeBPM::prettyName = "tempo_bpm";
const char* EventTimeTempoTap::prettyName = "tempo_tap";
const char* EventMetronomeActive::prettyName = "metronome:active";
const char* EventGridEvent::prettyName = "grid:event";
const char* EventGridLaunchScene::prettyName = "grid:launch_scene";

View file

@ -26,7 +26,8 @@ namespace Event
};
enum RETURN_TYPE
{
RETURN_MAIN = 0,
RETURN_INVALID = 0,
RETURN_MAIN,
};
enum INPUT_TO
{
@ -281,10 +282,8 @@ class EventMasterReturn : public EventBase
const char* name(){ return prettyName; }
RETURN_TYPE ret;
float value;
EventMasterReturn(){};
EventMasterReturn(RETURN_TYPE s, float v): ret(s), value(v){}
float vol;
EventMasterReturn(RETURN_TYPE s=RETURN_INVALID, float v=0): ret(s), vol(v){}
};
class EventTrackVol : public EventBase
@ -517,11 +516,11 @@ class EventMetronomeActive : public EventBase
public:
int type() { return int(METRONOME_ACTIVE); }
uint32_t size() { return sizeof(EventMetronomeActive); }
static const char* prettyName;
const char* name(){ return prettyName; }
bool active;
EventMetronomeActive() : active(false) {}
EventMetronomeActive(bool a) : active(a) {}
EventMetronomeActive(bool a = false) : active(a) {}
};
class EventTimeBPM : public EventBase

View file

@ -90,7 +90,7 @@ void handleDspEvents()
EventMasterReturn ev;
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventMasterReturn) );
if ( ev.ret == RETURN_MAIN ) {
jack->returnVolume( ev.value );
jack->returnVolume( ev.vol );
}
} break; }
case Event::MASTER_INPUT_VOL: {

View file

@ -72,11 +72,17 @@ void handleGuiEvents()
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventMasterInputVol) );
gui->getMasterTrack()->setInputVol( ev.vol );
} break; }
case Event::MASTER_RETURN: {
if ( availableRead >= sizeof(EventMasterReturn) ) {
EventMasterReturn ev;
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventMasterReturn) );
gui->getMasterTrack()->setReturnVol( ev.vol );
} break; }
case Event::MASTER_VOL: {
if ( availableRead >= sizeof(EventMasterVol) ) {
EventMasterVol ev(0);
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventMasterVol) );
gui->getMasterTrack()->getVolume()->fader( ev.vol );
} break; }
@ -128,12 +134,7 @@ void handleGuiEvents()
if ( availableRead >= sizeof(EventTrackVol) ) {
EventTrackVol ev;
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackVol) );
if ( ev.track < 0 )
{
gui->getMasterTrack()->getVolume()->fader( ev.vol );
}
else
gui->getTrack(ev.track)->getVolume()->fader( ev.vol );
gui->getTrack(ev.track)->getVolume()->fader( ev.vol );
} break; }

View file

@ -4,7 +4,7 @@
static void gmastertrack_tempoDial_callback(Fl_Widget *w, void *data)
{
Avtk::Dial* b = (Avtk::Dial*)w;
float bpm = b->value() * 160 + 60; // 60 - 220
float bpm = b->value();
EventTimeBPM e = EventTimeBPM( bpm );
writeToDspRingbuffer( &e );
}
@ -201,6 +201,12 @@ void GMasterTrack::setInputVol(float f)
inputVolume.value( f );
}
void GMasterTrack::setReturnVol(float f)
{
LUPPP_NOTE(" gmtrck, returnVol %f", f );
returnVol.value( f );
}
void GMasterTrack::setInputTo(int to, float f)
{
//LUPPP_NOTE(" gmtrck, inputTO %i, %f", to, f );

View file

@ -36,6 +36,7 @@ class GMasterTrack : public Fl_Group
void setTapTempo( bool b );
void setBarBeat(int b, int beat);
void setReturnVol(float f);
void setInputVol(float f);
void setInputTo(int to, float f);
void setInputToActive(int to, bool f);

View file

@ -19,6 +19,11 @@ void Logic::tapTempo()
jack->getTimeManager()->tap();
}
void Logic::setBpm(float bpm)
{
jack->getTimeManager()->setBpm( bpm );
}
void Logic::metronomeEnable(bool b)
{
jack->getMetronome()->setActive(b);
@ -43,6 +48,12 @@ void Logic::masterInputToActive( int inputTo, bool active)
jack->getControllerUpdater()->masterInputToActive( (int)inputTo, active );
}
void Logic::masterReturn( int returnNum, float value )
{
jack->returnVolume( value );
jack->getControllerUpdater()->masterReturnVolume( value );
}
void Logic::trackVolume(int t, float v)
{
if ( t == -1 ) // master track

View file

@ -25,6 +25,7 @@ class Logic
Logic();
void tapTempo();
void setBpm(float bpm); /// 0-1 input
void metronomeEnable(bool b);
@ -32,7 +33,7 @@ class Logic
void masterInputTo( int inputTo, float v);
void masterInputToActive( int inputTo, bool active);
void masterReturn( int send, float v);
void masterReturn( int returnNum, float v);
void trackVolume(int track, float volume);
void trackRecordArm(int track, bool armed);

View file

@ -36,8 +36,9 @@ int TimeManager::getFpb()
}
void TimeManager::setBpm(float bpm)
void TimeManager::setBpm(float b)
{
float bpm = b * 160 + 60; // 60 - 220
#ifdef DEBUG_TIME
LUPPP_NOTE("%s %f","setBpm()",bpm);
#endif