-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LV2 support #123
Comments
Since the topic on the forums has been quiet for a long time as well, is there anything that can be done to get/keep this going? |
FWIW I've updated my juce fork to v5.1 juce sources. I think adding LV2 stuff in Projucer would not be too hard, but some confirmation about a possible merge (or not) would be great... |
+1 I've released two LV2 plug-ins based on falkTX's code almost five years ago and have used them extensively over the years. There wasn't any problem at all. Nothing. My idea: add LV2 support to JUCE and mark it as experimental. Then watch if people start using it (I bet they will because moving over from VST is super-simple). If so, officially support it. Otherwise, just move it along. From what I've seen falkTX do, the amount of work for updating to future JUCE versions should be pretty small. Just my two cents. :) |
Please |
Hello, still no news on this front, despite @falkTX contribution? Too bad, it would be huge because even if VST3 is now under the GPLv3, no major free DAW (such as Ardour) supports it yet. If JUCE has an advantage over other toolkits, it's its support for GNU/Linux. And it happens that right now, the most supported format for GNU/Linux audio plugins is LV2. So I think it would really be for the best if JUCE supported it, if only to increase adoption of JUCE among GNU/Linux audio developers. |
That is not something that is going to help a lot tbh, since Linux audio devs are generally more conscious about privacy issues and Juce is quite aggressive towards user data tracking. Due to Juce not caring about LV2, user privacy, opensource models (if you look at their "get juce" page you will not be aware that free & opensource is an option) and other issues... Linux and opensource devs have been moving away from Juce. and btw, dplug added LV2 support recently |
Well, it's under the GPLv3 so that functionality can easily be stripped away when packaging for distros like Debian! 😉 I think that your effort with DPF is commendable @falkTX (like most things you do, I use a lot of code you wrote, thank you 😃) but there are a lot of free plugins around which use JUCE and porting them can be hard and time-consuming, while LV2 support would allow people without programming skills to build them easily. This could also be useful for commercial purposes to ROLI, since LV2 is widely supported on GNU/Linux compared to VST3, for example. I don't know if your code can still be merged (many years passed) but it could be a starting point, perhaps. |
there is no need for hostility here. please delete your comment, or at least make something that is constructive. |
Alright. The issue is already hanging for more than two years without any reaction from the official developers/maintainers here, I think that they don't care about OSS developers and users at all because LV2 is now a main plugin standard for Linux/BSD-based systems. @falkTX you've offered a patch, you've did a lot of job that just should be merged into main tree. And... No reaction. Moreover, if applied, the result of your work will then be sold as a commercial solution for those who use JUCE as commercial framework. Any royalties to you? Don't even hope. So, please, anyway, let the developers and maintainers of JUCE rest in piss! |
I never expected royalties from this, if that was not obvious before. oh 2 years does not cover how long it has been really. for curiosity sake I went to see how long it has been... The way I see things, JUCE has become just like Android - it is used a lot and can be quite useful, but its leadership and past practices make it something you use not because you want, but because there are not many other options out there. It makes it unwanted for anyone that takes privacy and user freedom seriously, like yourself. But what can we do? JUCE has turned into a business, so its development and new features come from whatever the "business" needs. I already lost hopes of this being an official thing. |
Hey @sadko4u, while I appreciate that you care about the issue (also, thanks for lsp-plugins, they are pretty nice!), there is no need to attack the JUCE developers. This can only make them think supporting LV2 is something undesirable, not the contrary. Please, edit the final part of your last post, let's try to be reasonable, even from a commercial standpoint. Right now JUCE has many advantages over its competitors, but the biggest probably is its support for GNU/Linux. So:
I'd like to hear someone from ROLI on this. I think we might come up with a solution, a common ground. Otherwise the community could fork the GPL version of JUCE and have that be version packaged in distros. We've already seen that free and open source software can be profitable, there's a reason even Microsoft releases tons of free/open source stuff, when it seems to be apparently against their interest. |
We realise it’s frustrating when there a feature you care about doesn't seem to be on our radar! But this is a big and diverse library, and it's easy to lose sight of the fact that what matters to one person isn't necessarily important to the wider community.
JUCE has ALWAYS been a commercial product, and obviously we prioritise things that will benefit the most people, because more happy users = more commercial success. Nowadays we prioritise features based mainly on the results of our user surveys. But just because there's some passionate interest displayed about LV2 on the forum and in this thread, in our surveys it scored incredibly poorly compared to things like improving the graphics performance, so right now that's where most of our energy is going. If we had a bigger team, we'd all love to see LV2 (and many other things!) get added, but that's not the reality right now. In fact, it's particularly annoying to be criticised for not supporting Linux right now because we've recently over-spent in terms of the time we've put into Linux features. We have linux VST3 support almost complete (this was far more highly requested than LV2). That'll be released in the next version of JUCE. Ed has spent weeks making improvements to the linux event loop and other deep refactoring of the X windows system to help with plugins running in headless environments, and this ended up being much harder and time-consuming than we expected. It is NOT just a case of accepting a merge request. When something becomes part of JUCE it must be maintained to the same high degree as the rest of the codebase. The changes need to be picked though line by line (and probably re-written - it’s extremely rare that any code from someone outside of the JUCE team doesn’t need a substantial re-write) and going forward it'll be our team who has to keep it working when the operating systems and other factors change. The idea that "the community will maintain it" is a total myth in our experience - we've tried that in the past but it never worked out. |
Thank you for your answer, @julianstorer 😺 👍
Well, one person here is actually 26 person(s) who have +1'd this issue! 🤣 Them or someone they have business or personal relations with could actually be paying JUCE users, or they work for a company which could be interested in JUCE.
I did not accuse JUCE of not supporting Linux (Edit: in the previous message, I actually said its support for GNU/Linux is its biggest advantage over its competitors), I said that without LV2, Linux support can only be partial since VST3 is not supported by any free and open source Linux DAWs or even standalone host. I tried building VST3 myself and I got a segfault when trying to run one of the shipped examples on Debian - it's not as production ready for GNU/Linux as LV2 is, in my opinion. This isn't JUCE's fault, and with VST3 being licensed under the GPL, it's just as good as having LV2 support, from a purely philosophical perspective - just not a practical one. We're not being idealists here, we're being practical 😃
Let me be clear about this: I, as a (potential) user of the GPL version of JUCE, do not have any right to ask anything of ROLI. I apologize if I gave the impression of being entitled. You're trying to do your job to feed yourself and some people who probably won't ever spend a dime on JUCE come here and complain about things that don't even exist in the professional audio world, bringing negativity and bad PR. Things like these turn off commercial developers from releasing free and open source programs, they are awful, if you think this, I agree. But over the years, with all the experience with Red Hat, SUSE, Ubuntu, the Linux kernel, Qt, etc., we should all have learned to deal with these issues in a peaceful way, through dialogue, collaboration and reciprocal understanding. I understand, supporting and maintaining code has a cost. But you are not morally or legally obliged to provide support for the LV2 part of JUCE, that would be unreasonable, and nobody here is asking for it. You could simply not support it officially or label it as experimental and unsupported. Maybe the community won't take care of it, maybe yes, you could disable it in the default build and ask users to set a manual flag or not ship it at all in the commercial version of JUCE. And I know that even in this case, you will get issues here on Github about that LV2 port, which will bring more people complaining if these issues are not dealt with, and so on. But those people would entitled people who have no right to say those things, and ROLI could not get bad publicity for refusing to support a feature that they don't have to support. We don't have to be "us vs them", or "free/open source vs commercial" or "users vs devs" or whatever. We can find a common solution, since JUCE is GPL we both benefit from it being better and more widespread, there is no need to harm your livelihood. I am fairly sure that paying JUCE customers won't drop it if supports LV2, I think we can all agree on that. It can only improve JUCE's adoption, even if it's officially unsupported. Maybe we can find a way to fund this effort, if necessary, or the community could hire an external dev to work on it, but then it would be useless if the code isn't merged. |
@mfisher how is that related to the problem at hand? |
@umlaeute Jules made it clear they aren't going to support LV2 any time soon. I offered an alternate solution to @falkTX 's fork. @julianstorer feel free to delete my comment if you believe I am just self promoting. |
Actually, nevermind. If that's how my comment is perceived, then I'll gladly remove it myself. |
https://github.com/lvtk/jlv2 - "LV2 Related JUCE Modules", directly related because it's a practical form of workaround to this unresolved issue. |
Further to the LV2-supporting DISTRHO/juce fork, there is the lv2-porting-project/JUCE. |
Hey, Radium devs are waiting for LV2 support in JUCE just so you know (still very actively developed DAW, has 400+ stars on GitHub, pd & faust built-in, etc.). Most audio plugins available on Linux aren't available on it because that feature is currently held back |
Just FYI to people here, I have updated my juce fork for LV2 support (and some small other fixes) The list of patches not applied upstream is cleanly available at ProJucer support for LV2 is still not implemented, since I do not use that myself. |
Great work! Do you plan to open a pull request to merge that into upstream JUCE? |
JUCE devs already said in this very thread that they are not interested on LV2, this is why I keep the fork active and maintained. |
Now Reaper added LV2 support... |
Not just Reaper, mixxx developers mentioned enabling lv2 for all platforms on their next release. Audacity supports LV2 as well, though they only enable it on Linux. |
I would like to bring some attention and discussion to this again. LV2 support is more widespread than it was some years ago. The main reason that I am bumping this topic is because the current LV2 wrapper as exists today in my fork is quite outdated, and I would like to refactor and update it, matching latest JUCE developments. Seeing as cmake is supported now, there is no need to add/modify ProJucer to support LV2 specific items, we can just add some rules around cmake. JUCE has also changed a lot since a few years, Jules is not involved with it anymore as far as I know. |
We’ve recently been investigating adding LV2 support for both hosts and clients to JUCE, and I feel confident that this feature will be included in an upcoming release. We don’t have a concrete timeline for this work, but hopefully the beta will be ready soon (i.e. months rather than years). |
That is great to hear! Any possibility of previewing the feature so it can be integrated into other products? |
Again, I can't commit to a specific timeframe at the moment. In the past, we've had public "preview branches" for large features (CMake support, accessibility) and I expect that we'll do something similar for LV2 as well. |
Understandable, just thinking of what can work best timing-wise. Is it possible to have this be a more open process? Instead of the old regular surprise "code dump" when everything is done, with no one but the private/internal team with access to it. There is a lot of interest from the opensource community in having official JUCE and LV2, pretty much all LV2 hosts and plugins are opensource, would be great to collaborate on this. |
Although feedback from real-world usage is invaluable to us, releasing a feature while it still has known issues/shortcomings is not a good use of time. For the community, users may spend time reporting bugs that are already known to us, or release products that have bugs, incurring maintenance costs. On our side, maintaining an additional branch is time consuming and complicates bug-reporting (and rebasing this branch may break user submodules etc.), so we'd prefer to avoid preview branches that are too long-lived. |
All fair and reasonable. So why not just let in a few developers interested on the matter? |
No one is suggesting that we would wait for 99% completion. As @reuk suggested our current implementation has a fair number of areas we know need some work before it would be useful to share. None of the large missing pieces are particularly controversial. |
ok good enough then. we will just wait. but one crucial thing to know - how are plugin parameters being handled? old style control ports or new style patch/parameter usage? |
At the moment, clients use new-style patch parameters, allowing the plugin (not the UI) to report parameter changes back to the host if necessary. The hosting code should understand both control ports and patch parameters. |
Any update/schedule on when we may see a Beta of this @reuk ? |
I can't give a firm date. The work is currently being reviewed by the team. Before making the work public, I'll need to correct any glaring issues that they find. That said, I believe that the bulk of the work is done, so I'm hoping to release a beta fairly soon. |
Thnx for the info @reuk looking forward to that :) |
I was so pleased to return to this thread after a year and to see that LV2 support is on its way. Looking forward to trying it out! |
Just in case anyone missed it, LV2 support is now available for testing on the |
And now officially released! 🚀 Suggested to then close this topic and create new issues on any missing/incomplete/buggy implementation. |
Thank you all for your input. It's nice to be able to close this off. |
#664, port metadata and CV support, is one of the further issues |
for a cross-platform environment, it would be great if juce could include
LV2
as supported audio plugins.see https://forum.juce.com/t/juce-lv2-plugin-wrapper/14209 for a discussion on this.
The text was updated successfully, but these errors were encountered: