summaryrefslogtreecommitdiff
path: root/libs/backends
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-04-17 18:22:21 +0200
committerRobin Gareus <robin@gareus.org>2016-04-17 18:22:21 +0200
commit10140a8e68c3e6d105f89c7085ce8f44118ad95c (patch)
tree4662d65521c942ebfd98139ab60c53ee9a8cac01 /libs/backends
parent1f43878050528f8d4848742af97094bd6465576f (diff)
implement pretty-name set-property for ALSA and Dummy
Diffstat (limited to 'libs/backends')
-rw-r--r--libs/backends/alsa/alsa_audiobackend.cc14
-rw-r--r--libs/backends/alsa/alsa_audiobackend.h2
-rw-r--r--libs/backends/dummy/dummy_audiobackend.cc44
-rw-r--r--libs/backends/dummy/dummy_audiobackend.h6
-rw-r--r--libs/backends/dummy/dummy_midi_seq.h10
5 files changed, 76 insertions, 0 deletions
diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc
index 3658aa34a6..d5e75b11ec 100644
--- a/libs/backends/alsa/alsa_audiobackend.cc
+++ b/libs/backends/alsa/alsa_audiobackend.cc
@@ -1243,6 +1243,20 @@ AlsaAudioBackend::get_port_property (PortHandle port, const std::string& key, st
return -1;
}
+int
+AlsaAudioBackend::set_port_property (PortHandle port, const std::string& key, const std::string& value, const std::string& type)
+{
+ if (!valid_port (port)) {
+ PBD::warning << _("AlsaBackend::set_port_property: Invalid Port(s)") << endmsg;
+ return -1;
+ }
+ if (key == "http://jackaudio.org/metadata/pretty-name" && type.empty ()) {
+ static_cast<AlsaPort*>(port)->set_pretty_name (value);
+ return 0;
+ }
+ return -1;
+}
+
PortEngine::PortHandle
AlsaAudioBackend::get_port_by_name (const std::string& name) const
{
diff --git a/libs/backends/alsa/alsa_audiobackend.h b/libs/backends/alsa/alsa_audiobackend.h
index 01f757928f..97db9fbcaa 100644
--- a/libs/backends/alsa/alsa_audiobackend.h
+++ b/libs/backends/alsa/alsa_audiobackend.h
@@ -266,7 +266,9 @@ class AlsaAudioBackend : public AudioBackend {
int set_port_name (PortHandle, const std::string&);
std::string get_port_name (PortHandle) const;
PortHandle get_port_by_name (const std::string&) const;
+
int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const;
+ int set_port_property (PortHandle, const std::string& key, const std::string& value, const std::string& type);
int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const;
diff --git a/libs/backends/dummy/dummy_audiobackend.cc b/libs/backends/dummy/dummy_audiobackend.cc
index 130a92dc5f..b168d4e32b 100644
--- a/libs/backends/dummy/dummy_audiobackend.cc
+++ b/libs/backends/dummy/dummy_audiobackend.cc
@@ -659,6 +659,38 @@ DummyAudioBackend::get_port_name (PortEngine::PortHandle port) const
return static_cast<DummyPort*>(port)->name ();
}
+int
+DummyAudioBackend::get_port_property (PortHandle port, const std::string& key, std::string& value, std::string& type) const
+{
+ if (!valid_port (port)) {
+ PBD::warning << _("DummyBackend::get_port_property: Invalid Port(s)") << endmsg;
+ return -1;
+ }
+ if (key == "http://jackaudio.org/metadata/pretty-name") {
+ type = "";
+ value = static_cast<DummyPort*>(port)->pretty_name ();
+ if (!value.empty()) {
+ return 0;
+ }
+ }
+ return -1;
+}
+
+int
+DummyAudioBackend::set_port_property (PortHandle port, const std::string& key, const std::string& value, const std::string& type)
+{
+ if (!valid_port (port)) {
+ PBD::warning << _("DummyBackend::set_port_property: Invalid Port(s)") << endmsg;
+ return -1;
+ }
+ if (key == "http://jackaudio.org/metadata/pretty-name" && type.empty ()) {
+ static_cast<DummyPort*>(port)->set_pretty_name (value);
+ return 0;
+ }
+ return -1;
+}
+
+
PortEngine::PortHandle
DummyAudioBackend::get_port_by_name (const std::string& name) const
{
@@ -843,6 +875,7 @@ DummyAudioBackend::register_system_ports()
_system_midi_in.push_back (static_cast<DummyMidiPort*>(p));
if (_midi_mode == MidiGenerator) {
static_cast<DummyMidiPort*>(p)->setup_generator (i % NUM_MIDI_EVENT_GENERATORS, _samplerate);
+ static_cast<DummyMidiPort*>(p)->set_pretty_name (DummyMidiData::sequence_names[i % NUM_MIDI_EVENT_GENERATORS]);
}
}
@@ -854,6 +887,17 @@ DummyAudioBackend::register_system_ports()
if (!p) return -1;
set_latency_range (p, true, lr);
_system_midi_out.push_back (static_cast<DummyMidiPort*>(p));
+
+ if (_device == _("Loopback") && _midi_mode == MidiToAudio) {
+ std::stringstream ss;
+ ss << "Midi2Audio";
+ for (int apc = 0; apc < (int)_system_inputs.size(); ++apc) {
+ if ((apc % m_out) + 1 == i) {
+ ss << " >" << (apc + 1);
+ }
+ }
+ static_cast<DummyMidiPort*>(p)->set_pretty_name (ss.str());
+ }
}
return 0;
}
diff --git a/libs/backends/dummy/dummy_audiobackend.h b/libs/backends/dummy/dummy_audiobackend.h
index b235d101ff..95f079c4b9 100644
--- a/libs/backends/dummy/dummy_audiobackend.h
+++ b/libs/backends/dummy/dummy_audiobackend.h
@@ -72,9 +72,11 @@ class DummyPort {
virtual ~DummyPort ();
const std::string& name () const { return _name; }
+ const std::string& pretty_name () const { return _pretty_name; }
PortFlags flags () const { return _flags; }
int set_name (const std::string &name) { _name = name; return 0; }
+ int set_pretty_name (const std::string &name) { _pretty_name = name; return 0; }
virtual DataType type () const = 0;
@@ -115,6 +117,7 @@ class DummyPort {
private:
DummyAudioBackend &_dummy_backend;
std::string _name;
+ std::string _pretty_name;
const PortFlags _flags;
LatencyRange _capture_latency_range;
LatencyRange _playback_latency_range;
@@ -321,6 +324,9 @@ class DummyAudioBackend : public AudioBackend {
std::string get_port_name (PortHandle) const;
PortHandle get_port_by_name (const std::string&) const;
+ int get_port_property (PortHandle, const std::string& key, std::string& value, std::string& type) const;
+ int set_port_property (PortHandle, const std::string& key, const std::string& value, const std::string& type);
+
int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const;
DataType port_data_type (PortHandle) const;
diff --git a/libs/backends/dummy/dummy_midi_seq.h b/libs/backends/dummy/dummy_midi_seq.h
index 810cb53b20..1d2032fd9d 100644
--- a/libs/backends/dummy/dummy_midi_seq.h
+++ b/libs/backends/dummy/dummy_midi_seq.h
@@ -770,6 +770,16 @@ static const MIDISequence *sequences[] = {
s0, s1, s2, s3, s4, s5, s6
};
+static const char *sequence_names[] = {
+ "Short Sequence",
+ "Cmaj7, all channels",
+ "Note Sweep, chan 1",
+ "Velocity Sweep, chan 1",
+ "Sustain Pedal Test",
+ "CCs only",
+ "Nonsense, Dups"
+};
+
}} // namespace
#define NUM_MIDI_EVENT_GENERATORS (sizeof (ARDOUR::DummyMidiData::sequences) / sizeof(ARDOUR::DummyMidiData::MIDISequence*))