Commit Graph

10769 Commits

Author SHA1 Message Date
Robin Gareus
63ef60ea93 Fix formatting of `-inf' on some Windows systems
Among others, this fixes tooltip display on aux-send faders
2021-04-14 17:58:30 +02:00
Robin Gareus
f410dc433c Fix Lua get_processor_param API 2021-04-14 17:53:56 +02:00
Robin Gareus
f0cb8e54c3 Fix taglib error message 2021-04-12 23:15:30 +02:00
Robin Gareus
c4f0393cf9 Keep track of export-limiter redux 2021-04-12 23:15:30 +02:00
Robin Gareus
89a65f76b0 Update analysis duration when post-processing
This prevents the need to re-bin data in case silence is
trimmed at start or end of the export.
2021-04-12 23:15:30 +02:00
Robin Gareus
df47da4e55 Disambiguate export filename early on
When exporting multiple formats with identical filename
extension for the same time-span, the format-name needs
to be added.

Previously that was done internally when starting to export.
The Export-Dialog did not show correct filenames nor
warn of existing files that will be overwritten.
2021-04-12 23:15:30 +02:00
Robin Gareus
75829d20f2 Overhaul export loudness normalization
* Fix exporting multiple formats with different
  normalization settings or demo-noise settings
* Add true-peak limiter (based on x42-limiter dpl.lv2)
* Optionally use a limiter for loudness normalization
* Fall back to short-term loudness when normalizing
  material too short for integrating loudness.
2021-04-12 23:15:30 +02:00
Robin Gareus
8f5c3fcddb Fix non-layered record-undo
Previously an empty RegionList was used (auto-partition
changes were never collected at rec-stop), furthermore
auto-partitioned regions do not have an old ARDOUR::AutomationList
(fade in/out) property (_have_old is false).
2021-04-12 23:14:13 +02:00
Edgar Aichinger
5d12aa15f5 update german translation 2021-04-11 17:44:17 +02:00
Robin Gareus
5cd6c261b7 Revert "Fix MIDI capture alignment"
This reverts commit 3fe87b9fa1.

This commit incorrectly overcompensated MIDI. The DW already
aligns to _first_recordable_sample.
2021-04-11 15:15:33 +02:00
Robin Gareus
635d83709b Fix MIDI source write-names
This follows bb50925998,
Prevent leaking "recorder:" into the file-name, and fixes
a related bug setting the "captured for" ID for MIDI
2021-04-11 15:15:29 +02:00
Robin Gareus
5e01275d0e Set default master-bus meter-point to output
For master-bus measuring the signal directly at the
output is preferable. This includes the panner, mute,
and loudness gain.
2021-04-08 01:18:09 +02:00
Robin Gareus
c1d98ca3c8 Export analysis: log loudness / time 2021-04-07 01:46:02 +02:00
Robin Gareus
7390cad25d Port registration should not mark the session as modified
This fixes dirty session after freewheeling export
or analysis.
2021-04-05 03:29:42 +02:00
Robin Gareus
edfcc71bcf Revert "Fix auto capture alignment when bouncing metronome"
When the metronome is routed through a track, it
will correctly get the downstream playback latency.
Capture Alignment is Capture-Time.

This fixes a case where the metronome is connected to
physical I/O and a track. This can result in ambiguous
latency if the track's output is not connected or
connected via latent master bus.

This reverts commit f08b90f368.
2021-03-30 21:08:31 +02:00
Robin Gareus
d87002617e Implement zero-latency convolver 2021-03-30 01:29:32 +02:00
Robin Gareus
915ce04a44 zita-convolver: remove unused API 2021-03-29 15:49:57 +02:00
Robin Gareus
eebe4e467b VST3: pass a read-only state stream to the plugin #8642
see also 9e7cfdd880 - this is a workaround for some plugins
that do not use the SDK and seek the stream using absolute
offsets.
2021-03-29 14:48:01 +02:00
Robin Gareus
fdc3efda7e Add Lua binding to rename session 2021-03-27 19:44:00 +01:00
Robin Gareus
e6496ab032 Ignore ARDOUR_DATA_PATH env variable on windows
The variable is unset (and unused), windows_search_path()
is used on that platform.

This prevents the "ARDOUR_DATA_PATH not set in environment"
message from being printed.
2021-03-26 17:15:12 +01:00
Robin Gareus
c51c254fae Do not input-monitor ALSA/JACK MIDI-Through ports 2021-03-26 16:46:15 +01:00
Robin Gareus
32c7b18f6d Relax export preparation timeout
This increases timeout granularity and ensure that
rt (TSFM) and butler thread can run to prepare exports.

This may fix an issue some windows users reported
"Cannot prepare transport for export", and increasing
the buffersize to 1024 or 2048 works around the isssue.

This also fixes an edge-case usecs_per_cycle() may return -1
(sleep forever) when the engine dies.
2021-03-25 21:15:13 +01:00
Robin Gareus
b174326228 Fix crash when using exclusive Mixbus listen 2021-03-24 19:16:31 +01:00
Robin Gareus
c1f1cd5b3e Prepare for foldback bus A/PF Listen 2021-03-24 17:47:53 +01:00
Robin Gareus
bbb244c1c9 Implement replacing events in the immediate queue
This corrects issues introduced in a75c239c0c,
and fixes MIDI playback.
2021-03-24 04:05:35 +01:00
Robin Gareus
cc7b8b1bc5 gcc-11 compat, volatile atomic variables (1/2)
"While 'atomic' has a volatile qualifier, this is a historical
artifact and the pointer passed to it should not be volatile."

Furthermore "It is very important that all accesses to a
particular integer or pointer be performed using only this API"
(from https://developer.gnome.org/glib/2.68/glib-Atomic-Operations.html)

Hence initialization of atomic variables is changed to also use
this API, instead of directly initializing the value.

This also fixes a few cases where atomic variables were
accessed directly.

see also libs/pbd/pbd/g_atomic_compat.h
2021-03-22 15:30:07 +01:00
Robin Gareus
a75c239c0c Do not accumulate SessionEvent::Overwrite events #8576 2021-03-22 02:54:42 +01:00
Robin Gareus
0fc53d4683 Reduce signal emissions from set_scale_amplitude #8576
Playlist::ContentsChanged() is implicit.

Region::send_change()
-> Playlist::region_changed ()
-> Playlist::notify_contents_changed ()
-> Playlist::ContentsChanged () /* EMIT SIGNAL*/

This cuts the number of signals in half and also
allows to freeze/thaw the playlist to collect the
signals for each playlist into a single signal.
2021-03-22 01:04:01 +01:00
Robin Gareus
6ac8ee41af Collect Playlist::ContentsChanged() signals #8626
With a large session:

Editor::insert_time()
 -> Playlist::shift()
 -> 4000+ regions are modified
 -> 4k calls to Region::send_change()
 -> --"-- Playlist::region_changed ()
 -> --"-- Playlist::region_bounds_changed ()
 -> --"-- Playlist::notify_contents_changed ()
 -> --"-- ContentsChanged () /* EMIT SIGNAL */
 -> --"-- DiskReader::playlist_modified ()
 -> 4k Session::request_overwrite_buffer events are queued

The butler thread processes them all in the background, but
this also enqueues 4k+ events to the GUI event pool since the
GUI subscribed to Playlist::ContentsChanged ().

However the GUI is inside Editor::insert_time() and cannot handle
events. So they keep accumulating, and eventually hits
"POOL OUT OF MEMORY - RECOMPILE WITH LARGER SIZE!"

-=-
This fixes the issue by collecting blocking ::notify_contents_changed
until all region_changed() events are processed, and a single call
to Playlist::flush_notifications() notifies the UI and disk-reader.
2021-03-21 22:45:57 +01:00
Robin Gareus
954edb7bd8 Work around jack input monitoring
This works around JACK not allowing to directly access physical
input buffers by creating an explicit connection.

Ardour access input-buffers directly without connection
for input meters and AFL. This work in general since data
on those ports are always read unconditionally at the start of
each process cycle.

 jack_port_get_buffer (jack_port_by_name (c, "system:capture_1"), n);

However with jack this fails if the given port is not connected.
Due to an internal jack optimization collecting input data is
skipped for ports that have no connections.
2021-03-21 00:06:44 +01:00
Robin Gareus
d4a80c18c5 Remove stale comment 2021-03-20 23:42:02 +01:00
Robin Gareus
83618c4667 Silence input-meters when port-buffer is n/a. 2021-03-20 23:09:36 +01:00
Robin Gareus
f361211891 Fix crash when removing custom transients
This fixes the following edge-case:
1. Place a custom transient marker.
2. Use Rhythm Ferret to analyze region.
3. Delete custom marker from (1) while rhythm-ferret
   dialog is still open, and analyzed onset markers are visible.
2021-03-20 19:21:31 +01:00
Robin Gareus
ff275b24c8 Fix analysis chunksize to be multiple of channel-count #8631 2021-03-20 16:20:20 +01:00
Robin Gareus
4bb3a896b4 Potential fix for lost/empty MIDI files when using snapshots #8552
* Copy flags of referenced file
* Do not share model with copied source!
2021-03-19 20:05:42 +01:00
Robin Gareus
4887350e0d API consistency, prefer typedef'ed event_id_t 2021-03-19 06:29:03 +01:00
Olivier Humbert
cc79bc07ed Update fr.po 2021-03-17 23:16:48 +01:00
Robin Gareus
01863886b5 Clean up Wself-assign - see also d91374d0db 2021-03-17 21:17:13 +01:00
Robin Gareus
48556cbd3c Fix session-archive on macOS
By default Apple uses a private TMP folder. While mktemp
returns "/tmp/xxx" the canonical path is "/private/tmp/xxx".
This lead to issues when tmp-prefix is removed when building
the session-archive.

See also e52bdc55ad
2021-03-17 18:05:48 +01:00
Robin Gareus
71f8c8ff38 Fix -Wunused-comparison in for() loop
Fixes potential issues when loading a session where state
and IO port-count mismatches. Not sure if that can ever happen.
2021-03-17 17:59:36 +01:00
Robin Gareus
ee6e7e8a7e Fix a -Wabsolute-value, use float for gain_t calculation 2021-03-17 17:57:01 +01:00
Robin Gareus
476856a42c Fix caching gain coefficient for monitor gain 2021-03-17 17:55:59 +01:00
Robin Gareus
d91374d0db Remove self-assign 2021-03-17 17:54:25 +01:00
Robin Gareus
7ef4a08b5e No-OP: remove unused variables 2021-03-17 17:53:43 +01:00
Paul Davis
950f0d4c9b change return API for Location::clear_*() methods to indicate if anything was removed 2021-03-16 17:40:06 -06:00
Paul Davis
951257909f Location API to remove xrun markers 2021-03-16 16:49:38 -06:00
Paul Davis
5640f820d3 exclude xrun markers from those returned by Locations::marks_either_side()
Surveying the uses of ::markers_either_side() makes it clear that
xrun markers are never relevant to the callers.
2021-03-15 19:38:20 -06:00
Robin Gareus
31d56eb7fc Unconditionally set diskstream name, fix setting take-name
Since 6.0 take-name was not updated correctly:
The name changes in Session::non_realtime_stop(). At that
time tracks are still record-armed and ignored name changes.

Newly created tracks also never had a diskstream name set
correctly. This only happened at session-load via set_name(),
or config change.
2021-03-15 22:36:58 +01:00
Robin Gareus
bb50925998 Prevent leaking "recorder:" into the file-name
This is safeguard. It should not happen since _write_source_name
once Track::set_name () sets this unconditionally.
2021-03-15 21:28:52 +01:00
Robin Gareus
bdec5aa88e Keep I/O bundle names in sync with custom names
This fixes an issues that IObutton dropdown did not show
renamed inputs until after session-reload.
2021-03-14 18:14:56 +01:00