Commit graph

24724 commits

Author SHA1 Message Date
Tim Mayberry
d4e7ebff8d Remove LocaleGuard from Session::immediately_post_engine method
I think this was only to protect the float <=> string conversion in
Session::setup_click_state related to click gain which is now using
PBD::to_string/string_to and so no longer necessary.
2017-06-16 21:20:56 +10:00
Tim Mayberry
7c63f720e4 Remove LocaleGuard from ARDOUR::Route class
Route and all members are now using locale independent string <=> float
conversions.
2017-06-16 21:20:56 +10:00
Tim Mayberry
908b27d94f Remove LocaleGuard from ARDOUR::MonitorProcessor state method
All float <=> string conversions are done using PBD::to_string/string_to via
XMLNode and LocaleGuard is not necessary.
2017-06-16 21:20:56 +10:00
Tim Mayberry
a704260930 Remove LocaleGuard from ARDOUR::RCConfiguration class
This presumes that all ControlProtocol implementations either use
PBD::to_string/string_to for float <=> string conversions, which is now the
case.
2017-06-16 21:20:56 +10:00
Tim Mayberry
8fac6d57a2 Remove LocaleGuards from LuaProc class
All float <=> string conversions are done using PBD::to_string/string_to via
XMLNode so no LocaleGuard is necessary.
2017-06-16 21:20:56 +10:00
Tim Mayberry
b617b9d1da Remove LocaleGuard from ARDOUR::MidiTrack class
There are no float <=> string conversions and they are all now performed using
PBD::to_string/string_to via XMLNode
2017-06-16 21:20:56 +10:00
Tim Mayberry
23b9afa520 Remove LocaleGuard from ARDOUR::MidiDiskstream class
There are no float <=> string conversions in MidiDiskstream state methods,
these guards must have been to protect conversions in Diskstream state methods
which are now using PBD::to_string/string_to via XMLNode so no longer need
guarding.
2017-06-16 21:20:56 +10:00
Tim Mayberry
d6f5d750e5 Remove LocaleGuards from ARDOUR::ExportFormatSpecification state methods
All float <=> string conversions are performed by PBD::to_string/string_to via
XMLNode.
2017-06-16 21:20:56 +10:00
Tim Mayberry
706db9e041 Remove LocaleGuard from ARDOUR::Diskstream state method
The float conversion in Diskstream::get_state is now done using
PBD::to_string/string_to via XMLNode::set_property API.

