Skip to content
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 #562

Open
ksnd opened this issue Apr 4, 2014 · 57 comments
Open

LV2 support #562

ksnd opened this issue Apr 4, 2014 · 57 comments

Comments

@ksnd
Copy link
Contributor

ksnd commented Apr 4, 2014

No description provided.

@DoosC
Copy link

DoosC commented Apr 5, 2014

+1 👍

@diizy
Copy link
Contributor

diizy commented Apr 5, 2014

Some day, for sure...

@ghost
Copy link

ghost commented Apr 22, 2014

Let me take a minute to second this feature request.
Currently, it seems that only LADSPA effect plugins can be used (no way to use instrument plugins), and there's no support for LV2 plugins of any kind.

I think supporting LADSPA and/or LV2 instrument plugins would greatly benefit LMMS, as it opens LMMS up to a wealth of instruments that are readily accessible in various Linux distro repositories.

I wrote a sound engine and some synths from scratch a couple months ago, and was wondering if I couldn't take some of the stuff I wrote and turn it into something people could use in LMMS and other music applications.

I would presume LV2 to be the best answer to this, being a standard in the Linux community, but as far as I can tell the only way for instruments in LMMS is to tailor a proprietary-format plugin specifically for LMMS.

(EDIT: apologizes for the confusion- by 'proprietary' here, I mean 'made for LMMS and probably used exclusively by LMMS'. Other programs could use the format, certainly - it's open-source. But in reality I doubt such programs exist. When I want to develop a audio plugin that could be used in multiple audio applications, I'm probably going to want to use something more standardized. Thus the need for a LV2 host.)

I'm a programmer myself; While my hands are tied at the moment, I might try to hack something up on my own if this issue just gets completely ignored.

As far as implementation goes, it appears that Lilv would be the way to go. There's a nice example host, Jalv to show how Lilv is used.

My one question to any LMMS dev'rs out there is: If someone were to implement a LV2 host for both instruments, would that be done via the LMMS plugin? Would it be independent of the instrument plugins? Or would it be a mix of the two?

@diizy
Copy link
Contributor

diizy commented Apr 22, 2014

There's nothing proprietary about the LMMS native plugin format. LMMS is all entirely open source and so are all our existing plugins, as well as our plugin format.

If you want to write an instrument for LMMS, I suggest taking one of the existing instruments - a good, simple one is Bitinvader, it's very basic - and looking at the source code to see how things are done. For effect plugins, my Amplifier is a good, simple example.

As for an LV2 host, you'd either need to write two separate hosts, one for instruments and another for effects. Or one host and two front-ends to use it on the LMMS side. I'd suggest taking a look at how things are done on the VST side. Also Zyn can be a good example too.

@grejppi
Copy link
Contributor

grejppi commented May 13, 2014

@diizy
Copy link
Contributor

diizy commented May 13, 2014

@grejppi, so you're offering to work on LV2 support? That'd be great!

I would assign you, but you're not in the dev group, and I can't seem to be able to add you, so you'll have to wait for @tobydox to do it...

@tobydox
Copy link
Member

tobydox commented May 13, 2014

Done.

@grejppi grejppi self-assigned this May 13, 2014
@grejppi grejppi added this to the 1.2.0 milestone Jul 22, 2014
@tresf tresf modified the milestones: 1.3.0, 1.2.0 Jan 10, 2015
@tresf
Copy link
Member

tresf commented Jan 10, 2015

Bumping to 1.3 (really 2.0) since it will get lost in 1.2. 🍕

@tresf tresf changed the title [Feature request] LV2 support LV2 support Mar 10, 2015
@tresf
Copy link
Member

tresf commented Mar 10, 2015

@badosu wrote Mar 10:

@tresf Well, unfortunately this is totally alien for me, so it will take a while :-). I made some progress building a generic QT host for lv2 plugins, adapting Jalv, see:

http://bado.so/2015-03-06-031713_1919x1045_scrot.png
image

This is amSynth on the jalv.qt host that I am helping develop, this will be useful as the analogue for the "controls" menu we use on VSTs to access parameters hidden by the UI or that need automation.

:)

@Gps2010
Copy link

Gps2010 commented Jun 21, 2015

I like the third this request, because I just found out, I could use calf studio plugin in lmms if we had an lv2 host.

@Reaper10
Copy link

Reaper10 commented Oct 3, 2015

