Skip to content

Make it possible to build an lv2 bundle with separate effects#222

Closed
Joeboy wants to merge 0 commit into
baconpaul:mainfrom
Joeboy:main
Closed

Make it possible to build an lv2 bundle with separate effects#222
Joeboy wants to merge 0 commit into
baconpaul:mainfrom
Joeboy:main

Conversation

@Joeboy
Copy link
Copy Markdown

@Joeboy Joeboy commented Mar 25, 2026

Hi!

At least for me, it's a bit inconvenient for plugins to just show up as "Airwindows consolidated" with no clue as to whether it's a reverb or a saturator or what. So this makes it possible to build a bundle that exposes the plugins separately.

This was a few hours of LLM assisted playing, it seems to work for me in Ardour on Ubuntu with cursory testing. Does it seem like a reasonable goal / approach?

@Joeboy
Copy link
Copy Markdown
Author

Joeboy commented Mar 26, 2026

Just noting that this doesn't include any UI so it'll fall back to the "default" lv2 UI. I think this is OK, since as far as I know the "consolidated" UI does basically the same thing?

@baconpaul
Copy link
Copy Markdown
Owner

First - thank you!

so I have no idea if the default is ok!

I had originally done this project this way (just with clap as a target) and folks generally didn’t like one DLL 400 items in their plugin list. But I understand some do

a few questions

1: I have no way to support this. Don’t understand or use lv2 really. Merging it is an implicit commitment that you will stick around and answer questions for the long haul. If you aren’t able to do that I can’t merge obviously

2: we should add a ci stage in Linux at least to test it

3: probably need some documentation somewhere on how to build and use

4: if you aren’t willing to stick around for support - which is fine - another alternative is put this out of repo and I’ll link to it from the readme

let me know your thoughts!

@airwindows
Copy link
Copy Markdown
Collaborator

1 is important. I would ask Paul not to merge anything he doesn't want to maintain, and 'no change' is always better than 'change that can't be supported'.

That said, Joeboy, do you know there's an offshoot of Consolidated that is like a library with just all the FX in it? Consolidated is a whole plugin that I believe is based off CLAP and uses continuous integration to produce a bunch of other platforms like VST3 and AU. That's what Consolidated is, so by definition it is not LV2-only. Perhaps what you're looking for is a way to fork off Consolidated and have a parallel system that makes generic LV2s? That's more than I do, I just make individual VST2s for Linux.

If you have a full working system that does this and works like Consolidated, I am willing to go to your project too, every week, and push the button that rebuilds all the individual LV2 plugins for you. I will say, however, that if the merge simply adds stuff to Consolidated that Paul can't maintain, then we can't merge it and must seek other options (like you making a separate CI system and me pressing a separate button just for you to keep it current :) )

@airwindows
Copy link
Copy Markdown
Collaborator

Also, Paul does not balk at LLM assistance, but I do: so in the end it's up to Paul but if you've used AI to get a temporary fix for the situation, but aren't able to support it yourself in the absence of the AI's availability, I'd ask that it not become part of the main Consolidated which is Paul's related-to-Airwindows project that I regularly cross-promote. One reason I trust Paul with AI assists is that the base Consolidated was done on his own and he understands the full system: if you're able to get LV2s made in this way derived from Consolidated, maybe you're simply looking at another, this time related-to-Consolidated, project? I don't want to discourage the experimenting, I'm just trying to set expectations. It does seem like a good thing to want to exist, and I don't currently manually write a standalone LV2 for linux for each plugin as it comes out. If I did I would have to also do every single existing plugin that way, by hand, possibly for intel and RPi, so I am not hastening to add that port to the standalones: when I take on something like that it is a very big task and can take months :)

@baconpaul
Copy link
Copy Markdown
Owner

Yeah zero problem on llm here - most of my commits are Claude based nowadays

just I want to be able to support everything in repo or collaborate with people who are committed to doing so for a while

@baconpaul
Copy link
Copy Markdown
Owner

Oh and chris the submission works just like consolidated just projects it into a third flavor so it’s a good change and in line with the project

@Joeboy
Copy link
Copy Markdown
Author

Joeboy commented Mar 26, 2026

@baconpaul @airwindows

