summaryrefslogtreecommitdiff
path: root/libs/surfaces/generic_midi
AgeCommit message (Collapse)Author
2020-02-20Reset MIDI-control when a given ctrl is not availableRobin Gareus
This fixes an issue with "/route/eq/freq/0 S1": When a newly select strip that does not have a EQ (e.g. mixbus or master), the control from the previously selected strip is used. -- Reported by tavasti on IRC.
2020-01-25Explicitly use OSXRobin Gareus
Previously this was inherited via PBD. On MacOS/X, this adds "-undefined dynamic_lookup -flat_namespace" and various "-framework .." options to linkflags Without this flag, .dylibs fail to link usually because of missing `-lintl` (Undefined symbols: "_libintl_dgettext") On other systems this is a NO-OP: CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX are only set on the darwin platform.
2019-12-31convert GenericMIDI into a real control protocol module, with its own event ↵Paul Davis
loop and ports
2019-12-31remove MIDI Control input and output ports from session-level objectsPaul Davis
2019-08-03Update plugins/addons GPL boilerplate and (C) from git logRobin Gareus
2019-05-09Generic-MIDI ctrl: tweak pitch-bend message behaviorRobin Gareus
Add support for smoothing, ignore message when controllers are not in sync to avoid discontinuous jumps. This is mainly useful for Mackie-like devices that use pitch-bend messages for faders. see also https://discourse.ardour.org/t/feature-lazy-sliders/100961
2019-05-05Tweak initial generic-midi sync/smoothingRobin Gareus
"last_controllable_value" is using midi value range (0..127). It is used to compare received midi-value with the actual controllable for non-motorized surfaces, and this change allows the first event to already be in_sync. Previously the first MIDI-event was usually ignored (because last_controllable_value was out of bounds or didn't match the 0..127 range.
2019-03-23NO-OP: whitespacRobin Gareus
2019-03-23Fix generic-midi controllable race-conditionRobin Gareus
Continued work after e9b36f2bea. Prefer a shared_ptr<>. MIDIControllable::write_feedback() runs in realtime context, directly from the main process-thread. Synchronizing weak-pointers and deletion across threads does not work reliably. Retaining a shared_ptr<> for controllables that are in use can solve this.
2019-03-23Re-add global lookup for generic-midi ctrl stateRobin Gareus
2019-03-23Update GenericMidiControlProtocol to use shared/weak Controllable pointersRobin Gareus
This fixes a race-condition when a controllable is deleted while sending feedback to the device. Previously there was a race-condition MIDIControllable::write_feedback() triggered from rt-thread, processed in Surface-thread and deleting a route or processor. This is a first step, currently state-restore is not fully functional session->controllable_by_id() does not cover all Controllables.
2019-03-23Prepare PBD::Controllable API cleanup (remove only registry user)Robin Gareus
2019-03-23Remove unusued API Create/Delete BindingRobin Gareus
2018-10-04Handle generic-midi bindings per session.Robin Gareus
This allows to special-cases session-specific control-surface state. e.g. midi-learn. Only restore midi-learned, session-specific, bindings when loading a session with generic-midi enabled. Also dis/re-enable generic-midi resets midi-learned, but no other session-independent settings. This also handles the edge case: 1) load global config, generic-midi = ON, w/ bindings. state is remembered as cpi->state 2) load session-condig, generic-midi = OFF, cpi->state is retained 3) user enables the surface, cpi->state from (1) is applied. -> invalid bindings applied -> fail
2018-09-30Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets ↵John Emmas
extended to the other libs) Stage 2 of 3 (more to follow)
2018-09-21Fix --no-nls (4/5), i18n include order in libs/*Robin Gareus
"i18n.h" needs to be included last (after any includes that may indirectly pull in getext or libintl etc)
2018-09-10Initial changes needed for building Mixbus (with MSVC) as version 5John Emmas
(Mixbus itself will probably need extra changes)
2018-06-25fix mixing scope bracePaul Davis
2018-06-25Accommodate recently removed source(s) in our MSVC project (libardour)John Emmas
(this also needs ardour_genericmidi to link to both evoral and boost-regex)
2018-06-21add Ctl_Dial to get better behaviour when binding a MIDI controller ↵Paul Davis
KNOB/DIAL to a toggled controllable. No intent to change Ctl_Momentary or Ctl_Toggle behaviour, plus I tried to document what they are intended to support
2018-06-21remove Session::controllable_by_descriptor() and move code into GenericMIDI ↵Paul Davis
code (the only user). This also removes enums introduced to describe well-known parameters for Mixbus. Lookup now involves string parsing every time, but this is not likely to be a notable cost.
2018-03-13Sort generic-midi bindings alphabeticallyRobin Gareus
2018-03-03generic_midi: add proper handling of midi controll togglesJan Lentfer
2018-02-15When building with MSVC, allow for the fact that Mixbus and Ardour can be ↵John Emmas
using different versions of the SESSION_FILE format
2018-02-14Accommodate the change from libtimecode to libtemporalJohn Emmas
2017-12-19Revert "Prototype to allow embedding sysex in midi-map"Robin Gareus
This reverts commit 561c8eea0cfa45f0b54461b149b4c330e0bbaa3b. It is rare that a device needs sysex-initialization every time it is connected, besides a single simple "Sysex" entry without options is not very flexible.
2017-12-06Prototype to allow embedding sysex in midi-mapRobin Gareus
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-07-25Remove unnecessary tests for touch-stateRobin Gareus
2017-06-21Switch to PBD control-math and prefer Controllable APIRobin Gareus
Note: Control-surfaces should always use interface_to_internal() and internal_to_interface().
2017-05-26Use correct property name in generic MIDI surfaceTim Mayberry
Fixes restoring the feedback interval property, but as the mutator/setter method doesn't seem to be used this change should have no affect.
2017-05-12change the way ControlProtocols (control surfaces) are notified and handle ↵Paul Davis
Stripable selection changes The Editor continues to notify them, but via a direct call to ControlProtocolManager, not a signal. The CP Manager calls the ControlProtocol static method to set up static data structures holding selection info for all surfaces and then notifies each surface/protocol that selection has changed.
2017-04-19Use PBD::string_to<bool>() in GenericMidiControlProtocol classTim Mayberry
Equivalent to PBD::string_is_affirmative()
2017-04-19Use XMLNode::get/set_property API in MIDIControllable classTim Mayberry
2017-04-19Use XMLNode::get/set_property API in GenericMidiControlProtocol classTim Mayberry
2017-04-16Clean up after generic MIDI surface -- #7311Robin Gareus
When there are some non-released MIDIControllables, signal are still delivered to the objects, even if there's no surface thread to handle the signals anymore.
2017-03-04Don't allow GMCP to override loading_state_versionRobin Gareus
- GMPC does not use it directly - when GMPC was enabled Stateful::loading_state_version was set to 1000 (the protocol is at 1.0.0) - it messes up session-loading, particularly various plugin states and templates (e.g Processor::set_state_2X was used)
2017-01-31Generic MIDI controls should affect group members too, if they existPaul Davis
2017-01-23generic MIDI: put controllables into touch mode (if appropriate) when data ↵Paul Davis
is received
2017-01-22add some commentsPaul Davis
2017-01-20MIDI leaks -- the Controllergate conspiracy debunkedRobin Gareus
2016-12-31amend 3afe3f32df (remove unused global feedback option)Robin Gareus
That commit accidentally removed unrelated code in generic-midi surface which just happened to have the same name (get/set_midi_feedback) as the unused preference. Regardless, there was more cruft there. GMCP midicontrollables now use the control surfaces' feedback option.
2016-12-30Remove cruft (old MIDI feedback API)Robin Gareus
2016-12-28Move "Feedback" option to control-portocol settingsRobin Gareus
2016-09-27add MIDI bundles to Generic MIDI support so that the ports show up nicely in ↵Paul Davis
the grid
2016-08-30Update our MSVC project files to generate the most recent Ardour session ↵John Emmas
file format (ver 5) rather than the older v3 format
2016-07-21a more reliable/robust/less complex version of previous commitPaul Davis
2016-07-21do not delete MIDIControllable* when dealing with pending MIDI Control ↵Paul Davis
requests - the MIDIControllable belongs to the surface code in controllables
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-07-10White space fix only. (Spaces to tabs)Len Ovens