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

Impulse Response Convolution Reverb Request #641

Closed
unfa opened this issue Apr 24, 2014 · 21 comments
Closed

Impulse Response Convolution Reverb Request #641

unfa opened this issue Apr 24, 2014 · 21 comments

Comments

@unfa
Copy link
Contributor

unfa commented Apr 24, 2014

LV2 plugins are not about to be usable within LMMS (AFAIK).
And what I want to use in LMMS is unfortunately availabile only as a LV2 plugin.

I'm talking about the Tom Szylagyi "IR" plugin. It's a wonderful and very versatile 2 or 4 channel convolution reverb processor:
http://factorial.hu/plugins/lv2/ir

Convolution can give the user some unique and very pleasing sounds, especially for simulating real room's reverbation, or some sampled reverb units (springs sound cool), but when fed with something wicked, you can get all sorts of cools stuff ranging form ghostly horror sounds to old radio eq. An IR processor allows for amazingly cool and creative sounds to emerge, from combining random samples (what will I get when I convolute sample A with sample B? A-hah!).

Is there any possibility that the Tom's IR effect can be ported to LMMS native effect plugin format and bundeled with it?

If not, how could we get some processor written for LMMS? It could be very simple at first only allowing one to load a IR sample, and manipulate pre and post gains and dry/wet. It would already be a big leap forward that would help getting more "realistic" and less "digital" sounds out of LMMS.

@diizy
Copy link
Contributor

diizy commented Apr 24, 2014

On 04/24/2014 09:37 PM, unfa wrote:

LV2 plugins are not about to be usable within LMMS (AFAIK).

Not until someone implements support for them. We're sadly very much
lacking in developers who have both the skill and time to implement
something like that. If you want to advance the issue, try to recruit
more developers to the LMMS project - not just casual coders like me,
but people with actual education and/or years of experience in
programming...

If not, how could we get some processor written for LMMS? It could be
very simple at first only allowing one to load a IR sample, and
manipulate pre and post gains and dry/wet. It would already be a big
leap forward that would help getting more "realistic" and less
"digital" sounds out of LMMS.

I don't see why not. If someone explains to me the mathematical formulas
for convolving samples then I can take a shot at it. (If it's anything
like convolution in image processing it should be a simple thing, I've
implemented some convolution filters in the image processing realm, but
I'm not sure if it's comparable - many times the terms and concepts in
both audio and image processing match up, but sometimes not.)

@unfa
Copy link
Contributor Author

unfa commented Apr 24, 2014

diizy,

Some sources you might find useful for implementing a convolution processor:
http://en.wikipedia.org/wiki/Impulse_response
http://en.wikipedia.org/wiki/Overlap%E2%80%93add_method
http://stackoverflow.com/questions/19041249/algorithm-for-real-time-convolution-reverb-using-long-impulse-responses

Also probably contacting Tom Szylagyi (the maker of the IR plugin) or taking a look at his code might help too.

@diizy
Copy link
Contributor

diizy commented Apr 25, 2014

There's also an impulse convolver in the swh plugins, but the problem
with that is that the impulses need to be pre-compiled into the plugin,
since LADSPA doesn't allow loading files at runtime.

