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)
Robin Gareus [Sat, 1 Jul 2017 16:31:55 +0000 (18:31 +0200)]
Robin Gareus [Sat, 1 Jul 2017 15:11:55 +0000 (17:11 +0200)]
FP8: Use Mixer-Order
Len Ovens [Sat, 1 Jul 2017 03:47:42 +0000 (20:47 -0700)]
OSC: include all of select in feedback[13]
Len Ovens [Sat, 1 Jul 2017 03:13:18 +0000 (20:13 -0700)]
OSC: try to prevent race when clearing devices
Len Ovens [Sat, 1 Jul 2017 02:04:09 +0000 (19:04 -0700)]
OSC: test param type in a way that works when optimized too.
Robin Gareus [Sat, 1 Jul 2017 01:10:50 +0000 (03:10 +0200)]
Fix crash when rapidly switching snapshots
ARDOUR_UI::load_session() calls flush_pending() which runs
gtk_main_iteration()s until idle.
If a user selects another snapshot from the sidebar, load_session()
is called again (from a call to load session)
Robin Gareus [Sat, 1 Jul 2017 00:22:44 +0000 (02:22 +0200)]
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.
Johannes Mueller [Sun, 25 Jun 2017 19:21:56 +0000 (21:21 +0200)]
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 :)
Robin Gareus [Fri, 30 Jun 2017 18:02:45 +0000 (20:02 +0200)]
Fix a typo
Robin Gareus [Fri, 30 Jun 2017 18:01:53 +0000 (20:01 +0200)]
Don't invert azimuth & elevation display value
Robin Gareus [Fri, 30 Jun 2017 17:56:40 +0000 (19:56 +0200)]
NO-OP: whitespace
Robin Gareus [Fri, 30 Jun 2017 17:56:01 +0000 (19:56 +0200)]
Remove cruft (ParameterDescriptor sets this)
Robin Gareus [Fri, 30 Jun 2017 17:55:03 +0000 (19:55 +0200)]
FP8: Scribble-strip display preferences
Robin Gareus [Fri, 30 Jun 2017 10:13:21 +0000 (12:13 +0200)]
FP8: Allow to select Plugin Presets
Robin Gareus [Fri, 30 Jun 2017 00:31:36 +0000 (02:31 +0200)]
FP8: don't allow to toggle Channelstrip bypass/enable
Robin Gareus [Thu, 29 Jun 2017 23:59:12 +0000 (01:59 +0200)]
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
Robin Gareus [Thu, 29 Jun 2017 23:56:49 +0000 (01:56 +0200)]
Tweak LV2 float parameter printing
Robin Gareus [Thu, 29 Jun 2017 16:40:51 +0000 (18:40 +0200)]
Don't interpolate&smooth playhead pos during export.
John Emmas [Thu, 29 Jun 2017 09:11:05 +0000 (10:11 +0100)]
Accommodate newly introduced source(s) in our MSVC project (gtkmm2ext)
John Emmas [Thu, 29 Jun 2017 09:10:26 +0000 (10:10 +0100)]
Accommodate newly introduced source(s) in our MSVC project (cairocanvas)
John Emmas [Thu, 29 Jun 2017 09:08:32 +0000 (10:08 +0100)]
Remove ambiguity ('CheckMenuItem' conflicts with an item already existing in MSVC)
Robin Gareus [Thu, 29 Jun 2017 02:40:54 +0000 (04:40 +0200)]
Fix multi-channel delaylines #7409 part 2/2
Robin Gareus [Thu, 29 Jun 2017 02:40:00 +0000 (04:40 +0200)]
Fix send mono to stereo (or N to M; M > N) sends #7409 part 1/2
Robin Gareus [Wed, 28 Jun 2017 22:21:13 +0000 (00:21 +0200)]
Use quotes for bundled library includes
Robin Gareus [Wed, 28 Jun 2017 22:20:55 +0000 (00:20 +0200)]
Use mnemonic-save API for menu-element texts
Robin Gareus [Wed, 28 Jun 2017 21:24:06 +0000 (23:24 +0200)]
Add a convenience MenuHelper c'tor
This is pretty much Gtkmm's
* CheckMenuElem::CheckMenuElem
* MenuElem::MenuElem
except MenuItems are created with bool mnemonic = false;
Robin Gareus [Wed, 28 Jun 2017 16:46:07 +0000 (18:46 +0200)]
Add explicit VideoTimeline change-type, follow up on
f73ce2d
Robin Gareus [Wed, 28 Jun 2017 16:42:10 +0000 (18:42 +0200)]
Reset idle_handler_id (fixes idle zoom -- bug in
265f52535a7)
If pending_visual_change.pending was zero when calling idle_visual_changer
the handler_id was never reset. and the idle-handler was never called
again.
Robin Gareus [Wed, 28 Jun 2017 01:03:05 +0000 (03:03 +0200)]
fix OSX builds (llmath compat)
Robin Gareus [Tue, 27 Jun 2017 18:28:45 +0000 (20:28 +0200)]
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.
Robin Gareus [Tue, 27 Jun 2017 18:12:03 +0000 (20:12 +0200)]
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)
Robin Gareus [Mon, 26 Jun 2017 17:40:05 +0000 (19:40 +0200)]
Include file's sha1 in export-report image
Robin Gareus [Mon, 26 Jun 2017 17:39:40 +0000 (19:39 +0200)]
Add convenience fn to compute a file's sha1sum
Tim Mayberry [Mon, 26 Jun 2017 07:04:18 +0000 (17:04 +1000)]
Fix friend declaration in WaveView code for non-c++11 builds
Tim Mayberry [Thu, 16 Mar 2017 04:12:05 +0000 (14:12 +1000)]
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
Tim Mayberry [Mon, 27 Mar 2017 03:26:58 +0000 (13:26 +1000)]
Changes to Editor::visual_changer to support Item/Canvas::prepare_for_render
This is necessary to allow calculation of correct intersection of visible
canvas area and items for the new Item::prepare_for_render() API.
samples_per_pixel must be set first to calculate the new horizontal canvas
position in Editor::set_horizontal_position and then
WaveView::set_samples_per_pixel will eventually call
WaveView::prepare_for_render for those items that are visible on the new canvas
position at the new position.
Or if there is not a change to zoom state then call Canvas::prepare_for_render
explicitly.
Also changes so that each method is only called once during
Editor::visual_changer
Tim Mayberry [Tue, 28 Mar 2017 05:52:28 +0000 (15:52 +1000)]
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.
Tim Mayberry [Tue, 28 Mar 2017 04:05:03 +0000 (14:05 +1000)]
Add Canvas::get_last_render_start_timestamp method
Tim Mayberry [Sat, 1 Apr 2017 13:33:16 +0000 (23:33 +1000)]
Only call Gtk::Widget::queue_draw_area in canvas when item and visible area intersect
Refactor GtkCanvas::request_redraw to use Rect::intersection
Tim Mayberry [Sat, 1 Apr 2017 13:02:49 +0000 (23:02 +1000)]
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.
Tim Mayberry [Sat, 1 Apr 2017 11:33:59 +0000 (21:33 +1000)]
Coalesce visual changes to canvas/items and allow canvas to render
First visual change will be processed as normal and then blocked until the
canvas renders the change. If further visual changes need processing then
Editor::pre_render callback will schedule another expose/redraw/render.
This prevents an issue where idle_visual_changer is called many times in
response to events(keys/motion/etc) but the canvas does not get a chance to
render any but the last one which results in a big pause/jump.
This results in a more responsive canvas and in particular a smoother and more
predictable zooming experience.
Tim Mayberry [Mon, 13 Mar 2017 10:45:13 +0000 (20:45 +1000)]
Add PreRender signal to the canvas
Emitted by the canvas immediately before rendering.
Tim Mayberry [Mon, 13 Mar 2017 03:31:26 +0000 (13:31 +1000)]
Whitespace fixes in canvas.h
Tim Mayberry [Mon, 13 Mar 2017 12:00:32 +0000 (22:00 +1000)]
Tweak/Change the zoom scale in RulerZoomDrag
This multiplier really should be based on the "responsiveness" of the
canvas..or something. I think this is an improvement for more complex sessions
with many regions.
Tim Mayberry [Mon, 13 Mar 2017 09:31:37 +0000 (19:31 +1000)]
Output the setting of the --no-threaded-waveviews option during configure
Robin Gareus [Sun, 25 Jun 2017 20:03:42 +0000 (22:03 +0200)]
Allow saving state w/o backend
Connections are remembered by ARDOUR::Port to re-establish at load.
Robin Gareus [Sun, 25 Jun 2017 18:53:47 +0000 (20:53 +0200)]
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.
Robin Gareus [Sat, 24 Jun 2017 23:56:53 +0000 (01:56 +0200)]
Create a deep-copy of MIDI sources when saving snapshots
Robin Gareus [Sat, 24 Jun 2017 23:23:03 +0000 (01:23 +0200)]
Extend API to allow calling new_midi_source_path() with source_lock held
This is in preparation for cloning MIDI-sources during snapshot save.
Len Ovens [Sat, 24 Jun 2017 20:13:53 +0000 (13:13 -0700)]
OSC: simplify GUI and make less error-prone
Len Ovens [Sat, 24 Jun 2017 01:08:04 +0000 (18:08 -0700)]
OSC: Allow /bank_up to accept -1 as well as 1 so encoder can work.
Len Ovens [Sat, 24 Jun 2017 00:34:22 +0000 (17:34 -0700)]
OSC: make sed_fader work with banking too.
Len Ovens [Sat, 24 Jun 2017 00:07:11 +0000 (17:07 -0700)]
OSC: Add master_send_enable for MB
Len Ovens [Fri, 23 Jun 2017 22:30:01 +0000 (15:30 -0700)]
OSC: redo math for redux control with fewer calls.
Len Ovens [Fri, 23 Jun 2017 22:03:37 +0000 (15:03 -0700)]
OSC: Messages too fast at bank_change/refresh slowed down.
nickolas360 [Fri, 23 Jun 2017 21:26:33 +0000 (14:26 -0700)]
Add missing `echo` in ardev_common.sh.in
Robin Gareus [Fri, 23 Jun 2017 23:22:17 +0000 (01:22 +0200)]
Fix metronome + capture alignment for Mixbus
Robin Gareus [Fri, 23 Jun 2017 21:42:42 +0000 (23:42 +0200)]
NO-OP: whitespace
Robin Gareus [Fri, 23 Jun 2017 21:40:19 +0000 (23:40 +0200)]
Mixbus GUI updates (VCA layout, no panners)
Len Ovens [Fri, 23 Jun 2017 20:12:43 +0000 (13:12 -0700)]
OSC: Fix math error in send fader feedback
Robin Gareus [Fri, 23 Jun 2017 16:15:50 +0000 (18:15 +0200)]
amend
5e5f7a55; re-add wrongly removed variable
Robin Gareus [Fri, 23 Jun 2017 15:39:09 +0000 (17:39 +0200)]
leave a hint for clang's static analyzer
Robin Gareus [Fri, 23 Jun 2017 15:37:19 +0000 (17:37 +0200)]
Remove Automation Types that should never have existed.
Robin Gareus [Fri, 23 Jun 2017 13:58:50 +0000 (15:58 +0200)]
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.