13
0
Commit Graph

546 Commits

Author SHA1 Message Date
9aac954744 Add missing include 2016-12-04 15:16:08 -05:00
b51321bd7d Make libpbd and evoral capable of standalone build
Just an update to slightly rotten wscripts, shouldn't be any changes during an
ardour build.  Motivation being a short development cycle for working on evoral
and/or its test suite.
2016-12-04 15:15:11 -05:00
7d2ed46b63 Remove dead/annoying/unsafe code
Note the old Note::operator= was unsafe, since it made shallow copies of the on
and off events, which results in a double delete of events when the notes are
destructed.
2016-12-04 15:10:05 -05:00
454df30ae5 Fix Sequence test 2016-12-03 15:49:13 -05:00
d17f58e531 Remove dead code 2016-12-03 15:28:23 -05:00
398a318934 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
compiler will warn about implicit conversions from int.
2016-12-03 15:28:19 -05:00
08fffeffec 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-12-03 15:18:21 -05:00
875b1367b2 Factor out and extend MIDIXML implementation 2016-12-03 15:18:20 -05:00
0f5a73a7fd Fix Sequence/Event const-correctness issues 2016-12-03 15:18:20 -05:00
2f30d763ed Fix loading, recording & saving MIDI with PolyKeyPressure events.
GUI still does not handle this (neither automation lane, nor List Editor),
but the file loads, plays and exports correctly.
2016-11-27 17:25:42 +01:00
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
4d66c89b83 SMF add support for type-0 files (count channels, not tracks) 2016-10-05 20:08:26 +02:00
e05cb11bb0 extend Evoral::Range<T> to offer ::length() and ::squish()
The latter maps a T into a range, using loop semantics
2016-09-13 14:11:29 -05:00
0ff233d234 Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format 2016-08-30 07:15:00 +01:00
d6691a80e9 attempt to handle poly-pressure (polyphonic aftertouch) similarly to other MIDI messages 2016-08-19 08:32:44 -04:00
eec294a97e the endless quest to plug memory leaks -- episode 378 2016-07-25 17:16:32 +02:00
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
22de00b247 Remove a (no longer needed) source file from our MSVC project (evoral) 2016-07-14 09:42:55 +01:00
a6ee94ac52 remove old midi-note name API 2016-07-12 23:02:46 +02:00
b0200b23f2 Accommodate the fact that 'msvc_resources.rc.in' got moved to a new path 2016-05-21 10:33:18 +01:00
c23be46c15 use g_fopen() to avoid i18n errors with file paths/names 2016-05-10 15:55:45 -04:00
f5e4d3b032 NO-OP; document some more parameters.
Since headers only provide the declaration, function
parameters need to be documented.
2016-04-12 11:06:35 +02:00
09202249e1 NO-OP document Evoral::ControlList 2016-04-10 20:55:59 +02:00
2972fe0fc2 leave a ToDo note 2016-03-28 21:42:46 +02:00
eaca325ce8 Trim dependence on evoral types.hpp and Beats.hpp 2016-03-21 18:58:31 -04:00
ba78359129 prepare for update to waf 1.8
uselib is no longer implicit (inherited by .use). This is still incomplete,
some uselibs for non-linux variants may be missing.

