Commit graph

22280 commits

Author SHA1 Message Date
Robin Gareus
a0cd43132b
Prevent issues when changing processors while recording #10017
Processor changes trigger configure_io() which resulted in a
call to reset_write_sources(), which is a disaster while recording.

This allows adding plugins while recording, and prevents adding
any plugins before the disk-writer that change the channel-count
while recording, or changing strict-i/o to the same effect.
2025-09-29 00:03:30 +02:00
David Robillard
625ad2af77 Fix loading LV2 channel numbers from standard/common port groups
This code only worked for port groups that themselves (the specific group
instance) listed their designations.  This worked with LSP, which redundantly
duplicates the elements from the group's class for some reason, but not with
other plugins like MDA which simply refer to a standard group like
<http://lv2plug.in/ns/ext/port-groups#StereoGroup>.

This does require the specification data to be loaded from the LV2 path (maybe
why LSP does that?), but that's generally expected for anything LV2 to work.
2025-09-27 21:32:07 -04:00
Franke Burgarino
c2eecac3b2 Update strum logic
Strumming now happens to notes that start at the same time, based on
note value. Additionally, rather than moving notes, the start times get
moved so that they end at the same time. Any notes that get cut down to
nothing (or less) are given a length of one tick while maintaining the
same end time.
2025-09-26 16:26:15 -05:00
Robin Gareus
215d59e0e6
RegionFX: handle property and non-automatable controls
This fixes crashes in recent LSP.lv2 and similar plugins.
2025-09-26 20:27:56 +02:00
Robin Gareus
39ca1efe0f
Produce valid HTML when printing bindings
* fix HTML </br> -> <br/>
* add a doctype (render in normal mode, not quiksmode)
* add CSS to match prior display from quicksmode
* add pagebreak before action-list
2025-09-25 21:37:01 +02:00
Franke Burgarino
c4cececfb7 MCU: fix monitor/immersive mute button
Monitor/Immersive mute on mackie controllers previously was not toggling
the actual monitor cut control that is tied to the GUI button.
2025-09-24 11:29:27 -05:00
Robin Gareus
cb64c9a9c1
Update action state when watched controllable changes
This fixes bug, when a button has both a controllable and
a toggle action assigned. Previously only the visual state
was updated.  e.g. monitor section mute button.

