13
0
Commit Graph

29052 Commits

Author SHA1 Message Date
f62fb6dd98
Remove unused dummy control class
PBD::IgnorableControllable() is no longer used.
It also was problematic, because in every case where a
Controllable is required, min/max range and usually also
get/set value are significant.
2020-02-19 17:03:46 +01:00
7f2a59ca66
Fix Latency GUI numeric entry 2020-02-19 16:58:06 +01:00
4f9a91cab8 Prompt user when deleting a VCA (amends 01c6f5)
Editor::remove_tracks expected the VCA to be selected, but right-click does not force selection in a VCA strip.
2020-02-18 20:41:23 -06:00
d6315618da Enumerate the polarity buttons from the polarity processor itself, not the Input count. 2020-02-18 20:15:05 -06:00
01c6f55867 Prompt user before removing a VCA in the mixer window. 2020-02-18 20:14:00 -06:00
720664d9d3
Fix loading send gain automation
This cleans up various issues that have been accumulated over the past
and fixes bugs introduced in d4e023e1 and e31f5d99.

Previously GainControl as saved as part of the Amp, however the
automation was saved via Send (is-a Automatable).

In d4e023e1cb, the GainControl was changed a "BusSendLevel"
parameter, but AutomationList was not updated. This prevented
loading existing automation (control parameter was not found).
2020-02-18 21:14:52 +01:00
John Emmas
7c35f45681 Add/remove source(s) in our MSVC project (gtk2_ardour) 2020-02-18 11:21:38 +00:00
60a2406056
GUI Dialog to inform the user about missing files
So far this is only used for MIDI, missing audio files are
already handled by asking a user to locate them.
The same approach doesn't work for MIDI, since there cannot be
externally referenced (embedded) .mid files (since MIDI is destructive).
2020-02-18 01:29:35 +01:00
6f205f857b
Replace missing .mid files with silence
This fixes a crash: missing playlist due to missing .mid,
and retains regions for missing MIDI files.

As opposed to missing Audio, we cannot use a SilentFileSource,
because MIDI files are destructive.

This also adds an API to query missing files that have been replaced
with silence to report them to the user.
2020-02-18 01:26:20 +01:00
2ac90f5598
LV2: disable unofficial LV2UI_Request_Parameter
This API is not official, and the upcoming official API differs.
The source-code is left in-place since most of it will be
re-usable as-is, regardless.
2020-02-15 14:15:29 +01:00
4c7cde0242
Fix seamless looping w/split-cycles
This fixes the following (loop-lennth > internal_playback_seek
length. Due to read-ahead on some cycles the following can happen
---
Loop From: 3528000 To: 3880800  (len: 352800)
start-sample: 3880971 playback_sample: 3528171 nframes: 96
start-sample: 3880875 playback_sample: 3528075 nframes: 192
---
which resulted in disk_samples_to_consume == 0;
2020-02-14 18:45:13 +01:00
1341e18cac
Fix potential deadlock (session-template with latent procs) 2020-02-14 18:42:45 +01:00
5794d21a76
Fix cross-compile linking (arm-linux ld)
Explicitly specify required libraries (waf does no longer
forward .uselib dependencies of libraries used by .use).
This leads to undefined symbols.
2020-02-14 00:20:45 +01:00
72bf12219e
M: Make edit_aux_send insensitive
Mixbus does not have a working aux-panner and also no "Aux" button
on Busses.
2020-02-13 22:25:32 +01:00
f29e5ea7ab
Leave processor box sensitive when editing aux-sends
This is required to toggle the strip to revert from aux-view
to the main route using the aux-send processor itself.

Discuss:
Perhaps this should be reverted, and ProcessorBox::edit_aux_send()
be removed: It is currently possible to create various
inconsistent mixer-states.

* use "Aux" on a Bus, then double-click some Internal-Send to
  revert strips. But Aux remains active
* Removing sends while "Aux" is active does not disable Aux.

If the processor box was insensitive those issues won't be present.
However it is convenient to use double-click on the editor-mixer to
access a send's panner ...
2020-02-13 22:24:24 +01:00
Jan Lentfer
d7fed7c52e
LCXL: make sends assignable for 32C
* add an option to the controller configuration gui
      to assign the 3x2 send banks in mixer mode
      to either the upper (1-6) or lower (7-12) Mixbus sends
    * This was a user request to better support the workflow
      of the CoMondo Mix system
2020-02-13 18:32:41 +01:00
45ff356819
Fix Mixbus well-known filter controls (HP/LP freq) 2020-02-13 17:21:38 +01:00
Jan Lentfer
b9b6a57245 LCXL: fix pan for Mixbus device mode, too 2020-02-13 09:53:38 +01:00
7e25298721
FP8: fix direction of panner bar on scribble-strip
(amend 4f90bd6298, see also c663a2d8ef)
2020-02-13 03:13:30 +01:00
3cb4678bb3
FP8: don't send non-ASCII chars to scribble-strip
In particular the degree sign (\u00B0) used by Mixbus' panner
caused issues.
2020-02-13 03:12:14 +01:00
46a6f47362
Address sidechain-port name uniqueness
[Re]name sidechain port directly when a plugin is added.

Usually plugins are constructed without an Route (owner is unset).
PluginInsert c'tor may already create a side-chain port, at the
time of construction the sidechain port will be created using
the port-name "toBeRenamed".

Previously the plugin had to be added to a route using "add_processor",
in order to set a unique name, before a new plugin with sidechain
could be constructed.

ProcessorBox::use_plugins() did that in the correct sequence,
however there may have been cases where this didn't work, and
Route::add_processors() was called directly..
2020-02-13 00:47:18 +01:00
Jan Lentfer
260e7ad5a9 LCXL: Make the pan fix nice again 2020-02-12 21:37:52 +01:00
c321bc82bb
FaderPort8: Don't lock shift, when using shift + encoder 2020-02-12 20:31:10 +01:00
4f90bd6298
Fix Faderport 2/8/16 pan azimuth knob direction
See also c663a2d8ef
2020-02-12 20:12:08 +01:00
6f755c3c02
Fix loop-fade and de-click buffersize calculation
Exponential approach to zero:
     1 / exp(t) == exp (-t)
we "stretch" it by a time-constant "c":
        gain(t) = exp (-t * c)

To find the time t, at which the exponential approach reaches gain "g":
                                  exp (-c * t) = g
take the log of both sides:  log (exp (-c * t) =  log (g)
since  log (exp (x)) == x :               -c t =  log (g)
divide by -c              :                  t = -log (g) / c
set g = 1e-5 and c = _a/sr and we get:       t = -log (1e-5) / (_a/sr)

The iterative approach using g += c * (target_gain - g);
converges faster than the exact exp() calculation.

Except with 32-bit float, if target-gain is 1.0f and "c" is small.

With 32bit float (1.0 - 1e-5) = .9999900 is represented as
   sign: +1 | mantissa: 0x7fff58 | exponent: 126
there are only 126 "steps" to 1.0. Rounding of the lowest
mantissa bit does matter. We have to assume worst-case,
and increase the required loop_fade_length buffersize.

vs. approaching 0, where there are over 2^110 steps between
zero and 1e-5.
2020-02-12 17:28:53 +01:00
f477dd088c
NO-OP: use #define for de-click + fade gain coefficient 2020-02-12 17:28:53 +01:00
cc4aeb1f40
Prevent out-of-bounds array access 2020-02-12 17:28:53 +01:00
79f0ad0533 fix missing MIDI playback by using correct (expanded) logic in DiskReader::declick_in_progress()
If use_transport_fades() is false, then the declick_amp will have its gain always set to the current target (no declick).
Therefore only testing if it has reached zero is not enough, we need to check if we are declicking at all.
2020-02-12 09:23:39 -07:00
John Emmas
a463a1e0ea Revert commit #39975dc3c6 from Feb 7th
'using namespace ARDOUR;' is needed for the MSVC build.

(I guess it could be enclosed by a #ifdef if it's causing issues for the gcc build)
2020-02-12 09:56:29 +00:00
48e59dab90 reverse occurence order of "General MIDI" and "MIDI" in the generic MIDNAM file
General MIDI now comes first and so is used by default when using "Generic"
2020-02-11 22:10:02 -07:00
0d1eb8c96c expand comment 2020-02-11 17:40:38 -07:00
a48a2b26de remove unnecessary code
There's no reason to store the first device mode in a gui property if the model is also not a gui property
2020-02-11 17:40:07 -07:00
fac8d84786 move the point of adding a new MIDI track until *after* the instrument is added
This seems ripe with all kinds of subtle breakage potential. Sigh.
2020-02-11 16:46:30 -07:00
9d60197ffb remove unnecessary code
If there's no GUI property for the MIDNAM model name, and the plugin has no MIDNAM, there's no reason to set the property to the default

It will pick up the default ("Generic") during update_patch_selector() calling into model_changed
2020-02-11 14:16:47 -07:00
ca28404a2a NOOP: line unwrapping and vertical spacing 2020-02-11 13:59:05 -07:00
de74cca6b8 further attempts to rationalize MIDNAM mess
Attempt to re-use GUI property for MIDNAM device mode, and if it doesn't exist, use the first from the model's device mode list.

Also require at least one device mode in the MIDNAM file (via assert) - consider anything else to be malformed
2020-02-11 13:41:44 -07:00
Jan Lentfer
cc7eca7453
LCXL: Adopt pan knob behaviour
* "left/right" changed in A6, adopt for this
    * add a pick_up_rev function to honour this
2020-02-09 23:34:20 +01:00
beaa6a7ae4 pt_import: Bump thread pool constant from 64 to 2048 to prevent import crash 2020-02-09 17:55:48 +11:00
8264865dd8 ptformat: Update to upstream 55f08d8 (simplify version detection) 2020-02-09 17:55:48 +11:00
4c29eb5b6a
Add missing include for compat (memcpy needs string.h) 2020-02-08 21:27:57 +01:00
39975dc3c6
Reduce used namespace
This partially reverts 40cca52b, this code is only
using ARDOUR::Session and nothing else from ARDOUR.
2020-02-07 23:14:48 +01:00
d5c1ad805d NOOP: add whitespace/blank line 2020-02-07 12:20:11 -07:00
46277acb40 Fix incorrect assignment of MIDNAM device mode 2020-02-07 12:20:11 -07:00
e93150cb3f NOOP: remove line wrapping 2020-02-07 12:20:11 -07:00
John Emmas
40cca52bbb Changes needed for building with MSVC
Mostly these are to do with TLSF which I hadn't in fact been building!! Hopefully there won't be any problems for the gcc builds.
2020-02-07 11:27:22 +00:00
8242478da5 try to fix awful confusion and misbehavior for plugin-provided MIDNAM situations
We do not store the MIDNAM model as a GUIObject property if the using the plugin-provided MIDNAM. Selecting a different MIDNAM for
the plugin should now result in that choice being saved/restored correctly.

This all feels crazily complicated, but I don't want to change more of the architecture at this time
2020-02-06 14:43:58 -07:00
55d158816e NOOP: avoid unnecessary and distracting line wrapping 2020-02-06 14:43:58 -07:00
d4dd756bf6 always use plugin's ::midnam_model() method to provide the name of a custom, plugin provided MIDNAM document 2020-02-06 14:43:58 -07:00
39e0c0a084 add AxisView::remove_gui_property() 2020-02-06 14:43:58 -07:00
c791d5970f add GUIObjectState::remove_property() 2020-02-06 14:43:58 -07:00