mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-05 09:01:39 -05:00
implemented events for jack send return
This commit is contained in:
parent
f02d8aa43b
commit
3bf4a14dec
19 changed files with 207 additions and 13 deletions
|
@ -66,6 +66,9 @@ class Controller
|
||||||
/// FX
|
/// FX
|
||||||
virtual void trackSend(int t, int send, float v){}
|
virtual void trackSend(int t, int send, float v){}
|
||||||
virtual void trackSendActive(int t, int send, bool a){}
|
virtual void trackSendActive(int t, int send, bool a){}
|
||||||
|
|
||||||
|
virtual void trackJackSend(int t, float v){}
|
||||||
|
virtual void trackJackSendActivate(int t, bool a){}
|
||||||
|
|
||||||
/// Time
|
/// Time
|
||||||
virtual void bpm(int bpm){}
|
virtual void bpm(int bpm){}
|
||||||
|
|
|
@ -209,6 +209,16 @@ void GenericMIDI::trackSendActive(int t, int send, bool a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GenericMIDI::trackJackSend(int t, float v)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void GenericMIDI::trackJackSendActivate(int t, bool a)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
void GenericMIDI::progress(int t, int s, float f)
|
void GenericMIDI::progress(int t, int s, float f)
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,6 +75,9 @@ class GenericMIDI : public Controller, public MidiIO
|
||||||
|
|
||||||
void trackSend(int t, int send, float v);
|
void trackSend(int t, int send, float v);
|
||||||
void trackSendActive(int t, int send, bool a);
|
void trackSendActive(int t, int send, bool a);
|
||||||
|
|
||||||
|
virtual void trackJackSend(int t, float v);
|
||||||
|
virtual void trackJackSendActivate(int t, bool a);
|
||||||
|
|
||||||
/// footswitch -> scene launch controls
|
/// footswitch -> scene launch controls
|
||||||
void setFootswitchToNextScene(int v);
|
void setFootswitchToNextScene(int v);
|
||||||
|
|
|
@ -95,6 +95,18 @@ void LupppGUI::trackSendActive(int t, int send, bool a)
|
||||||
writeToGuiRingbuffer( &e );
|
writeToGuiRingbuffer( &e );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LupppGUI::trackJackSend(int t, float v)
|
||||||
|
{
|
||||||
|
EventTrackJackSend e(t,v);
|
||||||
|
writeToGuiRingbuffer(&e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LupppGUI::trackJackSendActivate(int t, bool a)
|
||||||
|
{
|
||||||
|
EventTrackJackSendActivate e(t,a);
|
||||||
|
writeToGuiRingbuffer(&e);
|
||||||
|
}
|
||||||
|
|
||||||
void LupppGUI::setSceneState(int t, int clip, GridLogic::State s)
|
void LupppGUI::setSceneState(int t, int clip, GridLogic::State s)
|
||||||
{
|
{
|
||||||
EventGridState e( t, clip, s );
|
EventGridState e( t, clip, s );
|
||||||
|
|
|
@ -41,6 +41,9 @@ class LupppGUI : public Controller
|
||||||
|
|
||||||
void trackSend(int t, int send, float r);
|
void trackSend(int t, int send, float r);
|
||||||
void trackSendActive(int t, int send, bool a);
|
void trackSendActive(int t, int send, bool a);
|
||||||
|
|
||||||
|
virtual void trackJackSend(int t, float v);
|
||||||
|
virtual void trackJackSendActivate(int t, bool a);
|
||||||
|
|
||||||
void bpm(int bpm);
|
void bpm(int bpm);
|
||||||
void tapTempo( bool b );
|
void tapTempo( bool b );
|
||||||
|
|
|
@ -117,7 +117,19 @@ void ControllerUpdater::setTrackSendActive(int t, int send, bool v)
|
||||||
void ControllerUpdater::setTrackSend(int t, int send, float v)
|
void ControllerUpdater::setTrackSend(int t, int send, float v)
|
||||||
{
|
{
|
||||||
for(unsigned int i = 0; i < c.size(); i++)
|
for(unsigned int i = 0; i < c.size(); i++)
|
||||||
c.at(i)->trackSend(t, send, v);
|
c.at(i)->trackSend(t, send, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ControllerUpdater::setTrackJackSendActive(int t, bool v)
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0; i < c.size(); i++)
|
||||||
|
c.at(i)->trackJackSendActivate(t, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ControllerUpdater::setTrackJackSend(int t, float v)
|
||||||
|
{
|
||||||
|
for(unsigned int i = 0; i < c.size(); i++)
|
||||||
|
c.at(i)->trackJackSend(t, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControllerUpdater::specialScene(int t, int scene)
|
void ControllerUpdater::specialScene(int t, int scene)
|
||||||
|
|
|
@ -67,6 +67,9 @@ class ControllerUpdater
|
||||||
void setTrackSceneProgress(int t, int s, float p);
|
void setTrackSceneProgress(int t, int s, float p);
|
||||||
void setTrackSendActive(int t, int send, bool v);
|
void setTrackSendActive(int t, int send, bool v);
|
||||||
void setTrackSend(int t, int send, float v);
|
void setTrackSend(int t, int send, float v);
|
||||||
|
|
||||||
|
void setTrackJackSendActive(int t, bool v);
|
||||||
|
void setTrackJackSend(int t, float v);
|
||||||
|
|
||||||
void specialScene(int t, int scene);
|
void specialScene(int t, int scene);
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ const char* EventMasterInputToActive::prettyName = "master:input_to_active";
|
||||||
const char* EventTrackVol::prettyName = "track:volume";
|
const char* EventTrackVol::prettyName = "track:volume";
|
||||||
const char* EventTrackSend::prettyName = "track:send";
|
const char* EventTrackSend::prettyName = "track:send";
|
||||||
const char* EventTrackSendActive::prettyName = "track:send_active";
|
const char* EventTrackSendActive::prettyName = "track:send_active";
|
||||||
|
const char* EventTrackJackSend::prettyName = "track:jack_send";
|
||||||
|
const char* EventTrackJackSendActivate::prettyName = "track:jack_send_activate";
|
||||||
const char* EventTrackRecordArm::prettyName = "track:record_arm";
|
const char* EventTrackRecordArm::prettyName = "track:record_arm";
|
||||||
|
|
||||||
const char* EventTimeBPM::prettyName = "tempo_bpm";
|
const char* EventTimeBPM::prettyName = "tempo_bpm";
|
||||||
|
@ -67,6 +69,8 @@ const char* Event::getPrettyName( int type )
|
||||||
case TRACK_VOLUME:{ return EventTrackVol::prettyName; }
|
case TRACK_VOLUME:{ return EventTrackVol::prettyName; }
|
||||||
case TRACK_SEND:{ return EventTrackSend::prettyName; }
|
case TRACK_SEND:{ return EventTrackSend::prettyName; }
|
||||||
case TRACK_SEND_ACTIVE:{ return EventTrackSendActive::prettyName; }
|
case TRACK_SEND_ACTIVE:{ return EventTrackSendActive::prettyName; }
|
||||||
|
case TRACK_JACKSEND:{ return EventTrackJackSend::prettyName; }
|
||||||
|
case TRACK_JACKSEND_ACTIVATE:{ return EventTrackJackSendActivate::prettyName; }
|
||||||
case TRACK_RECORD_ARM:{ return EventTrackRecordArm::prettyName; }
|
case TRACK_RECORD_ARM:{ return EventTrackRecordArm::prettyName; }
|
||||||
|
|
||||||
case TIME_BPM:{ return EventTimeBPM::prettyName; }
|
case TIME_BPM:{ return EventTimeBPM::prettyName; }
|
||||||
|
|
|
@ -84,6 +84,8 @@ namespace Event
|
||||||
GRID_SELECT_NEW_CHOSEN, // a different clip is now "special"
|
GRID_SELECT_NEW_CHOSEN, // a different clip is now "special"
|
||||||
|
|
||||||
/// Track
|
/// Track
|
||||||
|
TRACK_JACKSEND,
|
||||||
|
TRACK_JACKSEND_ACTIVATE,
|
||||||
TRACK_SEND,
|
TRACK_SEND,
|
||||||
TRACK_SEND_ACTIVE,
|
TRACK_SEND_ACTIVE,
|
||||||
TRACK_SIGNAL_LEVEL,
|
TRACK_SIGNAL_LEVEL,
|
||||||
|
@ -471,6 +473,22 @@ class EventTrackSend : public EventBase
|
||||||
EventTrackSend(int t, SEND_TYPE s, float v): track(t), send(s), value(v){}
|
EventTrackSend(int t, SEND_TYPE s, float v): track(t), send(s), value(v){}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class EventTrackJackSend : public EventBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int type() { return int(TRACK_JACKSEND); }
|
||||||
|
uint32_t size() { return sizeof(EventTrackJackSend); }
|
||||||
|
static const char* prettyName;
|
||||||
|
const char* name(){ return prettyName; }
|
||||||
|
|
||||||
|
int track;
|
||||||
|
|
||||||
|
float value;
|
||||||
|
|
||||||
|
EventTrackJackSend(){};
|
||||||
|
EventTrackJackSend(int t, float v): track(t), value(v){}
|
||||||
|
};
|
||||||
|
|
||||||
class EventTrackSendActive : public EventBase
|
class EventTrackSendActive : public EventBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -487,6 +505,20 @@ class EventTrackSendActive : public EventBase
|
||||||
EventTrackSendActive(int t, SEND_TYPE s, bool a): track(t), send(s), active(a){}
|
EventTrackSendActive(int t, SEND_TYPE s, bool a): track(t), send(s), active(a){}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class EventTrackJackSendActivate : public EventBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
int type() { return int(TRACK_JACKSEND_ACTIVATE); }
|
||||||
|
uint32_t size() { return sizeof(EventTrackJackSendActivate); }
|
||||||
|
static const char* prettyName;
|
||||||
|
const char* name(){ return prettyName; }
|
||||||
|
|
||||||
|
int track;
|
||||||
|
bool active;
|
||||||
|
|
||||||
|
EventTrackJackSendActivate(){};
|
||||||
|
EventTrackJackSendActivate(int t, bool a): track(t), active(a){}
|
||||||
|
};
|
||||||
class EventLooperState : public EventBase
|
class EventLooperState : public EventBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -287,6 +287,24 @@ void handleDspEvents()
|
||||||
jack->bindingSend = ev.send;
|
jack->bindingSend = ev.send;
|
||||||
jack->bindingActive = ev.active;
|
jack->bindingActive = ev.active;
|
||||||
} break; }
|
} break; }
|
||||||
|
|
||||||
|
case Event::TRACK_JACKSEND_ACTIVATE: {
|
||||||
|
if ( availableRead >= sizeof(EventTrackJackSendActivate) ) {
|
||||||
|
EventTrackJackSendActivate ev;
|
||||||
|
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventTrackJackSendActivate) );
|
||||||
|
jack->getLogic()->trackJackSendActivate(ev.track,ev.active);
|
||||||
|
jack->bindingTrack = ev.track;
|
||||||
|
|
||||||
|
jack->bindingActive = ev.active;
|
||||||
|
} break; }
|
||||||
|
|
||||||
|
case Event::TRACK_JACKSEND: {
|
||||||
|
if ( availableRead >= sizeof(EventTrackJackSend) ) {
|
||||||
|
EventTrackJackSend ev;
|
||||||
|
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventTrackJackSend) );
|
||||||
|
jack->getLogic()->trackJackSend(ev.track,ev.value);
|
||||||
|
jack->bindingTrack = ev.track;
|
||||||
|
} break; }
|
||||||
|
|
||||||
case Event::TRACK_SEND: {
|
case Event::TRACK_SEND: {
|
||||||
if ( availableRead >= sizeof(EventTrackSend) ) {
|
if ( availableRead >= sizeof(EventTrackSend) ) {
|
||||||
|
|
|
@ -244,6 +244,20 @@ void handleGuiEvents()
|
||||||
gui->getTrack(ev.track)->setXSide( ev.value );
|
gui->getTrack(ev.track)->setXSide( ev.value );
|
||||||
}
|
}
|
||||||
} break; }
|
} break; }
|
||||||
|
|
||||||
|
case Event::TRACK_JACKSEND: {
|
||||||
|
if ( availableRead >= sizeof(EventTrackJackSend) ) {
|
||||||
|
EventTrackJackSend ev;
|
||||||
|
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackJackSend) );
|
||||||
|
gui->getTrack(ev.track)->setJackSend(ev.value);
|
||||||
|
} break; }
|
||||||
|
|
||||||
|
case Event::TRACK_JACKSEND_ACTIVATE: {
|
||||||
|
if ( availableRead >= sizeof(EventTrackJackSendActivate) ) {
|
||||||
|
EventTrackJackSendActivate ev;
|
||||||
|
jack_ringbuffer_read( rbToGui, (char*)&ev, sizeof(EventTrackJackSendActivate) );
|
||||||
|
gui->getTrack(ev.track)->setJackSendActivate(ev.active);
|
||||||
|
} break; }
|
||||||
|
|
||||||
case Event::TRACK_SEND_ACTIVE: {
|
case Event::TRACK_SEND_ACTIVE: {
|
||||||
if ( availableRead >= sizeof(EventTrackSendActive) ) {
|
if ( availableRead >= sizeof(EventTrackSendActive) ) {
|
||||||
|
|
|
@ -74,7 +74,7 @@ GTrack::GTrack(int x, int y, int w, int h, const char* l ) :
|
||||||
|
|
||||||
volume.callback( gtrack_vol_cb, this );
|
volume.callback( gtrack_vol_cb, this );
|
||||||
|
|
||||||
jackSendActivate.setColor( 0, 0.6, 1 );
|
jackSendActivate.setColor( 1, 1, 0 );
|
||||||
jackSendActivate.callback(gtrack_jacksendactivate_cb,this);
|
jackSendActivate.callback(gtrack_jacksendactivate_cb,this);
|
||||||
jackSendDial.align(FL_ALIGN_INSIDE);
|
jackSendDial.align(FL_ALIGN_INSIDE);
|
||||||
//volBox.color( fl_rgb_color( 0,0,0 ) );
|
//volBox.color( fl_rgb_color( 0,0,0 ) );
|
||||||
|
@ -97,6 +97,15 @@ void GTrack::setSendActive(bool a){ sendActive.value( a ); }
|
||||||
void GTrack::setKeyActive(bool a){ keyActive.value( a ); }
|
void GTrack::setKeyActive(bool a){ keyActive.value( a ); }
|
||||||
void GTrack::setRecordActive(bool a){ recordActive.value( a ); }
|
void GTrack::setRecordActive(bool a){ recordActive.value( a ); }
|
||||||
|
|
||||||
|
void GTrack::setJackSend(float s)
|
||||||
|
{
|
||||||
|
jackSendDial.value(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GTrack::setJackSendActivate(bool a)
|
||||||
|
{
|
||||||
|
jackSendActivate.value(a);
|
||||||
|
}
|
||||||
|
|
||||||
void gtrack_sendDial_cb(Fl_Widget *w, void *data)
|
void gtrack_sendDial_cb(Fl_Widget *w, void *data)
|
||||||
{
|
{
|
||||||
|
@ -185,5 +194,15 @@ void gtrack_jacksendactivate_cb(Fl_Widget* w,void *data)
|
||||||
Avtk::LightButton* d = (Avtk::LightButton*)w;
|
Avtk::LightButton* d = (Avtk::LightButton*)w;
|
||||||
bool b=d->value();
|
bool b=d->value();
|
||||||
d->value(!b);
|
d->value(!b);
|
||||||
|
if ( b < 0.5 )
|
||||||
|
{
|
||||||
|
EventTrackJackSendActivate e( track->ID, 1.0f );
|
||||||
|
writeToDspRingbuffer( &e );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EventTrackJackSendActivate e( track->ID, 0.0f );
|
||||||
|
writeToDspRingbuffer( &e );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,8 @@ class GTrack : public Fl_Group
|
||||||
void setKeyActive(bool a);
|
void setKeyActive(bool a);
|
||||||
void setRecordActive(bool a);
|
void setRecordActive(bool a);
|
||||||
|
|
||||||
|
void setJackSend(float s);
|
||||||
|
void setJackSendActivate(bool a);
|
||||||
|
|
||||||
int ID;
|
int ID;
|
||||||
|
|
||||||
|
|
14
src/jack.cxx
14
src/jack.cxx
|
@ -326,6 +326,20 @@ TrackOutput* Jack::getTrackOutput(int t)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JackSendReturn* Jack::getJackSendReturn(int t)
|
||||||
|
{
|
||||||
|
if ( t >= 0 && t < NTRACKS )
|
||||||
|
return tracksendreturns.at(t);
|
||||||
|
#ifdef DEBUG_TRACKS
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf( "Jack::getTrackOutput() returning 0x0: invalid track requested!\n" );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Looper* Jack::getLooper(int t)
|
Looper* Jack::getLooper(int t)
|
||||||
{
|
{
|
||||||
|
|
|
@ -111,8 +111,9 @@ class Jack
|
||||||
int bindingScene;
|
int bindingScene;
|
||||||
int bindingSend;
|
int bindingSend;
|
||||||
int bindingActive;
|
int bindingActive;
|
||||||
|
|
||||||
private:
|
JackSendReturn *getJackSendReturn(int t);
|
||||||
|
private:
|
||||||
jack_client_t* client;
|
jack_client_t* client;
|
||||||
|
|
||||||
Buffers buffers;
|
Buffers buffers;
|
||||||
|
|
|
@ -9,6 +9,7 @@ JackSendReturn::JackSendReturn(int trackid, AudioProcessor *prev, jack_client_t
|
||||||
m_sendport=jack_port_register(client,name,JACK_DEFAULT_AUDIO_TYPE,JackPortIsOutput,0);
|
m_sendport=jack_port_register(client,name,JACK_DEFAULT_AUDIO_TYPE,JackPortIsOutput,0);
|
||||||
sprintf(name, "Return_track_%d\0",trackid);
|
sprintf(name, "Return_track_%d\0",trackid);
|
||||||
m_returnport=jack_port_register(client,name,JACK_DEFAULT_AUDIO_TYPE,JackPortIsInput,0);
|
m_returnport=jack_port_register(client,name,JACK_DEFAULT_AUDIO_TYPE,JackPortIsInput,0);
|
||||||
|
m_active=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void JackSendReturn::process(unsigned int nframes, Buffers *buffers)
|
void JackSendReturn::process(unsigned int nframes, Buffers *buffers)
|
||||||
|
@ -22,17 +23,25 @@ void JackSendReturn::process(unsigned int nframes, Buffers *buffers)
|
||||||
float* ret=(float*)jack_port_get_buffer(m_returnport,(jack_nframes_t)nframes);
|
float* ret=(float*)jack_port_get_buffer(m_returnport,(jack_nframes_t)nframes);
|
||||||
|
|
||||||
//Copy result of previous AudioProcessor to send port
|
//Copy result of previous AudioProcessor to send port
|
||||||
memcpy(send,buffers->audio[Buffers::SEND_TRACK_0+m_trackid],nframes*sizeof(float));
|
//memcpy(send,buffers->audio[Buffers::SEND_TRACK_0+m_trackid],nframes*sizeof(float));
|
||||||
|
for(int i=0;i<nframes;i++)
|
||||||
|
send[i]+=m_sendvol*buffers->audio[Buffers::SEND_TRACK_0+m_trackid][i];
|
||||||
|
|
||||||
//Get connection status
|
|
||||||
bool connected=jack_port_connected(m_returnport);
|
if(m_active)
|
||||||
//Is return port connected?
|
|
||||||
//Yes then grab the audio data from the connected port
|
|
||||||
//No: get the audio from the previous AudioProcessor
|
|
||||||
if(connected)
|
|
||||||
memcpy(buffers->audio[Buffers::RETURN_TRACK_0+m_trackid],ret,nframes*sizeof(float));
|
memcpy(buffers->audio[Buffers::RETURN_TRACK_0+m_trackid],ret,nframes*sizeof(float));
|
||||||
else
|
else
|
||||||
memcpy(buffers->audio[Buffers::RETURN_TRACK_0+m_trackid],
|
memcpy(buffers->audio[Buffers::RETURN_TRACK_0+m_trackid],
|
||||||
buffers->audio[Buffers::SEND_TRACK_0+m_trackid],nframes*sizeof(float));
|
buffers->audio[Buffers::SEND_TRACK_0+m_trackid],nframes*sizeof(float));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JackSendReturn::activate(bool act)
|
||||||
|
{
|
||||||
|
m_active=act;
|
||||||
|
}
|
||||||
|
|
||||||
|
void JackSendReturn::sendVolume(float vol)
|
||||||
|
{
|
||||||
|
m_sendvol=vol;
|
||||||
|
}
|
||||||
|
|
|
@ -36,7 +36,14 @@ public:
|
||||||
//The process callback
|
//The process callback
|
||||||
virtual void process(unsigned int nframes, Buffers* buffers);
|
virtual void process(unsigned int nframes, Buffers* buffers);
|
||||||
|
|
||||||
|
//Activate the return chain. When m_active=true then Buffers::RETURN_TRACK_0+m_trackid gets the data
|
||||||
|
//from the return port. The send port always send the incoming data
|
||||||
|
void activate(bool act);
|
||||||
|
void sendVolume(float vol);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool m_active;
|
||||||
|
float m_sendvol;
|
||||||
jack_port_t* m_sendport;
|
jack_port_t* m_sendport;
|
||||||
jack_port_t* m_returnport;
|
jack_port_t* m_returnport;
|
||||||
int m_trackid;
|
int m_trackid;
|
||||||
|
|
|
@ -25,7 +25,7 @@ extern Jack* jack;
|
||||||
#include "controllerupdater.hxx"
|
#include "controllerupdater.hxx"
|
||||||
#include "trackoutput.hxx"
|
#include "trackoutput.hxx"
|
||||||
#include "metronome.hxx"
|
#include "metronome.hxx"
|
||||||
|
#include "jacksendreturn.hxx"
|
||||||
Logic::Logic()
|
Logic::Logic()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -128,6 +128,32 @@ void Logic::trackSend(int t, int send, float v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Logic::trackJackSendActivate(int t, bool active)
|
||||||
|
{
|
||||||
|
if ( t >= 0 && t < NTRACKS )
|
||||||
|
{
|
||||||
|
jack->getJackSendReturn(t)->activate(active);
|
||||||
|
jack->getControllerUpdater()->setTrackJackSendActive( t, active );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Logic::trackJackSend(int t, float vol)
|
||||||
|
{
|
||||||
|
if ( t >= 0 && t < NTRACKS )
|
||||||
|
{
|
||||||
|
jack->getJackSendReturn(t)->sendVolume(vol);
|
||||||
|
jack->getControllerUpdater()->setTrackJackSend( t, vol );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LUPPP_WARN("invalid track number %i: check controller map has \"track\" field.", t );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Logic::looperClipLenght(int t, int s, int l)
|
void Logic::looperClipLenght(int t, int s, int l)
|
||||||
{
|
{
|
||||||
if ( t >= 0 && t < NTRACKS )
|
if ( t >= 0 && t < NTRACKS )
|
||||||
|
|
|
@ -56,7 +56,9 @@ class Logic
|
||||||
void trackRecordArm(int track, bool armed);
|
void trackRecordArm(int track, bool armed);
|
||||||
void trackSendActive(int track, int send, bool active);
|
void trackSendActive(int track, int send, bool active);
|
||||||
void trackSend(int track, int send, float value);
|
void trackSend(int track, int send, float value);
|
||||||
|
|
||||||
|
void trackJackSendActivate(int t, bool active);
|
||||||
|
void trackJackSend(int t, float vol);
|
||||||
void looperUseAsTempo(int track, int scene);
|
void looperUseAsTempo(int track, int scene);
|
||||||
void looperClipLenght(int track, int scene, int lenght);
|
void looperClipLenght(int track, int scene, int lenght);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue