Commit graph

11892 commits

Author SHA1 Message Date
Paul Davis
d325e7302c another wide ranging set of changes to get this MIDI handling a step further.
Notably ... reading from MidiRingBuffer into MidiBuffer includes the event size,
rather than relying on the MIDI bytes to determine size. This isn't required
for MIDI, but is a more portable design for other event types.
2016-12-07 11:16:10 +00:00
Paul Davis
d322b74941 use drobilla's suggestion to improve Event structure 2016-12-05 23:29:52 +00:00
Paul Davis
4069c84eca don't use inheritance when trying to define both POD-ish and highly-managed Events.
The compiler can rearrange class layouts in memory, which defeats
the entire purpose of using the zero-sized array hack, as well
as causing problems with pool allocators/intrusive refcnts
2016-12-02 15:22:32 +00:00
Paul Davis
c6f81f82c0 compiles and manages to get non-track MIDI out the door 2016-11-30 14:47:20 +00:00
Paul Davis
cd1ab20721 first snapshot after libardour actually compiles.
Work even in libardour is still seriously incomplete, notably CC<=>Curve mapping which
doesn't exist at present
2016-11-28 15:13:04 +00:00
David Robillard
d0e17d074a Remove dead code 2016-11-07 07:09:37 -05:00
David Robillard
e3c50643d3 Remove dead code 2016-11-07 07:07:42 -05:00
David Robillard
c820ce4a64 Fix event type and parameter type confusion
I'm not sure if this is really the best way to do event types (should it
just be a completely static enum in evoral, or completely dynamic and
provided by the type map, or a mix like currently?), but previously the
event type was frequently set to either total garbage, or parameter
types, which are a different thing.

This fixes all those cases, and makes Evoral::EventType an enum so the
compile will warn about implicit conversions from int.
2016-11-07 05:14:55 -05:00
David Robillard
8eb1d9df02 Fix warning 2016-11-07 04:06:26 -05:00
David Robillard
ef02ba23a2 Remove Evoral::MIDIEvent
It is slightly questionable whether type specific methods like
velocity() belong on Event at all, these may be better off as free
functions.  However the code currently uses them as methods in many
places, and it seems like a step in the right direction, since, for
example, we might some day have events that have a velocity but aren't
stored as MIDI messages (e.g. if Ardour uses an internal musical model
that is more expressive).

