X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fgeneric_midi%2Fmidifunction.h;h=8f0b0218d01821293357fb05f7fe131624820088;hb=37906d067e44927e6ad575ff8a757a8837fbb4cf;hp=5374d94157aa50a0ed965553f69fd5309190fbf2;hpb=679ece14a3dda8dd1bc0c1a0a65abfcde9aeb0cd;p=ardour.git diff --git a/libs/surfaces/generic_midi/midifunction.h b/libs/surfaces/generic_midi/midifunction.h index 5374d94157..8f0b0218d0 100644 --- a/libs/surfaces/generic_midi/midifunction.h +++ b/libs/surfaces/generic_midi/midifunction.h @@ -29,59 +29,55 @@ #include "ardour/types.h" +#include "midiinvokable.h" + namespace MIDI { class Channel; class Port; class Parser; } -class BasicUI; +class GenericMidiControlProtocol; -class MIDIFunction : public PBD::Stateful +class MIDIFunction : public MIDIInvokable { public: enum Function { + NextBank, + PrevBank, TransportRoll, TransportStop, TransportZero, TransportStart, - TransportEnd + TransportEnd, + TransportLoopToggle, + TransportRecordEnable, + TransportRecordDisable, + /* 1 argument functions: RID */ + Select, + SetBank, + /* 2 argument functions: RID, value */ + TrackSetSolo, + TrackSetMute, + TrackSetGain, + TrackSetRecordEnable, + TrackSetSoloIsolate, }; MIDIFunction (MIDI::Port&); virtual ~MIDIFunction (); - int init (BasicUI&, const std::string&); + int setup (GenericMidiControlProtocol&, const std::string& function_name, const std::string& argument, MIDI::byte* sysex = 0, size_t ssize = 0); - MIDI::Port& get_port() const { return _port; } - const std::string& function_name() const { return _function_name; } + const std::string& function_name() const { return _invokable_name; } XMLNode& get_state (void); int set_state (const XMLNode&, int version); - void bind_midi (MIDI::channel_t, MIDI::eventType, MIDI::byte); - MIDI::channel_t get_control_channel () { return control_channel; } - MIDI::eventType get_control_type () { return control_type; } - MIDI::byte get_control_additional () { return control_additional; } - private: Function _function; - BasicUI* _ui; - std::string _function_name; - MIDI::Port& _port; - PBD::ScopedConnection midi_sense_connection[2]; - MIDI::eventType control_type; - MIDI::byte control_additional; - MIDI::channel_t control_channel; - - void init (const std::string& function_name); + std::string _argument; void execute (); - - void midi_sense_note (MIDI::Parser &, MIDI::EventTwoBytes *, bool is_on); - void midi_sense_note_on (MIDI::Parser &p, MIDI::EventTwoBytes *tb); - void midi_sense_note_off (MIDI::Parser &p, MIDI::EventTwoBytes *tb); - void midi_sense_controller (MIDI::Parser &, MIDI::EventTwoBytes *); - void midi_sense_program_change (MIDI::Parser &, MIDI::byte); }; #endif // __gm_midicontrollable_h__