Commit graph

33150 commits

Author SHA1 Message Date
Paul Davis
c5ecd14622 temporal: fix logic errors in setting up TempoMetric objects
will likely revisit this to avoid code-duplication and "optimize" traversal of _points list
2021-08-13 12:51:35 -06:00
Paul Davis
011b5ec61c remove debug output 2021-08-13 12:51:35 -06:00
Paul Davis
36609c4067 remove public ::bbt_at (INTEGER) methods, because of superclock_t/samplepos_t confusion (GUI edition) 2021-08-13 12:51:35 -06:00
Paul Davis
8bada4b5e1 remove public ::bbt_at (INTEGER) methods, because of superclock_t/samplepos_t confusion
libtemporal still needs ::bbt_at (superclock_t) fairly often so retain it as a private method, but public
interfaces take either Beats or timepos_t
2021-08-13 12:51:35 -06:00
Paul Davis
53e411c011 fix logic error in conditional 2021-08-13 12:51:35 -06:00
Paul Davis
6f2fdc2695 functioning loading of older tempo map XML data 2021-08-13 12:51:35 -06:00
Paul Davis
552484978c fix call to ::bbt_at() inside LV2 plugin 2021-08-13 12:51:35 -06:00
Paul Davis
092a454648 fix timepos_t::string_to (wrong argument to samples_to_superclock() 2021-08-13 12:51:35 -06:00
Paul Davis
445ad2e383 rearrange if/else logic to avoid NOTREACHED condition 2021-08-13 12:51:35 -06:00
Paul Davis
b84402f4f8 intial steps for adding legacy (v0-5) tempo map deserialization support 2021-08-13 12:51:35 -06:00
Paul Davis
344dd26788 improved DEBUG_TRACE statements for tempo map 2021-08-13 12:51:35 -06:00
Paul Davis
cd34695944 fix TempoMap::quarters_at_superclock (superclock_t) 2021-08-13 12:51:35 -06:00
Paul Davis
74ff3b22b8 fix TempoPoint::superclock_at(Beats) 2021-08-13 12:51:35 -06:00
Paul Davis
216945a89c move TempoMap::write_copy() into .cc file instead of .h 2021-08-13 12:51:35 -06:00
Paul Davis
2ec93062d9 use simpler logic to avoid negative values when filling grid 2021-08-13 12:51:35 -06:00
Paul Davis
88bed837c0 fix deadlock during tempo marker dragging, and don't start a tempo map update if a tempo point is inactive 2021-08-13 12:51:35 -06:00
Paul Davis
ce3fb0507c change return type of Tempo::set_{ramped,clamped} and fix call sites 2021-08-13 12:51:35 -06:00
Paul Davis
99c8c0b658 initial, tentative, untested implementation of TempoMap::remove_time() 2021-08-13 12:51:35 -06:00
Paul Davis
68959643e8 fix minor errors from rebase fixups 2021-08-13 12:51:35 -06:00
Paul Davis
af4ba1cc01 fix start, length/position for recorded MIDI regions
Note that we should really set the position value as part of the
length, but then Playlist::add_region() would need to drop its
second argument (position). Maybe in a future commit
2021-08-13 12:51:35 -06:00
Paul Davis
fed449d54d various fixes to get time stretching basically working again
Time domains are not well respected at present, so more work is needed here
2021-08-13 12:51:35 -06:00
Paul Davis
76e5aaea44 remove another NUTEMPO #warning by using TempoMap::count_bars() 2021-08-13 12:51:35 -06:00
Paul Davis
991a7bf8a7 add TempoMap::count_bars() to allow bar counting even with position (BBT) markers in the tempo map
This just reuses the algorithm in TempoMap::get_grid() by asking for just the bar grid, and counting the
size of the result
2021-08-13 12:51:35 -06:00
Paul Davis
f05b2ed93b remove another NUTEMPO #warning by allow grab starts in rubber band selection to use the default time domain 2021-08-13 12:51:35 -06:00
Paul Davis
162d36ffc8 remove some debug output 2021-08-13 12:51:35 -06:00
Paul Davis
6bc8a7347f improve drag behavior on AudioClock 2021-08-13 12:51:35 -06:00
Paul Davis
3a94b45b23 rework handling of scroll and drag on AudioClock by using timepos_t rather than samples 2021-08-13 12:51:35 -06:00
Paul Davis
0ab2308523 reimplement TempoMap::midi_clock_beat_at_or_after() 2021-08-13 12:51:35 -06:00
Paul Davis
6effcc7723 reimplement quantization without (much) floating point (GUI edition) 2021-08-13 12:51:35 -06:00
Paul Davis
b276254551 reimplement quantization without (much) floating point 2021-08-13 12:51:35 -06:00
Paul Davis
48e68de180 remove another NUTEMPO warning by actually setting region time domain 2021-08-13 12:51:35 -06:00
Paul Davis
5f0ba5b404 fix recently added Location API to use timeline types 2021-08-13 12:51:35 -06:00
Paul Davis
fb66695081 fix (and improve) drawing of "ghost note" drawn while mouse pointer moves in MidiRegionView in draw mode 2021-08-13 12:51:35 -06:00
Paul Davis
1868c4cac5 fix drawing percussive notes in MidiRegionView following nutempo SNAFU with relative time calc. 2021-08-13 12:51:35 -06:00
Paul Davis
7244b03385 convert NoteCreateDrag::grid_aligned_beats() into a proxy for Editor::snap_to_bbt() 2021-08-13 12:51:35 -06:00
Paul Davis
831c085b2e remove MidiRegionView::snap_sample_to_grid_underneath() and replace with calls directly into Editor snap method 2021-08-13 12:51:35 -06:00
Paul Davis
37eea1da29 fix brace style 2021-08-13 12:51:35 -06:00
Paul Davis
b2655d13f1 make Editor::snap_to_bbt() public 2021-08-13 12:51:35 -06:00
Paul Davis
0b1d44f422 temporal: fix timepos_t::decrement() to not switch domains 2021-08-13 12:51:35 -06:00
Paul Davis
b42727b92a temporal: fix use of std::abs on 64 bit value 2021-08-13 12:51:34 -06:00
Paul Davis
97e4a4f04a change semantics of Region::set_length() to preserve current position
Before the nutempo changes, a call to Region::set_length() only set the length
of the region.  Now that Region::_length is a duple of (duration,position),
maintain thesame semantics so that the call only affects the duration part of
the duple.  Theoretically we might at some point want/need
Region::set_length_and_position() but that is not the case at this point,
2021-08-13 12:51:34 -06:00
Paul Davis
0ddfd7c873 force drag-created regions to use beat time for position 2021-08-13 12:51:34 -06:00
Paul Davis
49424ab0e3 Region::_start should be a timepos_t not a timecnt_t (GUI edition) 2021-08-13 12:51:34 -06:00
Paul Davis
56cde042cd Region::_start should be a timepos_t not a timecnt_t
It is an offset from an *implicit* origin (the source zero), not from an explicit origin,
and this fits with the concept underlying timepos_t. A timecnt_t requires an explicit origin,
which makes no sense in this context (just as it doesn't for the timeline as a whole).
2021-08-13 12:51:34 -06:00
Paul Davis
485b74e0b9 rename EditorSummary::Position as Editor::SummaryPosition 2021-08-13 12:51:34 -06:00
Paul Davis
e5d505365f rename ProcessorBox::Position as ProcessorBox::ProcessorPosition 2021-08-13 12:51:34 -06:00
Paul Davis
daad7b74ae libtemporal: rename TempoMap::full_duration_at() to ::convert_duration() and reorder parameters 2021-08-13 12:51:34 -06:00
Paul Davis
7773fc5b64 libtemporal: TempoMap::full_duration_at() returns correct value for unchanged time domain call 2021-08-13 12:51:34 -06:00
Paul Davis
b7bc3b1947 libtemporal: expand comment to explain more about what TempoMap::full_duration_at() does 2021-08-13 12:51:34 -06:00
Paul Davis
c0c3fd07c9 libtemporal: add timecnt_t::end() and timecnt_t::set_time_domain() 2021-08-13 12:51:34 -06:00