If you have not noticed, I have silently abandoned the Cadence project. It was one of my first projects so code quality was/is quite poor.
I do like the JACK configuration tool from it quite a lot and want to keep it, so I have "forked" my own old project, removed a bunch of stuff and made "J2SC" for "JACK 2 Simple Configurator".
https://github.com/falkTX/j2sc
No release just yet, but did a bunch of work on it today and it is close.
Requires PyQt6 to run.
Tentative first 0.0.1 release next week.
Any wayland experienced developers can help out diagnose a crash in libwayland-client?
clone https://github.com/falkTX/wayland-audio-plugin-test
make && ./test-crash
(needs quite a few deps because its a test repo, should be obvious to any developer)
valgrind reports in the attached picture.
I suspect the load, unload and load again to be the issue.
Got gtk4 client-side window decoration size details dynamically now - https://github.com/falkTX/wayland-audio-plugin-test/blob/51b301ef46fc9d20d96716a3ce1c5589b66344cf/gtk4-host.c#L31-L62
No need for super hacky "render window offline and then fetch position based on pixels", instead it is just:
1. create dummy window
2. fetch its initial size (200x200 on my laptop)
3. add a title bar
4. get title bar size and updated window size
5. x,y offsets are (new size - old size) / 2
picture shows this working nicely, I have an intentional 20px padding around the yellow rectangle
I tried to plug into gtk4 just for it to create a dummy window for me, idea being that then I don't need to deal with any of this lack-of-server-side-decoration business.
Well that presents its own problems, the wayland surface from the gtk4 window includes the shadow and decorations, also the size requested on start includes those too?? so I always get a smaller "window area" than expected, and I guess I now need to find that offset too somehow π€
Many hoops just to have window controls π‘
Yeah I really hate client-side decorations π‘
From top to bottom:
1. Firefox is able to follow Gnome desktop settings, as it uses Gtk on the lower level π
2. Konsole being KDE and based on Qt is not Gtk related, just makes assumptions on what decorations should be used
3. Carla being Qt behaves the same
4. Steam does its own thing, but also assumes what decorations should be used
I really thought Qt&KDE apps would behave better π
PS: Yes I prefer my window buttons on the left side
Got wayland subsurface-as-plugin-UI now working for Qt6 hosts now too!
Though because it needs to access private APIs the code looks a bit "special" π
But I think it should be possible to expand the supported Qt versions by adding a couple of these...
What do you think, too nasty?
embedding custom wayland UI stuff on top of gtk3 and gtk4 based applications works! π
the gtk APIs to get down to the wayland surface are a bit awkward, but at least its accessible.
I tried the same with Qt6 and couldn't find a way to have it return the underlying wl_surface pointer. π€·
I got an LV2 plugin UI with this setup working, but no hosts to try it out against.
Modifying jalv.gtk3 is likely the easiest path... π€
WIP test code dump at https://github.com/falkTX/wayland-audio-plugin-test
doing some experiments with wayland and audio plugin UIs...
I have seen a proposal for that relies on a lot of proxy setup, but really don't like it.
so I did some tests with subsurfaces, and it seems very promising.
I have a big host window providing its surface to a "plugin" window for which it creates a subsurface to draw on.
Then the host can take control over subsurface for positioning, z-index, etc
Event input works with this approach too.
boring screenshot: grey = host, yellow = plugin
Your favorite audio mastering plugin has a new release! π
Mostly just keeping things updated with DPF (the plugin framework) but it now also allows to persistently save custom theme changes. Hint: click the master_me logo on the top-right to bring up the "theme editor".
https://github.com/trummerschlunk/master_me/releases/tag/1.3.0
My big commit of the day: https://github.com/wineasio/wineasio/commit/8d0d748efd4db6fed0e97b59db0bb21210fca367
Remove ASIO dependency from WineASIO π±
It was only a few definitions, and since the core codebase was unchanged for so long we can safely replace a few structs with API-incompatible but ABI-compatible variants.
Seems to work just as before
Cardinal 25.06 is out!
Just a few module updates, the main change being SVModular DrumKit being replaced by a community fork, as requested by its author.
now this gets a bit ridiculous, 8 frames for usb audio buffer size.
gets latency quite low, but easily xrun if playing anything complex in FLStudio.
seems stable/sustainable while there is very little stuff running though.
I like the small deviation in those "distance" numbers (it is how far userspace is from the kernel position in the ringbuffer).
Linux as a USB audio interface with minimal latency π
Hope users will appreciate the effort, the fact that this is running all inside a Linux embed device is quite something...
No external/dedicated USB Audio chips, it's all on the Linux side done in software.
I will take some big holidays after this π ποΈ
Typical audio graph setup on the new Darkglass Anagram.
Some of the FX there are "static" like the globaleq, mixer and looper.
All of it running at 16 frames / 48kHz. Total IO roundtrip latency being 1.333ms (some FX do oversampling and introduce a bit more latency).
This preset runs with around 30% CPU load.
Not shown on graph: USB and Bluetooth audio, coming soon.
After pretty much 1 year of work the result is finally public.
For those that don't know, in early 2024 I joined the Darkglass Electronics company. Bringing the expertise developed through many years with MOD Devices / MOD Audio and my own projects, and started to create together with them a super fancy new Linux-embed based product.
This runs JACK2 inside with mod-host and LV2 plugins. Very soon to start opening up to external plugin developers.
Very exciting! π