... on Ardour5.
On MacOS g_dir_make_tmp() does not return the canonical path. Thus, exported
template archives end up with wrong entry paths. This has been fixed by
e52bdc55ad for exporting templates. However, template archives that have been
exported on Ardour5 are not affected by the fix. Therefor we need a workaround
for the case we are importing legacy template archives from Ardour5.
This reverts commit fdf0db02a0.
Even though `gdk_pixmap_unref` is deprecated, it is the correct way
to free `gdk_pixmap_new` objects.
This fixes a memory leak and glib warning:
GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
PS. Eventually this pixmap should be replaced by a cairo surface.
By default Apple uses a private TMP folder.
g_dir_make_tmp() returns `/var/folders/...` while the real
absolute path is `/private/var/folders/...`.
This caused a problem when the tmp-prefix is chopped off when building
the archive.
This removes various duplicate code-paths leading to midi-model
updates, and expensive context-menu rebuilds. This significantly
speeds up MIDI track creation.
The previous version had various issues, in particular
when creating Tracks with an instrument, the RouteUI was not
available when the signal was emitted (likely caused by recent
ee-work of Audio+MIDI and Tape track removal).
However as side-effect fanned-out tracks/busses may now
be ordered before the new instrument route.
This also fixes an edge case of multiple fan-out in case
there is more than one RouteUI instance (mixer, editor-mixer,
meter-bridge).
* Always use InstrumentInfo for lookups.
Remove name lookups that directly used gui_property()
* Use set/get_gui_property() only to save/restore state,
push custom selection to InstrumentInfo.
* Only store custom selection, use unset for "default"
default = plugin-provided (if available) otherwise general-midi
Most of Ardour's GUI queries route->instrument_info() for MIDNAM.
This is a minimal invasive hotfix to update the PatchChange
dialog and patch-names on the timeline when the MIDNAM selection
changes.
This got lost in de74cca6b8.
If the user has an audio interface with 32 inputs, there is the danger, that
they click through the route template list and hit "Generic Audio Track" which
then sets the number of routes to be added to 32. When they click back to
e.g. "Audio Tracks" this number remains at 32. So they will accidentally add 32
audio tracks although they wanted just one. Somewhat inconvenient.
By this commit we remember the number of routes to be added, when it is set by
a lua template and thus can set it back when the user clicks back on a route
type that does not set it.
It makes no sense to every align a region start/sync point during a drag or alignment operation
with the last sample of another region. It only makes sense to align with the position immediately
after the last sample of the other region (e.g. directly sequencing regions).
Since rebuilding peaks does not call drop-references, the WaveView
is not explicitly released. and ArdourWaveView::WaveView
keeps a shared pointer reference to the AudioRegion.
This also fixes a memory leak, waves, tmp_waves store C++ pointers,
not shared pointers. Explicit delete is required
* remove color: increase contrast, do not use red/green
foreground because it does no work with various themes
* do use red background to alert users
* use italics for labels heading
* increase spacing between elements
* use mono-space font with DSP load (fixed with) up to 99%
* Fix translations, use compose strings
Using the mouse/dropdown to change octaves can lead to stuck
notes when keys are held. This is because the most recently
pressed key, sends key-repeat events.
Using Arrow keys to switch octaves does not cause this problem,
because the most recently pressed key will be an arrow key.
PS. Changing Chromatic Transpose while holding keys still
can lead to stuck notes. This will need a different fix.
Otherwise the Simple QWERTY layout is loaded in the Virtual MIDI Keyboard
regardless of what is set in
Preferences->MIDI->Virtual Keyboard->Virtual Keyboard Layout
There are two problem cases:
1) the drag "fake-located" the playhead, but a redraw happens before the locate itself finishes.
2) the transport emits Session::PositionChanged from Session::non_realtime_stop(), even though
this is occuring in the "middle" of the locate process (we stop first).
In the first case, the drag code sets _pending_locate_request, since we need this to be true even
before the queued SessionEvent for the locate has been processed. So to deal with this case
In the second case, we use Session::locate_initiated() to decide if we're in the middle of a locate.
The drag code expects coordinates in canvas coordinates, but we were not translating them at the editor level (canvas event handling
does do this, but cannot affect the situation if the event falls through to the editor)
This always leads to feedback situations. It may be acceptable
via the "allow feedback" option and accepting 1 cycle delay.
yet Aux-sends from the master bus are just bad practice,
and no found on any mixing desk.
Sends do not have any ports, so a unique name is not required.
Since 82541b33a4 custom aux names are kept when setting state.
Previously this "worked" because set_state() change the name
of the new aux-send to the name of the target-bus.
build_control_ui() special cases `AutomationControl mcontrol = NULL`
to create read-only output display. So Iterating over
Evoral::Control that are not AutomationControl must not crash.
This fixes a bug introduced in a44fecb740.
"Edit with generic controls" caused crashes for plugins with ctrl outs.
Note that this is done at the GUI level, might need to double check if there are
other paths into a "save" that should be covered. Control surfaces use the action, but
Lua comes to mind
Suprisingly hard/irritating. Thanks, GTK! (Gtk::Entry::set_text() emits all
the same signals that actual user interaction can trigger, except for key events)
removal of tape tracks removed an intermediate argument in the argument list; presence of default args for the
last two arguments and implicit conversion from int->bool prevented the compiler from complaining
about any existing calls.
This supplements/extends a54b000a70
THe original determinant of width was:
double const width = ((at->mode() == Destructive) ? 2 : 0);
the conditional is always false now, so the width is a constant (zero)
Previously the dead-zone was too small (1/360). The mono/balance
panner GUI has a throw of 180 deg L<>R.
Also snapping to center didn't allow to smoothly move out of the
center. The accumulated_delta as directly applied. This caused
jumps by 4.5. degrees.
This commit reduces the deadzone to 1 degree of the azimuth
around the center.
Audio+MIDI tracks were just MIDI tracks with an additional
audio input, and do not directly allow use of vocoders (an
instrument is loaded by default).
For pitch-correction or similar use-cases one would prefer an
audio-track (main data) with MIDI only being used as control-input.
Ardour 5/6 pin-connections and side-chain offer a much nicer
workflow for this setup.
Alternatively one can get those tracks-types by manually adding
an input port to an existing track, and creating a custom template.