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
Robin Gareus
be445a8079
VST3: set VSTSpeakerArrangements to match track
...
This fixes some plugins that require a valid Bus/SpeakerArrangement
setting to set the available per bus I/O channel-count.
(e.g. Altiverb). Most other VST3s initially announce all
available channels.
TODO: check that this does not break plugins with optional
busses (sidechain in, multi-out instruments)
2025-12-04 23:39:54 +01:00
Robin Gareus
c08531f96e
Fix macOS builds (missing header)
...
implicit instantiation of undefined template 'std::array<..>'
2025-12-02 16:54:05 +01:00
Robin Gareus
d0109bed16
Move unistd.h detection to the correct wscript
...
This fixes macOS builds (getpid())
2025-12-02 16:38:42 +01:00
Robin Gareus
6ce8358709
Remove yet another irrelevant unistd.h
2025-12-02 14:00:59 +01:00
Robin Gareus
5833fc08f2
Best keep Mixbus state in mixbus-git
2025-12-01 21:23:00 +01:00
Nicolas Koch
34850e514d
MCP - Fix iCON P1-M check for RGB update on next redisplay
2025-12-01 13:10:02 -07:00
Nicolas Koch
2db87934dd
MCP: iCON P1-M/P1-NANO/V1-M only - Make RGB blink to 20% brightness when track/bus selected
2025-12-01 13:10:02 -07:00
Nicolas Koch
e39eebee57
change iCON RGB color to use newly added p1m device logic rather than erroneous platformMp
2025-12-01 13:10:02 -07:00
Nicolas Koch
669e689f8c
MCP - Add iCON Pro Audio P1-M and correct Platform M+ - I forgot to rename to P1-M on previous commit
2025-12-01 13:10:02 -07:00
Nicolas Koch
f71b519c56
MCP - Add RGB color display to iCON P1-M, P-NANO and V1-M
2025-12-01 13:10:02 -07:00
Nicolas Koch
3e2c73258c
MCP updates:
...
* Add iCON Pro Audio P1-NANO device with option of P1-X extenders left or right
* Resolve Metering on P1-M/X and P1-NANO
* Resolve SMPTE/beats display on P1-M/X and P1-NANO
2025-12-01 13:10:02 -07:00
Robin Gareus
293a359d10
Fix Mixbus builds (1/2)
2025-12-01 20:53:22 +01:00