Commit Graph

21109 Commits

Author SHA1 Message Date
Robin Gareus 3f7c98e2db
Vapor: add API used to set ADM meta-data 2024-02-22 01:55:05 +01:00
Robin Gareus 7dc1fbab5a
Add Lua API to conveniently set automation data 2024-02-21 19:38:51 +01:00
Robin Gareus 8b0b316565
Update unversal legal path rule for windows 2024-02-21 13:51:40 +01:00
Biswapriyo Nath 7e7d22e7d2
ytk: Fix function pointer casting compiler error with clang
This fixes the following compiler error.

../libs/tk/ytk/gtkscale.c:1474:50: error: incompatible function pointer types passing
'GCompareFunc' (aka 'int (*)(const void *, const void *)') to parameter of type
'GCompareDataFunc' (aka 'int (*)(const void *, const void *, void *)') [-Wincompatible-function-pointer-types]
    (GCompareFunc) compare_marks,
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/glib/gslist.h:76:26: note: passing argument to parameter 'func' here
    GCompareDataFunc  func,
    ^
2024-02-21 13:30:23 +01:00
Robin Gareus 3efaf60de1
Vapor: fix automation evaluation 2024-02-21 02:49:58 +01:00
David Runge f331ce7252
Add missing include for iostream, needed for taglib >= 2
Signed-off-by: David Runge <dave@sleepmap.de>
2024-02-20 16:38:37 +01:00
Paul Davis 15eae21c37 fix failure to record MIDI notes that are already on when capture starts 2024-02-18 19:31:19 -07:00
Robin Gareus 0e6e56d420
Backport debian's fix-armel patch
Running Ardour on 32 bit ARM without hardware floating point
unit may be considered civil disobedience. But we understand that
it is incumbent on the young to disobey :)
2024-02-18 20:47:51 +01:00
Robin Gareus b230c2eb28
Build against local libAAF (0.6.0 is not yet released)
Revert once libAAF API is stable after libAAF 1.0
2024-02-18 20:38:33 +01:00
Robin Gareus d423810784
Update CC defaults to be more in line with MIDI specs (#9634)
Note: parts of this commit accidentally made it in the previous
one (9386847cc9)
2024-02-18 18:44:32 +01:00
Robin Gareus 9386847cc9
Fix ACE Compressor inplace processing #9636 2024-02-18 18:19:35 +01:00
Robin Gareus b6cfd4164b
Expose Lua bindings to Ardour's CoreSelection 2024-02-17 15:02:25 +01:00
Robin Gareus 35686baa2b
Potential fix for taglib v2.0 crashes when exporting wav
Note that taglib's documentation states that ID3v2Tag()
always returns a valid pointer regardless of whether or not
the file on disk has an ID3v2 tag.
2024-02-17 00:50:54 +01:00
Robin Gareus f5789852de
Fix sensitivity of macOS global menu at application start
Various actions are set as insensitive during editor c'tor.
When the macOS global menu is created those were marker as
sensitive, while GTK's internal state (private_data->sensitive)
was set to false. This lead to to inconsistencies.
2024-02-16 16:20:02 +01:00
Robin Gareus 20d813cd17
Enable SurroundSend Mute point when loading old sessions 2024-02-16 00:04:23 +01:00
Robin Gareus a5f4bf39d1
Update libAAF (upstream v0.6-45-g9171e40) 2024-02-15 01:44:35 +01:00
Robin Gareus 36cd1f796f
Define AAF file extension 2024-02-15 01:44:34 +01:00
Robin Gareus b36323688a
Allow create Sessions with a specific sample-rate
This is in preparation to create sessions from AAF which may
have a sample-rate other than the running engine.
2024-02-15 01:44:31 +01:00
Edgar Aichinger 7ee7cf5f4e correct a few escape character errors in german (gtk2_ardour) and czech
(libs/ardour) translation strings, fixes .mo generation
2024-02-14 11:50:27 +01:00
Robin Gareus 64a6fddbea
Vapor: fix SpatializationAlgorithm constant 2024-02-13 17:59:07 +01:00
Robin Gareus ef81f3163d
Vapor: improve backwards compat of Apple renderer
replace constants only available >= macOS 11.0
2024-02-13 06:29:56 +01:00
Robin Gareus e13047a769
NO-OP: clang-format 2024-02-13 05:00:16 +01:00
Robin Gareus 03ea0c8080
Vapor: improve backwards compat of Apple renderer 2024-02-13 04:53:51 +01:00
Robin Gareus c6d0064e09
Vapor: relax Apple Binaural Renderer detection 2024-02-13 04:35:45 +01:00
Robin Gareus 0c96c12a50 Vapor: Implement Apple Binaural Renderer 2024-02-13 02:07:43 +01:00
Robin Gareus 4fdf5b2967
Vapor: re-send pan positions at export start 2024-02-12 20:49:13 +01:00
Robin Gareus e2cdb3f5d8
Dummy Backend: allow testing with some prime buffersizes 2024-02-12 14:07:59 +01:00
Martin Vlk d84363329b Czech translation updates. 2024-02-03 21:12:02 +01:00
Paul Davis c628099814 launchpad Mini/X: tweak regex to account for weird cases
IRC user MikeLupe reports a Linux/ALSA system that has ports named

 Launchpad Mini MK3 LPMiniMK3 DA
 Launchpad Mini MK3 LPMiniMK3 MI

(note the truncations). Unclear if this is a failure of some specific
version of ALSA or something unusual about his device, but this
should fix the situation without breaking for anyone else
2024-01-31 17:13:10 -07:00
Robin Gareus 05ffd4821e
Add Surround Send Enable Grouping 2024-01-30 23:58:40 +01:00
Robin Gareus 2e00638761
Vapor: add AutomationControl to en/disable surround send
This is in preparation to allow grouping send-enable.
2024-01-30 23:58:36 +01:00
Robin Gareus 11e508cbe6
Vapor: sync automation state of multi-channel surround pans 2024-01-29 22:24:43 +01:00
Robin Gareus 2579bb6dd4
Vapor: hide surround pan controls when removing channel(s) 2024-01-29 22:24:39 +01:00
Robin Gareus 21c3c865d3
Vapor: link stereo surround pan automation visibility 2024-01-29 22:24:29 +01:00
Robin Gareus fc9ac6a13c
Fix linux/clang builds (incomplete forward declared type) 2024-01-29 14:56:40 +01:00
Robin Gareus ddbe15fd03
Fix gdk livelock on Windows when compiled with recent mingw/gcc
recent gcc (>=11) sets _WIN32_WINNT >= 0x602 which changes
QS_ALLINPUT to include (QS_TOUCH | QS_POINTER) events which are
only available on Windows 8 and later. Listening to those events
makes ardour unresponsive.
2024-01-28 21:51:57 +01:00
Robin Gareus 6e28c43cef
Don't show plugin preset UI for plugins without controls
Notably Ardour's General MIDI Synth has no presets, but
users try.

This also prevents presets of plugins with internal state,
but no user visible controls. But those usually have a plugin
provided presets.
2024-01-28 14:58:55 +01:00
Ben Loftis cefab85dab Srnd: continuously run lufs_meter, so momentary loudness meter can be 'live' 2024-01-21 10:58:47 -06:00
Ben Loftis 22b7a07526 Srnd: expose the momentary loudness value in addtion to integrated loudness 2024-01-21 10:58:38 -06:00
jean-emmanuel be0e6ac613 ui: fader: use sementically correct color name for fader outline 2024-01-20 15:38:35 +01:00
jean-emmanuel e4d53629ed ui: meter: use sementically correct color name for meter outline 2024-01-20 15:38:35 +01:00
jean-emmanuel f8a2c847b5 ui: correctly implement themable button outline color 2024-01-20 15:38:35 +01:00
jean-emmanuel a5efe1a1ee ui: fader: themable outline color instead of hard-coded black (use same theme color as button outline) 2024-01-20 14:44:30 +01:00
jean-emmanuel 759cee2d32 ui: fastmeter: themable outline color instead of hard coded black (use same theme color as button outline) 2024-01-20 14:44:30 +01:00
jean-emmanuel 08ad1af9dc ui: button: themable outline color instead of hard-coded black 2024-01-20 14:44:30 +01:00
Nil Geisweiller dfc1cd94df
Fix Legatize::operator() by not removing 1 tick 2024-01-19 23:57:53 +01:00
Nils Philippsen 92e359bf81 Fix libaaf pkgconfig name
Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2024-01-19 23:29:14 +01:00
Robin Gareus 32eb9b0520
Add API to define related controls
This is intended to show connected controls that share
automaton state, notably pannables
2024-01-19 02:20:48 +01:00
Robin Gareus 276adf292e
Do not automatically enable surround-send
For Mixbus, the surround-send is not visible.
2024-01-18 21:37:11 +01:00
Robin Gareus 75e8f58952
Fix muting of monitor section when engaging surround 2024-01-18 20:44:01 +01:00
Robin Gareus 8ca4c4a255
Fix Windows build (post 356374b)
Multiple definition of `ARDOUR::MPControl<bool>::set_value`
2024-01-18 18:48:16 +01:00
Robin Gareus 356374bfb3
Vapor: replace output format API with a controllable 2024-01-18 00:18:52 +01:00
Robin Gareus 1b57838e90
Explicitly catch Glib::ConvertError
Local builds are not affected, since
```
ConvertError is-a Glib::Error is-a Glib::Exception
```

However it seems that rethrowing the ConvertError exception
is not handled correctly with glib/g++ of official builds:

https://discourse.ardour.org/t/crashes-on-cd-export-no-toc-or-cue-files/109771
2024-01-15 16:49:34 +01:00
Robin Gareus 37e7fe9963
Escape cue cd-text like toc
Really do what 02852c1980 says, which only fixed toc files.
2024-01-15 16:25:25 +01:00
Robin Gareus 0fd1edd78e
Update well-known ctrl: separate global and per band EQ enum 2024-01-15 15:34:55 +01:00
Robin Gareus 3fc7db08f0
YTK: do no parse gtkrc and theme files 2024-01-14 20:28:43 +01:00
Robin Gareus a3cd791166
Amend bfb22e2acc, fix generic MIDI signal connection 2024-01-13 18:50:26 +01:00
Robin Gareus bfb22e2acc
Ctrl Surfaces: update bound controllables
Note: this only affects surfaces that use mapped_controls, and do
not already subscribe to processors_changed/RouteProcessorChange signal.
2024-01-13 17:14:17 +01:00
Robin Gareus c3ec93997c
Remove old well-known ctrls API 2024-01-13 04:06:29 +01:00
Robin Gareus 048c574b07
Amend 70a0b47ce (add missing file) 2024-01-13 03:59:37 +01:00
Robin Gareus 70a0b47cef
Update Ctrl Surfaces: use new well-known-ctrl API 2024-01-13 03:08:51 +01:00
Robin Gareus a7e36f77ac
Add enum-based well-known-ctrl API 2024-01-13 03:03:25 +01:00
Robin Gareus 12002e1dc0
FP8: only use visible channelstrip plugins
This is in preparation for multiple Mixbus channelstrip
Plugins.
2024-01-13 03:01:40 +01:00
Robin Gareus 4a9b2cd014
Vapor: set surround bus channel names 2024-01-11 06:47:13 +01:00
Robin Gareus 3c5f9f1450
Add API to set custom IO port channel names 2024-01-11 06:47:06 +01:00
Robin Gareus db7a67980d
Vapor: allow to toggle 5.1 and 7.1.4 main output 2024-01-11 05:16:21 +01:00
Robin Gareus a9719f1b35
Vapor: add support to trim surround object level 2024-01-10 01:31:57 +01:00
Ben Loftis ee6d46d403 Ardour repo should not distinguish between Mixbus variants 2024-01-08 08:25:18 -06:00
Robin Gareus ad51c7c2ba
Localize stripped down gtk2
This is intended mainly for GNU/Linux distros who will remove
GTK2 support in the near future.
2024-01-06 21:52:48 +01:00
Robin Gareus 6172de3144
Vapor: add Lua bindings 2024-01-06 20:24:37 +01:00
Robin Gareus b84cd4fb5a
Vapor: Implement Surround Send/Return 2024-01-06 20:24:23 +01:00
Robin Gareus ec32d22cb3
Vapor: Prototype LV2 export extension 2024-01-06 20:22:39 +01:00
Robin Gareus 3de600625f
Consolidate internal bus checks (1/2) 2024-01-06 20:21:51 +01:00
Robin Gareus 9bb4d0dcf8
Vapor: Add surround types/enum 2024-01-06 20:21:25 +01:00
Robin Gareus c7772c220e
Vapor: Bootstrap Atmosphere plugin 2024-01-06 20:21:13 +01:00
Robin Gareus 0ada2df2e6
Implement [surround] LUFS meter 2024-01-06 20:21:06 +01:00
Robin Gareus 88c796c8f2
Add dedicated Exception for Plugin/Processor errors 2024-01-06 20:21:00 +01:00
Robin Gareus 5476aa336f
Fix "Ignored automation data for non-automatable parameter"
Do not save automation data for parameters that cannot
be automated.
2024-01-06 20:20:45 +01:00
Robin Gareus 66ad0ebb03
Region groups: do not group multiple takes on a single track 2024-01-06 20:20:30 +01:00
Robin Gareus bcfa591ed2
Fix crash (or stuck solo) when removing tracks 2024-01-06 20:20:00 +01:00
Robin Gareus 58641d2a35
Fix crash when session-load fails while creating Routes
When loading the state of a Route fails (here
"unknown enumerator SurroundMaster in PBD::EnumWriter"), the
routes which have already been loaded are not added to the
Session's routelist.

Already existing routes that have an InternalSend or have
a circular reference:

The Send's `_send_from` holds a shared pointer
`<Route>(shared_from_this())` to the Route, and the
Route's ProcessorList contains the InternalSend.

This leads to various
"SessionHandleRef exists across session deletion" of
IO, Ports, GraphNode, Graph, etc
which causes issues when loading another session.

Session::destroy() cleans calls drop_references for
each route in the RouteList, which breaks the circular
dependency (InternalSend drops reference to Route).
But here the RouteList is empty.

Crash fixed:
 * Load a session that fails to load a Route
  (here a session created on with the vapor branch, on master)
 * Then load another session without restarting Ardour.
2024-01-06 04:19:24 +01:00
Robin Gareus e8a902d875
Remove debug message 2024-01-06 04:19:20 +01:00
Robin Gareus 986faf42f5
Initialize some uninitialized variables
This is only relevant when session load fails, by throwing
an error, which is caught and calls destroy() before
Session::setup_lua is called.
2024-01-06 04:19:14 +01:00
Robin Gareus c5db23a15c
Update libAAF (upstream v0.5-2-g4dfb754) 2023-12-26 14:35:14 +01:00
Edgar Aichinger eeadd04b14 update german translation (this time for real) 2023-12-17 11:45:15 +01:00
Robin Gareus c3b55240b1
Fix erasing events in MIDIBuffer
When the last event in a MIDI buffer was erased, the whole buffer
was assumed to be empty (bug introduced in 7.5-96-gc5511040ec)
2023-12-15 08:50:10 +01:00
Robin Gareus 066df7cc1a
LV2: fix crash when replicating stateful plugin on copy
When copying a mono LV2 plugin to a stereo track, the
state of the copied mono plugin is copied to the replicated
instance.

However at this point in time PBD::Stateful::ForceIDRegeneration
is still enabled, and the state ID has not been set.

This used to not be an issue. Older versions of liblilv
handle non-existent paths just fine.

However in lilv v0.24.20-10-gdd5e851 `lilv_path_absolute`
was replaced with `zix_canonical_path` which returns NULL
if a state file does not [yet] exist. This lead to a segfault
due to strlen(NULL) in `serd_node_new_file_uri`:

#0 strlen -- SEGV on unknown address 0x000000000000
#1 serd_node_new_file_uri () at /lib/x86_64-linux-gnu/libserd-0.so.0
#2 lilv_state_new_from_file () at /lib/x86_64-linux-gnu/liblilv-0.so.0
#3 ARDOUR::LV2Plugin::set_state(XMLNode const&, int) at ../libs/ardour/lv2_plugin.cc:2320
2023-12-15 04:30:45 +01:00
John Emmas 9f3438b2bc Fix a call to 'access()' by adding a call to 'uriDecodeString()'
For testing - needs to be checked by Adrien and will most likely be needed for other calls to 'access()'
2023-12-13 16:13:11 +00:00
Robin Gareus 92d6cb9933
Fix alloc-dealloc-mismatch (video image) 2023-12-12 20:36:55 +01:00
Robin Gareus 634aa9900d
UF8 for everyone 2023-12-12 03:38:50 +01:00
Paul Davis f184acfb9d prevent crash in AudioPlaylist::write() due to lossy time domain convert 2023-12-11 16:52:25 -07:00
Robin Gareus 9f5f7edc5b
Add debug message to check if yabridge is detected 2023-12-10 22:13:38 +01:00
Robin Gareus 4402e2a3a8
Add workaround for yabridge threading
* yabridge runs the plugin's process function in a dedicated
  bridged thread. Ardour's process thread is not (it just waits)

* When a plugin calls `restartComponent` from the realtime
  thread. yabridge uses a host notification thread to perform
  the callback.
  Unlike other VST3 implementations that use a notification thread
  (eg. JUCE), yabridge blocks and waits for the notification to
  complete before the realtime thread can continue.

This leads to a deadlock.

However, we know that yabridge always synchronizes the
callback and concurrent calls are prevented by yabridge's design.

https://github.com/robbert-vdh/yabridge/issues/266
2023-12-10 22:08:59 +01:00
Robin Gareus f191d8ba94
Further consolidate locations signal emissions 2023-12-10 04:10:45 +01:00
Robin Gareus 0f3e3b5243
Fix signal emission for Locations::ripple (1/2)
Locations::ripple can never add/remove markers, hence
Locations::changed is not applicable.

That signal is to indicate when more than one location is
added or removed from the location list.
2023-12-10 04:08:30 +01:00
Robin Gareus 1de91fa0fb
Significantly reduce signal emission for Location undo
Undo sets the state of ALL Locations, which resulted in
at least two signals for each Location (name changed,
start+end changed), even if there was no change.
2023-12-08 23:48:37 +01:00
Robin Gareus 153c7e289d
Add explicit API to copy Locations
This is in preparation to reduce signals during
Location Drag motion (which operates on a copied
Location, that causes [static] signal emissions,
but the location itself is not in any list).
2023-12-08 21:47:03 +01:00
Robin Gareus 0c5bbfa62d
Location: add API to use cached sorted location list
Every call to ::next_section() copies the location list
and sorts all the regions.

If the session has a significant amount of Locations and
Section Marker (#9568 has 300+) sorting them each time
when iterating over sections is significant.
2023-12-08 17:22:28 +01:00
Robin Gareus ebc887e33d
Continue export-roll to flush buffers
This is required when using plugins to write data.
2023-12-08 17:22:24 +01:00
Robin Gareus a13a797600
Ignore "stop at end" when exporting
Exporting a dedicated Range should not be constrained by
session markers. This fixes at least 2 issues:

* export could be cut short when using latent plugins
* exporting a range crossing the session end marker was cut short
2023-12-08 17:22:09 +01:00
Robin Gareus 963c104cca
Change default sample-rate to 48kHz
44.1kHz is dead; many soundcards do not support it anymore.
2023-12-08 17:21:57 +01:00
Robin Gareus 004097075a
ControlGroup cannot just create Controls that don't exist
The call as-is can only create route-owned controls, and
even if it would succeed, the created ACs won't necessarily
be controlling anything.
2023-12-06 04:49:16 +01:00
Robin Gareus 0786be859d
Retain TransportMaster Ports across sessions
Unloading a session should only remove session-ports.
This fixes Timecode master sync when switching snapshots
or sessions.
2023-12-03 20:38:31 +01:00
Robin Gareus 4194313e4b
Make Timecode master connection order independent
When a user first connected a port to the Timecode master
input and then disconnected a previous port, the Timecode
master assumed it was not connected.
2023-12-02 23:42:27 +01:00
Robin Gareus dacf488c86
Fix callback order of port-dis/connections
Previously the port-engine was a LIFO. Changes were pushed back
and then popped-back. This causes issues when re-connecting
Transport Masters.

The GUI does the following when changing connections:
1. disconnect all
2. connect to new port

which lead to TransportMaster::connection_handler being called
in reverse order: connect, disconnect, and the transport
master was assumed to not be connected.

--

Now connections queue is a FIFO and code was consolidated.

(Note, we cannot use a std::deque because it does not support
memory pre-allocation with ::reserve)
2023-12-02 23:34:58 +01:00
Robin Gareus 1386b3b73f
Revert s/frame/sample/ for LTC frame 2023-12-02 22:45:33 +01:00
Robin Gareus a8c26dbfa4
Fix localtime_r check (#9554) 2023-11-28 17:05:03 +01:00
Robin Gareus 1306a698a7
Sanitize MIDI track names, remove unprintable chars #9553 2023-11-28 00:29:19 +01:00
Robin Gareus 7593551e49
Import libAAF into Ardour's source-tree
tools/update_libaaf.sh - libaaf v0.1-85-g3e4c2cd
2023-11-27 23:24:54 +01:00
Robin Gareus 47e437c2aa
Bootstrap libAAF support 2023-11-27 23:18:22 +01:00
Robin Gareus 73b44532f1
Allow to override visibility tracker
This is in preparation to keep track of external UI plugin UIs
2023-11-26 20:06:35 +01:00
Nils Philippsen e995daa375 Fix failure to build with libxml2 version 2.12
This declared some xmlError pointers const, which probably was always
assumed, but not made explicit.

Signed-off-by: Nils Philippsen <nils@tiptoe.de>
2023-11-25 00:30:04 +01:00
Paul Davis f01f4eeded MIDI state tracking doesn't care about size 2023-11-20 21:40:12 -07:00
Paul Davis cb91334cc6 basic work to permit "MIDI catchup" for MIDI state at any point on the timeline
This currently does nothing and cannot be enabled
2023-11-20 21:32:49 -07:00
Robin Gareus 4d7c4bf183
Clearlooks: GtkCList is deprecated and not used by Ardour 2023-11-19 20:28:44 +01:00
Paul Davis da175cc2e8 temporal: remove TempoMap::insert_time() and use shift() instead
The former was incorrectly implemented, and the latter has already been tested more
in real life.

We should likely remove ::remove_time also and use shift() there too, but that
requires testing negative shifts more broadly.
2023-11-19 12:14:10 -07:00
Paul Davis 5723c9bf9c temporal: slightly more debug info when computing quarters from superclock 2023-11-13 22:32:15 -07:00
Paul Davis 04523dee97 temporal: NOOP reindent #ifdef'ed out code 2023-11-13 22:32:15 -07:00
Paul Davis ce4d1ffe51 temporal: after loading an old tempo map, reset it to compute omega etc. 2023-11-13 22:32:15 -07:00
Paul Davis fbc578fdb6 temporal: use "pulses" info from old tempo maps
Note: pulses are whole notes
2023-11-13 22:32:15 -07:00
Paul Davis f8d86c8d19 temporal: add a new ::set_tempo() method for use when loading older tempo maps 2023-11-13 22:32:15 -07:00
Robin Gareus 5b7e008cad
Fix missing sources after cleanup/rec #9536
Ardour accidentally removed nascent source-files during cleanup.
This can lead to missing files when recording directly after a
cleanup.

This also ensures that there are no duplicates in the
dead-sources (file sources unused in the current snapshot) list.
2023-11-13 22:15:42 +01:00
Robin Gareus bbbd023895
Add flag to hide internal plugins from user 2023-11-09 02:01:54 +01:00
Robin Gareus 5b77e348e7
Allow to clear LV2 plugin scan info 2023-11-09 02:01:14 +01:00
Paul Davis 9e4a695689 temporal: fix error in computation of timecnt_t::end() for specific conditions
parens were in the wrong place - we need to add the ::magnitude() of
the tick-based duration AFTER conversion of audio-time position to beats, not
before.
2023-11-06 20:38:08 -07:00
Paul Davis 58652f6268 launchpad pro: use "first fader" concept from lpx
we control the CC number sent by launchpad faders, and 0x20 is too large
because it causes the faders to overlap with some of the CC values
sent by RHS pads. Parametize the first fader and use it everywhere
2023-11-06 12:33:36 -07:00
Paul Davis 144756e602 launchpad: extend Dominik's LP Pro pad patch to LPX/Mini 2023-11-06 10:31:22 -07:00
dominik martinez 93a6849bdd lppro: Don't unbang trigger until pad is released
This was causing issues with cues when clips were set to gate triggering. A pad
long press was causing the clip to release. Additionally, remove an extra timer
that was being set.
2023-11-06 10:31:22 -07:00
Robin Gareus 3e8cde5ad6
Always allow playback w/o session-range 2023-11-06 16:49:46 +01:00
Paul Davis 3fc126b891 launchpads: add namespacing to make 1-source-2-surfaces work for X and Mini 2023-11-04 09:30:26 -06:00
Paul Davis 9b511ce973 launchpad: work on a single implementation for both Mini and X devices
This is not complete, because the symol names are identical, and there's no way (yet)
to ensure which versions Ardour will use if both are dynamically loaded.
2023-11-04 09:30:26 -06:00
Paul Davis c4f8c84a75 region: in definition of ::end() use a slightly faster but entirely equivalent expression 2023-11-03 15:11:38 -06:00
Paul Davis 7d0b223330 region: end().decrement() IS nt_last(), so remove the explicit decrement call 2023-11-03 15:11:38 -06:00
Paul Davis d309ab31e8 playlist partition_internal() uses exclusive end semantics
Do not pass "end-1" to it from Playlist::cut()
2023-11-03 15:11:38 -06:00
Robin Gareus b27c804a7c
Prevent duplicate entries in recent session
This can happen with snapshots or after save-as with
.ardour session files having different "Names" in the same path.

Or simply by saving a session on macOS in /tmp (which is really
/private/tmp).
2023-11-01 23:17:47 +01:00
Paul Davis 53ad83c91c some extra debugging output for MerryIO to try to produce 2023-11-01 00:25:51 -06:00
Robin Gareus a57076d203
Fix MIDI input monitoring without connections
This was seemingly accidentally committed in 07d7e0bf54.
MIDI Monitoring works now with MIDI devices that are not
connected to a Track or Bus.
2023-10-31 22:35:05 +01:00
Paul Davis 43c5f0ab46 launchpad X: 98% functionality 2023-10-31 09:56:40 -06:00
Paul Davis dec9282110 midisurface: use correct virtual method for note off
This likely needs checking for all surfaces that inherit from MidiSurface. It is clearly
the correct thing to have in the code, but existing behavior might be predicated on
the former incorrect connection
2023-10-31 09:56:40 -06:00
Paul Davis f45aec903b launchpad X: better general code design for Novation's use model 2023-10-31 09:56:40 -06:00
Paul Davis e9858773ca launchpad X: change design of fader bank implementation to match the X way (not the Pro way) 2023-10-31 09:56:40 -06:00
Robin Gareus 6dd1ad24ab
IOPlug: implement reset to default values 2023-10-31 07:41:23 +01:00
Robin Gareus eebc902564
Auditioner: fix stuck notes when auditioning different files
The MIDI Buffer is cleared when starting to process,
the panic message never made it to the plugin.
2023-10-31 02:17:05 +01:00
Robin Gareus 870172611f
Update message for relocated preference 2023-10-29 02:40:57 +01:00
Martin Vlk 562a6335de
Czech translation updates. 2023-10-29 02:41:18 +02:00
Paul Davis 638509738d launchpads: edge buttons are supposed to use CC not note messages
Apparently the LP Pro responds to either, but the LP X does not
2023-10-28 17:48:33 -06:00
Robin Gareus 49426a602f
Console1: Clean up previous commit 2023-10-28 23:04:39 +02:00
Holger Dehnhardt 03e3546422
Clean init process to prevent exceptions 2023-10-28 22:59:39 +02:00
Robin Gareus 828d45c6fa
Disambiguate In/Out etc for translations (2/2) #9512 2023-10-28 14:46:04 +02:00
Robin Gareus bec4344546
Console1: leave some TODO notes for later 2023-10-27 21:23:33 +02:00
Robin Gareus a5aff68053
Console1: remove unused dependencies 2023-10-27 21:23:33 +02:00
Robin Gareus 5cad7837fa
Console1: fix compiler warnings
For reasons unknown only the console1.h produces
 -Winconsistent-missing-override
warnings, other similar headers e.g. lppro.h do not.
2023-10-27 21:23:28 +02:00
Robin Gareus 68f55d62d0
Console1: cleanup, fix event loop initialization 2023-10-27 17:12:30 +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 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 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 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 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 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 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
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 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
Robin Gareus 866c784f33
NO-OP: whitespace 2023-10-16 21:12:37 +02:00
Robin Gareus 15d560c5e4
Consolidate common bounce code of Audio and MIDI Track 2023-10-16 21:12:33 +02:00
Robin Gareus b736c50d83
Fix deadlock in Playlist::fade_range
Region::fade_range emits a signal which will call
ARDOUR::Playlist::region_bounds_changed, which takes a WriteLock.
That resulted in a WriteLock with ReadLock held.
2023-10-15 22:51:08 +02:00
Mads Kiilerich 2973e82a90 wscript: sanitize strings from fetch_*_revision_date early instead of applying str() all over
This can perhaps be simplified further when Python2 support is dropped.
2023-10-15 10:47:16 -06:00
Mads Kiilerich 615326be9b wscript: drop unnecessary str() on configure variables
CC is already set to a string. (And if it ever should be None, we want
to handle that explicitly.)

(And #autowaf.display_msg handle Booleans just fine.)
2023-10-15 10:47:16 -06:00
Mads Kiilerich 0e3e51d958 wscript: drop str() on VERSION
It will already have been converted to str in sanitize(), and even
python2 is fine without the extra str.
2023-10-15 10:47:16 -06:00
Mads Kiilerich 2bb311f99b wscript: don't add pointless -DHAVE_X for each mandatory subdir
The sub_config_and_use function recursed, but it also invoked
autowaf.set_local_lib , which however didn't do anything useful. The
HAVE_ defines are not used anywhere, and the AUTOWAF_LOCAL defines are
only used in autowaf.use_lib, which however isn't used anywhere.

Dropping these defines simplify the build environment and makes the
compiler command line half as long and thus makes debugging much more
manageable.
2023-10-15 10:47:16 -06:00
Mads Kiilerich 8fea606b32 wscript: drop APPNAME assignment in libs
https://waf.io/book/ says
  By default, the project name and version are set to noname and 1.0. To
  change them, it is necessary to provide two additional variables in
  the top-level project file

- and waf code inspection confirms that waf itself only will use the top
level APPNAME.
2023-10-15 10:47:16 -06:00
Mads Kiilerich 6b61b03434 wscript: drop traces of shutdown() handling
autowaf has no real shutdown functionality anyway. The automatic
shutdown function that could have been called wouldn't work anyway, as
it takes an argument.

The only reason it doesn't fail is that the top level wscript has no
shutdown handling and doesn't recurse to other scripts, so it is all
dead code.
2023-10-15 10:47:16 -06:00
Mads Kiilerich 92aca32652 wscript: stop loading misc where nothing is using it
It is apparently only used in gtk2_ardour/wscript - and it seems to be
enough to load it in configure(), even though it is used in build().
2023-10-15 10:47:16 -06:00
Mads Kiilerich 88cecdfaef wscript: drop repeated autowaf.set_options - it is enough to set at top level 2023-10-15 10:47:16 -06:00
Mads Kiilerich 1c686f4d63 wscript: drop additional configure statements already present in the top level wscript
Missed in 8bb91099c5.
2023-10-15 10:47:16 -06:00
Mads Kiilerich 94875d13ae wscript: drop unused "mandatory variables" 'top' and 'out' in libs
New files missed in d220f477ed.
2023-10-15 10:47:16 -06:00
Robin Gareus fd3f475b3f
Fix mono audio after pending overwrite (#9483)
This bug was introduced in 295dbd8e1e when replacing

```diff
-for (ChannelList::iterator chan = c->begin (); chan != c->end (); ++chan, ++n) {
+for (auto const& chan : *c) {
```

see also https://discourse.ardour.org/t/first-10-seconds-of-modified-stereo-region-goes-mono-output/109322
2023-10-15 16:33:13 +02:00