d7fdec2ef5
remove another instance of std::numeric_limits<timepos_t>::max()
2021-12-05 09:22:02 -07:00
646d1e9a22
remove use of std::numeric_limits<time{pos,cnt}_t> from Playlist
...
::max() is time-domain dependent, and cannot be encapsulated via a single value.
2021-12-05 09:01:49 -07:00
d29d40c1ec
Fix stacked region view
...
Previously this looped endlessly in RegionView::update_coverage_frame()
if the return value was undefined (or wrong time-domain) and smaller
than pos.
2021-12-05 15:05:12 +01:00
eb0b3f253a
make Drag::grab_time() etc. follow the drag's _time_domain
2021-12-04 19:52:42 -07:00
796785b42f
in Drags, use Drag::pixel_to_time() rather than Editor::pixel_to_sample()
...
This preserves the TimeDomain of the drag
2021-12-04 19:48:31 -07:00
845b5d81a9
add Drag::pixel_to_time() which reflects the Drag's _time_domain setting
2021-12-04 19:38:26 -07:00
fc155e76b4
give every Drag an explicit time domain
2021-12-04 18:44:57 -07:00
af0e6872b4
triggerbox: handle None trigger follow action
2021-12-04 13:33:32 -07:00
c1de82f833
triggerbox: fix return value from MidiTrigger::run() when there was an event
...
last_event_samples was being set to buffer/process()-relative samples, but
needed to be timeline-relative samples.
2021-12-04 13:25:33 -07:00
65c69b6818
triggerbox: resolve MIDI notes at end of buffer, not one beyond the end
2021-12-04 11:50:31 -07:00
b3f866b86e
triggerbox: more debug trace statements
2021-12-04 11:50:31 -07:00
4a13a1fa62
triggerbox: fix up what happens at the end of a MIDI trigger
2021-12-04 11:50:31 -07:00
050b046e4d
triggerbox: stop immediately when stop_all() is used
2021-12-04 11:50:31 -07:00
0c7d578199
NOOP: comments to document Trigger state enum and some methods
2021-12-04 11:50:31 -07:00
2d817ffb57
add LaTeX original of tempo doc
2021-12-04 11:50:31 -07:00
0b056c6364
Redraw MIDI monitor only as needed
...
This reduces CPU overhead and constant stream of cross thread
signals at session's block-size.
2021-12-04 19:19:51 +01:00
Houston4444
36a2fb1ba8
JACK: re-create backend when re-connecting to the server
...
This updates the client-name when re-connecting to the
server, which is apparently useful with NSM.
2021-12-04 14:39:22 +01:00
Houston4444
692aa7bbb8
Add NSM ':switch:' capability
...
This allows to switch from one Ardour session to another without
application restart.
This also include some minor related NSM fixes.
2021-12-04 14:34:44 +01:00
John Emmas
6eb1559f79
Use std::vector<Sample*> rather than a simple array
...
(for a simple stack-based array, MSVC requires that the size should be known at compile time)
2021-12-03 14:31:45 +00:00
948fc37b47
Remove '\0' from source file
2021-12-03 13:53:08 +01:00
cc34eac4a5
Fix new_midi_track Lua binding
...
see also e9401a945f
and 1c0593201c
2021-12-03 13:34:42 +01:00
1c0593201c
Allow Lua bindings up to 12 method arguments
2021-12-03 13:32:49 +01:00
3723b71620
TriggerStrip: replace gain-knob with slider
2021-12-03 02:25:52 +01:00
01c83ec122
TriggerStrip: add solo,mute,pan,gain controls and meter
2021-12-02 22:28:05 +01:00
2b6b7226b0
triggerbox: more substantial changes to the new (justifiable) design; audio triggers seem ok, MIDI triggers untested
2021-12-02 11:27:35 -07:00
59b012ddb0
Implement TriggerStrip and TriggerPage (WIP)
2021-12-01 23:10:08 +01:00
9ce604bc03
New Tabbable: Trigger-Page skeleton
2021-12-01 23:10:08 +01:00
229a8aea13
Add option to toggle TriggerBox PI
...
This does not show/hide the Triggerbox in the Mixer itself,
it only sets the presentation-info flag (to be used on the Trigger Page).
2021-12-01 23:10:07 +01:00
3b5dbf2252
Mark new Tracks with TB to present them
2021-12-01 23:10:07 +01:00
3a2566b4af
Add API to set TriggerTrack flag
...
This is intended to decide if a track will be visible on the
Trigger-Tab/Page. It should be kept in sync with trigger-processor
enable.
2021-12-01 23:10:04 +01:00
7edbf06420
PluginInsert::silence() should never change the status of _active
2021-12-01 13:26:27 -07:00
ebc5195490
switch to a more efficient implementation of Processor::check_active()
2021-12-01 13:26:27 -07:00
786388b5b6
Fix connections when re-starting engine
...
The connection was stored by the Port where it was initiated from:
1. Connect A to B
2. Disconnect B from A
(1) Port A remembers the connection to B
(2) Port B does not know about the connection from A
Since disconnect is initiated on port B, port A still retained
the connection information.
When restarting the engine, Port::reconnect() reestablished the
connection.
This is only relevant when libardour's own connection information is
used. e.g. the session is closed without engine, or when re-starting
the engine while the session is open.
2021-11-30 19:41:39 +01:00
a393f75694
Use shared port engine MIDI event compare operator
2021-11-30 19:41:39 +01:00
dbd8089fb8
Sort concurrent MIDI events on port-level #8828
...
See also 8dbbc19567
as well as
Evoral::Sequence<Time>::const_iterator::choose_next
ARDOUR::MidiBuffer::second_simultaneous_midi_byte_is_first
2021-11-30 19:41:39 +01:00
e56085b581
triggerbox; quick pass at fixing up MIDI triggers to work with the new scheme (untested)
...
This also removes the call to the now-removed ::peek_next_trigger()
2021-11-30 07:57:34 -07:00
8fa62eac7a
triggerbox: significant redesign of trigger mechanisms
...
Changes include workarounds for weird Rubberband API (pad, drop, truncate requirements),
and a shift to push logic after a slot is finished back up into the TriggerBox.
Not finished yet, some easily encountered bugs remain
2021-11-29 21:50:29 -07:00
f584335f28
follow Beats API change in MidiRegionView::paste_internal()
2021-11-29 21:50:29 -07:00
940d8844e3
temporal: fix implementation of Beats::snap_to(), and add variants
...
::snap_to() was intended to round a Beats value to the nearest multiple
of another Beats value. It did not do that, but instead rounded down.
Worse, it used Beats::operator/ which in turn uses int_div_round(),
which is incorrect for a situation where we need integer truncation.
The changes fix the actual arithmetic and add 2 variant functions so that the
API includes round down, round up and round to nearest.
2021-11-29 21:50:29 -07:00
83c7ac4f38
libardour: use Processor::check_active() in all Processors instead of per-processor code
...
There are a few exceptions where the semantics make this too complex to be worth forcing check_active()
2021-11-29 21:50:29 -07:00
59ac52f113
libardour: provide Processor::check_active() as a standard way to handle Processor::_{pending_,}active
2021-11-29 21:50:29 -07:00
797bc1a162
Correct namespace of constants in some Lua scripts
2021-11-28 21:10:32 +01:00
d3fe3ab866
Fix Lua namespace -- correctly close Tempo.Type
2021-11-28 21:10:29 +01:00
60e522f4ee
MIDI Program Changes: Fix some thinkos in patch-change flag locations
...
Program Changes are stored as an offset from the 'source' start, and must be translated to/from region time.
Better locating of patches wrt the grid:
You can't assume time_to_pixel is steady across the timeline
* calculate position of the patch-change flag
* calculate region start position, and set flag's x offset from there
also: consolidate patch-location code into display_patch_changes()
2021-11-23 14:14:35 -06:00
c27bfde045
MIDI Program Changes: prevent patch-changes from moving after every edit by the dialog.
...
The clock widget shows absolute time but must be converted to+from source time
2021-11-23 14:14:35 -06:00
5212fc9677
MIDI Program Changes: dragging patches was resulting in the wrong location or disappearing altogether
...
a Program Change's position is referenced from the midi Source which might not be the same as the region start
2021-11-23 14:14:35 -06:00
878393e68b
temporal: fix construction of timepos_t and timecnt_t with max_sample{pos,cnt}
...
max_samplepos and max_samplecnt and both INT64_MAX which is (a) too large to fit into a signed 62 bit
integer and (b) definitely too large to be represented in a signed 62 bit superclock value.
Move the constructors that use samplepos_t into the .cc file, and treat these two values as special
cases that mean "as large/late/huge/long as possible".
2021-11-22 10:35:52 -07:00
d71b3100d8
temporal: handle negative positional values that somehow appear in older sessions
2021-11-22 10:28:13 -07:00
f112697be8
Spice up signal-test tool
2021-11-21 18:29:38 +01:00
beddcf1a01
Test cross thread invalidation-record
...
This also tests 2 receivers connected to the same signal
2021-11-21 04:12:27 +01:00