Robin Gareus [Mon, 17 Jul 2017 03:18:48 +0000 (05:18 +0200)]
Remove ArdourPrompter wrapper
Robin Gareus [Mon, 17 Jul 2017 01:48:18 +0000 (03:48 +0200)]
Remove <gtkmm.h> include from header files.
Robin Gareus [Mon, 17 Jul 2017 02:55:52 +0000 (04:55 +0200)]
Move more Gtkmm2ext widgets into libwidget
Robin Gareus [Sun, 16 Jul 2017 22:00:11 +0000 (00:00 +0200)]
Remove unused sources & includes
Robin Gareus [Sun, 16 Jul 2017 20:13:46 +0000 (22:13 +0200)]
Move Gtkmm2ext widgets into libwidget
Robin Gareus [Sat, 15 Jul 2017 21:23:16 +0000 (23:23 +0200)]
remove cruft (no more ButtonJoiner)
Robin Gareus [Sat, 15 Jul 2017 15:38:28 +0000 (17:38 +0200)]
Separate Ardour UI widgets into dedicated library
Paul Davis [Mon, 17 Jul 2017 15:51:58 +0000 (11:51 -0400)]
fix behaviour of AddRouteDialog "Add" button
Paul Davis [Mon, 17 Jul 2017 15:49:00 +0000 (11:49 -0400)]
if user has edited name entry in add route dialog, type changes should not reset it.
But using a response button should
Julien "_FrnchFrgg_" RIVAUD [Mon, 17 Jul 2017 10:08:42 +0000 (12:08 +0200)]
Fix a typo in recent commit
Robin Gareus [Sun, 16 Jul 2017 19:44:00 +0000 (21:44 +0200)]
Fix loading bundles #7426
Robin Gareus [Sun, 16 Jul 2017 17:00:33 +0000 (19:00 +0200)]
Data less than or equal to zero should be considered "off"
Robin Gareus [Sun, 16 Jul 2017 16:59:35 +0000 (18:59 +0200)]
Fix merging boolean automation + mute disconnect.
Robin Gareus [Sun, 16 Jul 2017 14:47:09 +0000 (16:47 +0200)]
Some notes for later.
Robin Gareus [Sat, 15 Jul 2017 18:50:26 +0000 (20:50 +0200)]
Remove Timers to watch Controllable values
Depend on Changed() signals alone, which are usually much less frequent
than rapid-timer events.
As side-effect we now need to make the widgets insensitive when
playing automation. Previously the user could not change the value because
the Timer periodically reset it.
Robin Gareus [Sat, 15 Jul 2017 21:24:14 +0000 (23:24 +0200)]
Remove unused API and a never used execution-branch
Robin Gareus [Sat, 15 Jul 2017 18:45:49 +0000 (20:45 +0200)]
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.
Robin Gareus [Sat, 15 Jul 2017 18:52:50 +0000 (20:52 +0200)]
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.
Robin Gareus [Sun, 16 Jul 2017 13:13:04 +0000 (15:13 +0200)]
Rename private method
The same name (automation_run) is used in different context (mute) for
only processing automation.
Paul Davis [Sat, 15 Jul 2017 17:43:39 +0000 (13:43 -0400)]
required #include for earlier gcc
Paul Davis [Sat, 15 Jul 2017 16:21:50 +0000 (12:21 -0400)]
new script to globally switch from "audio frames" to "audio samples"
To be run at some point in the near future after various PRs and development branches
have been merged into master.
Johannes Mueller [Wed, 12 Jul 2017 17:57:53 +0000 (19:57 +0200)]
Force filename suffix and ask confirmation before overwriting ...
... existing files, when exporting template archives.
Johannes Mueller [Wed, 12 Jul 2017 15:44:35 +0000 (17:44 +0200)]
Only make the export button sensitive if there's something to export
Johannes Mueller [Wed, 12 Jul 2017 15:34:22 +0000 (17:34 +0200)]
Inflate template archives rather in `.config/ardour5/` than in ...
`.config/ardour5/(templates|route_templates)`.
We put as toplevel directory of the archive `templates` or
`route_templates`. Then no matter if the user imports a session template or a
route template archives, we always put them into the correct folder.
As now the user can also import route templates while the
SessionTemplateManager is visible and vice versa, we need to signal the
successful import to the corresponding template manager. Therfor we introduce
the signal TemplatesImported.
Robin Gareus [Fri, 14 Jul 2017 18:01:34 +0000 (20:01 +0200)]
Add johmue to authors list
Robin Gareus [Fri, 14 Jul 2017 18:00:41 +0000 (20:00 +0200)]
Turn Summary into a horizontal scrollbar (drop y-axis sensitivity)
Julien "_FrnchFrgg_" RIVAUD [Fri, 14 Jul 2017 13:16:33 +0000 (15:16 +0200)]
Simplify _midifilter.lua example
Instead of and-ing the first byte to extract the event type, it is
simpler and easier to understand to bitwise-shift it, so that we don't
get the result as a multiple of 2^4, but as values corresponding to the
MIDI specification.
Currently, a guard is put against events with completely empty data,
though maybe ardour discards those earlier on since that would not be
valid MIDI.
John Emmas [Fri, 14 Jul 2017 09:48:26 +0000 (10:48 +0100)]
Accommodate newly introduced source(s) in our MSVC project (gtk2_ardour)
Robin Gareus [Thu, 13 Jul 2017 15:16:31 +0000 (17:16 +0200)]
Fix total number of process threads
Johannes Mueller [Fri, 7 Jul 2017 20:01:01 +0000 (22:01 +0200)]
Switch to g_dir_make_tmp() to make the tmpdir.
Johannes Mueller [Fri, 7 Jul 2017 17:53:45 +0000 (19:53 +0200)]
First draft of import and export templates
Don't use this now, except for testing as the archive format will change.
TBD:
* error handling
* check template would be overwritten by import
* dinstinguish between session and track templates
Johannes Mueller [Thu, 6 Jul 2017 08:04:07 +0000 (10:04 +0200)]
Some more error handling
Try to undo the renaming of the template dir in case the writing of the new
template file fails.
Johannes Mueller [Thu, 6 Jul 2017 06:07:55 +0000 (08:07 +0200)]
Remove template dirs using PBD::remove_directory()
This makes sure that all state directories of the template are erased properly.
Johannes Mueller [Thu, 6 Jul 2017 05:31:12 +0000 (07:31 +0200)]
Adjust template names inside template files
This concernes:
* LV2 states:
LV2 states are stored in the template directories and their paths are stored
int the template files using absolute paths. Therefore we have to adjust the
template-dir property of every lv2 node referring to a state dir.
* Names of route templates.
The name of the route template is stored in the first child of the xml root
node in the property `name`. This needs to be adjusted when renaming the
template.
By now we rely on that only lv2 states and the route template name need to be
adjusted on renaming a template.
Johannes Mueller [Mon, 3 Jul 2017 12:30:05 +0000 (14:30 +0200)]
Also handle Route templates
Following measures:
* Split up into two classes
* TemplateDialog: the general dialog
* TemplateManager: A widget to rename and remove templates
* Make TemplateManager abstract and derive a class for session templates and
one for route templates. This is needed, as session templates and route
templates are stored in a different way. Thus we need different methods to
rename and remove them.
Johannes Mueller [Mon, 3 Jul 2017 11:05:21 +0000 (13:05 +0200)]
Some cosmetics
Johannes Mueller [Mon, 3 Jul 2017 10:27:25 +0000 (12:27 +0200)]
First draft of a template management dialog
Goal is to a simple dialog that can rename and remove templates. This is
helpful in order to keep the template list tidy.
So far it works for session templates. Track templates tbd.
Johannes Mueller [Sun, 2 Jul 2017 22:27:18 +0000 (00:27 +0200)]
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.
Jelle van der Waa [Wed, 12 Jul 2017 10:09:59 +0000 (12:09 +0200)]
Fix duplicate ‘const’ declaration specifier
Robin Gareus [Wed, 12 Jul 2017 04:55:44 +0000 (06:55 +0200)]
Honor groups for mixer selection
Robin Gareus [Sat, 8 Jul 2017 16:13:42 +0000 (18:13 +0200)]
Don't use VST ->user points, prefer host-reserved ptr
Apparently "user" is for plugins (not hosts) to use.
Robin Gareus [Sat, 8 Jul 2017 14:07:42 +0000 (16:07 +0200)]
Add select-all-tracks mixer-shortcut (following editor)
Robin Gareus [Sat, 8 Jul 2017 13:43:55 +0000 (15:43 +0200)]
Remove old API (unused, incorrect for grouped tracks)
Robin Gareus [Sat, 8 Jul 2017 13:43:32 +0000 (15:43 +0200)]
Fix gain inc/dec with multiple-selection spanning groups
When tracks in a gain-sharing group are selected, stepping gain
up/down affected the tracks N times:
for-each selected track inc/dec gain w/grouping.
When a mix of grouped and un-grouped tracks is selected, this lead to
inconsistent gain changes.
The new approach expands the groups first. Ignoring groups is not correct
either for single selection.
Robin Gareus [Sat, 8 Jul 2017 13:35:30 +0000 (15:35 +0200)]
Add API to expand/flatten AC groups
Robin Gareus [Fri, 7 Jul 2017 21:05:59 +0000 (23:05 +0200)]
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.
Robin Gareus [Fri, 7 Jul 2017 15:30:37 +0000 (17:30 +0200)]
Drop region references when hiding the TimeFX dialog.
Robin Gareus [Fri, 7 Jul 2017 12:47:36 +0000 (14:47 +0200)]
Fix VCA Automation Lane selection
This moves child-selection API up into TAV (Superclass of StripableTAV
which actually owns the children)
Robin Gareus [Fri, 7 Jul 2017 00:43:15 +0000 (02:43 +0200)]
Czech translation update by pfri #7190
Robin Gareus [Fri, 7 Jul 2017 00:34:09 +0000 (02:34 +0200)]
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.
Robin Gareus [Thu, 6 Jul 2017 16:01:49 +0000 (18:01 +0200)]
fix void return with value (amend
d5d297c4)
Robin Gareus [Thu, 6 Jul 2017 14:55:02 +0000 (16:55 +0200)]
Fix FP8 shutdown sequence (amend
d421e56fc)
Robin Gareus [Thu, 6 Jul 2017 14:39:28 +0000 (16:39 +0200)]
Remove cruft, steps cannot be 0.
Robin Gareus [Thu, 6 Jul 2017 14:15:34 +0000 (16:15 +0200)]
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.
Robin Gareus [Wed, 5 Jul 2017 16:53:05 +0000 (18:53 +0200)]
Make an info string translatable
Len Ovens [Wed, 5 Jul 2017 15:07:51 +0000 (08:07 -0700)]
OSC: add delta controls to master, monitor and select as well
Robin Gareus [Tue, 4 Jul 2017 18:44:33 +0000 (20:44 +0200)]
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.
Robin Gareus [Tue, 4 Jul 2017 18:12:51 +0000 (20:12 +0200)]
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.
Robin Gareus [Tue, 4 Jul 2017 18:09:11 +0000 (20:09 +0200)]
Work-around for plugins with log-scale parameter 0..SR/2
Robin Gareus [Tue, 4 Jul 2017 16:06:54 +0000 (18:06 +0200)]
Fix a plugin-insert position off-by-one and remove cruft.
Route::before_processor_for_index() uses display_to_user() which
includes the Amp.
Insert position is still be wrong with the debug mode
ProcessorBox::show_all_processors == true, but that's not a regression.
Robin Gareus [Tue, 4 Jul 2017 15:54:17 +0000 (17:54 +0200)]
Always add plugins in the order given by the Manager UI.
Robin Gareus [Tue, 4 Jul 2017 15:08:58 +0000 (17:08 +0200)]
Retain plugins order for copy/cut/paste + DnD #7416
Robin Gareus [Tue, 4 Jul 2017 15:07:47 +0000 (17:07 +0200)]
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.
Len Ovens [Mon, 3 Jul 2017 21:31:27 +0000 (14:31 -0700)]
OSC: Add system osc preset directory
Len Ovens [Mon, 3 Jul 2017 20:22:12 +0000 (13:22 -0700)]
OSC: GUI tweaking
Robin Gareus [Mon, 3 Jul 2017 17:56:16 +0000 (19:56 +0200)]
FP8: "Link" mode works with AutomationControl only.
Robin Gareus [Mon, 3 Jul 2017 17:55:17 +0000 (19:55 +0200)]
Make VCA mute+solo buttons bindable
Robin Gareus [Mon, 3 Jul 2017 14:20:01 +0000 (16:20 +0200)]
Revert "Prefer Stereo-Balance Panner for stereo tracks"
This reverts commit
e9ee454cedda06403a57d1e17239fa2fbfb36638.
This needs more work to preserve non-customized panners in existing
sessions. "user-panner" is only set if a user explicitly selects a
panner.
Robin Gareus [Mon, 3 Jul 2017 14:19:10 +0000 (16:19 +0200)]
Another approach for stuck splash-screens:
Use Editor::first_idle() which is invoked every time when a session
is loaded (via set_session). This will catch ALL successful
session loads.
Failed session-loads explicitly pop down the splash in
ARDOUR_UI::load_session.
This only leaves "abort session open" which returns to the
session-open dialog (which pops back the splash).
Robin Gareus [Mon, 3 Jul 2017 12:45:41 +0000 (14:45 +0200)]
PBD::init() failing is fatal in main(), don't silently exit.
Robin Gareus [Mon, 3 Jul 2017 12:44:03 +0000 (14:44 +0200)]
Don't just silently exit if initialization fails.
Robin Gareus [Mon, 3 Jul 2017 12:03:10 +0000 (14:03 +0200)]
Fix another crash at exit.
During ARDOUR_UI::finish(), after destroying various instances:
close_all_dialogs() -> ArdourDialog::on_response() -> GUIIdle()
The event loop recurses and may execute a previously scheduled
Editor::idle_visual_changer()
Robin Gareus [Mon, 3 Jul 2017 00:24:53 +0000 (02:24 +0200)]
Prefer Stereo-Balance Panner for stereo tracks
Robin Gareus [Sun, 2 Jul 2017 23:42:36 +0000 (01:42 +0200)]
FP8: toggle editor/mixer (now that "link" button is used)
..and some TODO notes.
Robin Gareus [Sun, 2 Jul 2017 23:41:35 +0000 (01:41 +0200)]
Re-introduce toggle-editor-and-mixer (for ctrl-surfaces)
6af51b52 moved to dedicated show-editor/show-mixer actions for
keybindings because the Mixer has a dedicated handler.
For Control-surfaces a common action is still practical.
Note: This is still broken for detached windows. it currently only
toggles tabs correctly.
Robin Gareus [Sun, 2 Jul 2017 20:53:28 +0000 (22:53 +0200)]
Allow to bind generic plugin-ui dropdown + clickboxes
Robin Gareus [Sun, 2 Jul 2017 20:48:39 +0000 (22:48 +0200)]
Add binding-proxy to ClickBox
Robin Gareus [Sun, 2 Jul 2017 19:05:42 +0000 (21:05 +0200)]
FP8: properly control enum+integer parameters.
Robin Gareus [Sun, 2 Jul 2017 19:04:22 +0000 (21:04 +0200)]
Add API to step though parameter enumerations
Robin Gareus [Sun, 2 Jul 2017 16:16:54 +0000 (18:16 +0200)]
FP8: Implement "Control-Link"
Robin Gareus [Sun, 2 Jul 2017 13:29:57 +0000 (15:29 +0200)]
Add control-focus notifications from bindable GUI widgets.
Robin Gareus [Sun, 2 Jul 2017 16:18:22 +0000 (18:18 +0200)]
Add control-focus notifications from bindable widgets.
Robin Gareus [Sun, 2 Jul 2017 13:28:51 +0000 (15:28 +0200)]
Controllable focus notification API
This allows to inform control-surfaces about the current GUI
control-element. "Link" control-surface interaction to GUI focus.
Len Ovens [Sun, 2 Jul 2017 15:27:50 +0000 (08:27 -0700)]
OSC: GUI indicate invalid port and set to old port on defocus if not valid
Robin Gareus [Sun, 2 Jul 2017 00:06:48 +0000 (02:06 +0200)]
FP8: plugin GUI display options
Robin Gareus [Sat, 1 Jul 2017 23:59:24 +0000 (01:59 +0200)]
Allow ctrl-surfaces to show/hide plugin UIs.
Robin Gareus [Sat, 1 Jul 2017 23:58:16 +0000 (01:58 +0200)]
Prepare x-thread signals plugin-GUI visibility
Robin Gareus [Sat, 1 Jul 2017 23:57:21 +0000 (01:57 +0200)]
FP8: fix 2-line text
Robin Gareus [Sat, 1 Jul 2017 21:42:28 +0000 (23:42 +0200)]
Remove old libardour API for plugin UIs
Robin Gareus [Sat, 1 Jul 2017 21:41:25 +0000 (23:41 +0200)]
Remove old API to keep track of plugin GUI widgets
This was superseded by WindowProxy and the ARDOUR::Processor
[set_]window_proxy() API
Robin Gareus [Sat, 1 Jul 2017 21:39:48 +0000 (23:39 +0200)]
Remove unused variable (amend
79384339e)
Thomas Brand [Sat, 1 Jul 2017 20:53:40 +0000 (22:53 +0200)]
Correctly display region name in context menu
Len Ovens [Sat, 1 Jul 2017 19:27:48 +0000 (12:27 -0700)]
OSC: issue 7176 patch applied. shows plugin descriptors.
Thomas Brand [Sat, 1 Jul 2017 19:29:46 +0000 (21:29 +0200)]
Fix some typos (closes GH PR #356)
Robin Gareus [Sat, 1 Jul 2017 19:25:01 +0000 (21:25 +0200)]
Use Stripable::Sorter in meterbridge
Robin Gareus [Sat, 1 Jul 2017 19:19:28 +0000 (21:19 +0200)]
Remove old gnome-canvas src code.
Robin Gareus [Sat, 1 Jul 2017 19:11:14 +0000 (21:11 +0200)]
NO-OP whitespace & foratting of header files
Len Ovens [Sat, 1 Jul 2017 18:49:08 +0000 (11:49 -0700)]
OSC: add feedback for solo isolate and solo safe to strips (issue 7161)
Len Ovens [Sat, 1 Jul 2017 18:12:42 +0000 (11:12 -0700)]
OSC: add strip type flag for master and monitor to strip list
Thomas Brand [Sat, 1 Jul 2017 16:42:24 +0000 (18:42 +0200)]
NO-OP whitespace (updated GH PR #357)