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

Reverb module has crackling issues at low latencies (e.g. 64 Samples ASIO-Buffer) #39

Open
Seljo1 opened this issue Sep 23, 2024 · 9 comments

Comments

@Seljo1
Copy link

Seljo1 commented Sep 23, 2024

While the organ alone plays well at low latencies (64 ASIO samples), as soon as I move the reverb slider away from 0 position, there appears cracklingg in the sound output. If I pull the reverb fader to 0, then the sound is nice and uncrackled. I need to add an external reverb plugin afer the organ to avoid the internal reverb and thus to be able to play at low latencies.
Tested with v 0.2.0 and 0.2.1, same.
Tested as plugin and as standalone with ASIO, both the same at 64 sample buffer size, both crackling.

@Archie3d
Copy link
Owner

Does this happen for you when using "Elveden Hall" reverb IR (this is the only non zero-delay one)?

@Seljo1
Copy link
Author

Seljo1 commented Sep 24, 2024

Just tested Elveden Hall and the same crackling, when the reverb slider is higher than 0.
Just tested appending ReaVerb from Reaper just for testing another convolution reverb, and that does not crackle, but hasn't the nice church tails of Aeolus.

@Archie3d
Copy link
Owner

I see, thanks for trying.
Do you mind telling me your system specs? Also, what is your audio interface (is it a proper ASIO or smth like ASIO4ALL ?), and the sampling rate?
I can run 64 samples frame on my laptop (MBP M1), will test on Windows machine later, so could be the performance struggle of my reverb implementation. Though, I must say 64 samples frame is quite a stretch, real organs have much worse responsiveness.
Meanwhile, if you are fine with Reaper's convolver you can grab the IRs from here: https://github.com/Archie3d/aeolus_plugin/tree/master/Resources/irs

@Seljo1
Copy link
Author

Seljo1 commented Sep 24, 2024

Well the specs are: i5 12500H Win11
RME Babyface (very first old version, but ASIO drivers from RME are up to date), works well at 64 Samples at 44.100 Hz with most synths. CPU load is not high, but only unevenly distributed over time, so some buffers get missed on a regular basis.
The provided IRs I'll try as soon as I get home, didn't know they are there. Thanks a lot for these, and the organ itself especially!

@Seljo1
Copy link
Author

Seljo1 commented Sep 24, 2024

Tested the IRs in ReVerb, and it sounds verry similar, or even identical, like in Aeolus. If FFT-size is set too low, then also ReaVerb crackles, which is unintuitive, I thought long FFT is mor CPU intensitive, but what do I know... :-)
The sound is really fantastic, very competitive to real organ manufacturers (mid sized PA system needed, though, hihi)

@Archie3d
Copy link
Owner

The plugin uses non-uniform partitioning convolution with the max FFT size of 8192 samples. Just tested it on i9-9900K (which should be slower than your i5-10500H), and I had no problem running it with 64 samples frame in Reaper, so I am not sure where the bottleneck is. Well, at least you can use the IRs separately.
BTW, if you have a 5.1 or 7.1 system you may try a multichannel version of the plugin.

@Seljo1
Copy link
Author

Seljo1 commented Sep 28, 2024

Yes, multichannel sounds tempting, but I'm still stereo-only equipped. And I'm not sure, if headphone-surround-simulation is actually valid.
But I liked the York Minster IR the most, but didn't like the long pre-delay in the IR, so I deleted the first silent part completely, so now it is more to my liking, even if it is acoustically untrue in a real church due to distances, I like the immediate response more. I attached the artifact, if you want to test the changed behaviour.
york_minster_no-delay.zip

@Archie3d
Copy link
Owner

Hi, I actually do multichannel surround to stereo mapping inside the plugin already, so yeah, that's about how it would sound in headphones.
The delay in IRs is left on purpose actually. The reverb slider in the plugin only controls the wet part of the reverb, the dry direct sound is always there at nominal gain, so you always get the immediate sound plus a slightly delayed reverb. This should normally favour the perspective of a player sitting the closest to the pipes. Removing the delay from the IR will get you a more reverberant sound, as from the perspective of someone sitting in the hall (so the direct and reverberant sounds reach them more or less simultaneously, or the direct even being obstructed). I suppose, it's the matter of preference, but removing the delay can actually be useful for performance reasons, since this allows skipping the zero-delay portion of the reverb (which is very CPU hungry), which will make the convolution faster but will introduce the delay back. But since it's been removed from the IR they should compensate. So in the future I may consider removing the 4096 samples from the IRs and switch the convolver to non-zero delay mode.

@Seljo1
Copy link
Author

Seljo1 commented Sep 28, 2024

Ah, now I understand, why I prefer the audience experience, which is without pre-delay, - because I always sit in the audience and not in the player's bench! :-)
To re-purpose the computational delay as the reverb pre-delay and save CPU cycles that way, is a clever idea, and a good plan to implement - because my Laptop behaves like an organ blower due to the heavy work, haha.

Edit: Oh, just checked, the silence in front of the york-minster IR is only 3072 long, not long enough for the full 4096 samples required. So the solution might be a bit more complex, when the zero delay portion is still 1024 samples long. Don't know if that is feasable.

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

No branches or pull requests

2 participants