In any case, the former inheritance and plethora of sloppy casts is
definitely not the right thing.
2016-11-06 22:08:34 -05:00
David Robillard
0b0b945652 Factor out and extend MIDIXML implementation 2016-11-06 20:28:09 -05:00
David Robillard
c184998d3f Fix Sequence/Event const-correctness issues 2016-11-06 20:28:09 -05:00
David Robillard
19cdf4ccc6 Fix LV2 state:StateChanged URI 2016-11-06 20:27:55 -05:00
Len Ovens
91c2527f5c OSC: Fix default strip types to include Auxes. 2016-11-04 12:10:37 -07:00
Paul Davis
8fb8e1bbde make ControlProtocolManager actually handle control protocols that fail to activate 2016-11-03 20:24:09 +00:00
Robin Gareus
3abdef2637 fix LTC-generator 24h wraparound 2016-11-02 19:24:46 +01:00
Len Ovens
77c9106769 OSC: Make Aux buses able to be separate. 2016-10-30 17:50:38 -07:00
Robin Gareus
3f0130f8ea Fix crash when instrument instantiation fails on track creation. 2016-10-31 00:35:53 +01:00
Robin Gareus
a994fd30bd extend Mixbus' "Safe Mode" 2016-10-30 22:25:18 +01:00
Robin Gareus
e08c80370c Fix midnam replacement:
Unloading before update may otherwise reset the patch to
generic midi (when the current patch is no longer available)
2016-10-30 21:24:26 +01:00
Robin Gareus
2a0aadfd97 remove debug output 2016-10-30 17:39:55 +01:00
Robin Gareus
db2d238cec Update prototype API (3f739738) for windows/dll compat
memory allocated by a .dll must be free()d by the given dll.
2016-10-30 17:39:55 +01:00
Robin Gareus
0ea9270a4b avoid C++11 (and remove debug output) 2016-10-30 04:51:31 +01:00
Robin Gareus
3f73973806 Prototype LV2 extension for plugins to provide Midnams 2016-10-29 19:57:43 +02:00
Robin Gareus
f8167ebe20 Prepare for the day when MTAV does no longer force-override InstrumentInfo 2016-10-29 19:57:43 +02:00
Robin Gareus
0332c127cd Allow to dynamically un/load Midnam Patches 2016-10-29 19:57:43 +02:00
Robin Gareus
06700cb2f4 Allow to construct a XML tree from a text buffer 2016-10-29 19:57:43 +02:00
Robin Gareus
5ed764178a Fix crash with empty patch-names.
An empty text will not produce a bounding box.
2016-10-29 19:57:43 +02:00
Robin Gareus
c5d4900ea4 a-fluidsynth: fix off-by one. Assign all MIDI channels if possible 2016-10-29 19:57:43 +02:00
Len Ovens
9d63002d2f OSC: Slow down data storm at surface refresh 2016-10-29 10:56:44 -07:00
Len Ovens
82d3842656 OSC: Add names/fader value to master and monitor. 2016-10-28 17:34:17 -07:00
Len Ovens
e631119092 OSC: simplify int sends too. 2016-10-28 15:05:40 -07:00
Len Ovens
d802c982cb OSC: More simplification - floats this time. 2016-10-28 14:42:56 -07:00
Len Ovens
4eb2da491f OSC: simplify Global feedback (remove repetitive code) 2016-10-28 13:45:30 -07:00
Robin Gareus
8de0788f7b yet another waf/HIDAPI tweak 2016-10-27 15:57:47 +02:00
Tim Mayberry
8d70b76059 Fix restoration of key bindings assigned to Windows+key, bug #7037
Windows key generates Mod4+Super (at least with the version of Gdk we use on
linux) so for bindings using the Windows key to work, GDK_SUPER_MASK has to be
added to modifier mask.
2016-10-26 12:03:17 +10:00
Robin Gareus
0e65852901 Desperate hack to align master-bus on export.
Another 90% solution which hopefully gives us another year :(
see comments Session::start_audio_export() for explanation.
2016-10-25 22:33:37 +02:00
nick_m
927b16aa53 don't mix framepos with quarter notes when calculating _start frames.
- quarter note precision is greater than the frame-based
	  _position. using it as a reference may cause a rounding error
	  if the region is locked to MusicTime.

	- also fixes a _start position bug when trimming midi regions.

	- we really need a better api for this kind of thing.

	- in combination with the previous two patches, this should fix
	  various missing first note issues.
2016-10-25 04:36:34 +11:00
nick_m
dfb0868847 make MidiRegion::start/length_beats() const. 2016-10-25 04:15:50 +11:00
nick_m
ce3ae4cdc9 remove unnecessary rounding from MidiSource::midi_read()
- we already have start_beats, so don't try to recalculate
	  something similar for the position comparison.
2016-10-25 04:14:14 +11:00
nick_m
20d02c4c68 expand on existing tempo tests. 2016-10-25 04:02:58 +11:00
nick_m
509d938b04 Don't recalculate region beat position on session load, fix AudioTime thinko. 2016-10-25 03:59:13 +11:00
Len Ovens
5743013ae4 OSC fix debug logic for catchall messages 2016-10-23 19:00:20 -07:00
Len Ovens
dd015e09a7 OSC Accept int in first parameter in path commands as well as float. 2016-10-23 18:45:25 -07:00
Robin Gareus
53e9337eba Fix HIDAPI optional (python: False vs 'False') 2016-10-24 00:51:51 +02:00
Robin Gareus
c78824aef5 Include hidapi library 2016-10-23 22:53:10 +02:00
Robin Gareus
57d1f68cd6 Introduce "virtual" async MIDI ports
This allows to flush an async MIDI port's ringbuffer at cycle-start,
to makes its data available as "input/source" during process(), while
collecting data in the background for the next cycle.

This facilitates virtual MIDI Ports for eg. Control Surface Pads:
output from a surface, input to Ardour channels.
2016-10-23 22:25:40 +02:00
Robin Gareus
7e861bd12e NO-OP: whitespace 2016-10-23 22:18:07 +02:00
Robin Gareus
7c8ab05c09 Don't add initial points for MIDI-CC
eg. import a .mid that has a CC later in the file.
Arodur wrongly added an initial point, effectively moving the event
backwards to "0" (no virgin territory)
2016-10-23 14:21:24 +02:00
Paul Davis
6866359c48 when fetching MIDI ports for bundles and auto-connection, ignore control-only (and "virtual") MIDI ports
"virtual" is a placeholder name for ALSA sequencer MIDI through ports
2016-10-21 16:32:46 -04:00