summaryrefslogtreecommitdiff
path: root/libs/surfaces/generic_midi
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces/generic_midi')
-rw-r--r--libs/surfaces/generic_midi/SConscript3
-rw-r--r--libs/surfaces/generic_midi/generic_midi_control_protocol.cc2
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.cc13
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.h2
4 files changed, 12 insertions, 8 deletions
diff --git a/libs/surfaces/generic_midi/SConscript b/libs/surfaces/generic_midi/SConscript
index f9c2de08f8..6c76e05464 100644
--- a/libs/surfaces/generic_midi/SConscript
+++ b/libs/surfaces/generic_midi/SConscript
@@ -34,6 +34,7 @@ genericmidi.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
genericmidi.Merge ([
libraries['ardour'],
libraries['ardour_cp'],
+ libraries['sndfile-ardour'],
libraries['midi++2'],
libraries['pbd'],
libraries['sigc2'],
@@ -50,7 +51,7 @@ Default(libardour_genericmidi)
if env['NLS']:
i18n (genericmidi, genericmidi_files, env)
-env.Alias('install', env.Install(os.path.join(install_prefix, 'lib/ardour2/surfaces'), libardour_genericmidi))
+env.Alias('install', env.Install(os.path.join(install_prefix, env['LIBDIR'], 'ardour2', 'surfaces'), libardour_genericmidi))
env.Alias('tarball', env.Distribute (env['DISTTREE'],
[ 'SConscript' ] +
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
index 03dbfb353c..0256d5c359 100644
--- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
+++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
@@ -234,7 +234,7 @@ GenericMidiControlProtocol::set_state (const XMLNode& node)
controllables.clear ();
- nlist = node.children();
+ nlist = node.children(); // "controls"
if (nlist.empty()) {
return 0;
diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc
index 6dc9bde8ad..75b5699f18 100644
--- a/libs/surfaces/generic_midi/midicontrollable.cc
+++ b/libs/surfaces/generic_midi/midicontrollable.cc
@@ -32,8 +32,6 @@ using namespace MIDI;
using namespace PBD;
using namespace ARDOUR;
-bool MIDIControllable::_send_feedback = false;
-
MIDIControllable::MIDIControllable (Port& p, Controllable& c, bool is_bistate)
: controllable (c), _port (p), bistate (is_bistate)
{
@@ -288,7 +286,7 @@ MIDIControllable::send_feedback ()
{
byte msg[3];
- if (setting || !_send_feedback || control_type == none) {
+ if (setting || !feedback || control_type == none) {
return;
}
@@ -302,7 +300,7 @@ MIDIControllable::send_feedback ()
MIDI::byte*
MIDIControllable::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool force)
{
- if (control_type != none &&_send_feedback && bufsize > 2) {
+ if (control_type != none && feedback && bufsize > 2) {
MIDI::byte gm = (MIDI::byte) (controllable.get_value() * 127.0);
@@ -345,6 +343,12 @@ MIDIControllable::set_state (const XMLNode& node)
return -1;
}
+ if ((prop = node.property ("feedback")) != 0) {
+ feedback = (prop->value() == "yes");
+ } else {
+ feedback = true; // default
+ }
+
bind_midi (control_channel, control_type, control_additional);
return 0;
@@ -362,6 +366,7 @@ MIDIControllable::get_state ()
node.add_property ("channel", buf);
snprintf (buf, sizeof(buf), "0x%x", (int) control_additional);
node.add_property ("additional", buf);
+ node.add_property ("feedback", (feedback ? "yes" : "no"));
return node;
}
diff --git a/libs/surfaces/generic_midi/midicontrollable.h b/libs/surfaces/generic_midi/midicontrollable.h
index ab15f9f4ab..8b63172916 100644
--- a/libs/surfaces/generic_midi/midicontrollable.h
+++ b/libs/surfaces/generic_midi/midicontrollable.h
@@ -80,8 +80,6 @@ class MIDIControllable : public Stateful
std::string _control_description;
bool feedback;
- static bool _send_feedback;
-
void midi_receiver (MIDI::Parser &p, MIDI::byte *, size_t);
void midi_sense_note (MIDI::Parser &, MIDI::EventTwoBytes *, bool is_on);
void midi_sense_note_on (MIDI::Parser &p, MIDI::EventTwoBytes *tb);