13
0
Commit Graph

24696 Commits

Author SHA1 Message Date
8e6f71b8c1 Apply master-value to automation on disconnect. 2017-06-13 20:57:37 +02:00
c1912b6d51 Write inverse master automation.
* The UI and ctrl-surface controls use and display the combined value,
including control-masters.

 * The Automation lane of a control is the raw value of the control
without masters.

When touching (or writing) automation, the control-master needs to be
factored out (or subtracted). e.g press+hold a control -> write inverse
master automation.
2017-06-13 18:09:59 +02:00
b34d891b23 amend 11ba1854 -- locked curve-evaluation is not public 2017-06-13 18:09:56 +02:00
23554fd185 FP8: use proper API to detect automation-playback
The custom code didn't take touch + touching into account when
another surface was touching automation.
2017-06-13 18:09:53 +02:00
fdb3df7786 Fix another thinko in 9581cb26 + 02b087c5 (VCA gain automation)
This went unnoticed because: VCA gain automation was always applied
(regardless of automation state) but when it was not playing
master_ratio() factored it out again (per block).
2017-06-13 18:09:47 +02:00
b34f2e2c38 Fix nasty duplicate XML node 2017-06-13 01:08:30 +02:00
9cb8978c86 Remember subgroup-bus 2017-06-13 01:08:30 +02:00
293ab1ef53 Allow group gain sharing + VCA again 2017-06-13 01:08:30 +02:00
9441e8d484 OSC: select channel plugin support with paging. 2017-06-12 12:31:04 -07:00
1794d08789 Fix Monitor Group override 2017-06-12 20:47:44 +02:00
6cc18cef4f Fix relative grouped + VCA slaved gain 2017-06-12 17:20:41 +02:00
8faf07bd6c Consistent "cancel/close" button position on the left.
"Add and Close" is an odd one out and this button should really be
removed for consistency. Still it allows for a 2-click or
2-keyboard-shortcut very common action.
2017-06-12 17:20:41 +02:00
c69049a853 Fix a compiler warning (optimized builds) 2017-06-12 17:20:41 +02:00
140ce4daec Restore the state of the autoplay button in the import dialog 2017-06-13 00:08:26 +10:00
19384be74b Make Import the default action in the Import Dialog
Double clicking on a file or pressing the Return key will now import it.

This means with autoplay enabled you can navigate a directory of audio files
using the up and down arrow keys and import the wanted files (with Return)
without having to touch the mouse.

Being able to use double click to import a file means you don't have to move
the mouse back and forth between the file browser and the import button.

You can still manually audition the file with space as before.
2017-06-13 00:07:47 +10:00
79ccabdc93 Remove unnecessary temporary variables in MasterRecord::set_state
XMLNode::get_property only modifies the argument if the property is found and
conversion is successful.
2017-06-12 21:19:25 +10:00
333e20a3a6 VCA/SlavableAutomationCtrl re-design:
* remember master-ctrl value on assignment & save with session
* Control/AutomationCtrl only stores ctrl's own value (w/o master)
* virtual AutomationControl::get_value () -> use SlavableAC method
* MasterRecord uses weak-ptr (fixes recursive ~Controllable() deadlock)
2017-06-12 02:26:23 +02:00
3d2bbf93ef a-EQ: Tweak knob layout to be less confusing 2017-06-11 16:25:26 +10:00
02b087c552 Fix thinko in 9581cb26 - scratch-buffer can't be used recursively. 2017-06-11 02:16:35 +02:00
8b8f47430a OSC: add option to send /reply instead of #reply (OSC1.0 compat) 2017-06-10 09:43:46 -07:00
Johannes Mueller
05c77db773 Emit Session::Located only if _engine.transport_frame() is up to date
If _engine.transport_frame() is not up to date, we emit Located in
Session::backend_sync_callback() because that's when audible_frame() is up to
date. We don't want to emit it twice, because then, the playhead jumps back and
forth.

* mouse click in the ruler -> jump to requested location
* mouse release -> jump to old location (because audible_frame has to catch up)
* backend_sync_callback() called -> jump to new location
2017-06-10 18:30:42 +02:00
Johannes Mueller
2770444b0c Make Session::backend_sync_callback() emit Session::Located
If we sync to jackd AudioEngine::transport_frame() is not yet updated when
Session emits Located. Then the playhead ends up in an obsolete
position. Therefore we emit Session::Located() also from within
Session::backend_sync_callback() as that is called when AudioEngine is done
with the relocation.
2017-06-10 18:30:42 +02:00
ae837b49ed semantically more correct ordering of previous commit 2017-06-10 12:04:27 -04:00
0f20819c86 linker-agnostic version of recent commit to get ControlProtocol selection state set correctly 2017-06-10 11:53:37 -04:00
2bc2aea009 Implement slaved boolean automation and update mute special-case 2017-06-10 14:38:21 +02:00
50c5425004 Restore VCA Automation state 2017-06-10 14:38:21 +02:00
f0d3121d6c amend a1b4f9b8ab - handle disconnecting from all masters 2017-06-10 14:38:21 +02:00
d0307e10c9 set first selected stripable for control protocols before they are instantiated 2017-06-09 17:55:11 -04:00
18db6e3f50 NO-OP: whitespace 2017-06-09 23:25:42 +02:00
a1b4f9b8ab Fix deletion of VCA with slaved controls.
The crashed previously because:
 A VCA is-a Automatable is-a Evoral::ControlSet

 After VCA's d'tor completes ~Automatable runs and emits signal to
 DropReferences of all master-controls.

 This in turn calls SlavableAutomationControl::master_going_away()
 for slaved parameters for the given master-control

 In ::master_going_away() the weak-pointer reference to the master's
 AutomationControl (owned by the destroyed VCA) is still valid.

 Execution is in the d'tor of Automatable which is-a ControlSet and
 the ContolSet keeps a reference to the Control and hence also to the
 AutomationControl which is-a Evoral::Control.

 So master_going_away() locks a boost::shared_ptr<ARDOUR::AutomationControl>
 which is actually the MuteControl owned by the VCA.
 It calls SlavableAutomationControl::remove_master() which
 in turn calls MuteControl::pre_remove_master() which uses the
 MuteMaster API to retrieve the value. The MuteMaster however is the
 VCA that has just been destroyed.


