Commit graph

16330 commits

Author SHA1 Message Date
Robin Gareus
7e5e9e46a1
Consolidate calls to IO::latency 2020-08-01 00:17:54 +02:00
Robin Gareus
41c503768b
NO-OP: comment formatting
Use asterisks to separate indent (tabs) and alignment (spaces)
in comments. Also remove trailing whitespace.
2020-08-01 00:17:23 +02:00
Nikolaus Gullotta
13f041536d
Honor "Auto Play" setting when locating from Session::goto_start
Because TransportFSM's MotionState is `WaitingForLocate` when calling
Session::goto_start, transport_was_stopped was set incorrectly
2020-07-29 10:33:29 -05:00
Ben Loftis
76894b0ac3 When consolidating a Range of midi, the resulting region should fill the Range (not stop at the end of midi content) 2020-07-28 12:29:27 -05:00
Robin Gareus
e9ff843bb1
Implement master/loudness volume processor
This provides for a better user-experience than using a-amp.
Particularly since a-amp only has a 20dB range and can be automated.
2020-07-27 21:56:41 +02:00
Robin Gareus
b49656213d
Prefer const reference (amend f564c92493) 2020-07-26 17:15:15 +02:00
Ben Loftis
a8c29991d6 Assign a take_id to Bounced regions, so a multitrack bounce can be sorted/recognized in a list 2020-07-26 09:53:47 -05:00
Ben Loftis
4f6c71f275 Use the Track name in captured_for property (was processor:playlist which was obtuse) 2020-07-26 09:53:47 -05:00
Ben Loftis
f564c92493 Prompt user for name of Range and Region bounces (libardour part) 2020-07-26 09:53:47 -05:00
Ben Loftis
16c2df08ae When bouncing, use a TAG rather than changing the region name. 2020-07-26 09:53:47 -05:00
Robin Gareus
5a41ca8fdf
Amend df1e6fda2d, limit digits for numeric dB entry 2020-07-22 23:18:51 +02:00
Robin Gareus
df1e6fda2d
Fix SliderController numeric entry to use dB for gain 2020-07-22 21:43:14 +02:00
Robin Gareus
73089f6034
Add Lua bindings for the various TSFM states 2020-07-22 14:57:15 +02:00
Ben Loftis
a2f4521e77 Short-circuit gain interpolation if the change is negligibly small 2020-07-21 18:37:32 -05:00
Robin Gareus
fa495b7727
Account for additional TLS on macOS/X
On GLIBC systems pbd_stack_size() adds __pthread_get_minstack,
this is no available on mac systems, causing issues with some
libraries used by plugins.
2020-07-21 23:10:01 +02:00
Robin Gareus
5f3626d46f
Increase timeout for export-preparation
In some rare cases the butler may be busy for a long time
(e.g. seek in a large session may still be active when
export is started).

8 second timeout seems reasonable to prevent the app from hanging
without desktops showing a "unresponsive" popup in case the
timeout is reached for some reason (e.g the engine dies, and
no TFSM transition can happen).
2020-07-21 22:54:05 +02:00
Olivier Humbert
d2f74456c3
Update fr.po 2020-07-21 07:11:29 +02:00
Luciano Iam
e7e4fb3a81
WS: Use Ardour native scale for pan knobs 2020-07-21 06:49:28 +02:00
Robin Gareus
4dffe6e26e
Make master-output-volume optional 2020-07-21 05:50:30 +02:00
Robin Gareus
5ff3453b30
Update Ardour*Spacer to use theme color 2020-07-21 04:42:07 +02:00
Robin Gareus
e8e143bb32
Add a horizontal separator widget 2020-07-21 04:41:16 +02:00
Robin Gareus
001072e7d0
Implement ArdourKnob visual sensitivity 2020-07-21 02:18:39 +02:00
Robin Gareus
ba0dac92f2
Add a main-outs volume control and dedicated master-volume
This is intended for loudness normalization - #8318 to add
additional gain as last step.
2020-07-21 02:18:38 +02:00
Robin Gareus
ebc8e47a71
Add support for MainOutVolume in main-outs delivery 2020-07-21 02:18:38 +02:00
Robin Gareus
d5f2dd4e7f
Add MainOutVolume parameter type
This is similar to TrimAutomation, except intended to be available
on the master-bus' output, or a Route's _main_out delivery.
2020-07-21 02:18:38 +02:00
Robin Gareus
a36a93fe4f
NO-OP: whitespace 2020-07-21 02:18:34 +02:00
Robin Gareus
d794f39e20
Update post-export analysis to report max short/mom loudness 2020-07-20 05:16:51 +02:00
Robin Gareus
a26be84a5e
Update EBU VAMP plugin, report max short/mometary loudness 2020-07-20 05:16:04 +02:00
Robin Gareus
9d119b5ac5
Allow export-graph for analysis only
This is in preparation for #8318 to allow loudness analysis
of an export-range without actually writing a file.
2020-07-19 20:43:35 +02:00
Paul Davis
15fcb5c782 Transport: engaging loop play while rolling with no audio tracks now works
At present only audio data from disk readers is declicked. MIDI tracks with audio output should
likely also be declicked, at which time Session::need_declick_before_locate() will require
amending
2020-07-18 17:30:06 -06:00
Robin Gareus
c778ded411
Auto-connect MIDI track/bus when output ports change
previously this subscription was handle done in
Route::add_routes() -> add_routes_inner() for MIDI tracks only.

