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

Support different reverb engines #1157

Open
derselbst opened this issue Sep 19, 2022 · 3 comments
Open

Support different reverb engines #1157

derselbst opened this issue Sep 19, 2022 · 3 comments
Milestone

Comments

@derselbst
Copy link
Member

Related discussion

https://lists.nongnu.org/archive/html/fluid-dev/2022-05/msg00014.html

Is your feature request related to a problem?

I want to implement a reverbator that produces similar results as the Ultra 64 SDK.

Describe the solution you'd like

It would be nice to select different reverb engines when creating the synth. This would allow to re-enable the old freeverb engine, and for a potentially higher quality FDN reverb (by using 12 delay lines rather than only 8), and it would allow for a "Lexicon 224"-like reverbator, that I have been playing around with.

Describe alternatives you've considered

Alternative 1)
Feed the dry audio to some external program. This seems to have been suggested here (although I didn't fully understand how). In any case, this approach has the drawback that it would be almost impossible to get the amplitudes for the individual fx buffers right and therefore respect CC91 correctly.

Alternative 2)
Feed the dry audio to LADSPA plugins and process it there. Not sure if it would be possible to respect CC91 correctly. Additionally, Reinhold made the following note:

Using the LADSPA architecture on Windows is possible
according to the documentation, but dealing with an additional plugin (dll)
would have a wider impact (building, intregrating into installers). I guess
that the overall file size would be bigger than option (1). Setting the
reverb level per effect-groups (effect-group == midi channel == instrument)
is key when using the MIDI CC event 91 as reverb indicator for each
instrument.

Additional context

To implement this, one should rewrite the reverbator into an abstract C++ class, so that derived classes can implement a particular reverbator. Class template would allow to change previously hard-coded values like NBR_DELAYS.

The existing setting synth.reverb.active could be used to indicate which engine should be used at synth creation. Alternatively, yet another setting could be introduced.

@mawe42 FYI

@derselbst derselbst added this to the 2.4 milestone Sep 19, 2022
@mmontag
Copy link

mmontag commented Jan 31, 2023

Strong vote for option 1 (Extend synth.reverb.active from boolean to an enum integer, to allow
selecting different reverb engines when the synth is created).

Different reverb options would be great. BTW, do you know any open source implementations with a Lexicon 224-like architecture?

@derselbst
Copy link
Member Author

BTW, do you know any open source implementations with a Lexicon 224-like architecture?

Unfortunately not. But I've seen a simple one in the N64 dev kit, which we may use as "source of inspiration".

@mmontag
Copy link

mmontag commented Feb 1, 2023

I found some useful info in the freeverb3 reference docs: https://freeverb3vst.osdn.jp/ref.shtml

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

2 participants