Another problem is it's mono and doesn't work very good in LMMS (the
right ch instance doesn't produce any output for some reason). But I
think it might be possible to adapt it into a native plugin - we already
have the dependencies (FFTW) and all the UI stuff.

I'm trying to go through it now to figure out how to do the same thing
in an LMMS plugin...

@unfa
Copy link
Contributor Author

unfa commented Apr 27, 2014

Yes, I tried Steve Harris' plugin and it gave me "all right" result too.
Completely unusable.

I haven't tried the SWH plugin is it of any use?

I hope you will succeed on your trial, it would be kickass to have such a
tool in LMMS.
On 25 Apr 2014 11:52, "Vesa V" notifications@github.com wrote:

There's also an impulse convolver in the swh plugins, but the problem
with that is that the impulses need to be pre-compiled into the plugin,
since LADSPA doesn't allow loading files at runtime.

Another problem is it's mono and doesn't work very good in LMMS (the
right ch instance doesn't produce any output for some reason). But I
think it might be possible to adapt it into a native plugin - we already
have the dependencies (FFTW) and all the UI stuff.

I'm trying to go through it now to figure out how to do the same thing
in an LMMS plugin...


Reply to this email directly or view it on GitHubhttps://github.com//issues/641#issuecomment-41376316
.

@mikobuntu
Copy link
Contributor

Now i remember why i started working on creating my own impulse responses, because of this request, but it was an idea i have been thinking about a lot especially since Renoise introduced its new impulse response convolver.It would be amazing if like has been stated, it was built as a new lmms plugin and it would be even more amazing if it could be fed userfiles i.e .wav .ogg etc at runtime just like the Convolver plugin of renoise:-
release note of Convolver ----- The Convolver is a brand new, convolution-based effect which will allow you to load your own impulse response (IR) files. This can lead to many interesting results, such as treating your owns sounds to the crunchy digital character of a C64 snaredrum or the realistic recreation of an actual, physical space (such as a cathedral or a bathroom).

thanks Mikobuntu ;)

Date: Sun, 27 Apr 2014 13:26:32 -0700
From: notifications@github.com
To: lmms@noreply.github.com
Subject: Re: [lmms] Impulse Response Convolution Reverb Request (#641)

Yes, I tried Steve Harris' plugin and it gave me "all right" result too.

Completely unusable.

I haven't tried the SWH plugin is it of any use?

I hope you will succeed on your trial, it would be kickass to have such a

tool in LMMS.

On 25 Apr 2014 11:52, "Vesa V" notifications@github.com wrote:

There's also an impulse convolver in the swh plugins, but the problem

with that is that the impulses need to be pre-compiled into the plugin,

since LADSPA doesn't allow loading files at runtime.

Another problem is it's mono and doesn't work very good in LMMS (the

right ch instance doesn't produce any output for some reason). But I

think it might be possible to adapt it into a native plugin - we already

have the dependencies (FFTW) and all the UI stuff.

I'm trying to go through it now to figure out how to do the same thing

in an LMMS plugin...

Reply to this email directly or view it on GitHubhttps://github.com//issues/641#issuecomment-41376316

.


Reply to this email directly or view it on GitHub.

@unfa
Copy link
Contributor Author

unfa commented Apr 29, 2014

On 28 Apr 2014 00:05, "mikobuntu" notifications@github.com wrote:

Now i remember why i started working on creating my own impulse
responses, because of this request, but it was an idea i have been thinking
about a lot especially since Renoise introduced its new impulse response
convolver.It would be amazing if like has been stated, it was built as a
new lmms plugin and it would be even more amazing if it could be fed
userfiles i.e .wav .ogg etc at runtime

If this means simply the ability to load samples just like AFP does - at
any time - I consider that a fundamental function of the whole thing.
Restarting LMMS or reloading whole project just to change IR files would
not be a "useful" solution IMO. Fiddling with code and recompiling the
plugin also does not attract me.

just like the Convolver plugin of renoise:-

release note of Convolver ----- The Convolver is a brand new,
convolution-based effect which will allow you to load your own impulse
response (IR) files. This can lead to many interesting results, such as
treating your owns sounds to the crunchy digital character of a C64
snaredrum or the realistic recreation of an actual, physical space (such as
a cathedral or a bathroom).

thanks Mikobuntu ;)

Date: Sun, 27 Apr 2014 13:26:32 -0700
From: notifications@github.com
To: lmms@noreply.github.com
Subject: Re: [lmms] Impulse Response Convolution Reverb Request (#641)

Yes, I tried Steve Harris' plugin and it gave me "all right" result too.

Completely unusable.

I haven't tried the SWH plugin is it of any use?

I hope you will succeed on your trial, it would be kickass to have such a

tool in LMMS.

On 25 Apr 2014 11:52, "Vesa V" notifications@github.com wrote:

There's also an impulse convolver in the swh plugins, but the problem

with that is that the impulses need to be pre-compiled into the plugin,

since LADSPA doesn't allow loading files at runtime.

Another problem is it's mono and doesn't work very good in LMMS (the

right ch instance doesn't produce any output for some reason). But I

think it might be possible to adapt it into a native plugin - we already

have the dependencies (FFTW) and all the UI stuff.

I'm trying to go through it now to figure out how to do the same thing

in an LMMS plugin...

Reply to this email directly or view it on GitHub<
https://github.com/LMMS/lmms/issues/641#issuecomment-41376316>

.


Reply to this email directly or view it on GitHub.


Reply to this email directly or view it on GitHub.

@mikobuntu
Copy link
Contributor

@unfa
yes that is what i mean exactly, i.e the ability to load audio files into an FX plugin at any time and have them used as Impulse responses.The LMMS core code can obviously load files at runtime, but im not sure if the LADSPA api even has that functionality or anyone would be willing to write such a plugin.It would obviously be good if @diizy would design an LMMS-Convolver specific plugin as he seems to be creating all the great plugins at the moment.
yes and I also agree about fiddling with the already existing swh plugins code would not be attractive, i have started this, but i can use it just for personal use, especially as it can only operate in mono, which is why IMO it is not so great in the 1st place.

thanks Mikobuntu ;)

If this means simply the ability to load samples just like AFP does - at

any time - I consider that a fundamental function of the whole thing.

Restarting LMMS or reloading whole project just to change IR files would

not be a "useful" solution IMO. Fiddling with code and recompiling the

plugin also does not attract me.

@diizy
Copy link
Contributor

diizy commented Apr 30, 2014

Just to let you know, some progress is being made...

lmmstmp2

Still in very early phase and lots of problems to work out, but getting there. Works pretty well with short samples, but longer samples ramp the CPU usage through the roof...

@mikobuntu
Copy link
Contributor

This is great news, keep up the good work Vesa!

thanks Mikobuntu ;)

Subject: Re: [lmms] Impulse Response Convolution Reverb Request (#641)

Just to let you know, some progress is being made...

Still in very early phase and lots of problems to work out, but getting there. Works pretty well with short samples, but longer samples ramp the CPU usage through the roof...


Reply to this email directly or view it on GitHub.

@JohannesLorenz
Copy link
Contributor

This is great.

Sorry I ask that late. But was there no free software for this already before?
I think freeverb3 can do it [1].

[1] http://www.nongnu.org/freeverb3/

Am Mittwoch, 30. April 2014, 04:07:29 schrieb Vesa V:

Just to let you know, some progress is being made...

![lmmstmp2](https://cloud.githubusercontent.com/assets/6368868/2840537/5e055
44a-d057-11e3-8966-a659d6aaec8d.png)

Still in very early phase and lots of problems to work out, but getting
there. Works pretty well with short samples, but longer samples ramp the
CPU usage through the roof...

@diizy
Copy link
Contributor

diizy commented Apr 30, 2014

On 04/30/2014 09:05 PM, JohannesLorenz wrote:

This is great.

Sorry I ask that late. But was there no free software for this already
before?
I think freeverb3 can do it [1].

What freeverb3? We have the LADSPA version of freeverb3 in LMMS and it
has no such functionality. There even can't be such functionality in a
LADSPA plugin because LADSPA doesn't allow loading files (samples) at
runtime. Can be easily done in a native LMMS plugin though.

As for other versions of freeverb3, we don't have the support for them -
no LV2... so those aren't currently very useful for LMMS users.

@JohannesLorenz
Copy link
Contributor

As for other versions of freeverb3, we don't have the support for them -
no LV2... so those aren't currently very useful for LMMS users.

On freeverb3's webpage, they don't write LV2 as a requirement.

If it's really written in LV2, you probably think it's easier to write a new
algorithm than extracting theirs? (Probably because their source code seems to
be large...)

@diizy
Copy link
Contributor

diizy commented Apr 30, 2014

On 04/30/2014 09:40 PM, JohannesLorenz wrote:

As for other versions of freeverb3, we don't have the support for them -
no LV2... so those aren't currently very useful for LMMS users.

On freeverb3's webpage, they don't write LV2 as a requirement.

If it's really written in LV2, you probably think it's easier to write
a new
algorithm than extracting theirs? (Probably because their source code
seems to
be large...)

I'm not writing a new algorithm from scratch, I'm adapting the one in
the SWH impulse convolver. As for freeverb3, like I said - we have the
LADSPA version (only version we support currently) in LMMS, you can see
what it's capabilities are by trying it.

@unfa
Copy link
Contributor Author

unfa commented May 1, 2014

Wow! I'm so glad this is actually being worked on :)
Thanks, Vesa!
As for good performance for long samples - IR LV2 by Tom Szilagyi handles
this very well, maybe Tom could give come tips on that matter.
On 30 Apr 2014 13:07, "Vesa V" notifications@github.com wrote:

Just to let you know, some progress is being made...

[image: lmmstmp2]https://cloud.githubusercontent.com/assets/6368868/2840537/5e05544a-d057-11e3-8966-a659d6aaec8d.png

Still in very early phase and lots of problems to work out, but getting
there. Works pretty well with short samples, but longer samples ramp the
CPU usage through the roof...


Reply to this email directly or view it on GitHubhttps://github.com//issues/641#issuecomment-41784700
.

@unfa
Copy link
Contributor Author

unfa commented Jul 19, 2014

BUMP: What's up with the Impulse Convolver?
Can it be added to LMMS's next realease even in it's simplest working form?

@diizy
Copy link
Contributor

diizy commented Jul 20, 2014

On 07/19/2014 09:24 PM, unfa wrote:

BUMP: What's up with the Impulse Convolver?
Can it be added to LMMS's next realease even in a simplest working form?

There's a working prototype but the CPU usage is still outrageous and I
haven't had time to work on it. Not going to make it to 1.1.

Also if we get support for LV2 effects in 1.2, then it's kind of
pointless to do anyway...

@PaulBatchelor
Copy link
Contributor

@diizy @unfa If you've given up, I'd be willing to look into implementing this. Soundpipe has a partitioned convolution module that you can find here. It works quite well. I've been able to convolve 8s impulse responses in realtime (and still maintain a decent CPU time)! The thing you sacrifice is a delay, which you can control in samples. For something like reverb, however, this really is a non issue.

The challenge from my standpoint would be getting things hooked up with LMMS components. Being able to load files into soundpipe, and switching between them is one issue I forsee. Another is being able to change latency, which is really only an init-time thing. I will need some guidance in those areas.

@zonkmachine
Copy link
Member

@unfa doesn't code (yet...) and @diizy pushed his impulse convolver branch here but hasn't been around here in a while.

You're most welcome to pick up the convoler idea but please see this comment from above:

Also if we get support for LV2 effects in 1.2, then it's kind of
pointless to do anyway...

@grejppi is working on LV2 support for 1.3 . I don't know how much pointlessness that would bring to this issue but I still think this would be appreciated.

@PaulBatchelor
Copy link
Contributor

@zonkmachine I'll be sure to take a better look at what's been happening and assess if I even have the time for it. I couldn't resist but poke around at some of the GH issues. That being said, I am of the belief that there is still merit to having some good "in-the-box" native plugins like a convolver. Thanks for the response!

@JohannesLorenz
Copy link
Contributor

As we're developing Lv2 plugin support ( #4899 is already a valid Lv2 core implementation ), it's not worth the effort to program a separate IR plugin for LMMS. We'll soon be able to use Tom's IR plugin.

@grejppi
Copy link
Contributor

grejppi commented Mar 31, 2019

@JohannesLorenz FWIW that plugin isn't completely conforming to the LV2 specifications (it saves its state using its own not-really-portable way instead of the standard interface); there are more conforming alternatives such as convo.lv2 or Klangfalter

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

No branches or pull requests

7 participants