Commit Graph

17416 Commits

Author SHA1 Message Date
Ben Loftis
398a1efbd5 US2400: Fix send levels from joystick ("surround pan" on mixbuses 11,12) (Mixbus32C only) 2021-08-03 10:38:18 -05:00
Ben Loftis
0b5ab1b570 US2400: Fix direction of pan knob LEDs 2021-08-03 10:38:18 -05:00
Robin Gareus
5c9f5ae895 Prevent DelayLine::set_delay() while processing
It was possible that auto-connect-thread or GUI thread called
DelayLine::set_delay without acquiring the process-lock.
Changing the delay while processing is not supported and
can cause glitches.

backtrace:
```
DelayLine::set_delay
Send::update_delaylines
Send::set_delay_out
InternalReturn::set_playback_offset
Route::update_signal_latency
Session::update_route_latency
Session::update_latency_compensation
Session::auto_connect_thread_run

```
2021-08-03 16:12:25 +03:00
Paul Davis
657743a8e4 libardour: Region::get_cue_markers() should only return markers within the region boundaries, whether abs(olute) position is requested or not 2021-08-02 12:58:40 -06:00
Paul Davis
68850892b8 NO-OP: make logical statement precedence more visually obvious 2021-07-26 17:27:43 -06:00
Paul Davis
f194e1859d remove debug output 2021-07-26 17:27:43 -06:00
Paul Davis
cd7c222942 Do not queue TransportStateChanged events (and thus signals) when locating from the end of a loop.
There is no event processing after the locate, and so the event that is (was)
queued at the loop start will not be processed, and each time we reach the
loop end, we will try (and fail) to queue an identical event (fail because
duplicate events are not allowed). We don't need this event (or signal) at
all, because locates (and then ::start_transport() while looping do not
represent a state change that any UI needs to know about.
2021-07-26 17:27:43 -06:00
Ben Loftis
d7e9043c01 Register some newer SessionEvent enums 2021-07-26 12:27:52 -05:00
Robin Gareus
129b59b90f VST3: prefer linear knob movement
The previous idea was to follow Ardour's default
 \delta val = \delta Y - \delta X

In reality it turns out that this is better represented
with kLinearMode.

VST3 offers the following:
  * Circular with jump to clicked position
  * Circular without jump to clicked position
  * Linear: depending on vertical movement

The first is right out. Value changes need to be
continuous. The last explicitly mentioning vertical
movement was also somewhat discouraging,
however most plugins don't take it literally and allow
linear X/Y movement.
2021-07-24 22:38:08 +02:00
Robin Gareus
37c475138f Fix windows builds (_pid_t conflict in unistd) 2021-07-23 02:02:59 +02:00
Robin Gareus
8a41931ff4 Print note when stacktrace is too short 2021-07-23 01:43:18 +02:00
Robin Gareus
92d8a270a8 Early exit plugin-scanner on crash
This also prevents the macOS crash-reporter from showing up.
2021-07-23 01:37:46 +02:00
Robin Gareus
789e0f8dbc Reduce default scan-timeout to 15 sec 2021-07-22 23:06:17 +02:00
Robin Gareus
3480fb5bd6 Remove old, unused preference 2021-07-22 22:45:19 +02:00
Robin Gareus
b60e4e3214 Rename "enable AU" config variable 2021-07-22 22:43:08 +02:00
Robin Gareus
59588d4e3a Fix plugin-scan cancel individual scan operations
PluginScanMessage must be called after re-setting
reset_scan_cancel_state(), otherwise canceled () is set
incorrectly when emitting the signal.
2021-07-22 21:44:43 +02:00
Robin Gareus
a7389f9e10 Fix macOS builds (amend 6c6f2df8) 2021-07-22 19:48:24 +02:00
Robin Gareus
607af10012 PM: don't print ignore-lists to log (use PM-GUI) 2021-07-22 17:29:56 +02:00
Robin Gareus
8482172bd6 Remove old VST scan config variable 2021-07-22 17:21:27 +02:00
Robin Gareus
85d509a292 PM: change scan timeout to from out-out to opt-in 2021-07-22 17:20:08 +02:00
Robin Gareus
572138ba40 Prepare for new plugin scan timeout 2021-07-22 17:20:08 +02:00
Robin Gareus
6c6f2df849 Honor "floating windows are dialogs" for tearoffs 2021-07-22 05:45:30 +02:00
Robin Gareus
8869782c28 Cleanup plugin-scan API, allow to cancel individual scan 2021-07-21 23:04:47 +02:00
Robin Gareus
38a4bb6736 Fix prev commit (properly stop pulse) 2021-07-21 05:56:42 +02:00
Robin Gareus
03a17df68c Pulseaudio: tweak freewheel recovery
Always cork stream before calling pa_stream_flush.
2021-07-21 05:03:54 +02:00
Robin Gareus
853b2a7f52 Make CoreaudioSource work again
existence_check() calls prevent_deletion() -> mark_immutable()
which since a4d7b45fe0 calls close().

So the file needs to be open()ed after the existence check.
2021-07-21 02:22:25 +02:00
Robin Gareus
9ae2e1044a Prefix take name (to capture file name) by default 2021-07-20 23:28:04 +02:00
Ben Loftis
ba7237c152 Playlist UI Tweaks: Fix some bugs related to old playlists without pgroup_ids 2021-07-20 14:59:47 -05:00
Robin Gareus
a5220568af Ensure each source has a corresponding whole-file region
This fixes loading old sessions that had an empty source-list
(previously the source-list showed sources, not whole-file regions).
2021-07-20 15:35:16 +02:00
Robin Gareus
5a9fde4a0b Region loudness normalization/analysis #8777 2021-07-20 04:53:48 +02:00
Todd Naugle
a22fe3cdc8 Amend 285bb4ac7f: remove incomplete code 2021-07-19 20:32:11 -05:00
Todd Naugle
285bb4ac7f Mackie Control : Improve debug trace output by skipping meter write output 2021-07-19 12:25:27 -05:00
Todd Naugle
581589f080 Mackie Control: Don't call port write directly since it bypasses active chk
This keeps the master fader from sending midi output before everything
is initialized.
2021-07-19 12:24:36 -05:00
Robin Gareus
a6ef7df1fd Fix TSC signal emission (monitoring and automation)
TransportStateChange() triggers various updates.
However at the time the signal is handled
`transport_rolling()` and/or `transport_state_rolling()`
may still return false.

This fixes incorrect In/Disk display on tracks (RouteUI)
and incorrect automation write-pass handling,
when toggling stop/play.
2021-07-19 19:17:57 +02:00
Robin Gareus
c5e5659022 Fix crash when demangled symbol is n/a
std::string foo (NULL) can throw a std::__throw_logic_error
which was not caught.
2021-07-19 18:26:22 +02:00
Robin Gareus
572a69758a Min playback speed is +/- (100/16)%
This is for at least two reasons: transport will effectively
move with 32 samples * 6.25% = 2 samples per cycle and the
resampler cannot up/downsample a factor of > 16 with
reasonable quality.
2021-07-19 18:26:19 +02:00
John Emmas
b454ff0e90 Add/remove source(s) in our MSVC project (libardour and gtk2_ardour) 2021-07-19 11:27:02 +01:00
Paul Davis
e01f898f3b libardour: adjust names for default speed APIs and make ::set_default_play_speed() private 2021-07-18 19:48:13 -06:00
Paul Davis
3bdf009e11 libardour: provide infrastructure for requesting default play speed 2021-07-18 19:40:21 -06:00
Robin Gareus
89a4c98bfd Allow vari-speed control via scroll-wheel 2021-07-19 02:57:45 +02:00
Robin Gareus
7f011f271f Ignore symlinked, duplicated VST plugins
This happens with e.g. the IEM suite when a user has both
/usr/lib/vst and /usr/lib/lxvst in the search path.

The same plugin was found twice due to symlinks:

```
/usr/lib/lxvst/iem.at -> ../x86_64-linux-gnu/iem-plugin-suite/vst
/usr/lib/vst/iem.at -> ../x86_64-linux-gnu/iem-plugin-suite/vst
```

And then blacklisted itself:
> "Ignoring plugin 'MultiBandCompressor'.
> VST-ID conflicts with other plugin 'MultiBandCompressor' files:
> '/usr/lib/x86_64-linux-gnu/iem-plugin-suite/vst/MultiBandCompressor.so' vs
> '/usr/lib/x86_64-linux-gnu/iem-plugin-suite/vst/MultiBandCompressor.so'
2021-07-18 01:22:26 +02:00
Robin Gareus
adf93c85fe PM: scan-timeout count-down even if timeout is stopped
This allows the GUI to determine for how long the scanner
ran after the timeout was canceled. Count up to 90 sec.
2021-07-17 01:02:21 +02:00
Robin Gareus
82c536ec81 Fix test/profiling tools
* use dummy-backend (don't expect engine to be running)
* add required TestUI / Receiver

Lots of regions: add scope to prevent SessionHandleRef
  existing across session deletion

RunPC: take process-lock before processing, prevents various
  assert() and concurrency issues.
2021-07-16 18:47:13 +02:00
John Emmas
efb0d077d1 Substitute %T when calling 'strftime()' (%T isn't supported by all compilers) 2021-07-16 12:29:07 +01:00
Robin Gareus
1d993d586d Clean up vfork_exec_wrapper static intialization
Print a less cryptic error message in case the wrapper app
cannot be found. Also address a future race condition (once
we start parallel plugin scans and will exec-wrapper from a
helper thread).
2021-07-15 21:41:16 +02:00
John Emmas
12e1c960b6 Add an extra dependency lib which was previously only needed for Debug builds 2021-07-15 09:30:08 +01:00
Robin Gareus
c92dfed706 Fix windows builds (stacktrace pthread debug) 2021-07-14 16:04:07 +02:00
Robin Gareus
46251c2068 Fix Windows debug builds 2021-07-14 15:07:26 +02:00
Robin Gareus
15fd9f23f3 Fix OSX builds 2021-07-14 15:07:26 +02:00
Todd Naugle
ff1d5e7aeb When reconnecting ports, don't give up on first failure.
If there are multiple connections, one might fail due to missing hardware,
but the rest could still be valid.

An easy way to reproduce this was to route "mackie control out" to a device
and to the Midi tracer port. When you opened the session again, connection
from the "mackie control out" to the device would not get restored because
the Midi tracer port does not exist at session start.

This most likely caused other issues with connections when changing backends.
2021-07-13 17:47:33 -05:00