Will you be replacing the LMMS versions of the CALF plugings better GUI of the LV2 versions of the CALF plugings where you can? After all you don't need two versions of the CALF plugings.

@tresf
Copy link
Member

tresf commented Oct 3, 2015

Yes, although if backwards compatibility is an issue, we may decide to keep both for a while (all speculative, LV2 support is a ways out)

@Reaper10
Copy link

Reaper10 commented Oct 4, 2015

I found LV2 versions of the MDA Piano VSTIs -----> http://git.elephly.net/gitweb.cgi?p=software/lv2-mdametapiano.git
They should be built into LMMS.

@michaelgregorius
Copy link
Contributor

@Reaper10 In my opinion it does not make sense to build everything and the kitchen sink right into LMMS. There's a reason that plugins are called "plugins". 😉

@Reaper10
Copy link

Reaper10 commented Oct 5, 2015

There's a reason that plugins are called "plugins". This is true but LMMS could a acoustic piano plugin build in. Besides that Vst are extremely loading.

@Umcaruje
Copy link
Member

Umcaruje commented Oct 5, 2015

There's a reason that plugins are called "plugins". This is true but LMMS could a acoustic piano plugin build in. Besides that Vst are extremely loading.

Then we should improve the plugin support and not make more native plugins.

@michaelgregorius
Copy link
Contributor

@Reaper10 If LV2 support is implemented (which is what this issue is about) then you should be able to install the piano plugin you have linked and simply use it. Pulling all kinds of plugins and effects into LMMS' code base puts a large burden on the developers to keep them all up to date. Let's not turn LMMS into an Linux audio distribution. 😉

@suhr
Copy link

suhr commented Feb 12, 2016

What's the status of this issue?

@grejppi
Copy link
Contributor

grejppi commented Feb 12, 2016

@suhr personally I'm unwilling to work on this before 1.2 is out of the way

@JohannesLorenz
Copy link
Contributor

Meanwhile, the Lv2 URID feature PR is ready for review: #5517 .

@badosu
Copy link
Contributor

badosu commented May 25, 2020

Great job all involved!

@JohannesLorenz
Copy link
Contributor

Lv2 URID feature is now supported on master (7a9b336). Next will probably be more atom support (events for piano-based instruments) or the options extension.

JohannesLorenz added a commit to JohannesLorenz/lmms that referenced this issue Oct 17, 2020
All Atom ports are now being created and connected. Currently only MIDI
input ports are supplied with data.

Major contribution to LMMS#562 ("lv2 support").
JohannesLorenz added a commit to JohannesLorenz/lmms that referenced this issue Oct 18, 2020
All Atom ports are now being created and connected. Currently only MIDI
input ports are supplied with data.

Major contribution to LMMS#562 ("lv2 support").
JohannesLorenz added a commit to JohannesLorenz/lmms that referenced this issue Oct 19, 2020
All Atom ports are now being created and connected. Currently only MIDI
input ports are supplied with data.

Major contribution to LMMS#562 ("lv2 support").
JohannesLorenz added a commit that referenced this issue Oct 20, 2020
All Atom ports are now being created and connected. Currently only MIDI
input ports are supplied with data.

Major contribution to #562 ("lv2 support").
@JohannesLorenz
Copy link
Contributor

Lv2 has MIDI support (using Atoms) now (8b2902c). This enables instruments (like pianos or guitars).

Next things will be options and buf-size. Then maybe worker.

@JohannesLorenz
Copy link
Contributor

JohannesLorenz commented Dec 26, 2020

Major news of the last weeks (thanks to the reviewers, especially @DomClark and @zonkmachine):