Since f6c0b02d9f this was only done when adding
tracks, after any instruments were loaded (and fanned out).
2020-07-19 01:07:57 +02:00
Robin Gareus
f5727e50d1
Another attempt at fixing the auto-connect race condition 2020-07-19 01:05:35 +02:00
Robin Gareus
7f20e9c705
Fix auto-connect thread race-condition 2020-07-19 00:40:34 +02:00
Robin Gareus
f6c0b02d9f
Overhaul MIDI auto-connect #8317, #8307
This consolidates instrument creation for midi tracks & routes.
If an instrument is added, output auto-connect is postponed until
after the instrument plugin is added. Also when a multi-channel
instrument is fanned-out, the track outputs are not auto-connected.

This also subscribes MIDI-Busses to auto-connect when an instrument
is loaded or replaced at a later time.
2020-07-18 23:27:11 +02:00
Robin Gareus
a7a938275f
Add API to query if an instrument was fanned out
Since fan-out happens (interactively) in the GUI thread,
we need to keep track of this, in order to prevent later
auto-connection of the track to the master-bus.
2020-07-18 22:59:43 +02:00
Robin Gareus
e4232197fe
Revert recent auto-connect hack
..forth and back..
1882c1ba7e
dabd5715e9
fac8d84786

This needs a [much] better solution:

e.g. Wait until instrument is instantiated (ports are created),
then auto-connect, and finally fan-out
(or alternatively skip auto-connect for fanned-out tracks).

Currently both auto-connect as well as fan-out and port-creation
take place asynchronously.

Also MIDI track subscribe to &Session::midi_output_change_handler,
(MIDI busses don't).
2020-07-18 22:11:31 +02:00
Robin Gareus
4bbe6f20de
Auto-connect MIDI-Busses to master 2020-07-18 21:45:43 +02:00
Robin Gareus
1882c1ba7e
Add instrument before adding route #8317
This may (or may not) fix #8317. Usually changing I/O triggers
an auto-connect. The actual issue seems that auto-connect
thread runs before the ports are created.
2020-07-18 21:43:02 +02:00
Robin Gareus
fb9f1eff12
Add debug flags to track down #8317 2020-07-18 20:09:14 +02:00
Robin Gareus
6d6db90b60
Remove delay when engaging record while rolling 2020-07-17 17:08:59 +02:00
Robin Gareus
9242bc55a5
Do not emit StateSaved signal for backup saves
StateSaved() is mainly used for updating window title and
the snapshot list, unrelated to .pending or backup saves.
2020-07-17 16:55:16 +02:00
Robin Gareus
0b89d69de1
Copy state files for backup, instead of serializing
This should speed up backup saves of large session files.
2020-07-17 15:22:40 +02:00
Robin Gareus
c6b87972b1
Remove unused libsmf seconds/time API
This significantly speeds up parsing MIDI files with complex
tempo-maps. e.g. "Black MIDI Trilogy_2.mid" has 24134 Tempo
changes. Prior to this commit parsing that file took over 5 minutes.
now it loads in under one seconds (libsmf only; libardour still
add overhead, and now needs about 30-40 seconds, previously
it took about 10 mins).

The problem was that every call to `smf_track_add_event_pulses()`
calls `seconds_from_pulses()` which calls `smf_get_tempo_by_seconds()`
which iterates over the tempo-map:

  for every midi-event { for ever tempo until that midi-event {..} }

This does not scale to 3.5M events and 24k tempo-changes.
2020-07-16 18:38:03 +02:00
Robin Gareus
ba7db8759b
SMF: remove unused variable (from 803dab7d87) 2020-07-16 18:35:43 +02:00
Robin Gareus
9fcb51de2e
Use signed int for atomic operations part II -- #8314 2020-07-16 18:07:14 +02:00
Robin Gareus
803dab7d87
SMF: various backports from libsmf PR7
see also https://github.com/stump/libsmf/pull/7

* Fix validity checks of escaped data
* Handle non-EOT-terminated tracks.
* Fix buffer overflow on tempo change event
* Fix memory leaks in case loading fails
* Fix a logic errors in extract_escaped_event()
* Fix the assertion problem `is_sysex_byte(status)`
* Make libsmf more tolerant to malformed MIDI files.
  (fixes import of files generated by NoteEdit)
2020-07-16 18:00:40 +02:00
Robin Gareus
23e6dd5f6b
NO-OP: backport some libsmf doc and warnings 2020-07-16 17:58:04 +02:00
Robin Gareus
43158047ed
SMF: use glib macros for endian conversion 2020-07-16 17:57:59 +02:00
Robin Gareus
6d950d15ba
Use signed int for atomic operations -- #8314 2020-07-16 16:13:21 +02:00
Robin Gareus
baa8cd1b52
Fix LV2 buffersize option interface
https://lv2plug.in/doc/html/group__options.html specifies
a NULL terminated array of options (not a single option).

Since the call is the "instantiation" LV2 threading class, and
a single fixed value is passed with a direct call into the
plugin, using a stack-allocated LV2_Options_Option is sufficient.
2020-07-16 15:57:42 +02:00