13
0
Commit Graph

28984 Commits

Author SHA1 Message Date
Nikolaus Gullotta
a655997749
Add more options to Mixer Reset script
Added the ability to unassign all slavables from their VCAs, and to
reset record enable controls
2020-02-03 15:38:37 -06:00
788d77fe5c
Initialize uninitialized variable (Session StateProtector) 2020-02-03 17:29:48 +01:00
Nikolaus Gullotta
70f72800c1
Fix plugin removal in Reset Mixer script
Removing processors while iterating over the route invalidates the
loop. Instead, queue the plugins for later handling
2020-01-31 09:16:57 -06:00
cb09a0884b
Clarify stop-at-marker transport position logic 2020-01-31 02:11:41 +01:00
e03136646d
Fix "stop at marker" script for A6 2020-01-31 01:49:56 +01:00
d14d396967
Lua bindings for locations and locate disposition 2020-01-31 01:45:07 +01:00
44e55c501e
Add some const'ness 2020-01-30 23:35:37 +01:00
d887f5965a
Fix assert() when removing track(s)
ARDOUR::Session::remove_routes() explicitly calls
save_state (_current_snapshot_name)

Update assert() to treat an empty name
equivalently as explicitly specified _current_snapshot_name
2020-01-30 21:08:02 +01:00
Nikolaus Gullotta
d4f816c158
NOP: Convert spaces to tabs a-la style-guide
I forgot to include this in 454a2d0
2020-01-30 13:48:21 -06:00
Nikolaus Gullotta
454a2d0cce NOP: Convert back to using tabs instead of spaces
See Ardour style guide rule #27 for reasoning
2020-01-30 13:43:40 -06:00
cfea85b496
Use session-version when loading processor state
Stateful::loading_state_version vs.
Stateful::current_state_version

See also 0a5837ec71
2020-01-30 18:52:32 +01:00
d72b44b5a4
Fix scripted/meta session templates 2020-01-30 18:09:01 +01:00
Nikolaus Gullotta
e468b291cd NOP: Convert tabs to spaces, trim whitespace 2020-01-30 09:10:11 -06:00
Nikolaus Gullotta
327cd513d3 Update mixer Store/Recall to work with new published bus controls 2020-01-30 09:10:11 -06:00
6069c870f8
Fix recursive locks during undo/redo due to state save
undo may restore locations, which may trigger a state-save.
This can result in a deadlock:

Location::set_state () -> Locations::get_state()
both acquire a the same lock:

#2  0x000055a8421836d0 in Glib::Threads::Mutex::Lock::Lock(Glib::Threads::Mutex&) (this=0x7ffe38dcad40, mutex=...) at /usr/include/glibmm-2.4/glibmm/threads.h:687
#3  0x00007fc637731e9c in ARDOUR::Locations::get_state() (this=0x55a8466d4740) at ../libs/ardour/location.cc:1075
#4  0x00007fc637bf14b7 in ARDOUR::Session::state(bool, ARDOUR::Session::snapshot_t, bool)
   (this=0x55a846d0f050, save_template=false, snapshot_type=ARDOUR::Session::NormalSave, only_used_assets=false) at ../libs/ardour/session_state.cc:1406
#5  0x00007fc637bed2c8 in ARDOUR::Session::save_state(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, bool, bool, bool, bool)
   (this=0x55a846d0f050, snapshot_name="", pending=true, switch_to_snapshot=false, template_only=false, for_archive=false, only_used_assets=false) at ../libs/ardour/session_state.cc:815
#6  0x00007fc637b4d967 in ARDOUR::Session::auto_punch_start_changed(ARDOUR::Location*) (this=0x55a846d0f050, location=0x55a848fe11d0) at ../libs/ardour/session.cc:1395
#7  0x00007fc637b4da21 in ARDOUR::Session::auto_punch_end_changed(ARDOUR::Location*)
   (this=0x7fc637b4da21 <ARDOUR::Session::auto_punch_end_changed(ARDOUR::Location*)+67>, location=0x7ffe38dcbf10) at ../libs/ardour/session.cc:1403
