Commit graph

22318 commits

Author SHA1 Message Date
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
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