Paul Davis
a5ccb521e6
tempo map: NOOP helpful comment, perhaps
2021-11-17 12:16:39 -07:00
Paul Davis
73c87064a5
tempo map: NOOP correct comment text
2021-11-17 12:16:39 -07:00
Paul Davis
c7adea3ec0
tempo map: really no-op code change to provide another useless compiler const hint
2021-11-17 12:16:39 -07:00
Paul Davis
d9b1d2ccc8
temporal: NOOP add helpful comment about bar_mod argument
2021-11-17 12:16:39 -07:00
Paul Davis
b3451f4055
tempo map: fix computation of superclocks_per_note_type_at()
...
Code used position as an absolute, rather than offset from the point
that defines tempo. It worked if the point was at zero, but not
otherwise.
2021-11-17 12:16:39 -07:00
Paul Davis
a417cbae4b
tempo map: fix a potential bug (not seen in the wild) when generating the grid
...
the "p" variable could point to _points.end(), so we cannot indirect and use
p->sclock() value unconditionally.
2021-11-17 12:16:39 -07:00
Paul Davis
1ba2e28d6f
tempo map: fix grid generation with ramped tempos
...
The old code used the instantaneous tempo at T0 to compute where the next
quarter note would be. This is incorrect, since the tempo is
changing (continuously, for now) during the time represented by that quarter
note. Instead, we need to add a quarter note (or technically, whatever the
tempo note type is) to get a new position in beats, then compute the superclock
time at that location (which will use our equations for tempo, including the
use of omega, the ramp factor).
2021-11-17 12:16:39 -07:00
Paul Davis
8972ed1517
temporal: add Tempo::note_type_as_beats()
2021-11-17 12:16:39 -07:00
Paul Davis
7edcda4fc1
temporal: logic fixes for several tempo map modification methods
2021-11-17 12:16:39 -07:00
Paul Davis
d61fc1e871
triggerbox: add passthru property to control input passthrough (monitoring)
2021-11-17 12:16:39 -07:00
Paul Davis
1fb8779361
delete/cancel triggerbox worker thread at exit
2021-11-17 12:16:39 -07:00
Paul Davis
1532ebb38f
temporal: truncate ::to_string() method for timeline types to ::str() for easier use in debugger
2021-11-17 12:16:38 -07:00
Paul Davis
4fe1fec54e
when setting a default audio region envelope, coerce the endpoint to AudioTime
...
Comment in code explains more
2021-11-17 12:16:38 -07:00
Paul Davis
7a12458244
temporal: improve implementation of TempoMap::meter_at() and more templating
...
Needed to move template defns around to ensure that required instances are defined
2021-11-17 12:16:38 -07:00
Paul Davis
4128088b70
temporal: TempoMap::tempo_at() ... templates FTW
2021-11-17 12:16:38 -07:00
Paul Davis
fb2281129a
temporal: add clarifying comments to TempoMap::remove_*()
...
These comments should correct an impression left in the commit message for
6e9e28343bc3695d that there may be some sort of problem with synchronization
of TempoMap changes. The actual problem is that TempoMap edits are done using
RCU, so the modifications are performaned using a copy of the map, but with
map elements taken from the pre-copy version.
2021-11-17 12:16:38 -07:00
Paul Davis
b67965f499
temporal: add the entire _points list to output of TempoMap::dump()
2021-11-17 12:16:38 -07:00
Paul Davis
8a59f3fe8e
temporal: fix issue with removal of tempo, meter and bartime points
...
The correct algorithm is to traverse the type-specific list of points,
find the point (if any) whose time matches that of the argument (because
we do not allow multiple points of the same type at the same time), and
then use that discovered point from the _points list.
This approach is required because the actual argument may no longer be
in the tempo map (due to a change made by another thread). The lack of
sync, however, needs investigation.
2021-11-17 12:16:38 -07:00
Paul Davis
4d5cf43789
triggerbox: use correct API to track tempo
2021-11-17 12:16:38 -07:00
Paul Davis
5b5ca546e0
temporal: fix incorrect implementation of TempoMap::tempo_map()
...
std::lower_bound() is not appropriate here. We need to find the first
TempoPoint after the given time, then return the one before that.
2021-11-17 12:16:38 -07:00
Paul Davis
e7e44351cc
temporal: move implementation of quarters_per_minute_at() into .cc file
2021-11-17 12:16:38 -07:00
Paul Davis
a0e134e1b3
temporal: update comment on a method that suggest not using it; provide TempoMap::quarters_per_minute_at ()
2021-11-17 12:16:38 -07:00
Paul Davis
4f3bf37680
temporal: implement a faster method to lookup TempoPoint
...
There is no reason to build a TempoMetric if you only need the Tempo
2021-11-17 12:16:38 -07:00
Paul Davis
5105083394
triggerbox: first pass at using "realtime" rubberband rather than pre-stretch
2021-11-17 12:16:38 -07:00
Robin Gareus
e1b2a24221
Fix error message (include plugin ID)
2021-11-17 18:46:29 +01:00
Robin Gareus
83225886a1
Fix gcc4 builds ('EEXIST' was not declared in this scope)
2021-11-15 19:12:00 +01:00
Paul Davis
8c632c8446
temporal: allow negative timecnt_t to be used when constructing a timepos_t
...
Negative positions are legal and should be handled by higher level logic
2021-11-14 15:22:53 -07:00
Robin Gareus
d9b9f4f588
Waveform: work around empty peakfile edge-case
...
(gdb) p peak.max
$5 = -1
(gdb) p peak.min
$6 = 1
2021-11-14 23:11:19 +01:00
Robin Gareus
8e89325bee
Waveform: scope-like smooth waveform
...
* Draw antialised waveform if waveform is monotonic
* Fix center-line position (span at most height - 1),
* Remove invalid "side-lines" that were previously
drawn around spikes.
* Do not linearly center min/max when drawing log-scale
* Fix offset of lower outline and clip indicators
2021-11-14 22:28:55 +01:00
Robin Gareus
70a07eec48
Waveview: properly draw 1px outline
2021-11-14 22:28:55 +01:00
Ben Loftis
3f69e8e329
MIDI Import: implement missing SMFSource::update_length
...
Provides intended behavior: imported midi region length should be rounded to the nearest beat
ToDo: add options to round to Bar/Beat/None ?
2021-11-14 14:25:31 -06:00
Ben Loftis
58033262ae
MIDI Import: Support for separating the channels of a Type1 midifile track(s)
2021-11-13 16:23:15 -06:00
Ben Loftis
0733b2d9e2
SMF: Often files don't have Track+Instr names. Make something up to avoid file collisions.
2021-11-13 15:54:11 -06:00
Ben Loftis
35312dc85c
SMF: API change: report format (0,1 or2) and total channels used
2021-11-13 15:54:11 -06:00
Robin Gareus
4eeb5afa92
Fix false positive "missing AU Blacklist" message
...
See d6e4e0fb35 for an explanation
2021-11-12 23:34:07 +01:00
Paul Davis
91a28b78c4
modify and extend both Session and TriggerBox API to allow better transport control
...
This allows a stop transport request to first stop all active triggers and then stop the transport
2021-11-10 15:55:58 -07:00
Paul Davis
4b5fbeb455
remove unused variable
2021-11-10 11:55:32 -07:00
Paul Davis
c4b189336e
triggerbox: threaded ::set_region() implementation
2021-11-10 08:45:38 -07:00
Paul Davis
431b7c0d4e
triggerbox: more work on ringbuffer request queue for trigger thread
2021-11-09 22:36:51 -07:00
Paul Davis
38bf55a1fd
triggerbox: basic skeleton for an i/o and stretch thread
2021-11-09 21:47:15 -07:00
Paul Davis
7e80111d92
Canvas: Fix notification to parent of show/hide status
...
This was changed in fc9840f2a9 to hard code a "false" argument describing
whether or not the child bbox had changed. This causes the parent to not
recompute its own bounding box when a child is shown/hidden, which is
incorrect. We now force it to true, which may be overkill for some purposes,
but at worst will just force an unnecessary bbox re-computation and nothing
more.
2021-11-09 08:49:21 -07:00
Paul Davis
859d43855e
triggerbox: functional handling of MIDI region editing -> trigger re-render/reload
2021-11-04 14:00:16 -06:00
Paul Davis
0f0c5c7039
remove Kiwi constraint-based packing code from canvas library and users (library version)
2021-11-04 11:25:30 -06:00
Paul Davis
a9adc3c5c6
triggerbox: flesh out Request mechanism
...
Still no actually active requests
2021-11-04 11:16:22 -06:00
Paul Davis
b0176c21fb
triggerbox: skeleton for requests sent to a TriggerBox (to change state)
2021-11-04 09:50:34 -06:00
Paul Davis
241948635b
new session event type for triggering scene changes
2021-11-03 22:58:17 -06:00
Paul Davis
79baafde15
triggerbox: allow access to default number of triggers per box (and change type)
2021-11-03 18:44:18 -06:00
Paul Davis
62c80e1430
Add the definition of Session::AfterConnect
2021-11-03 15:18:59 -06:00
Paul Davis
62f9edfc07
Remove TransportMasterManager::reconnect_ports().
...
PortManager::reconnect_ports() covers all ports, and this method was only
used directly after a call to PortManager::reconnect_ports().
2021-11-03 15:15:54 -06:00
Paul Davis
4ea2fdd5bd
Fix internal (aux) send to call ::use_target() when Session::AfterConnect is emitted
2021-11-03 15:07:46 -06:00