Commit graph

310 commits

Author SHA1 Message Date
David Robillard
ec6626f06a Fix oops in previous commit.
Professionalism is overrated.
2014-12-17 02:10:01 -05:00
David Robillard
0c3f4bd995 Fix occasional crash when recording MIDI. 2014-12-17 01:49:46 -05:00
Paul Davis
294b99aabf remove file manager LRU cache from code.
This was a very clever attempt to fix a non-problem. If the platform doesn't have enough file descriptors available
then the platform is broken and we're not going to hack around trying to fix it.
2014-12-10 18:28:55 -05:00
David Robillard
f9c74319a2 Fix seek in linearly interpolated control lists. 2014-12-06 15:44:10 -05:00
David Robillard
4650912ae3 Adapt range when copying between automation types.
For things like copying from pitch bender to a CC.

Also things like fader to pan, but that seems a bit funny.  The conversion
probably needs to be a bit smarter here, perhaps taking the normal into
consideration...
2014-12-06 13:40:35 -05:00
David Robillard
ddb7cc6d66 More potential SMF crash fixes. 2014-12-06 11:19:48 -05:00
David Robillard
2e92ae90a6 Possible half-fix for SMF crash. 2014-12-06 10:37:08 -05:00
David Robillard
ad340333f4 Revert "Create discrete lists for recorded MIDI controls."
This broke saving/restoring interpolation style.

This reverts commit 07a381a8f5.
2014-12-05 00:03:47 -05:00
David Robillard
a13ff7b604 Remove accidentally committed file. 2014-12-02 12:15:54 -05:00
David Robillard
07a381a8f5 Create discrete lists for recorded MIDI controls. 2014-12-02 00:21:52 -05:00
David Robillard
86de0386c9 Fix automation write/touch. 2014-12-01 23:35:24 -05:00
David Robillard
2b69fa6edf Factor out copy-paste code. 2014-12-01 23:35:24 -05:00
David Robillard
767c0238a3 Replace half-baked param metadata with descriptor.
Among other things, this means that automation controls/lists have the actual
min/max/normal/toggled of parameters, and not those inferred from the Parameter
ID, which is not correct for things like plugin parameters.

Pushing things down to the Evoral::ParmeterDescriptor may be useful in the
future to have lists do smarter things based on parameter range, but currently
I have just pushed down the above-mentioned currently used attributes.
2014-12-01 23:35:24 -05:00
Julien de Kozak
cb8abbe8d2 Make it compile with C++11 support.
Reference : https://bugs.webkit.org/show_bug.cgi?id=59249
2014-12-01 23:18:11 +01:00
David Robillard
0ffeaa6d6a Remove braindead Parameter inheritance abuse. 2014-11-30 23:56:20 -05:00
David Robillard
7eb4e5d22b Replace thinning static state with parameter. 2014-11-30 23:56:20 -05:00
David Robillard
b68fd1cc25 Remove dead code. 2014-11-30 23:56:20 -05:00
David Robillard
784b96e255 Set discrete by default for boolean parameters. 2014-11-29 01:40:23 -05:00
David Robillard
e55b68298b Fix crash when deleting all points from a line. 2014-11-28 20:04:57 -05:00
John Emmas
25745758aa Changes needed to accommodate building libevoral with MSVC
Note that class 'MusicalTime' needn't be exportable (with a little work, this could be reverted if it affects the other builds)
2014-11-24 12:51:54 +00:00
David Robillard
f1926dc863 Fix build with a certain awful broken compiler. 2014-11-23 16:31:59 -05:00
David Robillard
231e0009b4 Max is max and min is min and I am dumb. 2014-11-22 16:33:32 -05:00
David Robillard
42b5ed3904 Fix clang and MSVC build. 2014-11-22 15:26:41 -05:00
David Robillard
c1cfa12d6e Wrap MusicalTime in a class.
This lets us get a more explicit handle on time conversions, and is the main
step towards using actual beat:tick time and getting away from floating point
precision problems.
2014-11-22 04:05:42 -05:00
David Robillard
cae74309a5 Fix assert failure in control list interpolation.
How we never hit this before is beyond me, it's in some ooooold code.
2014-11-22 00:46:15 -05:00
David Robillard
4bc0d1c475 Fix lost MIDI note offs and controllers.
Fix initial read of discrete MIDI controllers.

Fix spurious note offs when starting to play in the middle of a note.

Faster search for initial event when cached iterator is invalid.

