Commit Graph

38457 Commits

Author SHA1 Message Date
Robin Gareus
c7eb410d0b Make Xcode output readable again 2023-10-27 15:12:49 +02:00
Robin Gareus
cd5369c7cd Unload VST3 modules when closing session
This is perhaps a better solution than b8551eed7e
and 8d0a655608 and 7942897d93. It is certainly less
fragile.

It is more consistent with other plugin standards,
where modules are closed with the last instance in a session.

Then again keeping the VST3 factory around is beneficial
when switching snapshots.

Discuss, and let's watch for issues when re-loading a
previously unloaded VST3 module.
2023-10-27 04:46:38 +02:00
Robin Gareus
b8551eed7e Properly unload VST3 plugins
The InstrumentSelector keeps a PluginPtr reference to all
instruments. By default Ardour does not destroy the editor
at exit, So 3 instances of Instrument Selector can remain

 * TriggerClipPicker in the editor sidebar (owned by _editor)
 * TriggerClipPicker on the TriggerPage (owned by trigger_page)
 * SoundFileOmega (sfbrowser owned by Editor)

If a shared_ptr reference is retained, VST3 Module is not
unloaded at exit. This leads to issues with various plugins.
eg. Reason Rack does not terminate, Ardour hangs at exit.
2023-10-27 00:39:03 +02:00
Robin Gareus
49124ab987 Console1: properly shut down 2023-10-26 21:53:27 +02:00
Robin Gareus
61ec873481 Console1: another attempt to fix uncaught exeptions 2023-10-26 21:37:28 +02:00
Robin Gareus
85d9e333c9 Revert "Console1: catch some more uncaught exceptions"
This reverts commit 99e2546477.
2023-10-26 21:21:01 +02:00
Robin Gareus
53e24168b6 Partially revert "Clean init process to prevent exceptions"
This reverts commit 94fec7fd8a
except whitespace and intent changes as per discussion on
https://github.com/Ardour/ardour/pull/834
2023-10-26 21:20:06 +02:00
Robin Gareus
afc6c060a8 WebSockets: remove unsued variable after f34ce17bf0 2023-10-26 21:06:25 +02:00
Robin Gareus
830910c787 Region list columns do not use property_markup
This fixes an issue with frozen region "<F1>Foo" being
displayed as "&lt;F1&lt;Foo" in the sidebar.
2023-10-26 05:46:11 +02:00
Alexandre Prokoudine
d5c62fe2b9 Add Alexander Mitchell to the list of authors 2023-10-26 03:48:07 +02:00
Robin Gareus
b139bfdb88 VST3: add debug messages to trace ModuleExit 2023-10-25 00:37:03 +02:00
Paul Davis
f34ce17bf0 websocket: event loop names and thread/evloop pairs are set in BaseUI::main_thread()
There is no thread when an AbstractUI<T> is constructed. The event loop name and the
association between the event loop object and the thread that "runs" it must be
set from within the thread, which is not created until BaseUI::run() is called.

There appears to have been some confusion in e3569b64 about how this
all works; this commit should remove that
2023-10-24 16:26:50 -06:00
Hoger Dehnhardt
94fec7fd8a Clean init process to prevent exceptions 2023-10-24 23:11:05 +02:00
Robin Gareus
1dbc3305fa WebSockets: fix crash when switching snapshots #9506 2023-10-24 23:05:46 +02:00
Paul Davis
e0f543d8fb launchpad X: buttton/pad cleanup from the pro code
Edge button lighting is still not functional
2023-10-23 23:20:00 -06:00
Paul Davis
499912b07d get Launchpad X port names in the right order
Unlike the LP Pro, the "DAW" port comes first, not last
2023-10-23 17:45:41 -06:00
Paul Davis
ea02c49856 a better solution for the problem being addressed in b40513ff7 2023-10-22 17:31:29 -06:00
Paul Davis
a5a1caf9fa NOOP: whitespace changes 2023-10-22 17:15:20 -06:00
Paul Davis
8f405f3657 provide preference for scrolling-adjusts-note-velocity 2023-10-22 17:15:20 -06:00
Paul Davis
b40513ff7d temporal: workaround (perhaps temporary) for rounding issues in ::midi_clock_beat_at_or_after() 2023-10-22 17:15:20 -06:00
Paul Davis
4228fce86b temporal: minor optimization for TempoMap::{tempo,meter}_at() to cover common case 2023-10-22 17:15:20 -06:00
Robin Gareus
671e0b356b Add Lua script to sequence mixer-scenes using markers 2023-10-22 16:44:44 +02:00
Robin Gareus
d5d730ef8c NO-OP: move implementation out of header file
This is in preparation to test directly flushing insert/send
buffers after Delivery::run like Ardour 7.4 to 8.0 does
see also 44a2ef9098
2023-10-22 00:17:08 +02:00
Robin Gareus
a59e64f1d8 Catch XDG_CONFIG_HOME is not an absolute path
see https://discourse.ardour.org/t/glib-converterror-arch-linux/109362
2023-10-22 00:14:24 +02:00
Robin Gareus
711668267a Clarify toolbar widget preference
PDC toolbar widget is not just showing information,
but also interactive.
2023-10-21 18:08:52 +02:00
Robin Gareus
a7145661bc NO-OP: cleanup after 44a2ef909 2023-10-21 15:40:12 +02:00
Paul Davis
4ca457bb9e use launchpad x icon 2023-10-19 23:46:58 -06:00
Paul Davis
b0871f50b8 an icon image for the launchpad x 2023-10-19 23:41:57 -06:00
Paul Davis
98ff1307bf ardev and waf tweaks for launchpad X 2023-10-19 22:19:23 -06:00
Paul Davis
3e34229b9f initial launchpad X exploration, using copy-n-edit of launchpad pro code 2023-10-19 22:19:23 -06:00
Robin Gareus
99e2546477 Console1: catch some more uncaught exceptions 2023-10-19 23:46:43 +02:00
Robin Gareus
8f5df7ed28 Fix console1 crashes when no surface is present
e.g. selecting a track causes a ControlNotFoundException
if the ctrl surface is enabled, but no hardware is connected.

terminate called after throwing an instance of 'ArdourSurface::ControlNotFoundExceptio

```
#0  0x00007ffff14d8c2e in __cxa_throw () at /lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x00007fffe2b560a0 in ArdourSurface::Console1::get_button(ArdourSurface::Console1::ControllerID) const (this=0x61d0017e1c80, id=ArdourSurface::Console1::FOCUS1)
    at ../libs/surfaces/console1/console1.cc:928
#2  0x00007fffe2bfc647 in ArdourSurface::Console1::map_select() (this=0x61d0017e1c80) at ../libs/surfaces/console1/c1_operations.cc:653
#3  0x00007fffe2b55384 in ArdourSurface::Console1::map_stripable_state() (this=0x61d0017e1c80) at ../libs/surfaces/console1/console1.cc:832
#4  0x00007fffe2b541ab in ArdourSurface::Console1::set_current_stripable(std::shared_ptr<ARDOUR::Stripable>)
...
```

This does at least fix the crash. Ideally the surface would
only be enabled if there is hardware present.
2023-10-19 21:58:28 +02:00
Robin Gareus
31f42b9be5 VST3: Prevent recursive calls, part II
See also 7227407aa6
2023-10-19 17:49:05 +02:00
Robin Gareus
9138fb9913 VST3: another attempt at sharing has_editor with other instances 2023-10-19 00:25:02 +02:00
Robin Gareus
7227407aa6 VST3: Prevent recursive calls to ::has_editor()
Some plugins call restartComponent(Vst::kParamTitlesChanged)
when their GUI is created, from the call that creates the UI.
This lead to a stack-overflow recursion in Ardour:

ProcessorBox::redisplay_processors -> VST3Plugin::has_editor
-> [plugin] -> VST3::restartComponent -> signal proc changed
-> ProcessorBox::redisplay processors
2023-10-18 22:01:03 +02:00
Robin Gareus
bd1cf4e5cf VST3: cache has-editor (improve on 6b9544cc39) 2023-10-18 22:01:03 +02:00
Robin Gareus
c37a7944aa NO-OP: whitespace 2023-10-18 22:01:03 +02:00
Paul Davis
2e4ceaf34d conform to platform expectations for scroomer select mouse ops 2023-10-18 10:14:34 -06:00
Paul Davis
71ba96aa3b improve/fix mouse click logic on piano roll header
ctrl-click now toggles that note row's selected status, as intended
2023-10-18 09:29:39 -06:00
Paul Davis
4974369787 fix logic in MidiRegionView::select_matching_notes() to not add notes when asked not to 2023-10-18 09:05:48 -06:00
Paul Davis
b7b2189d95 fix copy-paste but in MidiTimeAxisView::set_note_selection() - use set, not add 2023-10-18 09:05:10 -06:00
Paul Davis
d88b9d36ca freehand draw for velocity only affects selected notes, if any are selected (#9491) 2023-10-18 08:26:42 -06:00
Paul Davis
edc0e636e2 allow users to opt for "select only the last drawn note" when drawing notes 2023-10-17 22:03:47 -06:00
Robin Gareus
6b9544cc39 VST3: cache if plugin has custom GUI
This prevents repeated calls to createView(); view->release();
only to check if a VST3 plugin has a custom UI.
2023-10-18 01:14:20 +02:00
Robin Gareus
44a2ef9098 Fix duplicate Port flush_buffer calls (#9481)
Since 62fc1d3c2e, Delivery buffers were flushed twice.
Once by copy_to_outputs() and again later by
Delivery::flush_buffers. This resulted in duplicate events
during export (see 576840c09e, MIDI buffers are not cleared
after flush to allow export processing to grab the data from
the port-buffers).

The workaround in 62fc1d3c2e is only relevant for ClickIO,
other Deliveries (Send is a Delivery) are explicitly flushed
by Route::flush_processor_buffers_locked.
2023-10-17 05:46:44 +02:00
Robin Gareus
576840c09e NO-OP: return early, remove scope 2023-10-17 05:40:31 +02:00
Robin Gareus
3ce2cf937e Revert "wscript: drop unnecessary str() on configure variables"
This reverts commit 615326be9b because it
breaks windows builds.

```
File "/home/ardour/ardour-w64/wscript", line 1462, in configure
  set_compiler_flags (conf, Options.options)
File "/home/ardour/ardour-w64/wscript", line 522, in set_compiler_flags
  if re.search ('x86_64-w64', conf.env['CC']) is not None:
File "/usr/lib/python2.7/re.py", line 146, in search
  return _compile(pattern, flags).search(string)
TypeError: expected string or buffer
```
2023-10-16 21:15:25 +02:00
Robin Gareus
1f7abff38b Include Track name when consolidating ranges 2023-10-16 21:12:44 +02:00
Robin Gareus
9345f824f5 Update scripts for new bonuce_range API 2023-10-16 21:12:42 +02:00
Robin Gareus
88365ae149 Allow for bounces with dedicated source and region-name
This restores a popular feature to use bounce to export
ranges with track name file-name, while keeping a dedicated
name for the region in the GUI.
2023-10-16 21:12:40 +02:00