Paul Davis
8f815e21ea
temporal: rename Point::sample() to Point::sample_is_dangerous()
...
It is risky to take the sample value returned by this method and then convert it back
to either superclocks or beats, mostly because tempo & meter times are generally in
music time, and converting from superclocks to samples loses precision.
This rename is there to serve as a reminder to developers to be careful when using
this method
2025-12-29 09:14:02 -07:00
Robin Gareus
41c90a2063
Fix MIDI import edge-case when doubling allocation is insufficient
...
MIDI file from #10079 - see also 65332e603b
2025-12-29 09:23:56 +01:00
Paul Davis
369fc2c15c
temporal: fix a major thinko when removing/replacing map points
...
Despite comments already in the code, the logic used to remove a
{Tempo,Meter,BarTime} point from the _points list was incorrect. While it is
true that we can use a duple of (type,time) to find a given point,
::remove_point() was not doing that and instead assumed just the time value
could be used.
This meant that if you placed a tempo and meter at the same point in time, then
changed one of them, ::remove_point() could remove the wrong point from the
_points list.
In #10063 this manifests as the wrong grid being drawn after a tempo point
edit.
This commit alters the ::core_remove_xxx() methods to return a pointer to the
actual Point object that was removed from {_tempos,_meters,_bartimes} and then
we pass that to ::remove_point() for lookup and removal by address.
It also "fixes" a couple of instances of ::core_remove_xxx() without any
removal from the _points list (since ::core_remove_tempo() and
::core_remove_meter() do not do this; ::core_remove_bartime() does,
however). It is not immediately obvious what bad behavior would arise from the
existing code in these cases, but it seems clearly incorrect that the _points
list would contain points no longer present in _tempos or _meters.
2025-12-27 12:14:49 -07:00
Paul Davis
f1b80cdbe1
temporal: add & use a couple of TempMap methods for unit testing
2025-12-27 12:14:49 -07:00
Paul Davis
f742ef661b
temporal: slightly improve addRemoveTest
2025-12-27 12:14:49 -07:00
Paul Davis
fee0af27cf
temporal: new addRemoveTest unit test
2025-12-27 12:14:49 -07:00
Edgar Aichinger
ea940a3a53
update german translation
2025-12-20 16:58:43 +01:00
John Emmas
8a3b7f3701
A minor comment change
2025-12-20 12:27:09 +00:00
John Emmas
841ec1c838
Revert some code that got removed accidentally
...
...but keep the new code that's needed for Stephen's build
2025-12-20 12:14:53 +00:00
Robin Gareus
46a03a9328
Who needs unistd.h, now that we have glibmm?
2025-12-18 16:09:13 +01:00
Robin Gareus
635916bf7a
Fix crash when group becomes empty but has a subgroup
...
Session::route_removed_from_route_group() did not delete
the group when it had a subgroup associated with it.
This way it was possible to have an empty track-group that
resulted in various edge-case crashes/assert().
2025-12-17 18:35:45 +01:00
Robin Gareus
13dc1b1058
Don't allow to deactivate master/monitor/surround busses
2025-12-17 14:40:21 +01:00
Paul Davis
a90edc3e1b
when the last route is removed from a RouteGroup-with-VCA, drop weak ref to VCA
2025-12-16 22:30:17 -07:00
Robin Gareus
4ad6ffec3d
Fix crash at exit when route-groups are deleted by route drop ref
...
==1914112==ERROR: AddressSanitizer: heap-use-after-free on address 0x619000483688 at pc 0x7f5b10be03c5 bp 0x7fff55e36670 sp 0x7fff55e36668
READ of size 8 at 0x619000483688 thread T0
#0 0x7f5b10be03c4 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count(std::__weak_count<(__gnu_cxx::_Lock_policy)2> const&, std::nothrow_t) /usr/include/c++/10/bits/shared_ptr_base.h:911
#1 0x7f5b1190ecee in std::__shared_ptr<ARDOUR::VCA, (__gnu_cxx::_Lock_policy)2>::__shared_ptr(std::__weak_ptr<ARDOUR::VCA, (__gnu_cxx::_Lock_policy)2> const&, std::nothrow_t) /usr/include/c++/10/bits/shared_ptr_base.h:1382
#2 0x7f5b1190cc3e in std::shared_ptr<ARDOUR::VCA>::shared_ptr(std::weak_ptr<ARDOUR::VCA> const&, std::nothrow_t) /usr/include/c++/10/bits/shared_ptr.h:417
#3 0x7f5b1190aaae in std::weak_ptr<ARDOUR::VCA>::lock() const /usr/include/c++/10/bits/shared_ptr.h:749
#4 0x7f5b118fea7e in ARDOUR::RouteGroup::remove(std::shared_ptr<ARDOUR::Route>) ../libs/ardour/route_group.cc:267
#5 0x7f5b118fde6e in ARDOUR::RouteGroup::remove_when_going_away(std::weak_ptr<ARDOUR::Route>) ../libs/ardour/route_group.cc:223
#6 0x7f5b11912d3d in void std::__invoke_impl<void, void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&>(std::__invoke_memfun_deref, void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&) /usr/include/c++/10/bits/invoke.h:73
#7 0x7f5b119128c8 in std::__invoke_result<void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&>::type std::__invoke<void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&>(void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&) /usr/include/c++/10/bits/invoke.h:95
#8 0x7f5b119125bc in void std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /usr/include/c++/10/functional:416
#9 0x7f5b11911fdc in void std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>::operator()<, void>() /usr/include/c++/10/functional:499
#10 0x7f5b11910e79 in void std::__invoke_impl<void, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&>(std::__invoke_other, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&) /usr/include/c++/10/bits/invoke.h:60
#11 0x7f5b1190f187 in std::enable_if<is_invocable_r_v<void, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&>, void>::type std::__invoke_r<void, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&>(std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&) /usr/include/c++/10/bits/invoke.h:110
#12 0x7f5b1190d26a in std::_Function_handler<void (), std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)> >::_M_invoke(std::_Any_data const&) /usr/include/c++/10/bits/std_function.h:291
#13 0x558120310619 in std::function<void ()>::operator()() const /usr/include/c++/10/bits/std_function.h:622
#14 0x7f5b10bcb0d6 in PBD::SignalWithCombiner<PBD::OptionalLastValue<void>, void ()>::operator()() ../libs/pbd/pbd/signals.h:508
#15 0x7f5b10bc779b in PBD::Destructible::drop_references() ../libs/pbd/pbd/destructible.h:33
#16 0x7f5b1196700f in ARDOUR::Session::destroy() ../libs/ardour/session.cc:822
#17 0x7f5b11962f93 in ARDOUR::Session::~Session() ../libs/ardour/session.cc:581
#18 0x7f5b119639a9 in ARDOUR::Session::~Session() ../libs/ardour/session.cc:582
#19 0x558120305a92 in close_session ../luasession/luasession.cc:366
#20 0x55812031911c in luabridge::FuncTraits<void (*)(), void (*)()>::call(void (*)(), luabridge::TypeListValues<void>) ../libs/lua/LuaBridge/detail/FuncTraits.h:73
#21 0x5581203151eb in luabridge::CFunc::Call<void (*)(), void>::f(lua_State*) ../libs/lua/LuaBridge/detail/CFunctions.h:244
#22 0x55812035701f in luaD_precall ../libs/lua/lua-5.3.5/ldo.c:434
#23 0x55812038f1bd in luaV_execute ../libs/lua/lua-5.3.5/lvm.c:1136
#24 0x5581203579a8 in luaD_call ../libs/lua/lua-5.3.5/ldo.c:499
#25 0x558120357a80 in luaD_callnoyield ../libs/lua/lua-5.3.5/ldo.c:509
#26 0x558120346f82 in f_call ../libs/lua/lua-5.3.5/lapi.c:943
#27 0x558120354e59 in luaD_rawrunprotected ../libs/lua/lua-5.3.5/ldo.c:142
#28 0x55812035924f in luaD_pcall ../libs/lua/lua-5.3.5/ldo.c:729
#29 0x558120347226 in lua_pcallk ../libs/lua/lua-5.3.5/lapi.c:969
#30 0x558120393ae9 in LuaState::do_command(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ../libs/lua/luastate.cc:64
#31 0x558120306da8 in interactive_interpreter ../luasession/luasession.cc:514
#32 0x558120307b36 in main ../luasession/luasession.cc:641
#33 0x7f5b0e40dd79 in __libc_start_main ../csu/libc-start.c:308
#34 0x558120303179 in _start (/home/rgareus/src/ardour/build/luasession/luasession+0x7a179)
0x619000483688 is located 264 bytes inside of 952-byte region [0x619000483580,0x619000483938)
freed by thread T0 here:
#0 0x7f5b12cac467 in operator delete(void*, unsigned long) ../../../../src/libsanitizer/asan/asan_new_delete.cpp:172
#1 0x7f5b118fc486 in ARDOUR::RouteGroup::~RouteGroup() ../libs/ardour/route_group.cc:168
#2 0x7f5b11c1c34b in std::_Sp_counted_ptr<ARDOUR::RouteGroup*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/10/bits/shared_ptr_base.h:380
#3 0x55812031249a in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/10/bits/shared_ptr_base.h:158
#4 0x7f5b10bf9ac4 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_count<(__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/10/bits/shared_ptr_base.h:752
#5 0x7f5b11915cac in std::__shared_ptr<ARDOUR::RouteGroup, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<ARDOUR::RouteGroup, (__gnu_cxx::_Lock_policy)2> const&) /usr/include/c++/10/bits/shared_ptr_base.h:1182
#6 0x7f5b11915cd6 in std::shared_ptr<ARDOUR::RouteGroup>::operator=(std::shared_ptr<ARDOUR::RouteGroup> const&) /usr/include/c++/10/bits/shared_ptr.h:358
#7 0x7f5b11915b75 in ARDOUR::RouteGroupMember::set_route_group(std::shared_ptr<ARDOUR::RouteGroup>) ../libs/ardour/route_group_member.cc:36
#8 0x7f5b118fe9fe in ARDOUR::RouteGroup::remove(std::shared_ptr<ARDOUR::Route>) ../libs/ardour/route_group.cc:265
#9 0x7f5b118fde6e in ARDOUR::RouteGroup::remove_when_going_away(std::weak_ptr<ARDOUR::Route>) ../libs/ardour/route_group.cc:223
#10 0x7f5b11912d3d in void std::__invoke_impl<void, void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&>(std::__invoke_memfun_deref, void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&) /usr/include/c++/10/bits/invoke.h:73
#11 0x7f5b119128c8 in std::__invoke_result<void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&>::type std::__invoke<void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&>(void (ARDOUR::RouteGroup::*&)(std::weak_ptr<ARDOUR::Route>), ARDOUR::RouteGroup*&, std::weak_ptr<ARDOUR::Route>&) /usr/include/c++/10/bits/invoke.h:95
#12 0x7f5b119125bc in void std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) /usr/include/c++/10/functional:416
#13 0x7f5b11911fdc in void std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>::operator()<, void>() /usr/include/c++/10/functional:499
#14 0x7f5b11910e79 in void std::__invoke_impl<void, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&>(std::__invoke_other, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&) /usr/include/c++/10/bits/invoke.h:60
#15 0x7f5b1190f187 in std::enable_if<is_invocable_r_v<void, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&>, void>::type std::__invoke_r<void, std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&>(std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)>&) /usr/include/c++/10/bits/invoke.h:110
#16 0x7f5b1190d26a in std::_Function_handler<void (), std::_Bind<void (ARDOUR::RouteGroup::*(ARDOUR::RouteGroup*, std::weak_ptr<ARDOUR::Route>))(std::weak_ptr<ARDOUR::Route>)> >::_M_invoke(std::_Any_data const&) /usr/include/c++/10/bits/std_function.h:291
#17 0x558120310619 in std::function<void ()>::operator()() const /usr/include/c++/10/bits/std_function.h:622
#18 0x7f5b10bcb0d6 in PBD::SignalWithCombiner<PBD::OptionalLastValue<void>, void ()>::operator()() ../libs/pbd/pbd/signals.h:508
#19 0x7f5b10bc779b in PBD::Destructible::drop_references() ../libs/pbd/pbd/destructible.h:33
#20 0x7f5b1196700f in ARDOUR::Session::destroy() ../libs/ardour/session.cc:822
#21 0x7f5b11962f93 in ARDOUR::Session::~Session() ../libs/ardour/session.cc:581
#22 0x7f5b119639a9 in ARDOUR::Session::~Session() ../libs/ardour/session.cc:582
#23 0x558120305a92 in close_session ../luasession/luasession.cc:366
#24 0x55812031911c in luabridge::FuncTraits<void (*)(), void (*)()>::call(void (*)(), luabridge::TypeListValues<void>) ../libs/lua/LuaBridge/detail/FuncTraits.h:73
#25 0x5581203151eb in luabridge::CFunc::Call<void (*)(), void>::f(lua_State*) ../libs/lua/LuaBridge/detail/CFunctions.h:244
#26 0x55812035701f in luaD_precall ../libs/lua/lua-5.3.5/ldo.c:434
#27 0x55812038f1bd in luaV_execute ../libs/lua/lua-5.3.5/lvm.c:1136
#28 0x5581203579a8 in luaD_call ../libs/lua/lua-5.3.5/ldo.c:499
#29 0x558120357a80 in luaD_callnoyield ../libs/lua/lua-5.3.5/ldo.c:509
#30 0x558120346f82 in f_call ../libs/lua/lua-5.3.5/lapi.c:943
#31 0x558120354e59 in luaD_rawrunprotected ../libs/lua/lua-5.3.5/ldo.c:142
#32 0x55812035924f in luaD_pcall ../libs/lua/lua-5.3.5/ldo.c:729
#33 0x558120347226 in lua_pcallk ../libs/lua/lua-5.3.5/lapi.c:969
#34 0x558120393ae9 in LuaState::do_command(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) ../libs/lua/luastate.cc:64
#35 0x558120306da8 in interactive_interpreter ../luasession/luasession.cc:514
#36 0x558120307b36 in main ../luasession/luasession.cc:641
#37 0x7f5b0e40dd79 in __libc_start_main ../csu/libc-start.c:308
2025-12-17 03:14:22 +01:00
Paul Davis
db6005945f
changes to RouteGroup API and mgmt to make explicit group removal work
2025-12-16 12:08:24 -07:00
Krzysztof Gajdemski
321e8c368b
Update Polish translation
2025-12-16 19:59:40 +01:00
Robin Gareus
6695748bec
Remove yet another superfluous unistd
2025-12-16 16:27:48 +01:00
Robin Gareus
64fe619e64
Fix Windows builds (RouteGroup Lua bindings)
2025-12-16 01:02:53 +01:00
Robin Gareus
050d6c07a6
Import strips as new tracks in PI sort order
2025-12-15 23:50:57 +01:00
Robin Gareus
49f359eb8d
Fix RouteGroupList Lua bindings
2025-12-15 20:03:07 +01:00
Paul Davis
371bb416a0
Use shared_ptr to manage RouteGroups everywhere (libs edition)
...
This also drops Session::_all_route_group which was not used,
and makes a little more use of PBD::Unwinder in a few route
group-related contexts.
2025-12-14 23:46:48 +01:00
Robin Gareus
0f9e0afd2b
Fix importing of surround processors
...
This previously failed in SurroundSend::set_state,
which expects a gain XMLnode to be present.
2025-12-13 23:02:59 +01:00
Robin Gareus
c9b4b94466
Fix source-code visibility comments
2025-12-13 20:14:05 +01:00
EZ4Stephen
c52e8b7dc7
Update zita-convolver's cxxflags for MSVC
...
Previously:
cl : Command line warning D9002 : ignoring unknown option '-fPIC'
cl : Command line warning D9002 : ignoring unknown option '-O3'
cl : Command line warning D9002 : ignoring unknown option '-ffast-math'
cl : Command line warning D9002 : ignoring unknown option '-funroll-loops'
2025-12-13 16:05:09 +01:00
EZ4Stephen
c76f13d6ab
Update fluidsynth cflags
2025-12-13 16:05:09 +01:00
EZ4Stephen
cefbb6db32
Adjust fluidsynth cflags to compile with MSVC
...
Previously:
cl : Command line error D8021 : invalid numeric argument '/Wno-unused-function'
And after separating that:
cl : Command line warning D9002 : ignoring unknown option '-fvisibility=hidden'
cl : Command line warning D9002 : ignoring unknown option '-std=gnu99'
2025-12-13 16:05:09 +01:00
EZ4Stephen
98b9839e58
Replace DECLARE_DEFAULT_COMPARISONS
2025-12-13 16:05:05 +01:00
EZ4Stephen
783202d3ad
MSVC waf-build specific fixes
...
* Dodge ardourext/pthread.h when WAF_BUILD is defined
* add io.h for POSIX style read/close
* define timeval
2025-12-13 16:05:00 +01:00
EZ4Stephen
fb9be868f5
Add MSVC specific compiler flags to wscript
2025-12-13 16:01:03 +01:00
Paul Davis
ac83860032
SMF import: better handling of insane files
...
this really tries to do the right thing regarding meta-events we're interested in,
and channel events we're interested in, no matter how they are distributed across
different channels in the SMF.
it augments/extends the work started in 8a554f659c
2025-12-11 18:20:17 -07:00
Paul Davis
aca340b810
an initial fix for a crash occuring when deleting routes that lead to RouteGroup deletion
...
The RouteGroup containing the deleted routes emits the RouteRemoved signal; Session handles this
and if the RouteGroup is now empty, deletes the RouteGroup *while in the middle of the signal
emission process*. This deletes the Signal (since it was owned by the RouteGroup) which leads
to a crash inside the signal emission code, since that is now running "on" a deleted Signal
object.
This change simply makes that signal static, and so deleting the RouteGroup has no effect
on the Signal itself.
More changes to come related to better (shared_ptr<RouteGroup>) mgmt of RouteGroup lifetimes.
2025-12-11 18:20:17 -07:00
Paul Davis
856aad62da
SMF import: attempt to find tempo-related metadata in any track
2025-12-11 18:20:17 -07:00
Robin Gareus
be93b1ee29
Sort strip at export, retain current order on import
2025-12-11 22:09:46 +01:00
Robin Gareus
f0a52eccc0
Fix MIDI audition
2025-12-11 06:08:29 +01:00
Robin Gareus
fca4083e12
Fix YASNAFU (amend fa319ffda2), midi audition/playback
...
The condition is NO playlist pending. This fixes MIDI audition
and perhaps a few other MIDI playback edge-cases.
2025-12-11 05:11:29 +01:00
Robin Gareus
83cc97e101
Fix compilation w/o VST3_SUPPORT, remove redudant headers
2025-12-11 00:32:23 +01:00
Robin Gareus
a30a161288
VST3: directly use bundle-path on macOS
...
This fixes an issue with Info.plist indirection.
2025-12-10 22:53:12 +01:00
Robin Gareus
ca04a320c4
Add curl trace support
2025-12-09 23:15:30 +01:00
Robin Gareus
b11ef7fee4
Fix curl 421 errors when disabling verify peer
...
```
== Info: WARNING: disabling hostname validation also disables SNI.
```
which leads to a "431 Misdirected Request" reply for servers
with shared hosting.
2025-12-09 23:05:29 +01:00
Robin Gareus
bdaf96e3b6
Allow to replace/overwrite Route State (1/2)
2025-12-09 00:31:12 +01:00
Robin Gareus
4207b67b73
Clean template dir before overwriting existing template
2025-12-08 22:45:59 +01:00
Robin Gareus
d5464b39db
VST3: handle edge-case when user removes optional aux ports
2025-12-07 19:10:13 +01:00
Robin Gareus
8e051bb488
Fix strip state import and preset load for VST3 plugins
2025-12-07 19:00:27 +01:00
Robin Gareus
b9154359a3
I/O Plugin: only activate plugin after setting state
...
This fixes an issue with some VST3 plugins (notably NDI).
2025-12-06 18:07:59 +01:00
Robin Gareus
605de3eef4
VST3: fix bus configuration/connections
...
This handles the case where only part of a bus' ports are
connected. This can happen when a given speaker configuration
is not directly accepted, and the plugin provides more I/O than
requested.
2025-12-05 23:11:20 +01:00
Robin Gareus
8943e28931
VST3: add debug message and code cleanup
2025-12-05 23:06:02 +01:00
Robin Gareus
728558e51c
Use compiler provided PTW_VERSION define for compatibility
2025-12-05 16:00:09 +01:00
Robin Gareus
b938daca95
Yet another unistd.h special case for
2025-12-05 14:46:05 +01:00
Robin Gareus
0f3760a8d1
Amend be445a8079, add missing symbol
2025-12-05 00:09:28 +01:00
Robin Gareus
a04e56f3a8
Fix builds with clang
...
chan_count.h:216:29: note: 'operator<<' should be declared prior to the call site or in namespace 'ARDOUR'
2025-12-04 23:55:37 +01:00