Commit graph

21178 commits

Author SHA1 Message Date
Paul Davis
54f810f90e throw WrongProgram exception if session was modified with incompatible app 2024-07-11 19:10:14 -06:00
Paul Davis
4212e23e77 make "modified-with" a session member 2024-07-11 19:10:13 -06:00
Robin Gareus
5a647cd84a Fix guard point logic for editor_add_ordered API.
Previously the code was too simple and potentially added points out of
order, leading to automation jumping back in time.
2024-07-12 00:45:37 +02:00
Edgar Aichinger
0f654ebde4
update german translation 2024-07-11 23:04:34 +02:00
Robin Gareus
fa6fbbf810
Fix ctrl surface shutdown sequence
Tear down GUI before stopping event loop, this fixes
a crash on windows (and perhaps a rare crash on other OS).
2024-07-11 19:19:21 +02:00
Robin Gareus
676b372ac5
FP8: tear down GUI before terminating event loop
This fixes an issue on Windows, where UI::run can dispatch
a signal that ends up via cross-thread channel at the surfaces'
BaseUI::request_handler. causing a segfault.
2024-07-11 18:10:39 +02:00
Robin Gareus
c3d90f415c
Fix fader/trim automation after locate
First see 31c6f66d9b and 5cb6e1046b.

It worked previously due to `AutomationControl::get_value`
evaluating automation, which was removed in 5cb6e1046b
in favor of properly using latency compensated evaluation.

However due to 31c6f66d9b, fader and trim automation were
never evaluated on locate, only during playback via
`Amp::setup_gain_automation`.

