Commit graph

18931 commits

Author SHA1 Message Date
Paul Davis
a4459ebf9c avoid double-locates when locate-while-rolling
We know when we call non_realtime_stop() if we will be subsequently
locating. If so, do not do an additional non_realtime_locate() from
within the stop.
2022-03-17 17:43:43 -06:00
Paul Davis
8ebd097df9 move #includes so that they are only used if needed 2022-03-17 17:43:43 -06:00
Robin Gareus
176c41a485
Fix region-gain when region-start is trimmed
Region-gain (unlike other automation) is specific to the
region and independent of the source. Region::start() offset
does not apply. When region-start is trimmed the region's
envelope is modified (not just offset). The event-list is truncated.

Any audio-region envelope does (and must) have a point exactly
at the start and end of the region.

truncate_start() can thus calculate the earliest position of
valid events with the new length relative to the last event.

The mathematical operator for that is subtraction, not distance.
2022-03-17 23:46:55 +01:00
CalebJPotter
e64fdcfb55 fixes issue where monitor section gets stuck on mute
This mute button wasn't meant to mute the monitor section in the first
place.
2022-03-17 15:37:07 -06:00
Caleb Potter
643342995d fixes issue where MCP controller strips got stranded switching banks
This commit fixes an issue where if your controller was currently on a
bank not near the first few tracks, and you then deleted tracks, the
controller bank buttons would appear unresponsive because of the
"if (initial >= sorted.size())" check in switch_banks().
This would occur when the difference between the _initial_bank and
whatever sorted.size() returns was greater than or equal to strip_cnt.
For example, if your _initial_bank was 48, your strip_cnt was 24 and you
had 24 tracks after the deletion, then the above conditional would evaluate
to true and exit out of switch_banks BEFORE actually switching the bank,
effectively stranding the controller unless you added enough tracks back.
2022-03-17 15:37:07 -06:00
Caleb Potter
e89d85f776 remaps button handlers specific to iCon QCon ProG2
If the QCon ProG2 is selected as the device profile, then the button map
will be built with handlers that map specific to the iCon QCon ProG2
controller.
2022-03-17 15:37:07 -06:00
Caleb Potter
ad4475fe7a adds iCon QCon ProG2 specific MCP button handlers
Adds function to clear solo and (with shift) mute all channels.Adds
function to save and (with shift) save as. Adds function to toggle all
processors on selected track. Adds functions to select track to the
left/right. Adds function to add marker and (with shift) remove marker at
playhead. Adds function to undo without needing shift modifier.
2022-03-17 15:37:07 -06:00
Caleb Potter
b846356f87 adds MCP button to toggle between master fader and monitor fader
Adds an MCP button function to switch the master fader on the controller
between the session master fader and (if enabled) monitor fader.
2022-03-17 15:37:07 -06:00
Caleb Potter
b6a1144472 adds a few general purpose MCP button functions
Adds a function to go to the next and previous marker. Adds a function to
redo (without requiring a shift modifier). Adds a function to open a
project.
2022-03-17 15:37:07 -06:00
Caleb Potter
381276e862 adds support for iCon QCon ProG2 controller
This commit does no remapping, but it adds the Pro G2 as a value in the
device profiles.
2022-03-17 15:37:07 -06:00
Caleb Potter
d1f4679abc adds support for iCon Platform M+ controller
Adds a device profile for iCon Platform M+ controller and new function
that flips between editor and mixer window. This function is mapped to
"mixer" button on controller.
2022-03-17 15:37:07 -06:00
Caleb Potter
fc961f1622 adds support for MCP device-specific button to function remapping
Adding this function so that different devices can remap their buttons
to functions based on device profile.
2022-03-17 15:37:07 -06:00
Len Ovens
7633005a22 Fix solo control activation 2022-03-17 13:51:30 -07:00
Paul Davis
a803dd0df8 superclock_ticks_per_second: use an (inline) accessor, change value
We do not want a value as large as the previous one, which limits the time
range that can be represented in 62 bits unnecessarily. The new value is
9 times smaller than the previous value, and loses only 384000 as a significant
factor.

This commit also switches to using an (inline) accessor for superclock_ticks_per_second,
making it possible in debug/testing phases to spot early/illegal uses of the value.
2022-03-17 14:15:59 -06:00
Paul Davis
e72cff4ab1 triggerbox: reset all trigger states when locating/stopping
We also exclude anything from happening during TriggerBox::run() while locating/stopping
is taking place.
2022-03-17 12:20:34 -06:00
Paul Davis
2b630c4887 triggerbox: add TriggerBox::dump() to check trigger states 2022-03-17 12:20:34 -06:00
Paul Davis
1af0e7cc4f triggerbox: provide ::shutdown_from_fwd() method
This does the internal shutdown of a Trigger that is shared between
a normal shutdown and when stopping for a locate/stop. There's no
output to buffers possible.

