13
0
Commit Graph

15536 Commits

Author SHA1 Message Date
2fb260e6e8
Update Control flags of Aux Sends
This fixes old session-state of sessions saved after
6.0-pre0-3039-g93180ceea9 and before 6.0-pre0-3459-g587fc50059.
It's mainly relevant for Mixbus6.0
2020-02-20 23:11:04 +01:00
587fc50059
Fix Inline-control visibility state
This fixes an issue when copy/pasting plugins or aux-sends from
one track to another. After copying the processor, the state
is copied, however the Controllable state did save
the InlineControl flag, so this as lost.

(amend 93180ceea)
2020-02-20 23:06:55 +01:00
57598acbcf remove unused members 2020-02-20 12:53:57 -07:00
2398f6127f fix up apparent design thinkos in US2400 key binding handler 2020-02-20 12:53:57 -07:00
444ef73c7d fix up apparent design thinkos in Mackie key binding handler 2020-02-20 12:53:57 -07:00
938e65f12a use MIXBUS approach to User button for Faderport (it's just a button, not a modifier 2020-02-20 12:53:57 -07:00
b5f2aed234 Faderport(1): fix pan_azimuth direction by setting Rotary flag. 2020-02-20 12:25:51 -06:00
ef5fddd8b5 MCU: fix pan_azimuth direction by setting Rotary flag. 2020-02-20 12:25:51 -06:00
4f5076a81a controllable::{get_set}_interface() are convenience wrappers for funcs that need the Rotary flag set 2020-02-20 12:25:51 -06:00
43bed39d30
Reset MIDI-control when a given ctrl is not available
This fixes an issue with "/route/eq/freq/0 S1":
When a newly select strip that does not have a EQ
(e.g. mixbus or master), the control from the previously
selected strip is used.  -- Reported by tavasti on IRC.
2020-02-20 19:13:58 +01:00
4b10beec08 change transport API, session API, transportFSM API to move reverse management and motion state (partially) into TFSM 2020-02-20 00:25:25 -07:00
efd6a856f8 add comment 2020-02-20 00:22:17 -07:00
c2c41b38d0 when seeking in disk reader, adjust start of read (if possible) to allow some reverse internal seek allowance 2020-02-20 00:22:09 -07:00
4037162963 fix test to decide if we can skip disk buffer refill because we're close enough (read direction must match) 2020-02-20 00:21:31 -07:00
e468e68c23 variable name change (ffa ... 2nd f was "frame" => fsa ... s is "sample") 2020-02-20 00:20:45 -07:00
243b3f0983 improve comments 2020-02-20 00:19:41 -07:00
1e9af51f36 correctly track is disk read (audio) should be forwards/backwards, and what was done last time we read from disk 2020-02-20 00:19:22 -07:00
7ca068f8d5 change variable name to be more meaningful/indicative 2020-02-20 00:15:32 -07:00
53139a93d5 remove debug output 2020-02-20 00:15:10 -07:00
ca3714bccf NOOP: fix brace/newline use 2020-02-20 00:09:32 -07:00
d1b335b36e expose PlaybackBuffer::reservation and make the member const 2020-02-19 23:10:13 -07:00
58123c969b remove unused method 2020-02-19 23:09:51 -07:00
998b88b521 when inside Route::set_state() and calling set_name(), call the virtual method, rather than Route::set_name()
Without this, nothing in Track::set_name() is called, which means that tracks created from templates
do not get their name set appropriately
2020-02-19 19:21:11 -07:00
585b61e58b fix paren/newline formatting 2020-02-19 19:21:11 -07:00
89bd6cafa0
Force Disk-Reader channel count to match Disk-Writer I/O.
This handles some special cases where a plugin is added after
the disk-writer but before the disk-reader.

The plugin may add/remove ports (e.g. an instrument: MIDI to audio,
or some stereo to mono processors). However we need to ensure
that any data that is recorded will be played back.

This is a new take replacing b2bc934e2.
2020-02-20 01:57:14 +01:00
c8f1146124
Revert "fix behavior of DiskReader when moved after an instrument"
This reverts commit b2bc934e21.

The commit does causes issues when a user manually removes channels:
The disk-reader's ::can_support_io_configuration() at first ignores
the user's request, forcing the output channel count to match the
DR's current channel config.

However, when configuring the DiskReader after that, channels is updated
to match the new input-count.

Even though the DR itself only plays back using the confgured I/O,
all processors after it still use the old channel count.

Only a later, second re-configuration step will apply the actual removal
to plugins and port.

PS. the original commit was mainly intended to fix a crash when
adding an instrument plugin *between* disk-writer and disk-reader
on a MIDI track.
2020-02-20 01:57:11 +01:00
4337e2b054
NO-OP: remove old comment and debug code 2020-02-20 01:57:07 +01:00
52f88f6814
Fix crash on buffer override of N/A data-types
DiskReader::refill_audio and DR::run() do check if a given playlist
is available. This is required for upcoming changes to set
DR channels to unconditionally match DiskWriter.
2020-02-20 01:57:01 +01:00
28a37c6b9a
Fix declick at transport start for multi-channel tracks 2020-02-20 01:48:57 +01:00
8d557dd56a fix old write source names being used after a track is renamed 2020-02-19 15:07:42 -07:00
95773f6bb7 fix compiler warning about dynamic_cast<T*>(ptr_to_T)
This is in a Route method, so it is obvious that dynamic_cast<Route*>(this) will return true
2020-02-19 15:07:42 -07:00
ad402e76af remove "destination_sample" from API for Session::set_transport_speed()
This was a leftover from changes made for Tracks Live, related to
the concept of an auto-return preference. We don't use this anywhere in Ardour
or Mixbus, and the concept should eventually be removed entirely.
2020-02-19 15:07:42 -07:00
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
d6315618da Enumerate the polarity buttons from the polarity processor itself, not the Input count. 2020-02-18 20:15:05 -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
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
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
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