csteinmetz1 / Ronn
Projects that are alternatives of or similar to Ronn
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.
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.
This will require that you have JUCE v5 installed. Then you need to install libtorch (PyTorch C++ API).
- Download the
.zip
file containing the source.
https://download.pytorch.org/libtorch/cpu/libtorch-macos-1.7.1.zip
unzip libtorch-macos-1.7.1.zip
-
Unzip this and place the
libtorch
directory into theplugin
directory. -
Change to the root of the plugin project.
cd plugin/juce/ronn
- Now update
CMakeLists.txt
to reflect to correct paths.
# This file was generated by FRUT's Jucer2CMake from "ronn.jucer"
cmake_minimum_required(VERSION 3.4)
project("ronn")
# Update the path below to reflect the correct relative path to FRUT on your system
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../../../../../FRUT/prefix/FRUT/cmake")
include(Reprojucer)
find_package(Torch REQUIRED)
set(ronn_jucer_FILE
"${CMAKE_CURRENT_LIST_DIR}/ronn.jucer"
)
# Set the absolute path to your JUCE installation
set(JUCE_MODULES_GLOBAL_PATH "/path/to/JUCE/modules")
- Run the
build.sh
script, which will build the plugin.
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
- Construct different neural networks and listen to the results in real-time.
- Adjust architectural elements:
- Depth of the network
- Convolutional kernel size
- Width of the convolutional layers
- Dilation growth factor
- Activation functions
- Weight initialization scheme
- Global seed control enables presets and recallability.
- Link the input/output gain to control overall drive level.
- Use depthwise convolutions for less CPU impact.
- Inspect the receptive field of the network and number of parameters.
More to come in the future...
- a GUI that shows the construction of the network as you add layers, change activations, etc.
- a transfer function window that shows the shape of the current activation function being used.
- use FiLM as a further way to adjust the distortion character. For example, create a 2D plane the user will sample from and then use a set of linear layers to project this to gamma and beta coefficients for each layers (using linear adaptors), then the user can control the input to this MLP.
- What if you randomized the weights in each layer every time you accessed that layer?
Citation
@article{steinmetz2020overdrive,
title={Randomized Overdrive Neural Networks},
author={Steinmetz, Christian J. and Reiss, Joshua D.},
journal={arXiv preprint arXiv:2010.04237},
year={2020}}