-
Notifications
You must be signed in to change notification settings - Fork 29
Description
Hi,
I've been fussing with RNNoise and made a slightly-incompatible fork that:
(1) Supports multiple neural network models, several of which I've trained (and I'm still training more),
(2) Supports a simple ASCII file format for future models, and
(3) Parameterizes the maximum attenuation to perform.
I've been scratching my head over whether to learn a whole plugin infrastructure in order to get it working slightly more tastefully, and since you have mixing wet and dry as a todo item (with the goal presumably the same as maximum attenuation, but frankly doing it in the library is a bit cleaner), maybe we can scratch each other's itches.
My rnnoise: https://github.com/GregorR/rnnoise-nu
My rnnoise models (informational, not needed to use the library): https://github.com/GregorR/rnnoise-models
In terms of the library, the changes are small. rnnoise_create takes an RNNModel * as an argument, or NULL to use the default (this was what necessitated breaking compatibility). rnnoise_models returns a NULL-terminated list of models (meaningless string names) and rnnoise_get_model gets a model by name. Alternatively, rnnoise_model_from_file can load a model from a file, to be freed by rnnoise_model_free. Finally, rnnoise_set_param lets you set the (solitary) configurable parameter.
(An aside: My knowledge of LV2 is limited to... well, nothing, but I was surprised to find while poking at your library that there doesn't seem to be any mention of number of channels. Does LV2 just send each channel through a different instance of the plugin, or is this plugin single-channel-specific?)