Commit graph

29207 commits

Author SHA1 Message Date
Todd Naugle
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
Robin Gareus
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
Robin Gareus
82541b33a4
Retain custom internal-send name on session re-load 2020-03-02 21:54:38 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
e79b762daa
Micro-optimization: only recreate polarity buttons as needed 2020-03-02 19:18:59 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
7c6eadd84a
Fix some doxygen warnings 2020-03-02 17:58:03 +01:00
Robin Gareus
be4bdb5365
Do not include <stdint.h> in the Ardour namespace 2020-03-02 17:58:03 +01:00
Paul Davis
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
Robin Gareus
6edccc78a2
Fix previous commit (increase max, not default) 2020-03-02 02:26:10 +01:00
Robin Gareus
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
Robin Gareus
dc195f265d
Fix Luadoc build (follow up 2e9ac80e9, 5794d21a) 2020-03-01 21:26:43 +01:00
Robin Gareus
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
Robin Gareus
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
Paul Davis
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
Robin Gareus
9712501139
Lua Amplifier plugin with gain-coeff ratio controls 2020-02-29 00:25:51 +01:00
Robin Gareus
dd2c6e7cf1
Convert v5 send state-state 2020-02-28 21:21:16 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
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
Robin Gareus
016eaddad7
NO-OP: whitespace, re-indent 2020-02-28 06:08:26 +01:00
Robin Gareus
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
Robin Gareus
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
Robin Gareus
1af5f37e46
Restore visible automation lanes (#7914)
On session re-load only automation lanes with events were displayed,
regardless of visibility state. This allowed for inconsistent
state (menu showed them as visible even if they were not).
2020-02-28 02:25:57 +01:00
Robin Gareus
73c5bdd3cb
Fix double free of undo commands (amend 9e6435ff14)
This fixes a case when deleting a plugin, deletes all automation
undo/redo events:
  <UndoTransaction name="add automation event">
    <MementoCommand type-name="ARDOUR::AutomationList">
   ...


`delete this;` calls the d'tor which emits drop_references(),
that leads to UndoTransaction::command_death() destroying the
object, whichh causes a double free.
2020-02-28 02:09:58 +01:00
Robin Gareus
54911a0ee2
Fix duplicate control-ID when copying processors or proc state
Ideally we'd use a "retain ID when present", so that GUI object
state of automation lanes and inline controls will be retained.
2020-02-28 00:59:21 +01:00
Robin Gareus
4eba86b503
Fix libwebsockets compat
LWS_CALLBACK_HTTP_CONFIRM_UPGRADE is only available since v3.1.0
2020-02-27 23:58:00 +01:00
Robin Gareus
8710a2d943
Dialog default to cancel (#7915)
There are various ways to cancel a dialog. Only checking for
RESPONSE_CANCEL is not sufficient. e.g. Esc causes a delete-event.

 * Gtk::RESPONSE_CLOSE
 * Gtk::RESPONSE_REJECT
 * Gtk::RESPONSE_DELETE_EVENT
 * Gtk::RESPONSE_CANCEL
 * Gtk::RESPONSE_NO

Among others this fixes "Clicking session > open,
then hitting ESC opens the currently selected folder and session"
2020-02-27 23:27:42 +01:00
Robin Gareus
e5c819956a
Punch/Loop GUI control sensitivity 2020-02-27 22:25:37 +01:00
Robin Gareus
0b027f7678
Fix removal of punch range
set_auto_punch_location() is a NO-OP when there's no punch range.
This disconnects `punch_connections`, clears session-events,
and emits auto_punch_location_changed().
2020-02-27 22:23:59 +01:00
Robin Gareus
08559abc10
Add signals to indicate Punch/Loop constraints
This is in preparation for GUI sensitivity of Loop and Punch actions.
2020-02-27 22:16:12 +01:00
Luciano Iam
ef512d412d
Avoid occasional response delay when handling HTTP in the websockets surface 2020-02-27 03:42:54 +01:00
Luciano Iam
0921cf8939
Make previous commit 81ecc2b compatible with libwebsockets==2 2020-02-27 03:42:54 +01:00
Luciano Iam
ec8e0f8ee5
Gracefully reject HTTP requests reaching the websockets surface 2020-02-27 03:42:54 +01:00
Robin Gareus
bc2cbfc7ec
Prevent concurrent loop and punch recording (backend)
This also prevents switching between punch-in/out record
and looping without transport-stop.
2020-02-27 02:36:16 +01:00
R
b10d9cf09b
Add example Lua DSP script with multiple MIDI outputs 2020-02-26 20:39:21 +01:00
R
8702ff2189
Add support for Lua DSP scripts with multiple MIDI outputs 2020-02-26 20:28:54 +01:00
André Nusser
d1302ae934
And removing even more unused forward declarations. 2020-02-26 20:18:58 +01:00
Robin Gareus
c3fe0cd95e
Consolidate loop en/disable calls 2020-02-26 20:15:00 +01:00
Robin Gareus
28accee44e
Update script to use new process_map() API 2020-02-26 17:51:32 +01:00
Robin Gareus
65425b9fe2
Add a mute/gate plugin 2020-02-26 17:51:25 +01:00
Robin Gareus
d27cdb3855
Fix DSP::process_map() plugin-pin I/O map handing
The previous approach failed in case where PluginInsert
uses no-inplace buffers with a linear map.
Since buffers are replicated up to a total of number of
all (inputs + outputs), the number of output buffers
could not be determined. There was insufficient information
using the I/O map alone.

With a known number of outputs processing and applying
the i/o map is also a lot easier and faster.

This break the API of process_map().
2020-02-26 17:50:08 +01:00
Robin Gareus
a5c956883d
Add Lua bindings for libardour amp's simple gain 2020-02-26 17:49:54 +01:00
Robin Gareus
f372cc0bf2
Fix PI bypass, fix apply linear pin-connections
Previously this could assert(), copying a buffer to itself.
2020-02-26 17:49:01 +01:00