summaryrefslogtreecommitdiff
path: root/libs/ardour/playlist.cc
AgeCommit message (Collapse)Author
2020-02-28Ensure that regions have sources when savingRobin Gareus
Otherwise this will lead to a corrupt state: ERROR: Session: XMLNode describing a AudioRegion references an unknown source id ERROR: Session: cannot create Region from XML description. Can not load state for region ERROR: Playlist: cannot create region from XML and a track without playlist is created, resulting in a later crash. Eventually SessionPlaylists::load() needs to handle this gracefully, but this should help catch cases causing the actual issue.
2020-01-08expand comment to include (more of?) the full story about uncombining and copiesPaul Davis
2020-01-08expand the test used to decide if we need to make copies when uncombining a ↵Paul Davis
compound region
2020-01-08never remove entries from the CompoundAssociation mapPaul Davis
2020-01-08add concept of an owner region (by ID) to PlaylistSourcePaul Davis
2019-12-17Convert Disksteam & Playlists from old 2.x sessionsRobin Gareus
2019-12-12fix playback of newly added/modified MIDI dataPaul Davis
2019-11-02various adjustments so that a MidiPlaylist gets re-rendered whenever it changes.Paul Davis
This may still be missing a few changes (i.e. they do not cause re-rendering)
2019-09-17add finite state machine to control/manage transport statePaul Davis
2019-09-17remove unused local variablePaul Davis
2019-08-29No-OP: move doxygen doc into header filesRobin Gareus
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2019-08-01(Source List) Region List rewrite (libardour part)Ben Loftis
2019-03-19Remove global Session::playlists variable, use getter method (1/2)Robin Gareus
Global variables that can written by anyone are to be avoided. This also simplifies exposing SessionPlaylists as Lua bindings.
2019-03-12Add a time+layer equivalence checkRobin Gareus
This is more useful than exact_equivalent() since _start offset may not match in some cases (compounds, import, record with different capture latencies). However shared group editing (range, copy/paste) does result in consistent layers and matching position+length.
2018-12-21Fix insert/remove time duplicate automation move -- #7712Robin Gareus
Editor::insert_time(), Editor::remove_time() handle automation directly because time may be inserted to Routes without playlists and combined undo-operation with marker, and tempo-changes. However when the preference "automation_follows_regions" is enabled, the playlist already moves the automation of region under any region (possibly overriding future automation). This resulted in possibly lossy, duplicate automation moves.
2018-12-21NO-OP: whitespaceRobin Gareus
* Remove leading and trailing whitespace. * use tabs to indent, space to align /* prefer C-style comments like this, * always use an asterisk on every line, this * way small ASCII-graphics are always aligned * using spaces after the asterisk. * * ^ * / \ * / \ * / \ * / \ * / \ * / /\ \ * /__/ \_/\_^__\ * A R D O U R * << NO asterisk, there may be tabs :( * */
2018-09-13Implement new Enclosed region equivalence modeColin Fletcher
2018-02-11SoloSelection: libardour part.Ben Loftis
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-06-14Fix region-gain offset when separating ranges5.10Robin Gareus
2017-06-14Fix range-separate for musically-locked MIDI regionsRobin Gareus
Cloning a region retains the region-lock style. Playlist partitioning set the region start-property only (audio-time). If a MIDI region is locked to musical-time, Properties::start is ignored and overwritten by Properties::start_beats.
2017-05-25Always create a deep copy of MIDI regions when copying playlists.Robin Gareus
2017-04-19Use PBD::string_to_uint32 in Playlist class instead of boost::lexical_castTim Mayberry
2017-04-19Use XMLNode::get/set_property API in ARDOUR::Playlist classTim Mayberry
2017-04-19Use ID::to_s() in libardour instead of ID::print()Tim Mayberry
2017-02-15Don't copy-construct MusicFrame, pass const reference.Robin Gareus
2017-02-04rework snapnick_m
snap now fills in a struct (MusicFrame) which contins a snapped frame along with a music divisor. this gives useful information wrt magnetic snap which may or may not have rounded to an exact musical position. region position may now be set musically (using quarter notes for now). this patch fixes several problems in the current code: - dragging a list of music-locked regions now maintains correct musical offsets within the list. - splitting regions using magnetic snap works correctly (#7192) - cut drag should now work correctly with magnetic snap. - musical length of split midi regions is no longer frame based.
2017-02-03another tweak to maybe-fix crash in Playlist::fade_range()Paul Davis
2017-02-02potential fix for crashes when creating fade-rangesRobin Gareus
2017-01-27no-op - whitespace fix for libs/ardour/playlist.ccnick_m
2017-01-05Proposed fix managing shared playlists (see #7150)Julien ROGER
Actually, when duplicating a track with "share playlist", the current playlist is owned by the new created track(orig-track-id). The sharing mecanism is made by diskstreams pointing on the same(shared) playlist. Since playlist now owned by the new track, selecting another playlist in the original track "forgets" the playlist for this track.You can't select the shared playlist anymore from the original track. This commit adds a way to keep trace of shared playlist between tracks.
2016-12-13Fix layered-record undo, include changes to existing region(s)Robin Gareus
2016-12-06Fix #6753Julien ROGER
Fix "Illegal instruction" due to recursive acquisition/multi release on a RWLock See #6753 notes
2016-12-06Fix Multi Duplicate for a Range SelectionsTim Mayberry
As mentioned in the previous commit
2016-11-08Support multiple readers for MIDI source/modelDavid Robillard
Fixes the multiple reader issue #6541 properly without resorting to a linear search kludge. All the read state has been pulled out into a MidiCursor which the caller is required to pass. The playlist keeps cursors for all the regions it is reading, any number of cursors are allowed at a time. MidiCursor should probably be made a smarter and more fool-proof object (and/or possibly merged with some of the other tracker/fixer stuff) but for now I wanted to keep it simple.
2016-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-07-10remove reference "const int32_t&" -> const int32_t"Robin Gareus
this simplifies lua-bindings and also let's the compiler worry about constant primitive types.
2016-07-10Remove extra ContentsChanged signal on tempo map change.nick_m
2016-07-10Exact beat for added regions.nick_m
2016-07-10Complete the task of Playlist::flush_notifications ()nick_m
2016-07-10Paste uses exact beats. rework _start_beats calculation in copy-with-offset ↵nick_m
ctor.
2016-07-10Exact beat - provide audio->music mapping for region split.nick_m
- for those not in the know, this series provides a way to remove the temporal distortion introduced when using an audio frame-based gui for music-locked objects. In short, the gui uses an audio frame representation to move objects. It displays the object using frame_at_beat(), quantizing the time value to audio frames. This is fine until the user selects that frame but expects it to be interpreted as a beat. Thus beat_at_frame() would not produce the user-expected beat (temporal quantization error of up to 0.5 audio samples). This is one method of mapping audio time to music time accurately.
2016-06-28remove debug output and add a few suggestive commentsPaul Davis
2016-06-28changes in logic used by source cleanup to avoid endless recursion in ↵Paul Davis
sessions with deeply nested/recursive compound regions. This also fixes some potentially dangerous cleanup logic related to two sources with the same name (but different paths)
2016-06-08consistent API name for region-listRobin Gareus
2016-05-27Crapola - this is an experimental performance hack that must be reverted.nick_m
2016-05-04OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one)Paul Davis
2016-05-01fix: gcc4.2 / PPC compilationRobin Gareus
no match for 'operator!=' in 'x != std::list<_Tp, _Alloc>::rend() [with _Tp = long long int, _Alloc = std::allocator<long long int>]()'
2016-05-01various transient-detection fixes (split region, trim, move, undo,..)Robin Gareus
* all API calls use session-time (allow region-lists) * per-region transients are separated in - Onset (Rhythm Rodent, Aubio) - User-added - internal/source (QM), used as fallback for next/prev (read-only)