[..]
#14 0x00007fc637730a2a in ARDOUR::Location::set_state(XMLNode const&, int) (this=0x55a848fe11d0, node=..., version=6000) at ../libs/ardour/location.cc:715
#15 0x00007fc637732428 in ARDOUR::Locations::set_state(XMLNode const&, int) (this=0x55a8466d4740, node=..., version=6000) at ../libs/ardour/location.cc:1130
#16 0x000055a842388dd7 in MementoCommand<ARDOUR::Locations>::undo() (this=0x55a84d1e5f10) at ../libs/pbd/pbd/memento_command.h:141
#17 0x00007fc635b50707 in UndoTransaction::undo() (this=0x55a84d513b80) at ../libs/pbd/undo.cc:128
#18 0x00007fc635b50e1c in UndoHistory::undo(unsigned int) (this=0x55a846d11338, n=0) at ../libs/pbd/undo.cc:267
#19 0x00007fc637c0dfff in ARDOUR::Session::undo(unsigned int) (this=0x55a846d0f050, n=1) at ../libs/ardour/session_state.cc:5577
2020-01-30 04:16:19 +01:00
0d127813fb
Allow StateProtector to save pending files
This is in preparation for saving state while the session is
record-arm'ed. Most notably config changes and undo/redo.

In case both normal and pending save happens, pending must be
last and is required to recover from crashes during recording.
2020-01-30 04:12:19 +01:00
998fadda57
Add some sanity checks for Session::save parameters 2020-01-30 04:09:48 +01:00
6452f62d64
Cont'd work on loading old route templates
This builds on top of 51d2bb:
 * v6 routes templates/states have a version per <Route>
 * older route-states are assumed to be from ardour-5
   Stateful::loading_state_version 3002,
   unless specified otherwise
2020-01-30 01:08:57 +01:00
51d2bb36ce
Save/Use state-version with route templates
Currently using Ardour-5 route templates (state version "3002")
with Ardour6 fails. As opposed to session-templates, Route
templates were not versioned.

This ensures future compatibility (and may allow to interpret
unversioned templates as "3002")
2020-01-29 23:20:37 +01:00
Andreas Müller
015d4d3642
Find fmt-binding in out-of-tree building
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
2020-01-29 19:41:12 +01:00
Nikolaus Gullotta
39dac5b20f Fix tests failing to build by adding LIB_FFTW3F 2020-01-29 10:12:04 -06:00
2731d494c2
Reduce overhead of Lua session-scripts 2020-01-29 16:51:14 +01:00
0ab46c342f
Fix MIDI loop capture alignment
Loop recording creates a single long source, regions have to be
"split" from this source, using "start" as offset.

Since MIDI uses absolute timestamps, offsetting this by accumulating
 buffer_position += (*ci)->samples;
like Track::use_captured_audio_sources() does, is not correct.

Furthermore, record_enabled() may be off when stopping recording,
MIDI needs to be flushed regardless.
2020-01-29 16:25:33 +01:00
ffe7fcd3b0
Allow to dis/engage rec-arm while looping 2020-01-29 05:35:36 +01:00
6bc4f69c5c
Fix loop recording alignment
DiskWriter::transport_looped() is called from the session
when engine loops. This does not take local disk-reader run()
latency offset into account.

finish_capture() needs to be postponed until the disk-writer
itself reaches the loop-position. This is achieved by
postponing loop() and calling it once loop-length of samples
has been captured.

