13
0
Commit Graph

29278 Commits

Author SHA1 Message Date
c8d449f356 fix startupFSM handling of a ShouldLoad signal
This currently only handles initial session load by dbl-click on
a session file. It also does not work if the user or new or
subject to a pre-release warning. These last two restrictions
may remain in place, although if a person's first exposure to
the program is "copy my session, download program, dbl-click
on the session file", then that's not so nice
2020-03-06 15:54:00 -07:00
694a0eaeca fix apple/clang warning 2020-03-06 15:54:00 -07:00
75260f9c9b fix (potentially serious) typo that confused comparison with assignment 2020-03-06 15:54:00 -07:00
dd46dfe8d2
Fix potential deadlock when exporting w/normalizing
start_post_processing() may be called from the freewheeling
callback, when starting to normalize.
2020-03-06 21:34:55 +01:00
77d12b490e
RT-safety use stack (not heap) for plugin pin mappings 2020-03-06 19:13:54 +01:00
50556db405
Add a STL Allocator using the stack (for rt safety)
This is a dumb stack allocator using LIFO allocation/free, with
a fallback to new/delete. This works well for small STL containers
in particular std::vector, but it's also suitable for std::map<>,
in particular copy constructing small POD maps (plugin pin mappings).

Eventually this could be combined with TLSF for a flexible
memory arena management. This is however not currently needed
for any the planned use-cases.

This code is ANSI C++98 compatible, and yet also works with
modern C++11, C++14
2020-03-06 19:13:44 +01:00
140a3f4a10 Fix Coreaudio buffersize changes 2020-03-06 05:52:55 +01:00
4674dd8534
Increase accuracy of analyzed true-peak positions 2020-03-06 04:13:09 +01:00
b92de5a2fe
Remove debug output 2020-03-06 03:40:25 +01:00
aa6fd4339e
Fix realtime export checkbox consistency 2020-03-06 03:29:23 +01:00
d126966952
Remove backend support for region-output export
This use-case is better served via stem-export.
2020-03-06 03:29:16 +01:00
fc65097686
Remove region-output export (GUI)
This use-case is better served via stem-export.

This export mode never worked correctly when latent plugins
are present on the track. or when realtime export was chosen.

This used to call
  track.export_stuff() -> bounce_process()
periodically in small chunks from freewheeling callback,
which is no longer functional.
2020-03-06 03:28:41 +01:00
751f9f9654
Fix export alignment (#7916)
Ardour's playback is aligned to master-out:
 "When the playback clock reads 01:00:00:00, the sample corresponding
  to 01:00:00:00 is audible at the speaker(s)"

When exporting, and grabbing data from output ports, the signal
is offset by the master-bus physical playback latency. This was
compensated for, but lead to initial silence in the exported file.

New approach is to start capturing export data during pre-roll,
at the time when playback is written to the output buffers.

To also shaves off a common offset to make this work with
realtime export. Effectively this emulates processing with
disconnected master-output port, while still keeping any
latency of effects on the master-bus itself.

Last but not least: jack updates latencies when freewheeling,
(setting HW latency to zero). The callback arrives asynchronously
some time after enabling freewheeling, but after Export
Ports have been configured. Those callbacks are ignored.
2020-03-06 01:49:48 +01:00
1851440863
Fix realtime export of multiple time-spans
After exporting a time-span, the next time-span was started
directly from the rt-callback. This had various issues.
In particular with realtime export.

Post-processing of a realtime-export enables freewheeling
and is driven by freewheel callbacks. Freewheeling needs to be
safely disabled for an upcoming realtime export.

A similar issues existed when mixing realtime and non-realtime exports.
2020-03-06 01:49:44 +01:00
128a45954c
Do not de-click during freewheel export 2020-03-06 01:44:32 +01:00
1f6686c2a0
Separate pre-roll cycle calculation
This is also needed when exporting.
2020-03-06 01:44:32 +01:00
6fd27f89b3
Remove debug message 2020-03-06 01:44:32 +01:00
86045fe526 move more or less all responsibility for ShouldLoad (macOS, NSM) back into ARDOUR_UI 2020-03-05 17:34:41 -07:00
f04974aa6c continue with code simplification and add comment given 4a40ff9e53 2020-03-05 08:38:31 -07:00
abcb092adc transport stop resets default_transport_speed
This means that using the wheel in the GUI (or equivalent) ends its effect at transport stop
2020-03-05 08:35:39 -07:00
John Emmas
9a3159c2c0 Remove a suspected C99-ism
'lower_bound()' iterates between param #1 and param #2, comparing the result
with param #3 - either by making the comparison internally or by deferring to
an external comparator function. Prior to C99 however, BOTH cases required
param #3 to match the type being iterated.

In the case of a deferred comparison, there was apparently a proposal to
relax this restriction in C99, though I'm not sure if it in fact got
implemented (can't find any examples of it anywhere...)
2020-03-05 12:52:22 +00:00
f49aedaa39 Fix odd right click crash on master track.
To reproduce. Launch, right click in ruler area then drag down
until over the master track and let go.

#0  0x0000555555ba1d44 in boost::shared_ptr<ARDOUR::Route>::get() const (this=0x8) at /usr/include/boost/smart_ptr/shared_ptr.hpp:748
#1  0x0000555555ba0a2f in boost::dynamic_pointer_cast<ARDOUR::Track, ARDOUR::Route>(boost::shared_ptr<ARDOUR::Route> const&) (r=...)
    at /usr/include/boost/smart_ptr/shared_ptr.hpp:904
#2  0x000055555650b92b in RouteUI::track() const (this=0x0) at ../gtk2_ardour/route_ui.cc:1885
#3  0x0000555555d0b92f in Editor::popup_track_context_menu(int, int, ItemType, bool) (this=
    0x555557a3efd0, button=1, time=600214966, item_type=StreamItem, with_selection=false) at ../gtk2_ardour/editor.cc:1595
#4  0x0000555555e1a4cf in Editor::button_release_handler(ArdourCanvas::Item*, _GdkEvent*, ItemType) (this=0x555557a3efd0, item=
    0x555557b2fe00, event=0x7fffffffc310, item_type=StreamItem) at ../gtk2_ardour/editor_mouse.cc:1543