This fixes a case where gain is incorrect after a locate.
The amp still has the gain from before the locate, and when starting
playback ramps to the new gain.
2024-07-10 19:26:02 +02:00
Robin Gareus
ab0d2dce6f
Fix reduced channelcount when restarting engine with different device
1. Start engine with a stereo soundcard (n_inputs was set to 2)
2. Restart engine with multi-channel soundcard, n_inputs remained a 2)
2024-07-10 15:39:01 +02:00
Robin Gareus
d6b14e761b
Remove unused backend channel count config API 2024-07-10 15:39:01 +02:00
Paul Davis
249442fe99 JACK backend: fix race condition caused by not wrapping jack_set_property() in JACK_SERVER_CALL 2024-07-09 10:14:39 -06:00
Robin Gareus
630587ee3f
VST2: amend prev commit, ignore SysEx and invalid MIDI events 2024-06-30 23:07:29 +02:00
Attila M. Magyar
e1ef129ab0 VST2: store VstMidiEvents with the correct size
...otherwise MidiBuffer::push_back() will drop them. (E.g.
MIDI_CMD_CHANNEL_PRESSURE events are just 2 bytes, not 3.)
2024-06-30 22:47:38 +02:00
Attila M. Magyar
5360ba0000 VST3: store kAfterTouch events with the correct size
...otherwise MidiBuffer::push_back() will drop them.
2024-06-30 13:11:53 +02:00
Paul Davis
41b6c8a5bf fix previous commit (typo) 2024-06-27 16:51:16 -06:00
Paul Davis
8efab1c796 fix handling of MIDI controller MSB & LSB values
The MIDI specification makes it quite clear that when a receiver
receives the MSB of a 14 bit controller value, it should consider
the LSB reset to zero. This has been an error in Ardour for many,
many years, though likely of little consequence
2024-06-27 16:42:00 -06:00
Robin Gareus
da520cecf3
Yet another attempt at gcc-14 lstat/realpath (#9703 PR #893)
See also 4b8b5acfc4 and realpath(3)

```
realpath():
   _XOPEN_SOURCE >= 500
       || /* Glibc since 2.19: */ _DEFAULT_SOURCE
       || /* Glibc versions <= 2.19: */ _BSD_SOURCE
```
2024-06-27 17:01:46 +02:00
Robin Gareus
2e23ec4422
Use RCU to for IO::_ports (#9730) 1/2
This removes the _io_lock in favor of a RCU.
The reason for this change is to ensure data structure
consistency, notably iterators. Previously adding/removing
ports invalidated iterators, which caused [rare] crashes,
since IO::ports() simply returned a PortSet reference.

(This breaks API)
2024-06-24 22:19:22 +02:00
Paul Davis
c94ca79798 provide access to the trace parser (if any) for a MidiPort 2024-06-21 20:31:29 -06:00
Paul Davis
bbcaf617c4 async MIDI ports run output trace parser scanner if there is one 2024-06-21 15:46:59 -06:00
Paul Davis
af9472ecb6 fix naming of MIDI scene changes
Or at least make the arithmetic precedence clearer
2024-06-21 15:46:59 -06:00
Paul Davis
d7f9b659f2 slightly improve mgmt of shared_ptr<MIDISceneChange> 2024-06-21 15:46:59 -06:00
Paul Davis
f54fd286ee MIDI scene changes should use bank 0 if no bank msg has been seen 2024-06-21 15:46:59 -06:00
Paul Davis
10cd3c85cd when delivering a MIDI scene change, ensure trace parser sees the data 2024-06-21 15:46:59 -06:00
Robin Gareus
a0da78d8c5
VST3: do not expose hidden parameters as automatable 2024-06-20 16:32:53 +02:00
Robin Gareus
3efe7ff056
Special case DPF VST3 MIDI CC Ports (similar to JUCE) 2024-06-20 16:32:31 +02:00
Robin Gareus
d2fdd72bc4
Constrain gain-control range (notably trim) 2024-06-20 01:01:11 +02:00
Robin Gareus
e15c337f57
Fix crash (invalid Track Drag) when starting automation value edit
When double-clicking to edit a fader value three button press
events are created:
1. GDK_BUTTON_PRESS
2. GDK_BUTTON_PRESS
3. GDK_2BUTTON_PRESS

The first two start an Editor Drag, which later crashes in
Editor::mid_track_drag() gtk2_ardour/editor.cc:7067
2024-06-17 19:55:08 +02:00
Paul Davis
1e5a5b6b4f do not have MIDI input follow selection when recording 2024-06-15 14:01:36 -06:00
Paul Davis
0847dc8a37 when disconnecting a MIDI port for follows-selection, get ALL connections
without the 3rd argument, we only get information about ports that we own.
2024-06-14 22:17:41 -06:00
Paul Davis
cf58a157e3 extend PortManager API to include 3rd argument used by backend get_connections()
Value is defaulted so this does not change behavior at all
2024-06-14 22:17:30 -06:00
Robin Gareus
dbaead18bd
Prevent locate while recording 2024-06-14 15:43:03 +02:00
Robin Gareus
1e491591c3
VST3: move runloop into backend (3/3) - old remove API 2024-06-13 21:36:06 +02:00
Robin Gareus
816860e0f5
VST3: move runloop into backend (1/3) 2024-06-13 21:35:51 +02:00
Robin Gareus
698ad071b7
VST3: prepare to provide a runloop to IAudioProcessor
Currently _run_loop is NULL (which is valid) until the
GUI is opened at least once. Next step is to move
the [static] runloop into libpbd.
2024-06-13 17:00:38 +02:00
Robin Gareus
b142fc4410
NO-OP: clarify maths 2024-06-12 18:30:01 +02:00
Robin Gareus
827be736ae
Convert rec-enable of old sessions 2024-06-11 23:57:13 +02:00
Robin Gareus
66ef68d46a
amend 16fb29d57 (ADM content creation) 2024-06-10 20:49:02 +02:00
Robin Gareus
acb5feec4a
Show master bus comment on session load #9718 2024-06-09 01:29:00 +02:00
Paul Davis
0a01acc86a add optional Location::Flags argument to Locations::mark_at
If specified, we will only return a mark whose flags match those passed in
2024-06-07 22:19:44 -06:00
Robin Gareus
8a145c3bc1
Fix Wsign-compare 2024-06-06 22:52:30 +02:00
Paul Davis
1dd7d2af1f sort of NO-OP: follow if/return coding guidelines 2024-06-05 16:38:00 -06:00
Ben Loftis
0fc5b49d9f
build fix for mac 2024-06-05 02:02:12 +02:00
Robin Gareus
b9bca313d2
CoreMIDI: fix crash when receiving long MIDI messages
CoreMidiIo::recv_event imposes a limit of 1024 bytes/packet.
2024-06-04 16:43:20 +02:00
Paul Davis
3dd8b930e4 fix paste error 2024-06-03 17:24:36 -06:00
Paul Davis
144fe5b08a fix issues with the length of captured MIDI regions when there are tempo changes present 2024-06-03 17:23:46 -06:00
Robin Gareus
40ef5f3b15
Fix repeat of stem-export of stereo channels
Restoring the export profile state previously added a new
Export Processor for each state for each channel to the same
route.

This fixes silent stem export channels after an initial
correct stem export (which saves ExportChannelConfiguration)
2024-06-03 22:26:09 +02:00
Paul Davis
ecf5f9b1d7 remove unused global static variable 2024-06-01 09:02:32 -06:00
Paul Davis
949b4d4017 fix reversed logic in test of Delivery::set_name()
Note that the Delivery::set_name() method worked correctly, but
the Route::set_name() method would return false incorrectly. This
appears to have no consequences.
2024-06-01 07:56:42 -06:00
Robin Gareus
4a99a40afd
Add options to create and locate to scene markers 2024-05-31 18:21:21 +02:00
Paul Davis
69d63bac92 do not plot ruler marks that are left of the current (scroll-adjusted) canvas edge 2024-05-29 14:13:47 -06:00