David Robillard
d357eca668
Anything related to the storage of events/values over a range of time lives in evoral. This includes MidiModel (Evoral::Sequence) and automation data (AutomationList (Evoral::ControlList), Automatable (Evoral::ControlSet), etc). libs/evoral synced with http://svn.drobilla.net/lad/trunk/evoral r1511. git-svn-id: svn://localhost/ardour2/branches/3.0@3754 d708f5d6-7413-0410-9779-e7cbd77b26cf
109 lines
2.4 KiB
C++
109 lines
2.4 KiB
C++
#ifndef MIDNAM_PATCH_H_
|
|
#define MIDNAM_PATCH_H_
|
|
|
|
#include "pbd/stateful.h"
|
|
#include "midi++/event.h"
|
|
#include "pbd/xml++.h"
|
|
|
|
#include <string>
|
|
#include <list>
|
|
#include <set>
|
|
|
|
namespace MIDI
|
|
{
|
|
|
|
namespace Name
|
|
{
|
|
|
|
class Patch : public PBD::Stateful
|
|
{
|
|
public:
|
|
typedef std::list<Evoral::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;
|
|
PatchMidiCommands _patch_midi_commands;
|
|
};
|
|
|
|
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; }
|
|
|
|
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;
|
|
};
|
|
|
|
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; }
|
|
|
|
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_*/
|