There was no explicit LocaleGuard protecting the string -> float conversion to
remove so it was probably protected by the caller.
2017-06-16 21:20:56 +10:00
Tim Mayberry
f6529c7bde Remove LocaleGuard from ARDOUR::AutomationList class
All float conversions are using PBD::to_string/string_to via
XMLNode::get/set_property API
2017-06-16 21:20:56 +10:00
Tim Mayberry
19356f73f5 Remove LocaleGuard from ARDOUR::Region class
Property conversions <=> string use PBD::to_string/string_to so float
conversions don't need to be protected by a LocaleGuard
2017-06-16 21:20:56 +10:00
Tim Mayberry
94179d3f23 Remove LocaleGuard from ARDOUR::AudioRegion state methods
float <=> string conversions are performed using PBD::to_string/string_to via
XMLNode
2017-06-16 21:20:56 +10:00
Tim Mayberry
e4dcd3b820 Remove LocaleGuard from ARDOUR::AudioTrack class
The gain property float <=> string conversion is now performed using
PBD::to_string/string_to via XMLNode
2017-06-16 21:20:56 +10:00
Tim Mayberry
d6e2457025 Remove LocaleGuard from AudioFileSource::get_state
Not necessary when using XMLNode::set_property API
2017-06-16 21:20:56 +10:00
Tim Mayberry
777bdeb8bf Remove LocaleGuard from ARDOUR::AudioDiskstream state methods
There are no float <=> string conversions and they are all now performed using
PBD::to_string/string_to via XMLNode
2017-06-16 21:20:56 +10:00
Tim Mayberry
ecaadaf246 Remove LocaleGuard from ARDOUR::IO class state methods
There are no float <=> string conversions that require a LocaleGuard and all
conversions are performed using PBD::to_string/string_to via XMLNode
2017-06-16 21:20:56 +10:00
Tim Mayberry
93e3f981fa Remove LocaleGuard from PBD::Controllable state methods
These are no longer necessary as float <=> string conversion is handled by
locale independent PBD::to_string/string_to via XMLNode::get/set_property
2017-06-16 21:20:56 +10:00
Robin Gareus
af6941ac34 Prepare VCA Automation Lanes -- refactor TAV
* add an abstract StripableTimeAxisView (Route TAV + VCA TAV)
* move common strip-methods into STAV
* Add Automation Lanes to VCA TAV
* Allow ATAV without Automatable for VCA Controls
2017-06-15 16:06:32 +02:00
Robin Gareus
5957a4619a Remove another explicit Close button. 2017-06-15 16:06:05 +02:00
Robin Gareus
9c629c0c76 Fix region-gain offset when separating ranges 2017-06-14 22:47:32 +02:00
Robin Gareus
34abc2dc2d Squelch error message when toggling master-bus visibility. 2017-06-14 21:23:12 +02:00
Len Ovens
7c84deb2c4 OSC: Add send/plugin page values to GUI 2017-06-14 10:28:45 -07:00
Len Ovens
d76e6d84c7 OSC: save and restore send/plugin page size. 2017-06-14 08:18:43 -07:00
Robin Gareus
910e93470f Fix range-separate for musically-locked MIDI regions
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-14 15:21:19 +02:00
Robin Gareus
22bddf5434 Special-case VCA at 0 (-inf dB), force gain slaves to -inf dB 2017-06-14 15:21:16 +02:00
Robin Gareus
e0a1c7690a Merge event control lists when disconnecting a master-ctrl 2017-06-14 02:40:09 +02:00
Robin Gareus
8b917c4c16 Add infrastructure to merge ControlLists 2017-06-14 02:40:09 +02:00
Len Ovens
9c0f6ea948 OSC: Allow set_surface to set send and plugin page sizes. 2017-06-13 16:56:10 -07:00
Robin Gareus
8e6f71b8c1 Apply master-value to automation on disconnect. 2017-06-13 20:57:37 +02:00
Robin Gareus
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
Robin Gareus
b34d891b23 amend 11ba1854 -- locked curve-evaluation is not public 2017-06-13 18:09:56 +02:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
b34f2e2c38 Fix nasty duplicate XML node 2017-06-13 01:08:30 +02:00
Robin Gareus
9cb8978c86 Remember subgroup-bus 2017-06-13 01:08:30 +02:00
Robin Gareus
293ab1ef53 Allow group gain sharing + VCA again 2017-06-13 01:08:30 +02:00
Len Ovens
9441e8d484 OSC: select channel plugin support with paging. 2017-06-12 12:31:04 -07:00
Robin Gareus
1794d08789 Fix Monitor Group override 2017-06-12 20:47:44 +02:00
Robin Gareus
6cc18cef4f Fix relative grouped + VCA slaved gain 2017-06-12 17:20:41 +02:00
Robin Gareus
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
Robin Gareus
c69049a853 Fix a compiler warning (optimized builds) 2017-06-12 17:20:41 +02:00
Tim Mayberry
140ce4daec Restore the state of the autoplay button in the import dialog 2017-06-13 00:08:26 +10:00
Tim Mayberry
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
Tim Mayberry
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
Robin Gareus
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
Damien Zammit
3d2bbf93ef a-EQ: Tweak knob layout to be less confusing 2017-06-11 16:25:26 +10:00
Robin Gareus
02b087c552 Fix thinko in 9581cb26 - scratch-buffer can't be used recursively. 2017-06-11 02:16:35 +02:00
Len Ovens
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