PSX Reverb is a small audio plugin for LV2 hosts (I like to use Carla). It is intended to emulate the PlayStation SPU's reverb algorithm.
It now works for all samplerates and compensates for different buffer sizes and coefficient changes accordingly. 10 different presets are available which are the ones you'll find in most commercial games. Games will likely use one of the available algorithms but usually they vary the wet level, so you may have to tweak around with that.
In order to find out which preset a game uses you can use NO$PSX and check the contents of the reverb registers.
http://www.problemkaputt.de/psx-spx.htm#spureverbregisters
Compare the register values to the presets here:
http://www.problemkaputt.de/psx-spx.htm#spureverbexamples
Games usually only adjust vLOUT
and vROUT
(usually equal) which you can convert to logarithmic units in order to tweak the wet level of this plugin.
If you want to add new presets, you'll have to do so in the code. Exposing the reverb registers directly as control ports would make the plugin almost unusable since you have to deeply understand the algorithm in order to make the sound not go bad.
This plugin was originally based on the "Simple Amplifier" example plugin code.
This is a demo with a Final Fantasy XII sequence. It's not a PSX game but it still sounds reasonable:
Large Studio @ -5 dB wet:
reverb_on_Projekt.mp4
Clean:
reverb_off_Projekt.mp4
The next one is from Final Fantasy IX and tries to mimic the original reverb settings as close as possible. It sounds somewhat different because, unlike the real console, this code doesn't downsample the reverb to 22050 Hz. But other than the additional brightness of the higher frequencies it sounds almost spot on to the original:
Large Studio @ -9.3 dB wet:
vivi_reverb.mp4
Clean:
vivi_no_reverb.mp4
For now I don't have examples of the other presets recorded, but the Large Studio is no doubt my favorite presets, followed by Hall.
Install your distribution's lv2-dev
package, init all submodules with git submodule update --init
and run ./build.sh
.
This will automatically install the plugin to your home directory ~/.lv2
where most hosts will be able to find it.
If you want to install it to somewhere else, change the build.sh
script.
Based on LV2, check COPYING for details.