Commit Graph

34815 Commits

Author SHA1 Message Date
Ben Loftis 26e79edaa3 trigger_ui: implement per-slot UI for allow_patch_changes
* TODO: provide an action to enable/disable for ALL the slots in a TB
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 f7d17c6aca mini_timeline: round to bars and show slightly less digits 2022-03-15 09:03:40 -05:00
Todd Naugle 4e55c77d23 Speed up code signing during osx builds
Use xargs to parallelize calls to codesign for much faster results.
The thread count should really be turned into an env variable
or auto detected.
2022-03-14 23:02:33 -05:00
Ben Loftis 77233f1ff9 Lock mode: region-drags should not be totally prevented in Lock mode:
* the user can override with a modifier; this is checked later
* the user may drag a region up&down across tracks, just not < >
2022-03-14 22:05:52 -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 f0372e0b17 ripple (gui part) ripple_marks should work without a plist (Range cut) 2022-03-14 21:35:35 -05:00
Ben Loftis f8f53a4cae ripple (gui part) changes to Range + RippleAll behavior on markers
Range->Delete is the most common type of ripple-editing imho
... so we need to implement ripple_marks for that common action

* markers inside a deleted range should be removed
* range markers (start+end) need special handling
* remaining markers to the right can be rippled by libardour
* implement undo
2022-03-14 21:35:35 -05:00
Ben Loftis b0276fd524 ripple (gui part): when Ripple is selected, RippleMode widget appears 2022-03-14 21:35:30 -05:00
Ben Loftis 01ef5a5b24 ripple (gui part): should_ripple_all() encapsulates modes Ripple+RippleAll 2022-03-14 19:26:41 -05:00
Ben Loftis 3a6210696d ripple (gui part): remove config-option for Interview mode 2022-03-14 19:26:41 -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
Ben Loftis 2eb286eb76 make range+region Bounce dialogs more consistent
* cleaner table layout
* explicit options for bouncing to Trigger and Clip List
* any bounce is added to Source list, so remove that from menu
* format context menus to match "(with processing)"
* use same code structure where possible
2022-03-13 19:42:00 -05:00
Ben Loftis f4940e81ad play_cues button: use transport-button for LED color, not rec-button 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
Todd Naugle f60c078805 Fix Windows installer welcome page for Mixbus products. 2022-03-11 12:12:12 -06: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 c593ac75a5
Remove Video Export Infobox (1/2) 2022-03-11 04:55:46 +01:00
Robin Gareus 9c087492c7
GUI implementation to re-import exported file(s) 2022-03-11 04:55:24 +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 d35f33e757
Fix Wreorder 2022-03-11 04:55:21 +01:00
Paul Davis 320a20cbab tempo display: during ressaociate markers, update tempo curves as well 2022-03-10 08:27:24 -07: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 4048bcc6b6
Fix crash when freezing track
The freeze threads needs a thread-local tempo-map to call
Route::bounce_process which runs processors.
2022-03-09 17:47:36 +01:00
Robin Gareus 9cac17ea7d
Speed up silence-stripping when there are many silent chunks
Previously every region fragment was added one at a time,
with each emitting signals and updating the GUI. If there are a
few thousand regions Ardour can freeze for a significant amount
of time.

There is still the issue that the GUI freezes after the progress-bar
reached the end: consolidate overlapping ranges after analysis, then
add regions.

And Playlist::flush_notifications still emits
RegionFactory::CheckNewRegion() for every region individually
and RegionListBase::add_region becomes the bottleneck.

But at least adding 7k regions now returns in under 5 minutes
instead of taking over an hour.
2022-03-08 16:31:47 +01:00
Robin Gareus 4965c83ef3
Do not allow to remove the triggerbox processor 2022-03-07 23:32:02 +01:00
Robin Gareus c29471373b
Expose show-grid-rulers ui preference 2022-03-07 05:55:29 +01:00
Robin Gareus 2cffca4c40
Restore rulers as saved with the session
This fixes an issue with the videotimeline not being shown
when reloading a session. Editor::set_state() restores the grid,
which in turn changes ruler visibility. This triggers
store_ruler_visibility() and the saved session state was lost.
2022-03-07 05:55:26 +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
Paul Davis 81531d5763 triggerbox: improve some commented debug output 2022-03-05 11:49:55 -07:00
Paul Davis 5525c8b667 triggerbox: fix crash when using audio sample esstimated to be less than 1 beat 2022-03-05 11:48:52 -07:00
Robin Gareus ecb1d33c02
Remove Region::position remnants (see cc6c0f1263) 2022-03-04 22:38:41 +01:00