mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-05 09:01:39 -05:00
-Updated MIDI bindings, added MasterReturn binding option
This commit is contained in:
parent
c8af69d044
commit
17950d7d00
15 changed files with 69 additions and 24 deletions
|
@ -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
|
||||
|
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
@ -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 );
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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: {
|
||||
|
|
|
@ -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; }
|
||||
|
||||
|
||||
|
|
|
@ -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 );
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue