13
0
Commit Graph

13306 Commits

Author SHA1 Message Date
Johannes Mueller
67bec5b5be Set the name of the route in a route template to the template name 2017-07-20 20:09:53 +02:00
adc2c756e6 Allow adding tracks w/o running backend 2017-07-20 16:45:24 +02:00
9992ea10b3 Allow listening to channels being exported (w/ realtime export)
It would be nice to change get_audio_buffer() to not set
AudioBuffer::_written to false (all but one other user of this API also
only get read-only data), but that requires chaning the rationale of the
underlying ::set_data() API.
2017-07-19 22:15:22 +02:00
951404475c MSVC changes needed to implement the new 'waveview' library 2017-07-19 08:20:18 +01:00
bf150f049f MSVC changes needed to implement the new 'widgets' library 2017-07-19 08:16:30 +01:00
b1c73b11fc FP8: use separate bank offsets per MixMode 2017-07-19 03:04:58 +02:00
7893cac718 Fix well-known send API for mixbusses. 2017-07-19 02:11:10 +02:00
601604972c FP8: Fix Mixbus solo-state and indicate implicit solo (blink) 2017-07-19 01:52:14 +02:00
9a0a2a29b5 Fix NSGLView invalidation 2017-07-18 21:34:03 +02:00
Léo Andrès
81eb619dc2 Fix french translation mistake 2017-07-18 18:59:50 +02:00
5f485f964e Fix OSX builds in the wake of the source-tree layout changes 2017-07-18 18:29:22 +02:00
8c6d78c188 add required stdint.h 2017-07-17 18:15:42 -04:00
ac37c9b7b8 PluginInsert::silence is used after all (fix 07aeb12d3) 2017-07-17 23:52:45 +02:00
4922d9f941 FP8: save/restore "two line text" option 2017-07-17 22:59:12 +02:00
521e4f676b Remove unused clearlooks-older 2017-07-17 21:06:04 +02:00
beb73edf55 Purify libcanvas, remove libardour dependency
A canvas is just a canvas. Move WaveView into its own library.
2017-07-17 21:06:04 +02:00
601c317d70 Clean up library inheritance (colors.h, utils.h)
make libwidget independent of libcanvas.
Confine basics to pbd and gtkmm2ext.
2017-07-17 21:06:04 +02:00
eb1e423b75 Remove <gtkmm.h> include from header files. 2017-07-17 21:06:04 +02:00
f9e5e4360e Move more Gtkmm2ext widgets into libwidget 2017-07-17 21:06:04 +02:00
b5e9451bc7 Remove unused sources & includes 2017-07-17 21:06:04 +02:00
f6e182b937 Move Gtkmm2ext widgets into libwidget 2017-07-17 21:06:04 +02:00
5c92613698 Separate Ardour UI widgets into dedicated library 2017-07-17 21:06:04 +02:00
e0b4767d2e Fix loading bundles #7426 2017-07-16 21:44:00 +02:00
157d4b2c57 Data less than or equal to zero should be considered "off" 2017-07-16 21:01:08 +02:00
5b9822ab98 Fix merging boolean automation + mute disconnect. 2017-07-16 21:01:03 +02:00
07aeb12d3a Some notes for later. 2017-07-16 17:09:22 +02:00
69ecb0db70 Remove unused API and a never used execution-branch 2017-07-16 16:54:32 +02:00
dee990103a Consistent Automation evaluation:
Rule #89: The *owner* of each automation-control is responsible to
evaluate automation of automated automation-controls (and emit Changed()
signals to notify the GUI and slaved controls).

This can happen during run(), when the Processor evaluates automation
(eg. PluginInsert does that), but needs to regardless, every cycle.
Emit Changed signal for GainControl

This follow the same concept as PluginInsert: The Changed signal
is called on demand when evaluating automation.
2017-07-16 16:53:39 +02:00
06ca52d5a5 Add API to run automation only (emit Changed signal).
Note: MuteControl already implemented this,
This removes the special case of boolean_automation_run().

Likewise this removes special-cases for actually_set_value() during
automation playback.
2017-07-16 16:52:12 +02:00
906cf85982 Rename private method
The same name (automation_run) is used in different context (mute) for
only processing automation.
2017-07-16 16:49:30 +02:00
542d021fbc Fix total number of process threads 2017-07-13 17:16:31 +02:00
Johannes Mueller
eb79ae7d41 Don't try to chop of the file name extension from a template dir
Template files reside in
.config/ardour5/templates/$(template_name)/$(template_name).template

We run through .config/ardour5/templates/ and find there the names of the
directories the .template-files are located in. These directory names don't
have a .template extension. So we shouldn't try to chop the non existing
extension of, because then we only modify template names with a '.' in them.
2017-07-12 16:15:03 +02:00
Jelle van der Waa
b1cf27bed4 Fix duplicate ‘const’ declaration specifier 2017-07-12 12:09:59 +02:00
fd8053da9e Don't use VST ->user points, prefer host-reserved ptr
Apparently "user" is for plugins (not hosts) to use.
2017-07-08 18:13:42 +02:00
82278af424 Add API to expand/flatten AC groups 2017-07-08 15:35:30 +02:00
60df2a342c Don't drop processor references with process-lock
_processors = new_list; may drop the last shared-ptr reference.
This may deadlock in ~IO() for I/O processors or plugins with sidechain
inputs. It's been mostly a non-issues since the GUI usually holds a last
shared-ptr reference for a processor to be deleted, but that is
not always the case.
2017-07-07 23:05:59 +02:00
deba170d6c Consistent ControlList freezing -- fixes #7419
AudioRegion::set_fade_in() freezes the original ControlList, then
assigns a new one and thaws that.
Frozen state needs to be retained during assignment.

Related: The overloaded assignment operator in AutomationList
performed duplicate signal emission and didn't freeze the list.
2017-07-07 02:35:00 +02:00
b732aa2ca1 fix void return with value (amend d5d297c4) 2017-07-06 18:01:49 +02:00
d5d297c407 Fix FP8 shutdown sequence (amend d421e56fc) 2017-07-06 16:55:02 +02:00
73ad5c97f2 Consistently set parameter steps.
And it's actually mostly moot. interface_to_internal maps
any range to 0..1.
The GUI could just hardcode min/max 0, 1 and steps 1/30, 1/300.
Except for controls that have explicit range-steps & ctrl surfaces.
2017-07-06 16:32:27 +02:00
2a809dcf70 OSC: add delta controls to master, monitor and select as well 2017-07-05 08:08:57 -07:00
cd30a29691 Fix session-event queue (multiple writer, single reader)
The reading is done in rt-process thread, but multiple UIs (surfaces,
GUI) can produce events to be queued.
2017-07-04 20:44:33 +02:00
c4578db595 Compatibility with old out-of-range automation-lane data
Ardour may have ignored log-scale for parameters 0..N and allowed
writing '0'. Force those values into the valid range on session load.
Also mark the list as "needs sorting" which removes potential duplicates.
2017-07-04 20:12:51 +02:00
135ffdcf6b Work-around for plugins with log-scale parameter 0..SR/2 2017-07-04 20:09:11 +02:00
5292a8f4ae Allow DnDVbox to sort the selection, using original order
In preparation for Processors to be copy/pasted in the same order
as they appear on the strip -- not order in which they are selected.
2017-07-04 18:08:35 +02:00
b11c64ea5b OSC: GUI tweaking 2017-07-03 13:22:56 -07:00
b87bec3200 FP8: "Link" mode works with AutomationControl only. 2017-07-03 19:56:16 +02:00
d76885e9ef Revert "Prefer Stereo-Balance Panner for stereo tracks"
This reverts commit e9ee454ced.

This needs more work to preserve non-customized panners in existing
sessions. "user-panner" is only set if a user explicitly selects a
panner.
2017-07-03 16:21:35 +02:00
ddf55c0d88 PBD::init() failing is fatal in main(), don't silently exit. 2017-07-03 14:45:41 +02:00
e9ee454ced Prefer Stereo-Balance Panner for stereo tracks 2017-07-03 02:24:53 +02:00
ebc8e352bf FP8: toggle editor/mixer (now that "link" button is used)
..and some TODO notes.
2017-07-03 01:42:36 +02:00
3a42383975 Add binding-proxy to ClickBox 2017-07-02 22:48:39 +02:00
b942c76df9 FP8: properly control enum+integer parameters. 2017-07-02 21:05:42 +02:00
7ed775a716 Add API to step though parameter enumerations 2017-07-02 21:04:22 +02:00
0310f89971 FP8: Implement "Control-Link" 2017-07-02 18:19:13 +02:00
c4fcb12d12 Add control-focus notifications from bindable widgets. 2017-07-02 18:19:13 +02:00
6f986173f3 Controllable focus notification API
This allows to inform control-surfaces about the current GUI
control-element. "Link" control-surface interaction to GUI focus.
2017-07-02 18:19:13 +02:00
ec76d7ce03 OSC: GUI indicate invalid port and set to old port on defocus if not valid 2017-07-02 08:28:34 -07:00
34c0e3f1c8 FP8: plugin GUI display options 2017-07-02 02:06:48 +02:00
15b6b29112 Prepare x-thread signals plugin-GUI visibility 2017-07-02 01:58:16 +02:00
d1d6e696aa FP8: fix 2-line text 2017-07-02 01:57:21 +02:00
b2f3523ab6 Remove old libardour API for plugin UIs 2017-07-01 23:42:28 +02:00
c42db10044 OSC: issue 7176 patch applied. shows plugin descriptors. 2017-07-01 13:13:04 -07:00
2219021389 OSC: add feedback for solo isolate and solo safe to strips (issue 7161) 2017-07-01 11:49:08 -07:00
8bc25fb971 OSC: add strip type flag for master and monitor to strip list 2017-07-01 11:14:55 -07:00
f413b83cb9 Fix thinko in dd3f922788 2017-07-01 18:31:55 +02:00
58beb02024 FP8: Use Mixer-Order 2017-07-01 17:11:55 +02:00
a967a942d2 OSC: include all of select in feedback[13] 2017-06-30 20:47:42 -07:00
296c9ae03e OSC: try to prevent race when clearing devices 2017-06-30 20:13:18 -07:00
41bc5bc116 OSC: test param type in a way that works when optimized too. 2017-06-30 19:05:30 -07:00
d421e56fc0 FP8: Clear input port on close. Fixes crash when switching snapshots
The midi_input_handler for the AsyncMIDIPort is connected to the
main event-loop. Events may still be delivered after the surface was
destroyed.

That by itself is not harmful, unless a given message produces a reply:
The _output_port is already gone, FaderPort8::tx_midi crashes.
2017-07-01 02:55:47 +02:00
Johannes Mueller
f7452c2a3a Addressing #7371: don't trigger session->undo() from non-GUI-thread
When triggering Session::undo() or Session::redo() from a
non-GUI-thread (e.g. from a surface protocol) Ardour crashes if setting a
CairoWidget dirty due to a ENSURE_GUI_THREAD assertion. (see #7371)

By triggering undo by BasicUI::access_action() rather than by Session::undo()
we ensure that the GUI thread will finally call Session::undo().

So more like a workaround ... but better than crashing :)
2017-07-01 01:04:44 +02:00
1cbc91788f Don't invert azimuth & elevation display value 2017-06-30 20:01:53 +02:00
1682368052 NO-OP: whitespace 2017-06-30 19:56:40 +02:00
17bcb67af5 Remove cruft (ParameterDescriptor sets this) 2017-06-30 19:56:01 +02:00
389d2cab36 FP8: Scribble-strip display preferences 2017-06-30 19:55:03 +02:00
cd728fdd73 FP8: Allow to select Plugin Presets 2017-06-30 19:13:55 +02:00
1fe1d17ef8 FP8: don't allow to toggle Channelstrip bypass/enable 2017-06-30 02:31:36 +02:00
773c31afc0 FaderPort8 updates
* use 2 lines for Plugin Parameter Names
* Expose Plugin Bypass/Enable per plugin
 - Shift + Select in Plugin Select Mode
 - Bypass Button in Plugin Parameter Edit Mode
2017-06-30 01:59:12 +02:00
dd3f922788 Tweak LV2 float parameter printing 2017-06-30 01:56:49 +02:00
496ac30c41 Accommodate newly introduced source(s) in our MSVC project (gtkmm2ext) 2017-06-29 10:11:05 +01:00
33d30fdf57 Accommodate newly introduced source(s) in our MSVC project (cairocanvas) 2017-06-29 10:10:26 +01:00
fae592e8f4 Remove ambiguity ('CheckMenuItem' conflicts with an item already existing in MSVC) 2017-06-29 10:08:32 +01:00
d4928e0765 Fix multi-channel delaylines #7409 part 2/2 2017-06-29 04:40:54 +02:00
8e4eb42833 Fix send mono to stereo (or N to M; M > N) sends #7409 part 1/2 2017-06-29 04:40:00 +02:00
972e01f9c7 Add a convenience MenuHelper c'tor
This is pretty much Gtkmm's
  * CheckMenuElem::CheckMenuElem
  * MenuElem::MenuElem
except MenuItems are created with bool mnemonic = false;
2017-06-29 00:22:34 +02:00
d3510b5606 fix OSX builds (llmath compat) 2017-06-28 03:03:05 +02:00
1f5013b4a8 Distinguish error-messages.
The vast majority of errors reported by users as
  "Cannot configure audio/midi engine with session parameters"
have nothing to do with engine-parameters.
2017-06-27 20:28:45 +02:00
1dd4aab0b4 Update fluidsynth
Fix potential crashes in case fluid-synth runs into an OOM error,
and address a const-cast compiler warning.

Switch to track github repo (instead of sf.net git)
2017-06-27 20:12:46 +02:00
007f3cdbba Add convenience fn to compute a file's sha1sum 2017-06-26 19:39:40 +02:00
a1cd4f8dfe Fix friend declaration in WaveView code for non-c++11 builds 2017-06-26 17:04:18 +10:00
6e91ee071c Reimplementation of large parts of the WaveView class
The drawing itself should be unchanged but much of the rest of the
implementation has changed. The WaveViewThreads and WaveViewDrawingThread
classes were added and allow multiple drawing threads.

The Item::prepare_for_render interface is implemented by WaveView to enable
queuing draw requests for the drawing threads to process as soon as the state
change occurs during Editor::visual_changer, which often means the images will
be finished by the time they are needed in WaveView::render. This can
significantly reduce total render time and also flickering caused by images not
being ready for display.

If the drawing thread/s cannot finish the request by the time it is required in
WaveView::render then cancel it and draw the WaveViewImage in the GUI thread if
it is likely it can be completed in the current render pass/frame.  This change
also helps reduce the flickering caused by images not being ready with threaded
rendering, but with several drawing threads, drawing in the GUI thread may not
often occur (unless explicitly requested).

Allow unfinished images to be returned from the cache in
WaveView::prepare_for_render so that new draw requests aren't queued for
duplicate images. This reduces the amount of drawing for instance in
compositions where there are many instances of the same sample/waveform
displayed on the canvas as only a single image should be drawn.

Use a random width within a certain range for
WaveView::optimal_image_width_samples so that image drawing is less likely to
occur at the same time (which will cause a spike in render/draw time and
increase the chance of flickering waveforms).

Move implementations of the private WaveView classes into wave_view_private.h
and wave_view_private.cc source files.

Incorporate a fix for limiting the waveview image size to the cairo image size
limit.

Should hopefully Resolve: #6478
2017-06-26 08:40:47 +10:00
4ddf97f5a2 Add Canvas::get_microseconds_since_render_start() method
Initial use is for the WaveView class to determine whether on not to draw the
waveform in the GUI thread.
2017-06-26 08:40:47 +10:00
ab13e87ec2 Add Canvas::get_last_render_start_timestamp method 2017-06-26 08:40:47 +10:00
8538ba35fe Only call Gtk::Widget::queue_draw_area in canvas when item and visible area intersect
Refactor GtkCanvas::request_redraw to use Rect::intersection
2017-06-26 08:40:47 +10:00
c4e31fc322 Add an optional ArdourCanvas::Item::prepare_for_render interface
Called when an item has requested a redraw and intersects with visible
canvas area.

Also add Canvas::prepare_for_render that will call Item::prepare_for_render for
items visible on the canvas.
2017-06-26 08:40:47 +10:00
dac25b8db9 Add PreRender signal to the canvas
Emitted by the canvas immediately before rendering.
2017-06-26 08:40:47 +10:00
9618b6dcbb Whitespace fixes in canvas.h 2017-06-26 08:40:47 +10:00
de99d7c528 Allow saving state w/o backend
Connections are remembered by ARDOUR::Port to re-establish at load.
2017-06-25 22:03:42 +02:00
e511985ad9 Report Dummy as not available if not running
This fixes an issue with port-connections being polled from the backend
even when it's not running.
2017-06-25 20:53:47 +02:00
cc7ff53e1f Create a deep-copy of MIDI sources when saving snapshots 2017-06-25 01:57:19 +02:00
a1c5d1be43 Extend API to allow calling new_midi_source_path() with source_lock held
This is in preparation for cloning MIDI-sources during snapshot save.
2017-06-25 01:57:19 +02:00
86ee4de7a9 OSC: simplify GUI and make less error-prone 2017-06-24 13:13:53 -07:00
33bfe681c9 OSC: Allow /bank_up to accept -1 as well as 1 so encoder can work. 2017-06-23 18:08:04 -07:00
01e75da96b OSC: make sed_fader work with banking too. 2017-06-23 17:34:22 -07:00
0b21143234 OSC: Add master_send_enable for MB 2017-06-23 17:09:54 -07:00
1fad162256 OSC: redo math for redux control with fewer calls. 2017-06-23 17:09:54 -07:00
2ea14c25ec OSC: Messages too fast at bank_change/refresh slowed down. 2017-06-23 17:09:54 -07:00
64a091ea4b Fix metronome + capture alignment for Mixbus 2017-06-24 01:22:17 +02:00
2a08746437 OSC: Fix math error in send fader feedback 2017-06-23 14:26:29 -07:00
1138b62fb8 amend 5e5f7a55; re-add wrongly removed variable 2017-06-23 18:15:50 +02:00
104a4c2030 leave a hint for clang's static analyzer 2017-06-23 17:39:20 +02:00
e765d0b3bb Remove Automation Types that should never have existed. 2017-06-23 17:39:20 +02:00
66a3dd7ded MCU: Remove use of AutomationType as ID, part two.
This may need some small tweaks for MB channelstrip to set
print-format (like LV2 plugins would) for cases where the default
value_as_string() differs.
2017-06-23 17:39:20 +02:00
5e5f7a55ee MCU: Remove use of AutomationType as ID, part one. 2017-06-23 17:39:20 +02:00
de73194050 Implement undo for merging VCA-master automation/value on disconnect. 2017-06-23 17:39:20 +02:00
d34fdb98e3 Improve default parameter display 2017-06-23 17:39:20 +02:00
5aad9d9a33 OSC: only show visible plugins (not MB channel strip PI) 2017-06-22 22:40:06 -07:00
d972fa431c Remove unnecessary LocaleGuard header include 2017-06-23 09:12:53 +10:00
9334c99b35 Update Slavable API
Do not use AutomationType to identify parameters, use complete
Evoral::Parameter and Automatable.

For "batch connections", a Slavables needs to implement an API to return
the relevant controls.

This is only a first step towards a more generic Master/Slave framework.
2017-06-22 22:04:10 +02:00
faa52a3349 NO-OP: whitespace 2017-06-22 22:04:10 +02:00
7af5de2074 OSC: Add increment fader. 2017-06-22 12:54:03 -07:00
57e7531b1f OSC: allow mixbuses to show 2017-06-22 10:20:48 -07:00
6180c5a5fc Accommodate newly introduced source(s) in our MSVC project (libpbd) 2017-06-22 17:59:16 +01:00
3baf360733 OSC: use internal_to_interface or reverse 2017-06-22 09:21:51 -07:00
a5836e2922 Remove LocaleGuard from Plugin::get_state
Let the plugin implementation of Plugin::add_state use a LocaleGuard if it is
necessary (VST/LV2). This puts the LocaleGuards where they are required but the
LocaleGuards in Session::set/get_state will mean these LocaleGuards are a noop.
They are still useful for documentation purposes and in case the code is called
from a non-Session context at some point.
2017-06-22 10:48:38 +10:00
8b10ed2478 Remove LocaleGuards from LadspaPlugin::set/add_state
String <-> type conversion is being performed by the pbd/string_convert.h API
via PBD::XMLNode so LocaleGuards are not necessary.
2017-06-22 10:48:38 +10:00
a65c3ef28f Remove unnecessary LocaleGuards from VSTPlugin derived classes
VSTPlugin::set_state and VSTPlugin::add_state methods both already contain
LocaleGuard instances.
2017-06-22 10:48:38 +10:00
90f169881f Remove unused ArdourCanvas::HSV constructor
Using stringstream for this is not locale independant. If this constructor is
needed at a later stage it should be reimplemented.
2017-06-22 10:48:38 +10:00
6d35b3c4e4 Remove locale_guard.h from ardour/ardour.h header
Add to source files that use LocaleGuard

Results in far less recompiling when pbd/locale_guard.h changes
2017-06-22 10:48:38 +10:00
5ddd7a58b6 Remove unused pbd/locale_guard.h header from Gtkmm2ext::Barcontroller class 2017-06-22 10:48:38 +10:00
1170bd9043 Remove LocaleGuards from SVAModifier and HSV classes
float <=> string conversion now done using PBD::to_string/string_to so
LocaleGuards are no longer needed.
2017-06-22 10:48:38 +10:00
5103663f13 Remove LocaleGuard from ARDOUR::PannerShell
All Panner implementations using PBD::to_string/string_to for float <=> string
conversion and no longer require a LocaleGuard.
2017-06-22 10:48:38 +10:00
e4b5a84211 Remove LocaleGuard from ARDOUR::Pannable class
string <=> float conversions are using PBD::to_string/string_to and no longer
require a LocaleGuard
2017-06-22 10:48:38 +10:00
00803ca69b Remove LocaleGuards from ARDOUR::Tempo class
All float <=> string conversions are done for PBD::string_to/to_string and no
longer require a LocaleGuard.
2017-06-22 10:48:38 +10:00
8d039d3211 Remove LocaleGuards from ARDOUR::Speakers class
float <=> string conversions are now using PBD::to_string/string_to via XMLNode
for locale independent conversion and these guards are not necessary.
2017-06-22 10:48:38 +10:00
f597711428 Remove LocaleGuards from ARDOUR::Session transport related methods
ARDOUR::AutomationList is no longer using LocaleGuards as float <=> string
conversion is using PBD::to_string/string_to so the reason for adding these
guards as per comment no longer applies.
2017-06-22 10:48:38 +10:00
5c5cfac4a3 Remove LocaleGuard from Session::load_options
PBD::ConfigVariable uses PBD::to_string/string_to methods so this LocaleGuard
is no longer necessary.
2017-06-22 10:48:38 +10:00
58371af68a Remove LocaleGuards from SessionConfiguration class
ConfigurationVariable is now using PBD::to_string/string_to for float <=>
string conversions so LocaleGuard is no longer necessary.
2017-06-22 10:48:38 +10:00
0e3a132097 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-22 10:48:38 +10:00
5694d877aa Remove LocaleGuard from ARDOUR::Route class
Route and all members are now using locale independent string <=> float
conversions.
2017-06-22 10:48:38 +10:00
f8abdd9cdf 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-22 10:48:38 +10:00
1a39da25e4 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-22 10:48:38 +10:00
579d856cc7 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-22 10:48:38 +10:00
3c59d38f1c 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-22 10:48:38 +10:00
482be1410b 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-22 10:48:38 +10:00
d5cf19d606 Remove LocaleGuards from ARDOUR::ExportFormatSpecification state methods
All float <=> string conversions are performed by PBD::to_string/string_to via
XMLNode.
2017-06-22 10:48:38 +10:00
810c6e7833 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-22 10:48:38 +10:00
9954b476cb Remove LocaleGuard from ARDOUR::AutomationList class
All float conversions are using PBD::to_string/string_to via
XMLNode::get/set_property API
2017-06-22 10:48:38 +10:00
cfd78ab07b 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-22 10:48:38 +10:00
ffe0bbe0ab Remove LocaleGuard from ARDOUR::AudioRegion state methods
float <=> string conversions are performed using PBD::to_string/string_to via
XMLNode
2017-06-22 10:48:38 +10:00
11b4da078a 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-22 10:48:38 +10:00
2e4277ad7b Remove LocaleGuard from AudioFileSource::get_state
Not necessary when using XMLNode::set_property API
2017-06-22 10:48:38 +10:00
47b1f0869b 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-22 10:48:38 +10:00
eb5161b601 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-22 10:48:38 +10:00
6ab970efa3 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-22 10:48:38 +10:00
3b718c60de OSC: Accept mixed parameter types for touch 2017-06-21 15:18:56 -07:00
940be0cbb9 compilation requires <stdint.h> 2017-06-21 14:19:21 -04:00
ed4909bd59 Some ToDo notes about AutomationTypes 2017-06-21 18:14:33 +02:00
ce059e2d66 Remove internal_to_user/user_to_internal API
Also GainControl can just use the AutomationControl's implementation of
get_user_string()
2017-06-21 18:13:46 +02:00
55df5b39bc Prepare removal of redundant get_user/set_user API. 2017-06-21 18:13:41 +02:00
8cd8cb1650 Temporary session-format compatibility (revert before release)
Saving the new ControlList interpolation methods (enum) breaks loading
the session in older version. The session-format version will
need to be increased.

Until then:
 * Fader automation + region gain envelope uses linear fades
 * The automation-line visible in the GUI does not match the actual fade
   (the y-axis is log/exp-scale, the fade is linear)
 * Adding new points on the line is not using the correct initial value
 * Custom changes of interpolation mode are not available

Neither of these issues is a regression.
2017-06-21 18:13:36 +02:00
d85ce60158 Fix VST default value. query once at instantiation time. 2017-06-21 18:13:29 +02:00
7ab15def2b Consolidate ParameterDescriptor settings+ranges 2017-06-21 18:13:26 +02:00
394bd8f428 Set default interpolation type (for new lanes) 2017-06-21 18:12:58 +02:00
16624f3139 Add API to compute parameter delta, depending on AutomationType 2017-06-21 18:12:55 +02:00
37905d82a6 Centralize Parameter scaling
This exposes an AutomationType dependent abstract version of
inteface_to_internal(), internal_to_interface().
2017-06-21 18:12:45 +02:00
8dcc28c9ad Remove duplicates from ControlList 2017-06-21 18:12:31 +02:00
3d15499cda Clamp values in ControlList 2017-06-21 18:12:29 +02:00
d6c47def09 Implement additional ControlList interpolation methods.
The Control and ControlList uses the raw value (eg. coefficient for gain,
Hz for frequencies) and those Lists are stored in existing sessions.

In the vast majority of cases interpolating automation values using exp/log
scale for dB, freq makes more sense -- it's also what the fader does.

