Commit graph

18277 commits

Author SHA1 Message Date
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
Paul Davis
4376185a6b temporal: fix TempoPoint::superclock_at (Beats)
a negative beat position needs to be legal, so the assert was moved and modified. The only check
for a negative value is that the TempoPoint being used is at absolute zero.

This check might turn out to be wrong in the future, but for now we still require a tempo and
meter point at absolute zero
2021-10-29 12:55:14 -06:00
Paul Davis
2b9b08aa22 triggerbox: sort-of-mostly get MIDITriggers to work
Repeated loops can eventually go wrong, as can arbitrary stops
2021-10-27 22:54:40 -06:00
Paul Davis
031f39d9d1 triggerbox: remove unused member vars from MIDITrigger 2021-10-27 22:52:58 -06:00
Paul Davis
282707ee32 add ::shift() to RTMidiBuffer to allow shifting time origin of events 2021-10-27 22:51:25 -06:00
Paul Davis
e1c874b299 manually reverse 948500bbc7 (final code is not identical to previous state) 2021-10-27 08:36:52 -06:00
Paul Davis
66fe6e937a triggerbox: vaguely working MIDI triggers 2021-10-26 17:34:06 -06:00