Commit Graph

17380 Commits

Author SHA1 Message Date
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
Robin Gareus 9fa71f9c2c
Really fix macOS builds (see 1ca2e4c, 2753c32) 2021-07-13 17:39:26 +02:00
Robin Gareus 1ca2e4c567
Fix macOS builds (amend 2753c32c0a) 2021-07-13 17:31:53 +02:00
Robin Gareus 4651ec8382
Unconditionally enable stacktrace for windows builds
This also fixes an issue introduced 7d39205350
(duplicate variable name "levels".
2021-07-13 13:47:26 +02:00
Robin Gareus de3291d10b
Allow to skip setting MIDI patch on session-load #8743
Ardour MIDI tracks unconditionally remember any
MIDI CC/Patch changes that are received.

Patch changes are re-played after the session is loaded,
so that they can reach external synths after ports are
re-connected.

This can lead to issues with synth plugins. Their state
is set first. Receiving a patch-change may alter the synth's
state.
2021-07-13 03:29:28 +02:00
Robin Gareus 2753c32c0a
Consolidate scan-log (partial lines, newlines)
Particularly on macOS child process ReadStdout
may produce many partial lines unbuffered lines.
Since each log message appends a newline, the log
had entries like:

```
Thi
s is a
n examp
le
```
2021-07-12 23:49:47 +02:00
Robin Gareus 5ddb88724e
Add separator around stacktraces in scan-log 2021-07-12 23:33:03 +02:00
William Light 2ee5082b06 VST3: embarrassing missing closing paren
third time's the charm!
2021-07-12 18:34:23 +02:00
William Light 27c9c191d6 VST3: fix style issue and compilation warning 2021-07-12 17:31:22 +02:00
Robin Gareus ebbd48289d
Only mark plugin-scan as complete if it succeeds w/o being canceled 2021-07-12 17:26:51 +02:00
William Light 127cf7aaae VST3: fix crash on fan-out 2021-07-12 17:01:21 +02:00
John Emmas ebbf34b266 Pass 'localtime_r()' the correct form of 'time_t'
Even for a 32-bit build, MSVC expects 'time_t' to be 64-bit - whereas Glib (i.e. GStatBuf) seems to be using a 32-bit version. Since we're passing by address, this will cause problems in a Windows build.

We can kludge this by making sure we pass the expected type for 'time_t'. Ultimately though, it'd be safer to adapt 'localtime_r()' to accept its first parameter by value, rather than expecting a pointer.
2021-07-12 10:32:18 +01:00
Robin Gareus 3941ae526f
PM: emit signal when plugin-scan-log changes 2021-07-12 05:23:00 +02:00
Robin Gareus ff88d4c9eb
Fix mac-build (amend 6af9b0194e) 2021-07-12 04:59:16 +02:00
Robin Gareus 778aa6ed9f
Fix windows builds (exception_info is a fn) 2021-07-12 04:57:53 +02:00
Robin Gareus 6af9b0194e
Print stacktrace when plugin-scanner app crashes 2021-07-12 04:23:24 +02:00
Robin Gareus 7d39205350
Allow to skip top stacktrace frames
This is useful to hide the call of `PBD::stacktrace` itself.
2021-07-12 04:01:07 +02:00
Robin Gareus 2e90a58611
Fix pre-roll rec trim near 00:00:00 2021-07-12 02:13:05 +02:00
Robin Gareus 1736cb9ef5
Fix MIDI capture alignment punch-in, manual punch in/out
This now passes all of the following, either
when directly bouncing or when re-recording via physical loopback:

 * record w/preroll
 * record w/count-int
 * loop record at 00:00:00
 * loop record starting >> 00:00:00
 * punch record at 00:00:00
 * punch record > 00:00:00
 * rec-arm while looping (!)
 * repeatedly rec-arm/disarm while rolling
2021-07-12 02:13:02 +02:00
Robin Gareus b8f245f7e8
Fix audio loop recording alignment 2021-07-12 02:12:49 +02:00
Robin Gareus 914c4beb21
Fix windows builds (localtime_r) 2021-07-11 21:05:11 +02:00
Robin Gareus d3c0a75f63
Update disk-io/file-name when changing track names
...and do not update playlist name as described #4759 and #4977
2021-07-11 20:54:44 +02:00
Robin Gareus f61eb7e067
Remove unused variables 2021-07-11 08:07:38 +02:00
Robin Gareus 35394f427c
MIDI rec-rect: apply offset, correctly position notes 2021-07-11 07:14:38 +02:00
Robin Gareus 08cd4b2083
Rec w/count-in: directly roll transport 2021-07-11 07:11:32 +02:00
Robin Gareus 16cba9482a
Remove debug message in optimized builds 2021-07-11 02:35:26 +02:00
Robin Gareus 38841eccaf
Remove unused MIDI-flush
realtime_stop() calls unset_play_loop(), unless loop is a
transport-state. Any later calls by butler_transport_work()
will never reach this get_play_loop() clause when just looping.

Besides while recording, locates are not possible,
so this case never triggered under normal operation
(Non-seamless looping is no longer supported since 6.0).
2021-07-11 02:35:15 +02:00
Robin Gareus b0e33d7d65
Fix Loop recording
DiskWriter::seek() flushes all recorded audio/MIDI, and resets
buffers as if no recording has happened.

Data must be flushed to disk before any non-realtime locates happen.
This happens at transport-stop, which is usually called first.

Except since 8b048bb351 Session::butler_transport_work() may call
non_realtime_stop() after a non_realtime_locate() when looping
more than once.
2021-07-11 02:29:21 +02:00
Robin Gareus dfa34f2885
Fix MIDI capture duration when loop recording
If there is a tempo/meter change after the loop-end,
the capture duration was set incorrectly.

Previously `total_capture_beats` was set as if the recording
was linear passing though tempo-map changes after the loop.
2021-07-11 02:19:04 +02:00
Robin Gareus 6c28f0f4fb
Fix pre-roll MIDI capture alignment
_capture_start_sample is remains zero until
DiskWriter::check_record_status() starts recording.

This incorrectly increased _accumulated_capture_offset
during pre-roll which resulted in lost samples at the beginning.
2021-07-10 23:20:44 +02:00
Robin Gareus cbbcdb4fe6
SourceFactory throw instead of returning nullptr #623 2021-07-10 17:46:57 +02:00
Robin Gareus e65a888c89
Fix muted MIDI regions 2021-07-10 02:11:52 +02:00
Robin Gareus 092f737722
VST2/3 log file/cache mtime during scan 2021-07-09 22:58:23 +02:00
Robin Gareus cafd757e8a Print AU blacklist after scanning 2021-07-09 01:07:50 +02:00
Robin Gareus 09a3c97358 Consolidate black/white methods in PM 2021-07-09 01:07:36 +02:00
Robin Gareus d0177846dd
VST3: fix manual black/whitelist 2021-07-07 19:40:24 +02:00
Robin Gareus 8607a6ef8d
Bump plugin-cache version to force a re-scan 2021-07-07 00:45:00 +02:00