bld.is_defined("HAVE_XXX") also no longer works and will have to be
changed (I think to bld.env["HAVE_XXX"]) in countless places.
2016-02-28 21:16:44 +01:00
f3179cc5e3 Modify the MSVC build project (for libevoral) such that it can find pthread.h
libevoral itself doesn't seem to need libpthread - but by some mechanism it #includes <pbd/event_loop.h> (which now does #include <pthread.h>). So let's make sure it can be found.
2015-12-30 10:17:55 +00:00
8d45eecd45 somewhat better solution to prev commit.
parse up to 32bit VLQs, match smf_format_vlq()
2015-12-27 03:40:48 +01:00
2c197fd89a work around midi-event counter 4 byte overflow. 2015-12-27 02:09:54 +01:00
nick_m
fcc626132e Handle paste from non-toggled to boolean automation track.
- sort-of fixes #6431
2015-10-31 03:54:18 +11:00
nick_m
4dcd22fadf Update ContrilList debug output. 2015-10-20 00:53:29 +11:00
nick_m
cc7de475f2 Amend last connit - don't use a bool to represent a double. 2015-10-20 00:53:28 +11:00
nick_m
ff2f934977 Fix incorrect initial point when recording toggled automation. 2015-10-20 00:53:28 +11:00
nick_m
9c102fa8d2 Make automation record undo per pass rather than per touch. 2015-10-20 00:53:28 +11:00
nick_m
17294ab9ec Make control point selection more consistent.
- disallow simultaneous events via ControlList::editor_add ()
	- clicking on an automation line selects the points that define it.
	- don't 'flash' a region selection when using mousedraw mode.
	- cp click selection resembles region selection.
	- region gain points respect snap modifier (a la automation points).
2015-10-20 00:53:27 +11:00
96b45d4909 only subdivide plugin-cycle when automation is playing
PluginInsert::automation_run() subdivides plugin-run on every
control-port automation event (without splitting the process cycle).

libevoral has no automation-control context, hence this function
must be implemented by Automatable.
2015-10-07 14:21:29 +02:00
22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
4178db5f63 globally remove all trailing whitespace from .cpp and .hpp files missed by previous commit 2015-10-04 15:11:15 -04:00
4dc63966f0 globally remove all trailing whitespace from ardour code base.
Paul Davis was responsible for introducing almost all of this.
2015-10-04 14:51:05 -04:00
e4adb99e06 Add some casting to keep MSVC happy 2015-09-24 09:06:19 +01:00
555ef50521 no c99 2015-09-19 01:22:14 +02:00
7648824773 speed-up smf_track_delete() from O(N^2) to O(n) 2015-09-19 00:38:32 +02:00
21b720fddc Midi CC events have no event-ID
Prior to this change the last iterator's ID was used. (event's ID was
not updated for CCs)
2015-09-18 17:37:03 +02:00
8b2fb88f15 fix ever increasing MIDI event IDs
Iterating over a const Midi-Sequence calls Evoral::Sequence::set_event(),
which in turn used Evoral::Event::operator=()  which always created
a new event-ID (create copy of the event).

Issues fixed:
 - Saving *unmodified* MIDI produced new event-IDs on every save;
   files changed with every save. - greetings to Deva.
 - all [GUI] operations that use IDs to refer to notes e.g. undo.
   invalid undo-history.

Also clarify assignment operator name. Prefer explicit assign() over =.
2015-09-18 17:36:15 +02:00
fc74894def another note-off fix.
For nearly coincident note-on the sequence does not matter,
but note-off must be sent before a new note-on in strict
order (could be the same note).
2015-09-15 17:50:27 +02:00
e63c3d028a note-off ordering - fixes #6340
Evoral::Beats::operator>() rounds to (1.0 / PPQN), hardcoded 1/1920.0.

If the time difference between two events is smaller than 1/PPQN,
Beats::operator>()  and  Beats::operator<()  produce ambiguous results.
The same pair of values is both "less than" and "greater than" depending
which operator is used.

While it's fine for some cases to ignore the order of nearly concurent
events, the std::priority_queue must be strictly ordered.
2015-09-14 04:55:01 +02:00
d83889079b hack around a bug in cppunit/mingw/windows. 2015-09-13 20:23:12 +02:00
e45db26d97 adjust precision to specified value, avoid "0". 2015-09-13 20:12:10 +02:00
8e8f8d92c2 allow to run unit-test under wine from srcdir. 2015-09-13 15:30:00 +02:00
ca0c9b3636 Replace "%z" modifier with glib macro for portability. 2015-07-30 17:00:03 +02:00