improve release behavior.
This slows down the release after events like single snare hits as, the gain
reduction only releases to 160 dB rather than to inf.
To properly visualize attack and release we calculate the input level out of
the gain reduction the output level threshold and ratio.
if (output_level >= threshold) { // no expansion
input_level = output_level
} else {
input_level = (gain_reduction - threshold * (1-ratio)) / ratio
}
This fixes duplicate AU presets when adding a new preset.
Presets are kept in a std::map<URI,...> adding a new presets uses
the file-URI as ID. Loaded presets needs to have the same URI.
Unsigned long is 32bit on 32bit systems, besides sampleoffset and start
variables are signed int64_t.
resulting in a compiler error:
integer constant is too large for 'unsigned long' type.
Changing a tooltip resets the timeout. In one particular case,
while rolling, AudioClock::set() is calling set_tooltip() at a rate
faster than the tooltip timeout and prevents tooltip from showing at all
(even if there is no actual change to the tooltip text).
Alas, there is no trivial fix for this UI side and there may be other
such cases. A central check is more than practical.
smf_delete() does not handle NULL, and segfaults instead.
This only crashes with optimized builds.
libsmf will call g_critical() earlier and in that case debug-builds
call UI::handle_fatal() and ask the user to "click to exit".
This fixes VST parameter prop.flags (toggle, integer-step).
VestigeMaxLabelLen is used in various places in libardour, most notably
with effGetParamName.
CoreMIDI ports are dynamic. When dis/connecting a device CoreAudio's
AudioHardware-PropertyListener triggers a callback which can
add/remove ports.
This can not happen concurrently with processing, but it may happen
concurrently with a user creating tracks using Ardour's UI
and/or session-load/setup.