Adding additional interpolation methods is future proof (we might at allow
to even add different methods per automation point (to the next) like other
DAWs do.

Currently it's mainly used in preparation for consistent GUI automation-
lanes. Between 2 points there's always a visual straight line.
2017-06-21 18:12:26 +02:00
36e32e5641 Remove separate ControlList min/max/default, use ParameterDescriptor. 2017-06-21 18:12:23 +02:00
cb48bb0e1c remove min/max unbound -- LADSPA special case.
This explicit case should never have existed in the first place.

Plugins can always implicitly exceed the range and are expected to
cope with out-of-range values (e.g. meters when fed with a peaking signal
may return an out-of-bounds value)
2017-06-21 18:12:20 +02:00
fe83e1e2ed Move logarithmic property into Evoral, add rangesteps
This allows complete mathematical description of a given parameter
and parameter values.

Semantic type abstraction is reserved for Ardour::ParameterDescriptor.
2017-06-21 18:12:14 +02:00
2627cd414c Remove old API 2017-06-21 18:12:11 +02:00
ea1f27162b Fix/update maximum gain computation 2017-06-21 18:12:07 +02:00
567c0a8f53 Switch to PBD control-math and prefer Controllable API
Note: Control-surfaces should always use interface_to_internal()
and internal_to_interface().
2017-06-21 18:12:04 +02:00
e91b80eb85 Centralize control-parameter math functions in libpbd.
Functions formerly in ardour/util.h and some more functions.
The main motivation is libevoral which can use libpbd but not libardour.

The eventual goal is to consolidate various different interpolation,
scaling and deflection methods.
2017-06-21 18:12:01 +02:00
9f37396315 Format boolean parameter values 2017-06-21 18:11:43 +02:00
86dea93299 Tweak value-as-string dB and float decimals printing 2017-06-21 13:16:58 +02:00
7c94499aec Remove Cruft -- AutomationStyle never did anything.
Trim automation is planned via SlavableAC as normal AutomationMode.
Some of this code have a revival (a special "Trim+Preview" state
before merging Automation but that has to be more general than Pan & Gain.
2017-06-21 13:16:27 +02:00
31c6f66d9b Fix duplicate Gain+Trim AutomationLists in session file. 2017-06-21 13:15:34 +02:00
fd3bd35203 OSC: value not initialized soon enough 2017-06-20 13:11:59 -07:00
c2cba9e57c 'ARDOUR::Stripable::Sorter()' needs to be exportable (since it gets used outside of libardour) 2017-06-18 12:05:48 +01:00
Hiroki Inagaki
c0611fb55e Update Japanese translation, including a fix for an issue that translation for a certain string leads failure to launch the application on Windows 10 2017-06-17 22:15:41 +02:00
c02a3413e1 Move implementation out of header file 2017-06-17 15:52:00 +02:00
f80958e168 Add Lua bindings to query all stripables 2017-06-17 04:37:14 +02:00
591d75f1d2 Fix stripable order for new strips & master-order 2017-06-17 04:37:05 +02:00
140c511d2c Add method to ensure Stripable sort constrains (for UI use) 2017-06-17 04:36:32 +02:00
10db824461 Use Stripable::Sorter in libs 2017-06-17 04:36:28 +02:00
867a0f5228 Move StripableSorter into libardour 2017-06-17 04:36:22 +02:00
0331a9a233 OSC: plugin feedback mathfix - 0 param (meter) checked for. 2017-06-16 11:33:02 -07:00
9c629c0c76 Fix region-gain offset when separating ranges 2017-06-14 22:47:32 +02:00
7c84deb2c4 OSC: Add send/plugin page values to GUI 2017-06-14 10:28:45 -07:00
d76e6d84c7 OSC: save and restore send/plugin page size. 2017-06-14 08:18:43 -07:00
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
22bddf5434 Special-case VCA at 0 (-inf dB), force gain slaves to -inf dB 2017-06-14 15:21:16 +02:00
e0a1c7690a Merge event control lists when disconnecting a master-ctrl 2017-06-14 02:40:09 +02:00
8b917c4c16 Add infrastructure to merge ControlLists 2017-06-14 02:40:09 +02:00
9c0f6ea948 OSC: Allow set_surface to set send and plugin page sizes. 2017-06-13 16:56:10 -07:00
8e6f71b8c1 Apply master-value to automation on disconnect. 2017-06-13 20:57:37 +02:00