When "cut all" was toggled (e.g. Control surface, or a Lua script:
`Session:monitor_out():monitor_control():set_cut_all(true)`,

The action state itself remained unchanged. Also the button
in the application remained unchanged since that button does
not :watch() the controllable.
2025-09-24 17:11:59 +02:00
Robin Gareus
e539cabc00
Allow to re-allocate (ensure) buffers after clearing them
This fixes a crash when removing and re-adding regionFX.

Removing all FX clears the _readcache BufferSet
(see AudioRegion::remove_plugin).

BufferSet::clear() calls _buffers.clear(); leading to a assert/crash
when adding a new regionFX plugin which calls BufferSet::ensure_buffers.
2025-09-23 17:46:15 +02:00
Robin Gareus
afd0172c63
Fix jump in gain when deactivating aux-send with non-unity gain 2025-09-23 02:14:51 +02:00
Robin Gareus
36ed5bbf37
Fix edge case when region start is after the source' end
This fixes an edge case where an audio-region was split near
its end using music-time.

see also 7ded62c37f
2025-09-21 17:52:49 +02:00
Edgar Aichinger
72eda5e98f
update german translation to current 2025-09-18 21:10:22 +02:00
Paul Davis
b65a70e580 fix thinko-delete in 9f4d84dcb4 that broke step entry (and maybe other things too) 2025-09-14 13:49:26 -06:00
chousemp3
0581f29f5f
Add MIDI note strumming operator
- Implement strum_notes functionality to apply progressive
  timing offsets to selected MIDI notes
- Provides guitar-style strumming for creating realistic
  note sequences

The feature applies 1/32 beat timing offsets progressively
to selected notes, creating a strummed effect where notes
play in sequence rather than simultaneously.
2025-09-12 18:58:05 +02:00
Robin Gareus
52bd416845
Only save modified configuration variable to user config
This allows to change default values when necessary.
2025-09-11 23:30:22 +02:00
Paul Davis
77bc293aee add a variation on the EC_LOCAL_TEMPO_SCOPE macro 2025-09-11 15:14:14 -06:00
Robin Gareus
74133432d3
Correctly hide attachment content at application start 2025-09-08 20:27:51 +02:00
Robin Gareus
8f81f77fa3
Fix meter_change signal (amend b14ce31372) 2025-09-05 01:03:25 +02:00
Robin Gareus
9e6d077f64
Add/update VBM specific enum (amend 59989eed3) 2025-09-04 01:43:48 +02:00
Robin Gareus
628d7491a8
VST3: amend previous commit (fix setting color) 2025-09-03 17:14:14 +02:00
Robin Gareus
5c8458e377
VST3: PSL extension color format 2025-09-03 14:04:18 +02:00
Paul Davis
603f8a2c6b auto-ify a loop in the canvas ruler rendering code 2025-09-02 11:10:11 -06:00
Paul Davis
901e32f17f temporal: add stacktraces to DEBUG_TRACE output for start/end local tempo map 2025-09-01 11:17:24 -06:00
Paul Davis
f6ec3828ed temporal: fix local tempo map depth mgmt when starting a local tempo map 2025-09-01 11:17:24 -06:00
Robin Gareus
060462a9f1
Fix struct/class tag mismatch
> 'TempoMapScope' defined as a struct here but previously declared
> as a class; this is valid, but may result in linker errors under
> the Microsoft C++ ABI [clang-diagnostic-mismatched-tags]
2025-08-29 17:22:41 +02:00
Robin Gareus
a8092c1782
Frame: only warn when allocation is smaller than requested size
When using Gtk Box packing and the box has a border-width set
the child widget may get an allocation that is less that than
the requested size.
2025-08-27 15:10:53 +02:00
Franke Burgarino
9fd131fbaa MCU: fix banking in the plugin subview
the addition of the current bank to the global strip position was just
causing the vpots to be off by the bank number, so past bank 1 the pots
were tied to the wrong plugins
2025-08-26 17:37:25 -05:00
Franke Burgarino
b501ae855d MCU: remove vpot control in plugin subview
when switching to the plugin subview, vpots were still attached to
pan controls
2025-08-26 17:37:25 -05:00
Franke Burgarino
92727dccc3 MCU: fix plugin subview crash
fixed a crash that occurred when attempting to vselect an empty pot
in the plugin subview
2025-08-26 17:37:25 -05:00
Franke Burgarino
2ecd265daa MCU: clear pot LEDs when pot is empty 2025-08-26 17:37:25 -05:00
Robin Gareus
89c4fdc186
VST3: implement host/global IContextInfoProvider
This should fix crashes at instantiating sonible VST3
plugins.
2025-08-25 22:34:20 +02:00
Robin Gareus
0d03390976
VST3: Ardour enumerates Tracks/Busses by type
e.g. Track 1, Bus 1
2025-08-25 22:23:22 +02:00
Robin Gareus
e6dd5512b6
VST3: fix debug message 2025-08-25 22:23:21 +02:00
Franke Burgarino
9bc35232b3 MCU: update pot LEDs when switching to the track/pan subview 2025-08-25 15:06:02 -05:00
Paul Davis
ab588efd8c remove debug message 2025-08-24 16:25:10 -06:00
Robin Gareus
e5e9229eb2
Allow numeric entry with "shift" when using dbl-click to reset 2025-08-24 17:02:57 +02:00
Paul Davis
7dadddb3dc temporal: provide TempoMap::global_fetch()
This always returns a shared ptr to the global tempo map, without setting the
thread-local pointer
2025-08-23 22:35:16 -06:00
Daniel Appelt
26c9621aca
Add support to create midi regions from Lua 2025-08-23 21:49:48 +02:00
Robin Gareus
a6e3708a8a
NO-OP: format comment 2025-08-23 21:46:35 +02:00
Robin Gareus
a94dba4ef4
Add preference to disable implicit grouping 2025-08-23 09:59:02 +02:00
Franke Burgarino
faebc7ab35 MCU: show surround master in global/mixer view
only if the controller doesn't have a master fader
2025-08-22 14:47:48 -05:00
Franke Burgarino
a57e3db41c MCU: clean up MackieControlProtocol::get_sorted_stripables logic 2025-08-22 13:58:52 -05:00
Franke Burgarino
d49e44c5c7 MCU: add MackieControlProtocol::is_bus 2025-08-22 13:56:50 -05:00
Franke Burgarino
75f8aa3673 MCU: bring back foldbacks with correct sorting 2025-08-22 13:54:53 -05:00
Paul Davis
bb13bd48b2 several more bbt_delta() unit tests 2025-08-22 10:59:06 -06:00
Paul Davis
27ffd1628d temporal: remove iterative bbt_delta() since unit test shows breakage 2025-08-22 10:51:16 -06:00
Paul Davis
fd53cf87ed temporal: new non-iterative implementation of Meter::bbt_delta() 2025-08-22 10:45:12 -06:00
Paul Davis
26e63fca9b add unit test for Meter::bbt_delta() 2025-08-22 10:45:12 -06:00
Paul Davis
05210fc7e2 Evoral: add ControlList::has_event_at (timepos_t) 2025-08-21 18:56:00 -06:00
Paul Davis
40b7b0a55c canvas: fix enter notify event handler to work with gtk ungrabs
GTK delivers both window and root coordinates as (0,0) for GDK_CROSSING_GTK_UNGRAB
modes. We need the real coordinates of the pointer to pick the right canvas item
2025-08-21 18:56:00 -06:00
Paul Davis
5d58ff7ebf tag regions captured inside Ardour with tempo and meter from timeline 2025-08-21 18:56:00 -06:00