Possible next things (though this should wait until reorg #5592 is finished):

  • Extend buf-size support
  • Support for more Parameters
  • Lv2 Worker threads
  • Enable CV ports (by using interpolation)

@zonkmachine
Copy link
Member

Also Buf Size is partly done.

@Spekular Spekular modified the milestones: 1.3, 1.3+ Mar 12, 2021
@djnotes
Copy link
Contributor

djnotes commented May 6, 2022

Is LV2 usable in LMMS now? I have configured LMMS build and it shows:

* Lv2 plugins                 : not found, install it or set PKG_CONFIG_PATH appropriately

Should I install a specific package (on Fedora) to make this warning go away?

@JohannesLorenz
Copy link
Contributor

Do you have the packages "lv2" and "lilv" installed (on some distributions, you may need source RPMs for them, too)? You need both in order to compile LMMS with Lv2 support.

@Gps2010
Copy link

Gps2010 commented May 7, 2022

Interesting, I need to do some testing on openSUSE.
I do not have Lv2 nor Lilv installed.

LMMS did compile without errors, but I think that's because I have, liblilv installed.

a C library to make use of LV2 plugins.

In yast , when looking for lv2, I also found a long list with things like lv2 calf plugins.

@djnotes
Copy link
Contributor

djnotes commented May 7, 2022

In fact I think lv2 or lilv are not dependencies for LMMS and currently the show as optional in the cmake log. However, I installed lv2* and lilv* and that "not found" was changed to OK.

@Gps2010
Copy link

Gps2010 commented May 7, 2022

I have them installed now, so will have to compile again.

I am also trying out Pipe Wire, and currently have an issue. When I checked I noticed jack not running though, and LMMS did not produce any sound. Setting LMMS to jack did not fix it, and every time I start LMMS it now shows me the settings screen.
So LMMS is not happy at the moment.

I might know why though, I probably need to install pipe wire jack something.

When I installed Calf lv2 plugins and those two files, YAST wanted to install jack, which I accepted.
I hope pipe wire will live up to its promises, but it does not seem to be there yet.
With pipe wire pulse, and LMMS set to pulse, LMMS did produce sound. (even though pulse is not installed anymore at my pc)

I also hope this does not make compiling harder, but I will report on any progress.

@JohannesLorenz
Copy link
Contributor

Lv2 support should be completely independent of the backend used. If Yast forces you to install jack, that's really strange.

Please note, this issue is mostly for users requesting specific Lv2 features or for devs updating about new Lv2 development. I think build issues, even if related to Lv2, should go into a separate issue (or even better, discord chat).

@Gps2010
Copy link

Gps2010 commented May 7, 2022

I have some thinking to do. Installing pipe wire removes pulse which makes sense, but I fear this will mess up my compiling the LMMS master branch. I am gonna bother the openSUSE forum about this.

sdasda7777 pushed a commit to sdasda7777/lmms that referenced this issue Jun 28, 2022
All Atom ports are now being created and connected. Currently only MIDI
input ports are supplied with data.

Major contribution to LMMS#562 ("lv2 support").
@PhysSong PhysSong moved this to To do in Add LV2 support Aug 2, 2022
@Gps2010
Copy link

Gps2010 commented Nov 9, 2022

Can I ask a question, because I am getting confused ?

Can somebody tell me if the newer Calf plugins should work in LMMS, and should show their Gui yet?

I think I can load them but the specific calf gui is not showing.

For those wondering what gui I am talking about:
https://www.youtube.com/watch?v=u_PR46u1T_s&list=PLeRYlL4iVEr7R8hQnlz2G2LOacg972AeI&t=783s

I already asked on the LMMS forum and LMMS discord about this, but nobody seems to know.

@zonkmachine
Copy link
Member

Can somebody tell me if the newer Calf plugins should work in LMMS, and should show their Gui yet?

No gui support yet via lmms native lv2. This works with Carla though. Some plugins are blacklisted for now for various reasons, most commonly because they simply wont work without the gui but also other issues. Some Calf plugins are among those blacklisted. They can be enabled though. See this comment on startup:

Lv2 Plugins blacklisted: 67 of 744 
  If you want to ignore the blacklist (dangerous!), please set
  environment variable "LMMS_IGNORE_BLACKLIST" to nonempty.

@Gps2010
Copy link

Gps2010 commented Nov 9, 2022

Thank you :)

@mxmilkiib
Copy link

calf-studio-gear/calf#248

@JohannesLorenz
Copy link
Contributor

Some updates of the recent months of Lv2 development:

@zonkmachine
Copy link
Member

  • is in follow-up review (still waiting there for 6 months now)

#6484 is right now a discussion about buffer sizes between two of the more experienced developers. Is that a necessary discussion to help finishing the PR?

@mxmilkiib
Copy link

FWIW, I am reminded there is the host compatability list - https://lv2plug.in/pages/host-compatibility.html - https://gitlab.com/lv2/site/-/blob/main/host_compatibility.ttl

@JohannesLorenz
Copy link
Contributor

there is the host compatability list

Thanks for the hint. I think our list of supported features will change a lot after #6707 has been finished. I added #6815 so we do not forget to update the compatibility list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: To do
Development

No branches or pull requests