summaryrefslogtreecommitdiff
path: root/libs/midi++2
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-08-04 22:37:24 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-08-04 22:37:24 +0000
commited990de6040215412baf8f448b1876d78bd9cc19 (patch)
tree196c6552040b0ad1c9c402cba2b4543ae39536ef /libs/midi++2
parent44fd104ada0fbd8b76d34150e941d85d6de6f81b (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.h50
-rw-r--r--libs/midi++2/midnam_patch.cc53
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