summaryrefslogtreecommitdiff
path: root/libs/ardour/playlist.cc
AgeCommit message (Collapse)Author
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)
2016-04-10NO-OP whitespace + commentsRobin Gareus
2016-02-22Spelling correction patch from DebianAdrian Knoth
Patch taken (and forward-ported to HEAD) from <https://anonscm.debian.org/cgit/pkg-multimedia/ardour.git/plain/debian/patches/0100-fix-typos.patch>
2016-01-28Add Playlist::duplicate_range/s utility methodsTim Mayberry
2016-01-14Fix bug 6725 regions incorrectly moved after tempo change when glued to BBT timeTim Mayberry
Playlist::_split_region copies the region and BBT_Time member is default constructed so position is bar 1 beat 1. The regions sample position is then initialized to the new position using the property list. Playlist::add_region_internal is then used to add new regions to the playlist which calls region->set_position() but as the region position has already been initialized it does not recompute the _bbt_time member based on the new sample position. Then when a tempo change occurs and Region::update_after_tempo_map_change is called the default initialized _bbt_time member is used to incorrectly determine the new sample position. So the change removes the initialization of the new region position using the property list initialization method and just lets the playlist set the position of the region in Playlist::add_region_internal so that the region _bbt_time member is recomputed in Region::set_position_internal.
2015-12-02Add function to duplicate until a certain frame.André Nusser
This excludes the 'end' frame.
2015-11-04Make duplicate start at position, not position + 1. (libs part)André Nusser
2015-10-12fix crashes due to glib ignored EDEADLK.Robin Gareus
Taking a readlock after a writelock in the same thread should result in a deadlock, yet pthread on Linux returns EDEADLK and continues. glib-2.42.0 ignores EDEADLK and assumes the lock was taken. Releasing the lock later causes issues: "Calling g_rw_lock_writer_unlock() on a lock that is not held by the current thread leads to undefined behaviour." The issue at hand: AudioStreamView::redisplay_track() -> foreach_region() #<< WriteLock -> add_region_view() ... -> AudioRegionView::create_one_wave() -> RegionView::update_coverage_frames -> Playlist::top_unmuted_region_at() #<< ReadLock All current users of Playlist::foreach_region() are in the GUI and AFAICT read-only (display regions, update visuals)
2015-10-05NOOP, remove trailing tabs/whitespace.Robin Gareus
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-20fix duplicating multiple selected regions - fixes #6202André Nusser
2015-06-29fix indentationPaul Davis
2015-06-29[Summary] Region changes will make session dirtyGZharun
2015-05-10Layering - the return of "later is higher".nick_m
Currently we don't do anything special on layering prefs change (relayer only occurs when each playlist is first edited). The idea here is that "undo" is still available to restore previous layering in case of any surprises.
2015-04-11remove unused local variablePaul Davis
2014-12-01Comments in various call-sites of coverage()Colin Fletcher
Comments in various call sites of Evoral::coverage() marking things I think are dubious (with XXX). Also straightened up the alignment of some ASCII art in libs/ardour/diskstream.cc
2014-10-15when flushing notifications/signals from an ARDOUR::Playlist, emit the ↵Paul Davis
RegionAdded/ContentsChanged signals first so that when LayersChanged is sent, the receivers know about all the new regions
2014-10-10Properly count nested regionsRobin Gareus