Commit graph

18433 commits

Author SHA1 Message Date
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
Paul Davis
016206e18a Remove all IO code that handled deferred connections
When loading a session, we now just set up port state, which will
populate the Port::_connections member, and then once all ports have
been created, use PortManager::reconnect_ports() to get everything connected.
2021-11-03 15:06:16 -06:00
Paul Davis
f3481df9d4 Add new static Session signal will be emitted after port reconnection on session load. 2021-11-03 15:03:40 -06:00
Robin Gareus
79330f909e
Work around connection loss when re-starting JACK backend
If connecting ports using the port-engine fails,
ardour forgets the connection.

Internal backends only produced an error if a port was already
connected, when using ::connect (handle, other), but
ignore already existing connection when using port-names.

Various ports are connected twice when the engine connects
at session load. This worked fine for as long as the engine
was never stopped (saving the session asks the port-engine),
but failed when the engine went away and internal representation
is used.
2021-11-01 23:11:41 +01:00
Robin Gareus
6b348d8183
Reconnecting unconnected ports always succeeds
PortManager::reconnect_ports emit a signal
PortConnectedOrDisconnected when Port::reconnect fails. This is
not needed in case of unconnected ports.
2021-11-01 22:57:18 +01:00
Paul Davis
42d0873a59 triggerbox: respond to active (triggered) scene 2021-11-01 12:11:57 -06:00
Paul Davis
07a98734f3 triggerbox: tentatively add static calls to check for scene triggers inside Session process() 2021-11-01 12:11:57 -06:00
Paul Davis
b65f18a56e triggerbox: basics of scene triggering 2021-11-01 12:11:57 -06:00
Robin Gareus
437840dced
NO-OP: whitespace, clang-format 2021-10-31 18:17:01 +01:00
Robin Gareus
07d7e0bf54
Fix JACK-MIDI monitoring when hotplugging devices
During initial setup, PortManager::reestablish_ports(),
the jack client is not yet active and port_connect failed:
"Cannot connect ports owned by inactive clients".

Later hotplugged devices were likewise not connected because
"JACK: Cannot callback the server in notification thread!"

see also 2007bf2d5f
2021-10-31 18:10:28 +01:00
Robin Gareus
84b75f6627
Retain MIDI monitor connection -- #8816
A physical input port must remain connected to ardour's
physical_midi_input_monitor_enable port, otherwise reading
its input can cause crashes.

Previously a MIDI input port was disconnected from all other
targets when "MIDI input follows selection" was enabled.
2021-10-31 16:37:37 +01:00
Robin Gareus
89fc526574
Add API to check for special ports by name 2021-10-31 16:33:03 +01:00
Bruno Vernay
e3836e1162 Typo in code Paramater 2021-10-30 23:02:04 +02:00
Bruno Vernay
2000d306c6
Typo in comments ParamaterDescriptor
ParamaterDescriptor -> ParameterDescriptor
2021-10-30 18:38:14 +02:00
Paul Davis
1e8b7cc563 triggerbox: mo' better MIDI triggers 2021-10-29 16:22:55 -06:00
Paul Davis
0634dcfbc4 remove some unused code (left over from before RippleAll) 2021-10-29 16:22:30 -06:00
Paul Davis
66b812cc2f remove some unused local variables 2021-10-29 16:22:06 -06:00