Commit Graph

38460 Commits

Author SHA1 Message Date
Paul Davis ef0938a16d more improvements to velocity drawing (including straight line) 2023-10-27 11:50:15 -06:00
Paul Davis 91fbb1c65b first steps towards improving straight line drags for velocity 2023-10-27 11:50:15 -06:00
Robin Gareus 68f55d62d0
Console1: cleanup, fix event loop initialization 2023-10-27 17:12:30 +02:00
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