Thanks for the replies, no pressure to merge this, it was really just an experiment to see how it could be done. That said I do find the "one plugin that can be 400 different effects" approach quite difficult to work with, but maybe I'm the only person that feels that way, or maybe it's only the LV2 version that presents that way (I didn't try the others).

Maybe the best thing for now is if it stays a fork and if you guys are up for giving it some sort of public assent at some point that'll be awesome. I'll try to figure out the CI / building binaries part (not necessarily immediately).

@airwindows You're right I'm only really interested in Linux LV2s. Not sure I know about the Consolidated offshoot you mentioned? I guess I'd like to be based on the most "upstream" thing practical, airwin2rack seemed like the obvious thing to fork but maybe not?

I'll just mention - the code isn't actually very big or complex, it's basically two files, ~500 lines.

  • generate-ttl.cpp - a simple "script" that goes through AirwinRegistry and spits out .ttl metadata files at build time
  • plugin.cpp - LV2 binary that finds the AirwinRegistry entry corresponding to the LV2 plugin descriptor and wraps it for LV2

@Joeboy
Copy link
Copy Markdown
Author

Joeboy commented Mar 26, 2026

Btw I'd be happy to commit to supporting the code. The part that's now worrying me is building the binaries. I've never previously built Linux binaries for distribution and I worry that having to support people on different systems might be a hassle. But I suppose it's not insurmountable.

@baconpaul
Copy link
Copy Markdown
Owner

Building the binaries in ci is easy enough - but we don’t even need a binary build at first we can just do a pull request check. If you are interested look in .github/workflows.

im about to head out in vaca for a week or so but maybe the thing to do is to do this multi-lv2 and I revive the multi-clap and then we put both in the distro as a zip especially as you are willing to stick around and answer questions if they pop up

wdyt?

@Joeboy
Copy link
Copy Markdown
Author

Joeboy commented Mar 27, 2026

@baconpaul You'll have to be the arbiter of what makes most sense for the project, but sounds good to me. It'd probably be a good idea if this had a bit more testing as I've only really smoke tested it on one machine. While you're away let me do a workflow for it and I'll see if I can find anyone to test builds.

Enjoy your vacation!

@Joeboy Joeboy marked this pull request as draft March 27, 2026 08:52
@airwindows
Copy link
Copy Markdown
Collaborator

Btw I'd be happy to commit to supporting the code. The part that's now worrying me is building the binaries. I've never previously built Linux binaries for distribution and I worry that having to support people on different systems might be a hassle. But I suppose it's not insurmountable.

There's a reason I trust and continually shout out Paul with literally public assent (and the community, Surge XT, he's from) and I think he will agree with this reason and, with me, try to sell YOU on it.

You GET to support people on different systems :D

This is important and means a lot, and I'm going to start increasingly leaning on it in the extended Airwindows open source community. You could call it 'service' and not be too far off. When we open source software and encourage people to get their hands greasy messing with it, on the best days we're making new friends and that's not just 'public assent', we're making friends! You might make something next year that will fill me with delight, how good would it be if I encouraged you and got you on that path?

Let's contrast with what is also constantly happening (I may make a video on this but, being me, will likely not be name-and-shaming people). When Paul sought to make Consolidated he went 'excuse me, I think I can do this and your license allows it. Are you sure?' because Paul is very nice and that's just what he's like. And on beginning to develop it, he put 'AIRWINDOWS' on the GUI because everybody seems to do that, especially if they can spell it 'AirWindows' (capitalization counts as spelling here) in like eighty point font. At least I think Paul did that because I know I responded by asking 'instead of that, can you put the little Clipper dog logo instead? That's like an Airwindows logo which can be in the bottom left corner, and also it can be low contrast and controls can overlap it if they want.' and so it is.

The 'Airwindows' snuck back, but it's a third party project honoring the MIT license so it's fine, that's how you can tell it isn't me. and it's not spelled AirWindows, nor is it huge huge text.

Meanwhile when I do a GUI plugin like for ConsoleX2 or ConsoleH or a Meter, it reflows the controls when you freely resize the window to accomodate any aspect ratio, and there isn't a pixel of space anywhere on the interface that says 'airwindows', it's just that the whole THING screams 'airwindows!' by being what it is.

And I ain't much for coding, but when something like ConsoleH comes out and I work out the details on how to have the plugin remember window sizes AFTER the first version comes out, then I scramble and put out an update for the plugin, because I GET to support people on different systems in different places doing different things, and I might never see them but I want it to be right. If it's one of the standalone plugins that means personally, manually, recompiling on a bunch of different platforms and repackaging all the stuff (I almost never fumble or mis-drag so all the little subcollections of things look automatic, but it is all by hand) but I GET to do all that and eventually people notice.

If they don't then it's me who gets to notice things like 'hey, when did Linux start to get a bigger userbase than some of the Mac or Windows distributions?' because it was there being supported since before it seemed to be a big deal to me.

You seem like part of the community that is like this (certainly being a Linux user seems a strong indicator! :D ) so consider how you think about it. If you do this stuff in the right spirit, you GET to support a whole-ass community, perhaps even one you didn't realize was as strong as it is. And that's as much a gift as it is a hassle: depends on what day it is and what mood you're in. But I promise, it's a gift, and you may come to see it as one <3

@Joeboy
Copy link
Copy Markdown
Author

Joeboy commented Mar 29, 2026

Hi, I didn't actually mean to close this PR, was just trying to move my work to another branch and github closed it for me! I'll open another PR with the new branch.

@airwindows Thanks for your message. I do want to support the community, although if I'm honest I'm hopeful that this particular piece of work is more like a bit of helpful drive-by plumbing rather than an endless commitment. We'll see I guess.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants