93 if ( pOther ==
nullptr ) {
97 return (
m_sType == pOther->m_sType &&
107 sOutput = QString(
"%1[Action]\n" ).arg( sPrefix )
108 .append( QString(
"%1%2m_sType: %3\n" ).arg( sPrefix ).arg( s ).arg(
m_sType ) )
109 .append( QString(
"%1%2m_sValue: %3\n" ).arg( sPrefix ).arg( s ).arg(
m_sValue ) )
110 .append( QString(
"%1%2m_sParameter1: %3\n" ).arg( sPrefix ).arg( s ).arg(
m_sParameter1 ) )
111 .append( QString(
"%1%2m_sParameter2: %3\n" ).arg( sPrefix ).arg( s ).arg(
m_sParameter2 ) )
112 .append( QString(
"%1%2m_sParameter3: %3\n" ).arg( sPrefix ).arg( s ).arg(
m_sParameter3 ) );
114 sOutput = QString(
"[Action]" )
115 .append( QString(
" m_sType: %1" ).arg(
m_sType ) )
116 .append( QString(
", m_sValue: %1" ).arg(
m_sValue ) )
117 .append( QString(
", m_sParameter1: %1" ).arg(
m_sParameter1 ) )
118 .append( QString(
", m_sParameter2: %1" ).arg(
m_sParameter2 ) )
119 .append( QString(
", m_sParameter3: %1" ).arg(
m_sParameter3 ) );
185 m_actionMap.insert(std::make_pair(
"INSTRUMENT_PITCH",
197 m_actionMap.insert(std::make_pair(
"CLEAR_SELECTED_INSTRUMENT", std::make_pair(
199 m_actionMap.insert(std::make_pair(
"CLEAR_PATTERN", std::make_pair(
224 if ( pHydrogen->
getSong() ==
nullptr ) {
237 if ( pHydrogen->
getSong() ==
nullptr ) {
248 if ( pHydrogen->
getSong() ==
nullptr ) {
259 if ( pHydrogen->
getSong() ==
nullptr ) {
264 QString sActionString = pAction->getType();
272 if( sActionString ==
"PLAY/STOP_TOGGLE" ) {
279 ERRORLOG(
"[Hydrogen::ActionManager(PLAY): Unhandled case" );
289 if ( pHydrogen->
getSong() ==
nullptr ) {
299 if ( pHydrogen->
getSong() ==
nullptr ) {
309 if ( pHydrogen->
getSong() ==
nullptr ) {
318 auto pSong = pHydrogen->
getSong();
321 if ( pSong ==
nullptr ) {
327 int nLine = pAction->getParameter1().toInt(&ok,10);
329 auto pInstrList = pSong->getInstrumentList();
331 auto pInstr = pInstrList->get( nLine );
332 if ( pInstr ==
nullptr ) {
333 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
341 auto pSong = pHydrogen->
getSong();
344 if ( pSong ==
nullptr ) {
350 int nLine = pAction->getParameter1().toInt(&ok,10);
352 auto pInstrList = pSong->getInstrumentList();
354 auto pInstr = pInstrList->get( nLine );
355 if ( pInstr ==
nullptr ) {
356 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
365 if ( pHydrogen->
getSong() ==
nullptr ) {
375 if ( pHydrogen->
getSong() ==
nullptr ) {
393 pAction->getParameter1().toInt(&ok,10) );
403 auto pSong = pHydrogen->getSong();
406 if ( pSong ==
nullptr ) {
411 if ( nPatternNumber > pSong->getPatternList()->size() - 1 ||
412 nPatternNumber < 0 ) {
413 ERRORLOG( QString(
"Provided value [%1] out of bound [0,%2]" ).arg( nPatternNumber )
414 .arg( pSong->getPatternList()->size() - 1 ) );
419 pHydrogen->setSelectedPatternNumber( nPatternNumber );
422 pHydrogen->toggleNextPattern( nPatternNumber );
440 auto pSong = pHydrogen->getSong();
443 if ( pSong ==
nullptr ) {
448 if ( nPatternNumber > pSong->getPatternList()->size() -1 ||
449 nPatternNumber < 0 ) {
451 ERRORLOG( QString(
"Provided pattern number [%1] out of bound [0,%2]." )
452 .arg( nPatternNumber )
453 .arg( pSong->getPatternList()->size() - 1 ) );
457 INFOLOG( QString(
"Provided pattern number [%1] out of bound [0,%2]. All patterns will be deselected." )
458 .arg( nPatternNumber )
459 .arg( pSong->getPatternList()->size() - 1 ) );
467 return pHydrogen->flushAndAddNextPattern( nPatternNumber );
472 if ( pHydrogen->
getSong() ==
nullptr ) {
489 auto pSong = pHydrogen->
getSong();
492 if ( pSong ==
nullptr ) {
498 int nInstrumentNumber = pAction->getValue().toInt(&ok,10) ;
500 if ( pSong->getInstrumentList()->size() < nInstrumentNumber ) {
501 nInstrumentNumber = pSong->getInstrumentList()->size() -1;
502 }
else if ( nInstrumentNumber < 0 ) {
503 nInstrumentNumber = 0;
511 auto pSong = pHydrogen->
getSong();
514 if ( pSong ==
nullptr ) {
520 int nLine = pAction->getParameter1().toInt(&ok,10);
521 int fx_param = pAction->getValue().toInt(&ok,10);
522 int fx_id = pAction->getParameter2().toInt(&ok,10);
524 auto pInstrList = pSong->getInstrumentList();
526 auto pInstr = pInstrList->get( nLine );
527 if ( pInstr ==
nullptr) {
528 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
532 if( fx_param != 0 ) {
533 pInstr->set_fx_level( (
float) (fx_param / 127.0 ), fx_id );
535 pInstr->set_fx_level( 0 , fx_id );
546 auto pSong = pHydrogen->
getSong();
549 if ( pSong ==
nullptr ) {
555 int nLine = pAction->getParameter1().toInt(&ok,10);
556 int fx_param = pAction->getValue().toInt(&ok,10);
557 int fx_id = pAction->getParameter2().toInt(&ok,10);
559 auto pInstrList = pSong->getInstrumentList();
561 auto pInstr = pInstrList->get( nLine );
562 if ( pInstr ==
nullptr) {
563 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
566 if ( fx_param != 0 ) {
567 if ( fx_param == 1 && pInstr->get_fx_level( fx_id ) <= 0.95 ) {
568 pInstr->set_fx_level( pInstr->get_fx_level( fx_id ) + 0.05, fx_id );
570 else if ( pInstr->get_fx_level( fx_id ) >= 0.05 ) {
571 pInstr->set_fx_level( pInstr->get_fx_level( fx_id ) - 0.05, fx_id );
584 auto pSong = pHydrogen->
getSong();
587 if ( pSong ==
nullptr ) {
593 int nVolume = pAction->getValue().toInt(&ok,10);
595 if ( nVolume != 0 ) {
596 pSong->setVolume( 1.5* ( (
float) (nVolume / 127.0 ) ));
598 pSong->setVolume( 0 );
606 auto pSong = pHydrogen->
getSong();
609 if ( pSong ==
nullptr ) {
615 int nVolume = pAction->getValue().toInt(&ok,10);
617 if ( nVolume != 0 ) {
618 if ( nVolume == 1 && pSong->getVolume() < 1.5 ) {
619 pSong->setVolume( pSong->getVolume() + 0.05 );
620 }
else if ( pSong->getVolume() >= 0.0 ) {
621 pSong->setVolume( pSong->getVolume() - 0.05 );
624 pSong->setVolume( 0 );
632 auto pSong = pHydrogen->
getSong();
635 if ( pSong ==
nullptr ) {
641 int nLine = pAction->getParameter1().toInt(&ok,10);
642 int nVolume = pAction->getValue().toInt(&ok,10);
644 auto pInstrList = pSong->getInstrumentList();
646 auto pInstr = pInstrList->get( nLine );
647 if ( pInstr ==
nullptr ) {
648 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
652 if ( nVolume != 0 ) {
653 pInstr->set_volume( 1.5* ( (
float) (nVolume / 127.0 ) ));
655 pInstr->set_volume( 0 );
666 auto pSong = pHydrogen->
getSong();
669 if ( pSong ==
nullptr ) {
675 int nLine = pAction->getParameter1().toInt(&ok,10);
676 int nVolume = pAction->getValue().toInt(&ok,10);
678 auto pInstrList = pSong->getInstrumentList();
680 auto pInstr = pInstrList->get( nLine );
682 if ( pInstr ==
nullptr) {
683 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
688 if ( nVolume == 1 && pInstr->get_volume() < 1.5 ) {
689 pInstr->set_volume( pInstr->get_volume() + 0.1 );
691 else if( pInstr->get_volume() >= 0.0 ){
692 pInstr->set_volume( pInstr->get_volume() - 0.1 );
696 pInstr->set_volume( 0 );
707 auto pSong = pHydrogen->
getSong();
710 if ( pSong ==
nullptr ) {
716 int nLine = pAction->getParameter1().toInt(&ok,10);
717 int pan_param = pAction->getValue().toInt(&ok,10);
719 auto pInstrList = pSong->getInstrumentList();
721 auto pInstr = pInstrList->get( nLine );
722 if( pInstr ==
nullptr ) {
723 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
727 pInstr->setPanWithRangeFrom0To1( (
float) pan_param / 127.f );
738 auto pSong = pHydrogen->
getSong();
741 if ( pSong ==
nullptr ) {
747 int nLine = pAction->getParameter1().toInt(&ok,10);
748 int pan_param = pAction->getValue().toInt(&ok,10);
750 auto pInstrList = pSong->getInstrumentList();
752 auto pInstr = pInstrList->get( nLine );
753 if ( pInstr ==
nullptr ) {
754 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
758 pInstr->setPan( (
float) pan_param / 127.f );
770 auto pSong = pHydrogen->
getSong();
773 if ( pSong ==
nullptr ) {
779 int nLine = pAction->getParameter1().toInt(&ok,10);
780 int pan_param = pAction->getValue().toInt(&ok,10);
782 auto pInstrList = pSong->getInstrumentList();
784 auto pInstr = pInstrList->get( nLine );
785 if ( pInstr ==
nullptr ) {
786 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
790 float fPan = pInstr->getPan();
792 if ( pan_param == 1 && fPan < 1.f ) {
793 pInstr->setPan( fPan + 0.1 );
795 else if ( pan_param != 1 && fPan > -1.f ) {
796 pInstr->setPan( fPan - 0.1 );
806 auto pSong = pHydrogen->
getSong();
809 if ( pSong ==
nullptr ) {
815 int nLine = pAction->getParameter1().toInt(&ok,10);
816 int gain_param = pAction->getValue().toInt(&ok,10);
817 int component_id = pAction->getParameter2().toInt(&ok,10);
818 int layer_id = pAction->getParameter3().toInt(&ok,10);
820 auto pInstrList = pSong->getInstrumentList();
822 auto pInstr = pInstrList->get( nLine );
823 if( pInstr ==
nullptr ) {
824 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
828 auto pComponent = pInstr->get_component( component_id );
829 if( pComponent ==
nullptr) {
830 ERRORLOG( QString(
"Unable to retrieve component (Par. 2) [%1]" ).arg( component_id ) );
834 auto pLayer = pComponent->get_layer( layer_id );
835 if( pLayer ==
nullptr ) {
836 ERRORLOG( QString(
"Unable to retrieve layer (Par. 3) [%1]" ).arg( layer_id ) );
840 if ( gain_param != 0 ) {
841 pLayer->set_gain( 5.0* ( (
float) (gain_param / 127.0 ) ) );
843 pLayer->set_gain( 0 );
853 auto pSong = pHydrogen->
getSong();
856 if ( pSong ==
nullptr ) {
862 int nLine = pAction->getParameter1().toInt(&ok,10);
863 int pitch_param = pAction->getValue().toInt(&ok,10);
864 int component_id = pAction->getParameter2().toInt(&ok,10);
865 int layer_id = pAction->getParameter3().toInt(&ok,10);
867 auto pInstrList = pSong->getInstrumentList();
869 auto pInstr = pInstrList->get( nLine );
870 if( pInstr ==
nullptr ) {
871 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
875 auto pComponent = pInstr->get_component( component_id );
876 if( pComponent ==
nullptr) {
877 ERRORLOG( QString(
"Unable to retrieve component (Par. 2) [%1]" ).arg( component_id ) );
881 auto pLayer = pComponent->get_layer( layer_id );
882 if( pLayer ==
nullptr ) {
883 ERRORLOG( QString(
"Unable to retrieve layer (Par. 3) [%1]" ).arg( layer_id ) );
887 if ( pitch_param != 0 ) {
905 const int nInstrument = pAction->getParameter1().toInt(&ok,10);
906 const int nPitchMidi = pAction->getValue().toInt(&ok,10);
907 if ( nPitchMidi != 0 ) {
915 setInstrumentPitch( nInstrument, fPitch );
919 auto pSong = pHydrogen->
getSong();
922 if ( pSong ==
nullptr ) {
928 int nLine = pAction->getParameter1().toInt(&ok,10);
929 int filter_cutoff_param = pAction->getValue().toInt(&ok,10);
931 auto pInstrList = pSong->getInstrumentList();
933 auto pInstr = pInstrList->get( nLine );
934 if( pInstr ==
nullptr ) {
935 ERRORLOG( QString(
"Unable to retrieve instrument (Par. 1) [%1]" ).arg( nLine ) );
939 pInstr->set_filter_active(
true );
940 if( filter_cutoff_param != 0 ) {
941 pInstr->set_filter_cutoff( ( (
float) (filter_cutoff_param / 127.0 ) ) );
943 pInstr->set_filter_cutoff( 0 );
959 if ( pHydrogen->
getSong() ==
nullptr ) {
970 int mult = pAction->getParameter1().toInt(&ok,10);
972 int cc_param = pAction->getValue().toInt(&ok,10);
982 pAudioEngine->setNextBpm( fBpm - 1*mult );
983 pAudioEngine->unlock();
985 pHydrogen->
getSong()->setBpm( fBpm - 1*mult );
992 pAudioEngine->setNextBpm( fBpm + 1*mult );
993 pAudioEngine->unlock();
995 pHydrogen->
getSong()->setBpm( fBpm + 1*mult );
1011 if ( pHydrogen->
getSong() ==
nullptr ) {
1021 int mult = pAction->getParameter1().toInt(&ok,10);
1023 int cc_param = pAction->getValue().toInt(&ok,10);
1033 pAudioEngine->setNextBpm( fBpm - 0.01*mult );
1034 pAudioEngine->unlock();
1036 pHydrogen->
getSong()->setBpm( fBpm - 0.01*mult );
1042 pAudioEngine->setNextBpm( fBpm + 0.01*mult );
1043 pAudioEngine->unlock();
1045 pHydrogen->
getSong()->setBpm( fBpm + 0.01*mult );
1057 if ( pHydrogen->
getSong() ==
nullptr ) {
1066 int mult = pAction->getParameter1().toInt(&ok,10);
1070 pAudioEngine->setNextBpm( fBpm + 1*mult );
1071 pAudioEngine->unlock();
1073 pHydrogen->
getSong()->setBpm( fBpm + 1*mult );
1082 if ( pHydrogen->
getSong() ==
nullptr ) {
1091 int mult = pAction->getParameter1().toInt(&ok,10);
1095 pAudioEngine->setNextBpm( fBpm - 1*mult );
1096 pAudioEngine->unlock();
1098 pHydrogen->
getSong()->setBpm( fBpm - 1*mult );
1107 if ( pHydrogen->
getSong() ==
nullptr ) {
1113 getTransportPosition()->getColumn() ) + 1;
1122 if ( pHydrogen->
getSong() ==
nullptr ) {
1135 if ( nActiveSongNumber != nSongNumber ) {
1140 if ( pHydrogen->
getSong() ==
nullptr ) {
1144 ___ERRORLOG( QString(
"No songs added to the current playlist yet" ) );
1147 ___ERRORLOG( QString(
"Provided song number [%1] out of bound [0,%2]" )
1158 int songnumber = pAction->getParameter1().toInt(&ok,10);
1159 return setSong( songnumber, pHydrogen );
1164 return setSong( ++songnumber, pHydrogen );
1169 return setSong( --songnumber, pHydrogen );
1174 if ( pHydrogen->
getSong() ==
nullptr ) {
1192 if ( pHydrogen->
getSong() ==
nullptr ) {
1208 if ( pHydrogen->
getSong() ==
nullptr ) {
1221 if ( pHydrogen->
getSong() ==
nullptr ) {
1234 if ( pHydrogen->
getSong() ==
nullptr ) {
1258 auto foundActionPair =
m_actionMap.find( sActionType );
1260 return foundActionPair->second.second;
1262 ERRORLOG( QString(
"MIDI Action type [%1] couldn't be found" ).arg( sActionType ) );
1270 auto pSong = pHydrogen->
getSong();
1271 if ( pSong ==
nullptr ) {
1277 if ( nInstr == -1 ) {
1287 auto pSong = pHydrogen->
getSong();
1288 if ( pSong ==
nullptr ) {
1295 auto pPattern = pSong->getPatternList()->get( nPattern );
1296 if ( pPattern ==
nullptr ) {
1297 ERRORLOG( QString(
"Couldn't find pattern [%1]" ).arg( nPattern ) );
1301 pPattern->clear(
true );
1312 bool bResult =
false;
1314 for (
const auto& action : actions ) {
1315 if ( action !=
nullptr ) {
1332 if( pAction ==
nullptr ) {
1336 QString sActionString = pAction->getType();
1338 auto foundActionPair =
m_actionMap.find( sActionString );
1340 action_f action = foundActionPair->second.first;
1341 return (this->*action)(pAction, pHydrogen);
1343 ERRORLOG( QString(
"MIDI Action type [%1] couldn't be found" ).arg( sActionString ) );
#define RIGHT_HERE
Macro intended to be used for the logging of the locking of the H2Core::AudioEngine.
static QString getNullActionType()
bool isEquivalentTo(std::shared_ptr< Action > pOther)
bool isNull() const
Checks whether m_sType is of getNullActionType()
QString toQString(const QString &sPrefix="", bool bShort=true) const override
Formatted string version for debugging purposes.
Action(QString sType=getNullActionType())
@ Playing
Transport is rolling.
@ Ready
Ready to process audio.
const std::shared_ptr< TransportPosition > getTransportPosition() const
static QString sPrintIndention
String used to format the debugging string output of some core classes.
bool locateToColumn(int nPatternGroup)
Relocates transport to the beginning of a particular column/Pattern group.
bool clearInstrumentInPattern(int nInstrumentNumber, int nPatternNumber=-1)
Deletes all notes for instrument pInstrument in a specified pattern.
bool setMetronomeIsActive(bool isActive)
bool setMasterIsMuted(bool isMuted)
bool setStripIsMuted(int nStrip, bool isMuted)
bool setStripIsSoloed(int nStrip, bool isSoloed)
static EventQueue * get_instance()
Returns a pointer to the current EventQueue singleton stored in __instance.
void push_event(const EventType type, const int nValue)
Queues the next event into the EventQueue.
void sequencer_stop()
Stop the internal sequencer.
std::shared_ptr< Song > getSong() const
Get the current song.
int getSelectedInstrumentNumber() const
void onTapTempoAccelEvent()
@ unavailable
No GUI available.
int getSelectedPatternNumber() const
void setSelectedInstrumentNumber(int nInstrument, bool bTriggerEvent=true)
static Hydrogen * get_instance()
Returns the current Hydrogen instance __instance.
AudioEngine * getAudioEngine() const
CoreActionController * getCoreActionController() const
void sequencer_play()
Start the internal sequencer.
GUIState getGUIState() const
static constexpr float fPitchMin
Minimum support pitch value.
static constexpr float fPitchMax
Maximum support pitch value.
void setNextSongByNumber(int SongNumber)
int getActiveSongNumber()
static Playlist * get_instance()
Returns a pointer to the current Playlist singleton stored in __instance.
static Preferences * get_instance()
Returns a pointer to the current Preferences singleton stored in __instance.
void setRecordEvents(bool value)
@ Stacked
An arbitrary number of pattern can be played.
@ Selected
Only one pattern - the one currently selected in the GUI - will be played back.
The MidiActionManager cares for the execution of MidiActions.
bool previous_bar(std::shared_ptr< Action >, H2Core::Hydrogen *)
static MidiActionManager * __instance
Object holding the current MidiActionManager singleton.
bool bpm_decrease(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool record_strobe(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool playlist_next_song(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool setSong(int nSongNumber, H2Core::Hydrogen *pHydrogen)
bool playlist_song(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool unmute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool strip_volume_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool play(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool playlist_previous_song(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool select_instrument(std::shared_ptr< Action >, H2Core::Hydrogen *)
int m_nLastBpmChangeCCParameter
bool mute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool record_exit(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool master_volume_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool pitch_level_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool tap_tempo(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool select_next_pattern_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool handleAction(std::shared_ptr< Action > action)
The handleAction method is the heart of the MidiActionManager class.
bool strip_solo_toggle(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool beatcounter(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool clear_pattern(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool pan_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool instrument_pitch(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool onlyNextPatternSelection(int nPatternNumber)
static void create_instance()
If __instance equals 0, a new MidiActionManager singleton will be created and stored in it.
bool pan_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool pan_absolute_sym(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool select_next_pattern(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool bpm_fine_cc_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool select_and_play_pattern(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool effect_level_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool redo_action(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool handleActions(std::vector< std::shared_ptr< Action > > actions)
Handles multiple actions at once and calls handleAction() on them.
bool filter_cutoff_level_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool strip_volume_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool clear_selected_instrument(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool pause(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool next_bar(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool toggle_metronome(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool play_stop_pause_toggle(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool record_strobe_toggle(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool select_only_next_pattern_cc_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool bpm_cc_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool stop(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool record_ready(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool undo_action(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool select_only_next_pattern(std::shared_ptr< Action >, H2Core::Hydrogen *)
QStringList m_actionList
Holds the names of all Action identifiers which Hydrogen is able to interpret.
bool mute_toggle(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool nextPatternSelection(int nPatternNumber)
bool master_volume_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
int getParameterNumber(const QString &sActionType) const
bool select_next_pattern_cc_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool(MidiActionManager::* action_f)(std::shared_ptr< Action >, H2Core::Hydrogen *)
std::map< QString, std::pair< action_f, int > > m_actionMap
Holds all Action identifiers which Hydrogen is able to interpret.
bool bpm_increase(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool strip_mute_toggle(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool effect_level_relative(std::shared_ptr< Action >, H2Core::Hydrogen *)
bool gain_level_absolute(std::shared_ptr< Action >, H2Core::Hydrogen *)
@ EVENT_INSTRUMENT_PARAMETERS_CHANGED
Some parameters of an instrument have been changed.
@ EVENT_PATTERN_MODIFIED
A pattern was added, deleted, or modified.