This works because engaging loop always seeks to the loop-position
and first loop resets _capture_captured.
2020-01-29 01:32:06 +01:00
eb7297e2fc
Remove duplicate separators from context menu 2020-01-28 23:38:02 +01:00
b21bab3a8c
Don't allow to deactivate master 2020-01-28 23:37:10 +01:00
6dfee0b1d2
Amend 87af9fb (fix context menu, don't allow to remove master) 2020-01-28 23:17:21 +01:00
a430f65aa3
Initialize monitor-section output button
When loading a session the monitor-connection is made before
the GUI is initialized, the output button did not reflect
the actual connection.
2020-01-28 22:58:14 +01:00
87af9fb820
Consolidate Mixer-strip sensitivity
* Use a single method to set mixer-strip widget sensitivity
* Update context-menu to only allow show actions that can
  currently be performed, depending on active/inactive state.
* Mark all control elements of in-active strips as insenstive
  except those required to re-enable the route.
* Also update processor-box and solo-button when showing Aux

Special case Mixbus. Mixbus already shows a "Insensitive" label,
and Mixbus-channelstrip element sensitivity remains to be
implemented before using this mechanism.
2020-01-28 22:22:57 +01:00
cb01a910d7
Micro optimization: query PI flags once
This also removes a Mixbus special case, explicit ->mixbus() tests
are no longer required.
2020-01-28 21:27:43 +01:00
6b0a3cfffe fix previous commit, and another instance of the same (incorrect constructor) issue 2020-01-28 13:04:39 -07:00
a5dbac0a9c fix assert-crash caused by not constructing a StopTransport event correctly 2020-01-28 12:54:04 -07:00
b2051d98fd
Clarify pending-state message
Previously this dialog was mainly used for crashes during
recording. Now it is also used for backup saves in general.
2020-01-28 17:29:36 +01:00
e6ce5a611c shortest note length after a drag-trim is 1 tick, not 1/512 beats 2020-01-28 00:06:12 -07:00
fd62b38f8d correct computation of new note length after a front-drag-trim 2020-01-28 00:05:44 -07:00
10978a2f58 rearrange MIDI preferences "tab" to include ports and remove Buffering 2020-01-28 00:05:05 -07:00
5d99526406 correct location of resolved note-offs after region is rendered 2020-01-27 22:17:07 -07:00
4148d2cee4 fix bad re-ordering in ARDOUR_UI::set_session() that changed when transport-related actions are set sensitive (compared to v5)
This specific change has broader scope than the bare minimum required - we could just move/replicate transport_ctrl.set_session()
after session_sensitive_actions have had their sensitivity set to true. But this "seems" like a more thorough solution,
in that it sets all relevant actions groups before doing anythng else.
2020-01-27 18:24:30 -07:00
7e899b4199
Restore engine state for auto-start 2020-01-27 22:27:29 +01:00
8e5e902b5c
Fix sending MMC Start/Stop messages
Ardour 5.x slave check was incorrectly ported to A6's TMM:
In Ardour 5 the comparison tested for *not* MTC:
```
  if (!dynamic_cast<MTC_Slave*>(_slave)) { ..send MMC.. }
```

Other MMC messages (Record, Locate) are sent unconditionally.
2020-01-27 21:49:53 +01:00
44440f9316
Add new requirements from AudioEngine::stop to ::drop_backend
This fixes an issue that after changing backends (::set_backend),
the session-transport was in inconsistent state. If it was rolling,
it continued to roll with "stop" being unavailable.
2020-01-27 20:26:06 +01:00
5c789547cb
Fix building unit-tests 2020-01-27 17:43:37 +01:00
f101a657f2
Fix two more clang static analysis warnings 2020-01-27 17:42:28 +01:00
f9cc630b10
Delete out-of-bounds metronome clicks 2020-01-27 03:35:28 +01:00
6aac8b2c8a
Fix another clang-scan warning 2020-01-27 03:32:18 +01:00
fc7dd5115d
Fix some clang-scan warnings 2020-01-27 03:31:49 +01:00
cf4d7387d2
Use a sensible min length for default session-duration
If the user tries to set the Start or End marker on an empty session,
apply some sensible defaults for the resulting session range.
2020-01-26 19:36:23 +01:00
2d07e72d40
Fix the ability to set Session Start&End Range on a new, empty session
set_session_extents had a bug; it wasn't calling locations->add()
on the newly created location.

The correct implementation was in set_session_range_location,
but this was only called from one place.
This function was removed, and set_session_extents will be used in its place.
set_session_extents will create a session location if one no longer exists,
so there is no need for set_session_range_location.
2020-01-26 19:33:41 +01:00
db465b5b43
Fix Loop-length (no pre-roll on loop-iterations) 2020-01-26 05:15:24 +01:00