summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-06-14Fix region-gain offset when separating ranges5.10Robin Gareus
2017-06-14Squelch error message when toggling master-bus visibility.Robin Gareus
2017-06-14OSC: Add send/plugin page values to GUILen Ovens
2017-06-14OSC: save and restore send/plugin page size.Len Ovens
2017-06-14Fix range-separate for musically-locked MIDI regionsRobin Gareus
Cloning a region retains the region-lock style. Playlist partitioning set the region start-property only (audio-time). If a MIDI region is locked to musical-time, Properties::start is ignored and overwritten by Properties::start_beats.
2017-06-14Special-case VCA at 0 (-inf dB), force gain slaves to -inf dBRobin Gareus
2017-06-14Merge event control lists when disconnecting a master-ctrlRobin Gareus
2017-06-14Add infrastructure to merge ControlListsRobin Gareus
2017-06-13OSC: Allow set_surface to set send and plugin page sizes.Len Ovens
2017-06-13Apply master-value to automation on disconnect.Robin Gareus
2017-06-13Write inverse master automation.Robin Gareus
* 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-13amend 11ba1854 -- locked curve-evaluation is not publicRobin Gareus
2017-06-13FP8: use proper API to detect automation-playbackRobin Gareus
The custom code didn't take touch + touching into account when another surface was touching automation.
2017-06-13Fix another thinko in 9581cb26 + 02b087c5 (VCA gain automation)Robin Gareus
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-13Fix nasty duplicate XML nodeRobin Gareus
2017-06-13Remember subgroup-busRobin Gareus
2017-06-13Allow group gain sharing + VCA againRobin Gareus
2017-06-12OSC: select channel plugin support with paging.Len Ovens
2017-06-12Fix Monitor Group overrideRobin Gareus
2017-06-12Fix relative grouped + VCA slaved gainRobin Gareus
2017-06-12Consistent "cancel/close" button position on the left.Robin Gareus
"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-12Fix a compiler warning (optimized builds)Robin Gareus
2017-06-13Restore the state of the autoplay button in the import dialogTim Mayberry
2017-06-13Make Import the default action in the Import DialogTim Mayberry
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-12Remove unnecessary temporary variables in MasterRecord::set_stateTim Mayberry
XMLNode::get_property only modifies the argument if the property is found and conversion is successful.
2017-06-12VCA/SlavableAutomationCtrl re-design:Robin Gareus
* 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-11a-EQ: Tweak knob layout to be less confusingDamien Zammit
2017-06-11Fix thinko in 9581cb26 - scratch-buffer can't be used recursively.Robin Gareus
2017-06-10OSC: add option to send /reply instead of #reply (OSC1.0 compat)Len Ovens
2017-06-10Emit Session::Located only if _engine.transport_frame() is up to dateJohannes Mueller
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-10Make Session::backend_sync_callback() emit Session::LocatedJohannes Mueller
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-10semantically more correct ordering of previous commitPaul Davis
2017-06-10linker-agnostic version of recent commit to get ControlProtocol selection ↵Paul Davis
state set correctly
2017-06-10Implement slaved boolean automation and update mute special-caseRobin Gareus
2017-06-10Restore VCA Automation stateRobin Gareus
2017-06-10amend a1b4f9b8ab - handle disconnecting from all mastersRobin Gareus
2017-06-09set first selected stripable for control protocols before they are instantiatedPaul Davis
2017-06-09NO-OP: whitespaceRobin Gareus
2017-06-09Fix deletion of VCA with slaved controls.Robin Gareus
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-10NoteCreateDrag - Fix incorrect note length due to use of region-relative ↵nick_m
position
2017-06-09Remove Automatable::value_as_string API from libardourRobin Gareus
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-09Update GUI, drop Automatable::value_as_string() APIRobin Gareus
2017-06-09Prepare to eventually drop Automatable::value_as_string()Robin Gareus
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-09Prepare AutomationTimeAxisView for non-route (VCA) automationRobin Gareus
2017-06-09a-EQ: Revert one of the previous changesDamien Zammit
One of the previous changes was not a typo, revert it.
2017-06-09Fix incorrect positioning of tempo line subdivisions if first meter is non-zeronick_m
Commit cebefe6 assumed that frame 0 was the music origin. Silly me.
2017-06-09Add a method for obtaining the frame position of beat/whatever zeronick_m
2017-06-08Fix crash when showing plugin-UI in safe-modeRobin Gareus
2017-06-09TempoLines deletes its bfc on destructionnick_m
2017-06-09Tempo lines display subdivisions correctly over a tempo changenick_m
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.