summaryrefslogtreecommitdiff
path: root/libs/midi++2/midi++
diff options
context:
space:
mode:
Diffstat (limited to 'libs/midi++2/midi++')
-rw-r--r--libs/midi++2/midi++/alsa_rawmidi.h10
-rw-r--r--libs/midi++2/midi++/alsa_sequencer.h5
-rw-r--r--libs/midi++2/midi++/coremidi_midiport.h15
-rw-r--r--libs/midi++2/midi++/factory.h3
-rw-r--r--libs/midi++2/midi++/fd_midiport.h1
-rw-r--r--libs/midi++2/midi++/fifomidi.h7
-rw-r--r--libs/midi++2/midi++/manager.h5
-rw-r--r--libs/midi++2/midi++/nullmidi.h7
-rw-r--r--libs/midi++2/midi++/port.h8
9 files changed, 52 insertions, 9 deletions
diff --git a/libs/midi++2/midi++/alsa_rawmidi.h b/libs/midi++2/midi++/alsa_rawmidi.h
index d2aa6f5181..7edee58322 100644
--- a/libs/midi++2/midi++/alsa_rawmidi.h
+++ b/libs/midi++2/midi++/alsa_rawmidi.h
@@ -28,6 +28,8 @@
#include <midi++/port.h>
#include <midi++/fd_midiport.h>
+namespace MIDI {
+
class ALSA_RawMidiPort : public MIDI::FD_MidiPort
{
@@ -35,8 +37,16 @@ class ALSA_RawMidiPort : public MIDI::FD_MidiPort
ALSA_RawMidiPort (MIDI::PortRequest &req)
: FD_MidiPort (req, "/dev/snd", "midi") {}
virtual ~ALSA_RawMidiPort () {}
+
+ static std::string typestring;
+
+ protected:
+ std::string get_typestring () const {
+ return typestring;
+ }
};
+}
#endif // __alsa_rawmidi_h__
diff --git a/libs/midi++2/midi++/alsa_sequencer.h b/libs/midi++2/midi++/alsa_sequencer.h
index 78e4a01683..7e929d38c2 100644
--- a/libs/midi++2/midi++/alsa_sequencer.h
+++ b/libs/midi++2/midi++/alsa_sequencer.h
@@ -43,6 +43,7 @@ class ALSA_SequencerMidiPort : public Port
virtual int selectable() const;
static int discover (std::vector<PortSet>&);
+ static std::string typestring;
protected:
/* Direct I/O */
@@ -50,6 +51,10 @@ class ALSA_SequencerMidiPort : public Port
int write (byte *msg, size_t msglen);
int read (byte *buf, size_t max);
+ std::string get_typestring () const {
+ return typestring;
+ }
+
private:
snd_midi_event_t *decoder, *encoder;
int port_id;
diff --git a/libs/midi++2/midi++/coremidi_midiport.h b/libs/midi++2/midi++/coremidi_midiport.h
index 20fe739b94..89047540cb 100644
--- a/libs/midi++2/midi++/coremidi_midiport.h
+++ b/libs/midi++2/midi++/coremidi_midiport.h
@@ -42,15 +42,23 @@ namespace MIDI {
}
static int discover (std::vector<PortSet>&);
+ static std::string typestring;
protected:
/* Direct I/O */
int write(byte * msg, size_t msglen);
+
int read(byte * buf, size_t max) {
return 0;
- } /* CoreMidi callback */
- static void read_proc(const MIDIPacketList * pktlist,
- void *refCon, void *connRefCon);
+ }
+
+ /* CoreMidi callback */
+ static void read_proc(const MIDIPacketList * pktlist,
+ void *refCon, void *connRefCon);
+
+ std::string get_typestring () const {
+ return typestring;
+ }
private:
byte midi_buffer[1024];
@@ -63,6 +71,7 @@ namespace MIDI {
static MIDITimeStamp MIDIGetCurrentHostTime();
bool firstrecv;
+
};
} // namespace MIDI
diff --git a/libs/midi++2/midi++/factory.h b/libs/midi++2/midi++/factory.h
index 186c3973e3..bd130f8701 100644
--- a/libs/midi++2/midi++/factory.h
+++ b/libs/midi++2/midi++/factory.h
@@ -34,6 +34,9 @@ class PortFactory {
static bool ignore_duplicate_devices (Port::Type);
static int get_known_ports (std::vector<PortSet>&);
static std::string default_port_type ();
+ static Port::Type string_to_type (const std::string&);
+ static std::string mode_to_string (int);
+ static int string_to_mode (const std::string&);
};
} // namespace MIDI
diff --git a/libs/midi++2/midi++/fd_midiport.h b/libs/midi++2/midi++/fd_midiport.h
index d7fae400a0..e971a18f8c 100644
--- a/libs/midi++2/midi++/fd_midiport.h
+++ b/libs/midi++2/midi++/fd_midiport.h
@@ -46,6 +46,7 @@ class FD_MidiPort : public Port
}
virtual int selectable() const;
+
static std::vector<std::string *> *list_devices ();
protected:
diff --git a/libs/midi++2/midi++/fifomidi.h b/libs/midi++2/midi++/fifomidi.h
index 57d1502c45..ea644dde06 100644
--- a/libs/midi++2/midi++/fifomidi.h
+++ b/libs/midi++2/midi++/fifomidi.h
@@ -37,6 +37,13 @@ class FIFO_MidiPort : public MIDI::FD_MidiPort
FIFO_MidiPort (PortRequest &req);
~FIFO_MidiPort () {};
+ static std::string typestring;
+
+ protected:
+ std::string get_typestring () const {
+ return typestring;
+ }
+
private:
void open (PortRequest &req);
};
diff --git a/libs/midi++2/midi++/manager.h b/libs/midi++2/midi++/manager.h
index c230933689..d13be58af6 100644
--- a/libs/midi++2/midi++/manager.h
+++ b/libs/midi++2/midi++/manager.h
@@ -36,10 +36,9 @@ class Manager {
~Manager ();
Port *add_port (PortRequest &);
- int remove_port (std::string port);
+ int remove_port (Port*);
Port *port (std::string name);
- Port *port (size_t number);
size_t nports () { return ports_by_device.size(); }
@@ -50,9 +49,7 @@ class Manager {
channel_t inputChannelNumber;
channel_t outputChannelNumber;
- int set_input_port (size_t port);
int set_input_port (std::string);
- int set_output_port (size_t port);
int set_output_port (std::string);
int set_input_channel (channel_t);
int set_output_channel (channel_t);
diff --git a/libs/midi++2/midi++/nullmidi.h b/libs/midi++2/midi++/nullmidi.h
index 13591db4e6..d3d53826bb 100644
--- a/libs/midi++2/midi++/nullmidi.h
+++ b/libs/midi++2/midi++/nullmidi.h
@@ -54,6 +54,13 @@ class Null_MidiPort : public Port
}
virtual int selectable() const { return -1; }
+
+ static std::string typestring;
+
+ protected:
+ std::string get_typestring () const {
+ return typestring;
+ }
};
} // namespace MIDI
diff --git a/libs/midi++2/midi++/port.h b/libs/midi++2/midi++/port.h
index 123ac9e3d8..0b5e72d81b 100644
--- a/libs/midi++2/midi++/port.h
+++ b/libs/midi++2/midi++/port.h
@@ -26,6 +26,8 @@
#include <midi++/types.h>
#include <midi++/parser.h>
+class XMLNode;
+
namespace MIDI {
class Channel;
@@ -46,6 +48,8 @@ class Port : public sigc::trackable {
Port (PortRequest &);
virtual ~Port ();
+ virtual XMLNode& get_state () const;
+
/* Direct I/O */
virtual int write (byte *msg, size_t msglen) = 0;
@@ -118,7 +122,6 @@ class Port : public sigc::trackable {
Type type () const { return _type; }
int mode () const { return _mode; }
bool ok () const { return _ok; }
- size_t number () const { return _number; }
protected:
bool _ok;
@@ -126,7 +129,6 @@ class Port : public sigc::trackable {
std::string _devname;
std::string _tagname;
int _mode;
- size_t _number;
Channel *_channel[16];
sigc::connection thru_connection;
unsigned int bytes_written;
@@ -135,6 +137,8 @@ class Port : public sigc::trackable {
Parser *output_parser;
size_t slowdown;
+ virtual std::string get_typestring () const = 0;
+
private:
static size_t nports;
};