This is the generation script of the dataset ReverbFX, which can be used to simulate algorithmic reveb. This dataset is a collection of "artificial" Room Impulse Responses, which are recorded from the Vst Reverb Plugins, Valhalla Supermassive, u-he Protoverb, Shiftline SkyNet and TAL-Reverb-4.
ReverbFX is a dataset of 1,846 room impulse responses (RIRs) designed to advance research in singing voice dereverberation, with a special focus on artificial reverberation used in music production. Unlike conventional RIR datasets recorded in real acoustic spaces or simulated via physical models, ReverbFX is derived exclusively from a diverse collection of professional reverb audio effect plugins, including Protoverb, SkyNet, TAL-Reverb-4, and Valhalla Supermassive.
Each RIR was generated by processing Dirac impulses through these plugins with factory and custom presets out of the preset folder. For each preset a given amount (for ReverbFx 15) of randomization processes is applied, where two arbitary parameters of the plugin are selected and set to a random value between 0 and 1 for further diversity. Since the Protoverb plugin has only one parameter (decay), which is easily randomizable, we decided to render only 5 RIRs (randomizations) for this plugin. The resulting RIRs cover a wide range of decay times (RT60 spanning 0.31 to 52.08 seconds) and reverberation characteristics, capturing the creative breadth of artificial reverbs encountered in contemporary music production. Every paramerization of the RIR is saved as state. The state contains all the information about the plugins parameters and their values. Every random RIR can be loaded in the Plugin via the DawDreamer API using load_state(self, filepath), for further details refer to the API documantation.
A stringent validation protocol was applied to ensure data quality, checking for numerical integrity, DC offset, signal energy, plausible RT60 range, envelope decay, and early energy concentration.
More details and the download can be found here.
- Download and install the Plugins. The script should also work for other plugins.
- Search for the .vst3 or .dll file of the plugin and copy the path into the config and give it a key/name.
- Define the parameters in the config, which should be set to a value, like the dry/wet or the bypass parameter. Make sure that the name of the plugin is the same as above. The key is the id of the parameter. To find the id of the effect you have to load the plugin once with DawDreamer and get the parameter description. The script randomizes random selected parameters, to ensure that some parameters are not changed, intialize them here.
- This code is based on presets and without them the code will not work. The presets are derived by a selection of the default presets of each plugin, saved as and .fxp or .vstpreset file. In order not to violate copyrights, I am not able to upload the files. Only the presets, which I created myself with the randomization feature of the protoverb plugin, can be found in the preset folder.
- To run the code 1use
python create_reverbfx.py --target_dir "" --preset_dir "" - (Optional) To split the dataset, we used the split.py script, which splits the data into subsets with similar distribution of the rt60 values.