summaryrefslogtreecommitdiff
path: root/libs/evoral/src/Curve.cpp
AgeCommit message (Collapse)Author
2017-06-21Implement additional ControlList interpolation methods.Robin Gareus
The Control and ControlList uses the raw value (eg. coefficient for gain, Hz for frequencies) and those Lists are stored in existing sessions. In the vast majority of cases interpolating automation values using exp/log scale for dB, freq makes more sense -- it's also what the fader does. Adding additional interpolation methods is future proof (we might at allow to even add different methods per automation point (to the next) like other DAWs do. Currently it's mainly used in preparation for consistent GUI automation- lanes. Between 2 points there's always a visual straight line.
2017-06-21Remove separate ControlList min/max/default, use ParameterDescriptor.Robin Gareus
2017-06-03add const-ness: Evaluating a curve does not change it.Robin Gareus
Note that the ControlList's lock and cache are already mutable.
2016-12-04Remove dead/annoying/unsafe codeDavid Robillard
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.
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
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-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.
2014-05-30update Evoral::Curve to honor ControlList::InterpolationStyleRobin Gareus
2014-05-30Fix code to prepare re-enable cubic spline interpolation of automation data.Robin Gareus
see also 24917e4c9e36ca57
2013-07-31fixes for windows branch build failures under linux. still does not build on ↵Paul Davis
linux, now due to taglib changes
2013-07-23'libs/evoral' - Through a compiler extension gcc can implement an array ↵John Emmas
whose size in not known at compile time. MSVC doesn't have this extension. Therefore, use std::vector instead
2012-12-09disable spline interpolation for curves - use linear interpolation; ↵Paul Davis
configuration parameter pending for this, plus slightly cleaner reuse of existing ControlList methods git-svn-id: svn://localhost/ardour2/branches/3.0@13627 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-12-02remove debugging output; properly handle cases in Curve::_get_vector() where ↵Paul Davis
the entire requested range for the vector is either before the first point in the curve (unlikely to happen because we typically add a guard point at zero) or entire after the last point in the curve git-svn-id: svn://localhost/ardour2/branches/3.0@13582 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-30still more debugging outputPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13581 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-30still more debugging outputPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13580 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-30still more debugging outputPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13579 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-30more debugging outputPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13578 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-30debugging outputPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13577 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-18fix prev commit (stupid C++ needs explicit typecast)Robin Gareus
git-svn-id: svn://localhost/ardour2/branches/3.0@13529 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-11-18prevent subveclen to wrap at 2^31Robin Gareus
fixes http://pastebin.com/X629ZE7F (Timecode 22h @48k, 512fpp) git-svn-id: svn://localhost/ardour2/branches/3.0@13528 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-07-25convert from Glib:: to Glib::Threads for all thread-related APIPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@13084 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-05-24fix bug that has existed since rev 17 when evaluating a curve in a position ↵Paul Davis
before the first point of the curve git-svn-id: svn://localhost/ardour2/branches/3.0@12411 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-19Fix thinko causing possible memory corruption.Carl Hetherington
git-svn-id: svn://localhost/ardour2/branches/3.0@12040 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-16Fairly major change to the way in which crossfades are handled;Carl Hetherington
they are now done with region fades, rather than separate objects. After this commit, Ardour will try to convert your session files to the new crossfade format, but will make a backup in your session folder first. If you have works in progress using Ardour 3 it is ***STRONGLY RECOMMENDED*** that you back up session files before updating to this commit. git-svn-id: svn://localhost/ardour2/branches/3.0@11986 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-12-26(1) do not write sequential same-value automation data into a ControlList ↵Paul Davis
(2) thin AutomationList data when reloading from disk (similar code as Ben's from ardour 2.X, but without user-adjustable thinning density at present). Should fix #4583 and maybe others caused by NaN's occuring from zero-slope lines git-svn-id: svn://localhost/ardour2/branches/3.0@11078 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-06Fix my name :)David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@9302 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-09-20Make sure that _get_vector writes a value to the output array even when ↵Carl Hetherington
veclen == 1. Fixes #3461. git-svn-id: svn://localhost/ardour2/branches/3.0@7808 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-23Fix whitespace.David Robillard
git-svn-id: svn://localhost/ardour2/branches/3.0@5885 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-14Strip trailing whitespace and fix other whitespace errors (e.g. space/tab ↵David Robillard
mixing). Whitespace changes only. Vimmers, try let c_space_errors = 1 in your .vimrc to highlight this kind of stuff in red. I don't know the emacs equivalent... git-svn-id: svn://localhost/ardour2/branches/3.0@5773 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-12-21Sync with http://svn.drobilla.net/lad/trunk/evoral r1891.David Robillard
(Only change: use #include "" instead of #include <> for local include paths). git-svn-id: svn://localhost/ardour2/branches/3.0@4335 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-11-03fix nasty bug in evaluation of final step of interpolated Curve valuesPaul Davis
git-svn-id: svn://localhost/ardour2/branches/3.0@4085 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-09-19Factor out sequencing related things into an independant new library: "evoral".David Robillard
Anything related to the storage of events/values over a range of time lives in evoral. This includes MidiModel (Evoral::Sequence) and automation data (AutomationList (Evoral::ControlList), Automatable (Evoral::ControlSet), etc). libs/evoral synced with http://svn.drobilla.net/lad/trunk/evoral r1511. git-svn-id: svn://localhost/ardour2/branches/3.0@3754 d708f5d6-7413-0410-9779-e7cbd77b26cf