....
2020-03-03 13:49:04 -06:00
1a69bc4a96
Fix off by one in Lua scripts
Lua arrays (tables) start counting at one.
Also `for i = a, b do .. end` is inclusive: a <= i <= b
2020-03-03 00:28:19 +01:00
82541b33a4
Retain custom internal-send name on session re-load 2020-03-02 21:54:38 +01:00
6e0062d549
Refactor send naming (#7905)
This allows users to rename sends without enforcing a numeric
bitslot number. However this prevents a user to to use "send" names
that are potentially used for new sends or inserts.
2020-03-02 20:07:52 +01:00
711f20a469
Exclude zita-convolver from being available as external lib
Ardour statically links libardour against zita-convolver,
this is required because it's used in plugins and available
by Lua scripts.

libzita-convolver has been modified to be in a custom namespace
and extern global symbols have been removed.

On most GNU/Linux distros system-wide default zita-convolver
is not compatible nor suitable to be used as-is.
2020-03-02 20:06:59 +01:00
e79b762daa
Micro-optimization: only recreate polarity buttons as needed 2020-03-02 19:18:59 +01:00
6120d4d43a
Improve RouteUI API consistency
This is an effective NO-OP
 * Some methods have been re-named to improve consistency
 * Duplicate function calls were removed:
   RouteUI::set_route() already updates mute/solo
   MixerStrip does not have to update it again
 * virtual methods have been protected
2020-03-02 19:18:57 +01:00
14c670869c
Fix polarity invert buttons (amend d6315618da)
ConfigurationChanged() is emitted after processors have been
reconfigured (e.g adding/removing a plugin).
The button state needs to be updated after setup.

Bfore d6315618da this worked because _route->io_changed()
is emitted before the processors are re-configured, and
phase_control()->Changed() triggered an update after that.

PS. The motivation for d6315618da are Mixbusses. They have no input
channels, but a Return processor before the polarity processor.
2020-03-02 19:18:50 +01:00
7f11270c96
Fix UI insert/send renaming
This fixes an issue when trying to rename a send or insert
to the current name (no-rename).

::rename_processor() checks if io_name_is_legal(),
Since the current name is already in use, a numeric-suffix
was added.
2020-03-02 17:58:03 +01:00
7a0ed32b38
Update doxygen doc
Add new folders, update and alphabetically sort HAVE_[] defines.
Specify that .h header files are C++ (fixes some warnings)
2020-03-02 17:58:03 +01:00
7c6eadd84a
Fix some doxygen warnings 2020-03-02 17:58:03 +01:00
be4bdb5365
Do not include <stdint.h> in the Ardour namespace 2020-03-02 17:58:03 +01:00
8d6f6266d2 unfinished fix for handling desktop/NSM specifying session to load
More work needed to fix requirement in StartupFSM that ::load_from_application_api()
is called before ::start()
2020-03-01 21:36:07 -07:00
6edccc78a2
Fix previous commit (increase max, not default) 2020-03-02 02:26:10 +01:00
86821b3afe
Allow a-delay to boost output gain
From #ardour IRC:
> there have been a few times that I wished a-Delay could boost volume
> it has an "output gain" slider, but it only subtracts. the maximum is 0db
> delay is a big part of guitar solos, so a boost in the same plugin would be awesome
2020-03-02 02:24:43 +01:00
dc195f265d
Fix Luadoc build (follow up 2e9ac80e9, 5794d21a) 2020-03-01 21:26:43 +01:00
c086f05ba5
Fix order setting I/O names
IO::set_name() may fail, in case Port::set_name() fails.
In that case the IOProcessor should not update its name.
2020-02-29 22:20:01 +01:00
814af0f51c
Fix off-by-one, start "Send" names at bitslot 1 (not 2)
Session::next_*_send_id() starts counting at bit 1.
Probably for historical reasons (bit zero = 1).
2020-02-29 22:19:58 +01:00
2b13cfa67c no pre-release warning dialog if beyond pre0 2020-02-29 09:33:10 -07:00
John Emmas
a4449aa0f6 Fix 'samples / frames' typo in PBD::stacktrace() 2020-02-29 14:38:58 +00:00
9712501139
Lua Amplifier plugin with gain-coeff ratio controls 2020-02-29 00:25:51 +01:00
dd2c6e7cf1
Convert v5 send state-state 2020-02-28 21:21:16 +01:00
300063c8b9
Bail out if Playlist cannot be created
This prevents later crashes. Tracks cannot exist without a playlist.
2020-02-28 07:33:11 +01:00
003e68edd2
Display recent session-load errors in the GUI
Dumping errors to stderr only is not very useful. Particularly not
on Windows and MacOS.
Even though a user may not be able to address the issue, this
can lead to better reports vs just printing "corrupt state".
2020-02-28 07:32:17 +01:00
fa0a7d6739
Allow to limit error dump
This is in preparation of displaying verbose errors to the user.
2020-02-28 07:26:13 +01:00
a485195453
Ensure that regions have sources when saving
Otherwise this will lead to a corrupt state:
  ERROR: Session: XMLNode describing a AudioRegion references an unknown source id
  ERROR: Session: cannot create Region from XML description. Can not load state for region
  ERROR: Playlist: cannot create region from XML
and a track without playlist is created, resulting in a later crash.

Eventually SessionPlaylists::load() needs to handle this gracefully,
but this should help catch cases causing the actual issue.
2020-02-28 06:35:33 +01:00
016eaddad7
NO-OP: whitespace, re-indent 2020-02-28 06:08:26 +01:00
4b28e4ee3c
Fix some recursive undo removal
~StatefulDiffCommand() may trigger UndoTransaction::command_death()
which may delete the StatefulDiffCommand() that's just being destroyed.

This depends on the signal-connection order, which is undefined.
In any case when a shared_ptr<> object is being destroyed it means
that all references to it are already gone. There's no need to
emit drop_references from the d'tor.
2020-02-28 06:06:44 +01:00
bf3a36a126
Fix script to bypass all plugins
deactivate() hard bypassed all plugins, this made plugins with
a dedicated en/disable soft-bypass option inaccessible.
2020-02-28 04:34:54 +01:00