diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2008-08-04 22:37:24 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2008-08-04 22:37:24 +0000 |
commit | ed990de6040215412baf8f448b1876d78bd9cc19 (patch) | |
tree | 196c6552040b0ad1c9c402cba2b4543ae39536ef /libs/midi++2 | |
parent | 44fd104ada0fbd8b76d34150e941d85d6de6f81b (diff) |
* first implementation of MIDI Clock Slave support
git-svn-id: svn://localhost/ardour2/branches/3.0@3652 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/midi++2')
-rw-r--r-- | libs/midi++2/midi++/midnam_patch.h | 50 | ||||
-rw-r--r-- | libs/midi++2/midnam_patch.cc | 53 |
2 files changed, 63 insertions, 40 deletions
diff --git a/libs/midi++2/midi++/midnam_patch.h b/libs/midi++2/midi++/midnam_patch.h index 492eacd897..50c51b317f 100644 --- a/libs/midi++2/midi++/midnam_patch.h +++ b/libs/midi++2/midi++/midnam_patch.h @@ -19,22 +19,22 @@ class Patch : public PBD::Stateful { public: typedef std::list<MIDI::Event> PatchMidiCommands; - + Patch() {}; Patch(string a_number, string a_name) : _number(a_number), _name(a_name) {}; ~Patch() {}; - + const string& name() const { return _name; } void set_name(const string a_name) { _name = a_name; } - + const string& number() const { return _number; } void set_number(const string a_number) { _number = a_number; } - + const PatchMidiCommands& patch_midi_commands() const { return _patch_midi_commands; } - + XMLNode& get_state (void); int set_state (const XMLNode& a_node); - + private: string _number; string _name; @@ -45,19 +45,19 @@ class PatchBank : public PBD::Stateful { public: typedef std::list<Patch> PatchNameList; - + PatchBank() {}; virtual ~PatchBank() {}; PatchBank(string a_name) : _name(a_name) {}; - + const string& name() const { return _name; } - void set_name(const string a_name) { _name = a_name; } - + void set_name(const string a_name) { _name = a_name; } + const PatchNameList& patch_name_list() const { return _patch_name_list; } - + XMLNode& get_state (void); int set_state (const XMLNode& a_node); - + private: string _name; PatchNameList _patch_name_list; @@ -68,29 +68,41 @@ class ChannelNameSet : public PBD::Stateful public: typedef std::set<uint8_t> AvailableForChannels; typedef std::list<PatchBank> PatchBanks; - + ChannelNameSet() {}; virtual ~ChannelNameSet() {}; ChannelNameSet(string a_name) : _name(a_name) {}; - + const string& name() const { return _name; } - void set_name(const string a_name) { _name = a_name; } - + void set_name(const string a_name) { _name = a_name; } + const AvailableForChannels& available_for_channels() const { return _available_for_channels; } const PatchBanks& patch_banks() const { return _patch_banks; } - + XMLNode& get_state (void); int set_state (const XMLNode& a_node); - + private: string _name; AvailableForChannels _available_for_channels; PatchBanks _patch_banks; }; +class MIDINameDocument : public PBD::Stateful +{ +public: + MIDINameDocument() {}; + virtual ~MIDINameDocument() {}; -} + XMLNode& get_state (void); + int set_state (const XMLNode& a_node); + +private: + string _author; + +}; } +} #endif /*MIDNAM_PATCH_H_*/ diff --git a/libs/midi++2/midnam_patch.cc b/libs/midi++2/midnam_patch.cc index c103237d99..f149f2884b 100644 --- a/libs/midi++2/midnam_patch.cc +++ b/libs/midi++2/midnam_patch.cc @@ -7,19 +7,19 @@ namespace MIDI namespace Name { -XMLNode& +XMLNode& Patch::get_state (void) { XMLNode* node = new XMLNode("Patch"); node->add_property("Number", _number); node->add_property("Name", _name); XMLNode* commands = node->add_child("PatchMIDICommands"); - for (PatchMidiCommands::const_iterator event = _patch_midi_commands.begin(); + for (PatchMidiCommands::const_iterator event = _patch_midi_commands.begin(); event != _patch_midi_commands.end(); ++event) { commands->add_child_copy(*(event->to_xml())); } - + return *node; } @@ -35,22 +35,22 @@ Patch::set_state (const XMLNode& node) for (XMLNodeList::const_iterator i = events.begin(); i != events.end(); ++i) { _patch_midi_commands.push_back(*(new Event(*(*i)))); } - + return 0; } -XMLNode& +XMLNode& PatchBank::get_state (void) { XMLNode* node = new XMLNode("PatchBank"); node->add_property("Name", _name); XMLNode* patch_name_list = node->add_child("PatchNameList"); - for (PatchNameList::iterator patch = _patch_name_list.begin(); + for (PatchNameList::iterator patch = _patch_name_list.begin(); patch != _patch_name_list.end(); ++patch) { patch_name_list->add_child_nocopy(patch->get_state()); } - + return *node; } @@ -67,38 +67,38 @@ PatchBank::set_state (const XMLNode& node) patch.set_state(*(*i)); _patch_name_list.push_back(patch); } - + return 0; } -XMLNode& +XMLNode& ChannelNameSet::get_state (void) { XMLNode* node = new XMLNode("ChannelNameSet"); node->add_property("Name", _name); - + XMLNode* available_for_channels = node->add_child("AvailableForChannels"); assert(available_for_channels); - + for (uint8_t channel = 0; channel < 16; ++channel) { XMLNode* available_channel = available_for_channels->add_child("AvailableChannel"); assert(available_channel); - + available_channel->add_property("Channel", (long) channel); - + if (_available_for_channels.find(channel) != _available_for_channels.end()) { - available_channel->add_property("Available", "true"); + available_channel->add_property("Available", "true"); } else { - available_channel->add_property("Available", "false"); + available_channel->add_property("Available", "false"); } } - - for (PatchBanks::iterator patch_bank = _patch_banks.begin(); + + for (PatchBanks::iterator patch_bank = _patch_banks.begin(); patch_bank != _patch_banks.end(); ++patch_bank) { node->add_child_nocopy(patch_bank->get_state()); } - + return *node; } @@ -120,17 +120,28 @@ ChannelNameSet::set_state (const XMLNode& node) _available_for_channels.insert(atoi((*i)->attribute_value().c_str())); } } - + if (node->name() == "PatchBank") { PatchBank bank; bank.set_state(*node); _patch_banks.push_back(bank); - } + } } - + return 0; } +int +MIDINameDocument::set_state(const XMLNode & a_node) +{ +} + +XMLNode& +MIDINameDocument::get_state(void) +{ +} + + } //namespace Name } //namespace MIDI |