summaryrefslogtreecommitdiff
path: root/libs/evoral/src
AgeCommit message (Collapse)Author
2015-04-15Replace control list locks with RWLocks4.0-rc4Robin Gareus
towards fixing #6238 and #6096. GUI thread: #2 Glib::Threads::Mutex::Lock::Lock #3 Evoral::ControlList::eval #4 Evoral::Control::get_double #5 ARDOUR::AutomationControl::get_value #6 ProcessorEntry::Control::control_changed .. #15 PBD::Timer::timeout_handler at the same time: Audio Thread (try-lock, fails) #0 Evoral::Curve::rt_safe_get_vector #1 ARDOUR::Amp::setup_gain_automation #2 ARDOUR::Route::process_output_buffers Due to the failed try-lock.. AMP::_apply_gain_automation is false. and Amp::run() uses a different gain factor. -> click.
2015-03-05Handle edits while playing precisely.David Robillard
This avoids stuck notes if active notes are edited, but without stopping all active notes in the region on any edit as before. This implementation injects note ons in places that aren't actually note starts. Depending on how percussive the instrument is, this may not be desired. In the future, an option for this would be an improvement, but there are other places where "start notes in the middle" is a reasonable option. I think that should be handled universally if we're to do it at all, so not considering it a part of this fix for now.
2015-02-19Normalize notes on all channels.David Robillard
Probably.
2015-02-19Fix record/import of note ons with velocity 0.David Robillard
Best to just do this as early as possible to avoid having to deal with this situation all over the code. Also fixes violation of LV2 MIDI specification, which requires no such events are delivered to plugins.
2015-02-19Don't allocate then discard notes on note off.David Robillard
Silly to make a junk Note just to pass to append_note_off_unlocked, which just uses the fields that are on the MIDIEvent anyway then throws it away. Also explicitly dispatch to append_note_off_unlocked in the caller for note ons with velocity 0 rather than make append_note_on_unlocked deal with it.
2015-02-19Remove unused ifdef gunk.David Robillard
2015-01-19Curve::_get_vector: fix return value when veclen == 1Guido Aulisi
When the crossfade length is only 1 frame, I got strange gain coefficients from get_vector (63 in my case). The function wrongly returned the x axis value.
2015-01-07MusicalTime => Beats.David Robillard
2015-01-05Fix MIDI file descriptor leaks.David Robillard
Pretty sure this is the cause of MIDI data going missing on save for optimized builds. Introduced in 294b99aabf3eb96323a3159b7a5e1b4bfc1ff04a.
2014-12-30Load what we can from broken/truncated MIDI files.David Robillard
We're still a very long way from tolerant of weird SMF files (libsmf takes a "crash if input is not exactly perfect" philosophy, if we're going to be polite and elevate such a thing to "philosophy"), but at least we'll get what's there from files truncated by old broken versions of Ardour or other situations.
2014-12-30Fix MIDI CC record/playback crash.David Robillard
2014-12-29Blind fix for MIDI iteration bug.David Robillard
2014-12-17Remove some aborts that don't really need to be.David Robillard
Enforce PatchPrimaryKey sanity at the type level rather than attempting to check for it everywhere. Remove dead file.
2014-12-17Fix oops in previous commit.David Robillard
Professionalism is overrated.
2014-12-17Fix occasional crash when recording MIDI.David Robillard
2014-12-10remove file manager LRU cache from code.Paul Davis
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-06Fix seek in linearly interpolated control lists.David Robillard
2014-12-06Adapt range when copying between automation types.David Robillard
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-06More potential SMF crash fixes.David Robillard
2014-12-06Possible half-fix for SMF crash.David Robillard
2014-12-05Revert "Create discrete lists for recorded MIDI controls."David Robillard
This broke saving/restoring interpolation style. This reverts commit 07a381a8f5572ae7550c60e5b1bd18c3dcdc7369.
2014-12-02Remove accidentally committed file.David Robillard
2014-12-02Create discrete lists for recorded MIDI controls.David Robillard
2014-12-01Fix automation write/touch.David Robillard
2014-12-01Factor out copy-paste code.David Robillard
2014-12-01Replace half-baked param metadata with descriptor.David Robillard
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-01Make it compile with C++11 support.Julien de Kozak
Reference : https://bugs.webkit.org/show_bug.cgi?id=59249
2014-11-30Remove braindead Parameter inheritance abuse.David Robillard
2014-11-30Replace thinning static state with parameter.David Robillard
2014-11-30Remove dead code.David Robillard
2014-11-29Set discrete by default for boolean parameters.David Robillard
2014-11-28Fix crash when deleting all points from a line.David Robillard
2014-11-24Changes needed to accommodate building libevoral with MSVCJohn Emmas
Note that class 'MusicalTime' needn't be exportable (with a little work, this could be reverted if it affects the other builds)
2014-11-23Fix build with a certain awful broken compiler.David Robillard
2014-11-22Max is max and min is min and I am dumb.David Robillard
2014-11-22Fix clang and MSVC build.David Robillard
2014-11-22Wrap MusicalTime in a class.David Robillard
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-22Fix assert failure in control list interpolation.David Robillard
How we never hit this before is beyond me, it's in some ooooold code.
2014-11-20Fix lost MIDI note offs and controllers.David Robillard
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-18amend 484e38053Robin Gareus
2014-11-18silence clang "dead assignment" warningsRobin Gareus
2014-11-16Don't add origin value to MIDI controller regions on initial insert.David Robillard
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-16Make ControlList::paste const-correct.David Robillard
2014-11-14add abort() to non-reached codeRobin Gareus
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-13Fix crashes on various MIDI editing operations.David Robillard
Assertions assumed old strict ordering, no longer reflecting reality of fuzzy time comparison (introduced in 86f1b8).
2014-10-15remove debug outputPaul Davis
2014-10-15add mutex/lock to all Evoral::SMF methods that use _smf/libsmf, to avoid ↵Paul Davis
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-08-31Fix crash when changing automation mode for MIDI track control automation.David Robillard
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-06More fixes for range-based automation editing.Ben Loftis
-Remove redundant start_grab calls. -Show gain curves in Range mode, so you can see the curves you are selecting
2014-08-05Initial steps towards usable range-based automation editing.Ben Loftis
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