This method/design may need to change if/when we add declicking for
various conditions
2022-03-17 12:20:34 -06:00
Paul Davis
1cc8a3f92c extend Session API to provide ::transport_locating() 2022-03-17 12:20:34 -06:00
Ben Loftis
13da06feb9 triggerbox: remove debug messages 2022-03-16 11:21:29 -05:00
Robin Gareus
e603b2e12d
Remove debug messages (1/2) 2022-03-16 17:08:14 +01:00
Ben Loftis
2572a24172 auditioner: fix thinko in midi file length 2022-03-15 17:57:15 -05:00
Robin Gareus
3ae73eb242
Extend Session::Exported signal
Include timespan start position. This will allow to re-import
the file at the export-position.
2022-03-15 22:52:58 +01:00
Ben Loftis
d9773e5788 triggerbox: add PropertyChange::all_trigger_props() 2022-03-15 09:03:40 -05:00
Ben Loftis
0bfa7e1b30 triggerbox: implement allow_patch_changes 2022-03-15 09:03:40 -05:00
Ben Loftis
20dad3f520 ripple: Lua bindings for ripple enums (no funcs to use them yet) 2022-03-14 21:35:35 -05:00
Ben Loftis
4cbdb30d56 ripple: tweak behavior of Locations::ripple
* ignore session, punch and loop ranges
* support positive and negative ripple distances
* move either or both (start+end) of a range marker
2022-03-14 19:26:41 -05:00
Ben Loftis
ba9bbf81ba ripple: create RippleMode and associated enums
* RippleAll is no longer an EditMode
* RippleSelected, RippleAll and RippleInterview are now subtypes of Ripple
2022-03-14 19:26:41 -05:00
Paul Davis
54367e5aef playlist: use C++11 style iterators wherever possible 2022-03-14 14:52:46 -06:00
Paul Davis
a336e87df8 when loading a session, catch up on tb_with_filled_slots correctly 2022-03-14 14:10:29 -06:00
Paul Davis
2ea75e88a2 sync cue markers when tempo map changes
This generates the _cue_events list, which is timestamped in samples, from all
current locations that are cue markers
2022-03-14 14:03:07 -06:00
Paul Davis
22b50c1716 ensure that Session handles tempo map changes synchronously in the main RT process thread 2022-03-14 14:03:07 -06:00
Paul Davis
10dc09fcd4 temporal: extend TempoMap thread local ptr API a little
This allows checking to see if the map has changed compared with the thread's
current local pointer.
2022-03-14 14:03:07 -06:00
Paul Davis
da95a0a0ee replace sample rate callback used for superclock<=>sample conversion
Now using a globally-scoped static variable which is updated by the
AudioEngine whenever an SR change occurs. Defaults to 48kHz and can
be used even before there is a backend.
2022-03-14 14:03:07 -06:00
Paul Davis
a4fd4cdaf0 triggerbox: enhance utility of a fatal message 2022-03-14 14:03:07 -06:00
Paul Davis
00d8b08300 triggerbox: track empty slot status and ignore stop-at-session-end when appropriate 2022-03-14 14:03:07 -06:00
Ben Loftis
a435d4d18e Auditioner: round-up midi region length to seconds, at least 2 seconds long 2022-03-13 19:42:00 -05:00
Ben Loftis
7321248916 triggerbox: do not try to set the {segment} tempo if there is no region
* divide-by-zero was resulting in NaNs in the snapshot file
2022-03-13 19:42:00 -05:00
Robin Gareus
6c0d3651cf
Cont'd work on track bounce/export alignment
Due to recent changes, when the master bus is disconnected its
private port latency was never unset. This lead to misalignment
when using stem-export if master (or monitor) output was not
connected.
2022-03-13 18:28:00 +01:00
Paul Davis
d505ae3372 triggerbox: record stop-all-cues "cue" when appropriate 2022-03-13 10:22:20 -06:00
Robin Gareus
d5ee0342a2
Cont'd work on track->track bounce alignment
see also e58c312420
2022-03-11 21:53:22 +01:00
Robin Gareus
abbf1ca698
Allow to get exit status from child processes 2022-03-11 18:18:06 +01:00
Robin Gareus
d48b9af810
Remove Video Export Infobox preference (2/2) 2022-03-11 04:55:46 +01:00
Robin Gareus
020051772e
Extend Session::Exported signal
Indicate if exported file should-be re-imported.
2022-03-11 04:55:24 +01:00
Robin Gareus
0937c7cabe
Work-around emit Session::Exported signal for all exported files
This will eventually have to be fixed, currently split-channel
files are not correctly tagged and post process commands
are only emitted for the last file.

But fixing this is complicated, so meanwhile a workaround is used.
Eventually this commit should be [mostly] reverted!
2022-03-11 04:55:24 +01:00
Robin Gareus
3d1c6d3796
Add export format option to re-import exported file(s) 2022-03-11 04:55:24 +01:00
Robin Gareus
e58c312420
Fix track->track bounce alignment
When a track's output is not connected, we assume
its output playback latency matches that of the master-bus.

This is to prevent the track's output latency to float
freely (see also a556e96ed0).

This failed if a track is connected to another track which is
not connected.
2022-03-11 04:55:24 +01:00
Robin Gareus
9e75235912
Fix crashes on ARM due to window-size overflow
On Intel systems ArdourCanvas::COORD_MAX (1.7e+307) was rounded
to (gint) -2147483648. gtk+ treats negative window size-requests
as 1px.

However on ARM, COORD_MAX was truncated to +2147483648, gtk+ limits
this to 65535. Most WM/Xwin systems cannot handle windows this large.
It also exceeds the max size of cairo [image] surfaces.

This issue was introduced in a1c67b4ad7
when "natural_size" was removed. Before that change infinitely large
canvas had a natural_size of 2x2 px.
2022-03-09 21:14:53 +01:00
Robin Gareus
4965c83ef3
Do not allow to remove the triggerbox processor 2022-03-07 23:32:02 +01:00
Robin Gareus
fbce2d73a8
Retain sidechain ports into unknown processors
This fixes an issue when loading sessions in "safe mode".
Internal side-chain sends are removed if the target port
does not exist. Also other port connections are lost if the
target port does not exist.
2022-03-06 17:13:56 +01:00
Robin Gareus
e51e2c57c6
NO-OP: remove dead code 2022-03-06 17:13:35 +01:00