The solution is twofold:
 1) emit "drop_references" from the VCA d'tor itself,
    before the VCA is destroyed.

 2) disconnect a slaved control from the master's drop_references signal
    when un-assigning a master-control.
2017-06-09 23:25:42 +02:00
nick_m
8502aa18c5 NoteCreateDrag - Fix incorrect note length due to use of region-relative position 2017-06-10 03:49:01 +10:00
48ea6beaad Remove Automatable::value_as_string API from libardour
Keep Pannable::value_as_string() for now. That is another inconsistency
which needs cleaning up. GUI StereoPanner and MonoPanner print
the value as they see fit, the panner-plugin provided formatting
is not used.
2017-06-09 16:54:21 +02:00
99b064274f Update GUI, drop Automatable::value_as_string() API 2017-06-09 16:54:21 +02:00
17fb5bfb49 Prepare to eventually drop Automatable::value_as_string()
Probably due to historical reasons, there are two APIs to format a
control's value. In all both variants end up calling either
ARDOUR::value_as_string() or the Controllable's formatting function
(except for panners).
2017-06-09 16:54:21 +02:00
b0f68a0f5c Prepare AutomationTimeAxisView for non-route (VCA) automation 2017-06-09 16:54:21 +02:00
d08b81d33d a-EQ: Revert one of the previous changes
One of the previous changes was not a typo, revert it.
2017-06-09 23:09:36 +10:00
nick_m
b4ddbce1ff Fix incorrect positioning of tempo line subdivisions if first meter is non-zero
Commit cebefe6 assumed that frame 0 was the music origin.
Silly me.
2017-06-09 11:05:56 +10:00
nick_m
4ef4f45f3d Add a method for obtaining the frame position of beat/whatever zero 2017-06-09 11:01:30 +10:00
789fcff1fe Fix crash when showing plugin-UI in safe-mode 2017-06-08 21:21:41 +02:00
nick_m
b086d33937 TempoLines deletes its bfc on destruction 2017-06-09 01:56:28 +10:00
nick_m
cebefe69d9 Tempo lines display subdivisions correctly over a tempo change
TempoMap::get_grid() supplies a list of beat positions, leaving the lines
to work out any subdivision positions.
This is fine, unless a tempo section falls in between beats.
Use a BeatsFramesConverter along with a quarter note position
(in the BBTPointsList) to make this easier.
2017-06-09 01:44:48 +10:00
nick_m
2b320d51dd Fix reversed logic in legacy tempo secton detection 2017-06-09 01:34:14 +10:00
nick_m
e9f2e32b71 Delete tempo lines when session goes away 2017-06-09 01:08:59 +10:00
nick_m
d455806a73 Do not duplicate note id in copy constructor
This fixes selection undo after copy-dragging notes, but there
are probably other cases where duplicate note ids may cause problems.
2017-06-08 23:11:56 +10:00
nick_m
3d5f21a3e5 Remove debugging from TempoTest::qnDistanceTestRamp () 2017-06-08 22:39:41 +10:00
nick_m
7a71428fb0 Fix uninitialised tempo section variable
Should fix 7390.
2017-06-08 22:18:57 +10:00
b57b1de491 Fix rec-box w/count-in
Since 478f26b2ad, transport_rolling() is only true when actually rolling.
Count-in is a no-roll process (don't move playhead, no playhead UI
position interpolation 55b8b448).

But transport isn't exactly stopped either (preparing to roll), so
during count-in transport_stopped() == transport_rolling() == false.
2017-06-08 13:34:23 +02:00
104bebe1bd Update LuaDialog example script to include File/Folder selection 2017-06-08 13:22:43 +02:00
ed5761a8b4 Add a file-chooser LuaDialog Widget 2017-06-08 13:22:00 +02:00
6ac76734f5 cut buffer must not mess around with libardour selection
Fixes range mode selection/cut/copy that would previously clear track selection
2017-06-07 12:28:53 -04:00