csteinmetz1 / ronn

Randomized overdrive neural networks
https://csteinmetz1.github.io/ronn/
Apache License 2.0
133 stars 11 forks source link
audio juce overdrive plugin pytorch
# ronn Randomized Overdrive Neural Networks [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/csteinmetz1/ronn/blob/master/ronn.ipynb) [![arXiv](https://img.shields.io/badge/arXiv-2010.04237-b31b1b.svg)](https://arxiv.org/abs/2010.04237)

What is ronn?

Throughout audio technology history, engineers, circuit designers, and guitarists have searched tirelessly for novel, extreme, and exciting effects as a result of clipping audio signals. Whether it be vacuum tubes (valves), diodes, transistors, op-amps, microchips, or broken speaker drivers doing the distorting, it seems that we have tried them all. But maybe there is at least one area left relatively under-explored, and thats the realm of neural networks.

Now neural networks, have been a round for a bit. They have actually ALREADY been used to model distortion and overdrive effects from guitar amplifier and pedals quite a bit (such as here, here, here, and here). So then you may be asking, "well how is this any different?" And the answer is, ronn doesn't model ANY pre-existing audio circuit, we don't even bother to train anything! Instead we treat the concept of the neural network as a system which can distort a signal, and then we give the user control over that system to explore new effects. Get your hands dirty building neural networks without even touching TensorFlow or PyTorch.

Click the thumbnail below to watch a live demo of the plugin.

Setup

Download

We supply pre-built VST/AU plugins here.

Once downloaded, unzip and move to:

AU: Macintosh HD/Library/Audio/Plug-Ins/Components
VST3: Macintosh HD/Library/Audio/Plug-Ins/VST3

Currently, we only have macOS builds.

Build

You can also build from source. The following steps are for building on macOS, assuming you have XCode and the Command Line Tools, as well as CMake already installed. The steps should be similar for other platforms.

  1. Grab the modules and then change to the root of the plugin project
    git submodule init
    git submodule update
    cd plugin/
  2. Download the .zip file containing the libtorch (PyTorch C++ API) source.
    wget https://download.pytorch.org/libtorch/cpu/libtorch-macos-1.7.1.zip
    unzip libtorch-macos-1.7.1.zip
  3. Run the following cmake commands to build the plugin
    cmake -Bbuild -GXcode "-DCMAKE_OSX_ARCHITECTURES==i386;x86_64"
    cmake --build build --target ronn_AU ronn_VST3 --config Release
  4. Move the plugins to the system directory (macOS)
    cp -r build/ronn_artefacts/Release/AU/ronn.component "/Volumes/Macintosh HD/Library/Audio/Plug-Ins/Components"
    cp -r build/ronn_artefacts/Release/VST3/ronn.vst3 "/Volumes/Macintosh HD/Library/Audio/Plug-Ins/VST3"

Details

The ronn plugin enables users to run their audio directly through randomly weighted temporal convolutional networks (TCNs). Interestingly, using networks that have not been trained can produce a wide range of compelling audio effects simply by adjusting the architectural elements. These effects range from subtle distortion and overdrive, to more extreme drone-like and glitch effects.

Features

More to come in the future...

Citation

@inproceedings{steinmetz2020overdrive,
          title={Randomized Overdrive Neural Networks},
          author={Steinmetz, Christian J. and Reiss, Joshua D.},
          booktitle={4th Workshop on Machine Learning for Creativity and Design at NeurIPS 2020},
          year={2020}}