So much for dropping the cached iterator.  The iterator is responsible for
handling note offs, so that doesn't work.  This design means we have some stuck
note issues at the source read level, but they should be taken care of by the
state tracker anyway.
2014-11-20 15:36:11 -05:00
Robin Gareus
b6db707989 amend 484e38053 2014-11-18 05:28:27 +01:00
Robin Gareus
484e380536 silence clang "dead assignment" warnings 2014-11-18 04:46:37 +01:00
David Robillard
b4fcdbb100 Don't add origin value to MIDI controller regions on initial insert.
This should probably hijack the same modifier as the guard points and work the
same on all automation tracks, but I did it this way to not change behaviour of
track automation where a default is much more reasonable.
2014-11-16 22:35:45 -05:00
David Robillard
9d4f43fa7d Make ControlList::paste const-correct. 2014-11-16 22:35:45 -05:00
Robin Gareus
6b3a8915f3 add abort() to non-reached code
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
2014-11-14 11:30:08 +01:00
David Robillard
8907477271 Fix crashes on various MIDI editing operations.
Assertions assumed old strict ordering, no longer reflecting reality of fuzzy
time comparison (introduced in 86f1b8).
2014-11-13 22:34:20 -05:00
Paul Davis
49b9d22217 remove debug output 2014-10-15 19:08:46 -04:00
Paul Davis
ab658d7ca1 add mutex/lock to all Evoral::SMF methods that use _smf/libsmf, to avoid inadvertent corruption via multithreaded access.
Serialization of Session::save_state() will already protect against most of this, but there is really no
good reason why Evoral::SMF's API should require single-threaded/explicit serialization.
2014-10-15 18:44:22 -04:00
David Robillard
34c1465cf9 Fix crash when changing automation mode for MIDI track control automation.
Also some work towards tolerating automation controls with no automation list,
towards actually doing something for these cases, though not required just to
fix this crash (MidiTrack::set_parameter_automation_state() avoids those
paths).
2014-08-31 18:57:22 -04:00
Ben Loftis
1873bcfa9d More fixes for range-based automation editing.
-Remove redundant start_grab calls.
-Show gain curves in Range mode, so you can see the curves you are selecting
2014-08-06 14:43:40 -05:00
Ben Loftis
16ca4e0f9a Initial steps towards usable range-based automation editing.
TODO:  needs undo. only works in top quarter of automation lane.  selection model feels weird sometimes.  needs to show gain curve when you are using Range tool
2014-08-05 15:42:06 -05:00
Paul Davis
cfca056f19 make sure that copy constructors and operator= for ControlList pass along the _interpolation value 2014-07-09 14:30:38 -04:00
Robin Gareus
94fa927861 limit automation event density - fixes #5928
Constrain control points to one per tick (1/1920 beats).

Prior to this it was possible to set two values to the
same time (interpolation and iteration failed).
2014-06-07 17:43:12 +02:00
Paul Davis
8c9749e42f merge with master and fix 4 conflicts by hand 2014-06-02 11:32:13 -04:00
Robin Gareus
c91f847454 update Evoral::Curve to honor ControlList::InterpolationStyle 2014-05-30 17:00:28 +02:00
Robin Gareus
5aecc877d6 Fix code to prepare re-enable cubic spline interpolation of automation data.
see also 24917e4c9e
2014-05-30 04:25:59 +02:00
Damien Zammit
2f6065b32c Fixed problem where importing invalid midi files caused crash. 2014-04-29 06:48:29 +10:00
Robin Gareus
167991eceb fix mismatch typo in sizeof 2014-03-23 00:17:19 +01:00
Paul Davis
f049d0294c add option to skip guard points when adding new control points to a ControlList; add more debugging statements 2014-02-19 23:25:08 -05:00
Paul Davis
a70f914c51 add option to skip guard points when adding new control points to a ControlList; add more debugging statements 2014-02-19 13:22:52 -05:00
Paul Davis
7000afdc66 fix merge conflict with master 2014-01-23 13:41:20 -05:00
Robin Gareus
3bc0d3e57b fix evoral assignment operator (copy buffer) 2014-01-22 15:11:31 +01:00
John Emmas
5da8c2b476 'libs/evoral' - and add 'Note.impl' to the project 2014-01-13 12:47:21 +00:00
Paul Davis
2fc2df8c5d fix 64 bit template types 2014-01-12 20:01:12 -05:00