summaryrefslogtreecommitdiff
path: root/libs/evoral/evoral
AgeCommit message (Collapse)Author
2018-06-21remove Session::controllable_by_descriptor() and move code into GenericMIDI ↵Paul Davis
code (the only user). This also removes enums introduced to describe well-known parameters for Mixbus. Lookup now involves string parsing every time, but this is not likely to be a notable cost.
2017-09-29remove *.orig files (accidentally added in cba53a202)Robin Gareus
2017-09-18add _locked() variants to new tempo experimentPaul Davis
2017-09-18remove Evoral types.cpp since it is no longer requiredPaul Davis
2017-09-18extend/fix/improve operator overloads and methods for Evoral::BeatsPaul Davis
2017-09-18NOOP: formattingPaul Davis
2017-09-18::find_next_event() does not need to be a pure virtual in ControlSet (it can ↵Paul Davis
originate in AutomatableSequence)
2017-07-24Update WritePass logic + AutomationList UndoRobin Gareus
Fixes various issues when changing AutomationState while rolling.
2017-07-24Fix ctrl-list guard-points and concurrency issuesRobin Gareus
* lock list when editing (prevent concurrent modification of insert iterator * don't add a guard-point if an event is already present between the target and guard-point-position * remove existing automation-events (old guard points) when touching automation w/o change * don't unset "new write pass" when not rolling (fixes issues when not rolling but locating with write-enabled)
2017-06-21Remove duplicates from ControlListRobin Gareus
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-21Move logarithmic property into Evoral, add rangestepsRobin Gareus
This allows complete mathematical description of a given parameter and parameter values. Semantic type abstraction is reserved for Ardour::ParameterDescriptor.
2017-06-14Add infrastructure to merge ControlListsRobin Gareus
2017-06-13Apply master-value to automation on disconnect.Robin Gareus
2017-06-10Implement slaved boolean automation and update mute special-caseRobin 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.
2017-04-26AutomationLine time-unit conversion and paste API updateRobin Gareus
This fixes copy/paste of MIDI automation (time-unit: beat) from/to Parameter automation (time-unit: samples). It also fixes repeatedly pasting with tempo-ramps: pre-multiply length before converting to samples.
2017-02-08centralize computation of tempo from SMF informationPaul Davis
2016-12-22More 8 whitespace to tab indentation fixesNil Geisweiller
2016-12-21Fix indentation 8 whitespaces to tabNil Geisweiller
2016-12-16"toll free bridging" between smf_tempo_t and Evoral::SMF::TempoPaul Davis
2016-12-16expose SMF tempo information in Evoral::SMFPaul Davis
2016-12-16add comments about limitations for Evoral::SMF and tracksPaul Davis
2016-12-14add API to Evoral::SMF to retrieve all track/instrument names for use when ↵Paul Davis
importing
2016-12-07Set MidiPgmChangeAutomation control valueRobin Gareus
2016-12-04Add missing includeDavid Robillard
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.
2016-12-03Remove dead codeDavid Robillard
2016-12-03Fix event type and parameter type confusionDavid Robillard
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-03Remove Evoral::MIDIEventDavid Robillard
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-03Factor out and extend MIDIXML implementationDavid Robillard
2016-12-03Fix Sequence/Event const-correctness issuesDavid Robillard
2016-10-05SMF add support for type-0 files (count channels, not tracks)Robin Gareus
2016-09-13extend Evoral::Range<T> to offer ::length() and ::squish()Paul Davis
The latter maps a T into a range, using loop semantics
2016-08-19attempt to handle poly-pressure (polyphonic aftertouch) similarly to other ↵Paul Davis
MIDI messages
2016-07-12remove old midi-note name APIRobin Gareus
2016-04-12NO-OP; document some more parameters.Robin Gareus
Since headers only provide the declaration, function parameters need to be documented.
2016-04-10NO-OP document Evoral::ControlListRobin Gareus
2016-03-21Trim dependence on evoral types.hpp and Beats.hppDavid Robillard
2015-10-20Make automation record undo per pass rather than per touch.nick_m
2015-10-20Make control point selection more consistent.nick_m
- 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-07only subdivide plugin-cycle when automation is playingRobin Gareus
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-05NOOP, remove trailing tabs/whitespace.Robin Gareus
2015-10-04globally remove all trailing whitespace from .cpp and .hpp files missed by ↵Paul Davis
previous commit
2015-10-04globally remove all trailing whitespace from ardour code base.Paul Davis
Paul Davis was responsible for introducing almost all of this.
2015-09-18fix ever increasing MIDI event IDsRobin Gareus
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-14note-off ordering - fixes #6340Robin Gareus
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-06-17Automation -use editor_add in gui, record straight lines with fewer points.nick_m
- don't keep setting/unsetting write pass when transport frame remains the same (think larger jack buffer sizes) - insert guards are now 64 frames after when. - refactor previous approach.
2015-06-17Fix some workflow problems wrt automation.nick_m
- clearing automation points sets control to "off" rather than touch. - multiple touches on the same pass acts consistently (no more fader jumps on mouse button press - use actual value for initial point rather than some arbitrary default. clarify new semantics of add () (with_default->with_initial). - clean some whitespace - add guard points as needed in stop. - catch grab broken signal (i can't trigger it, but the docs seem to think it is essential).