• Stars
    star
    309
  • Rank 135,306 (Top 3 %)
  • Language
    C++
  • License
    BSD 3-Clause "New...
  • Created over 4 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Digital emulation of the Klon Centaur guitar pedal using RNNs, Wave Digital Filters, and more

Klon Centaur Model

CI CI-iOS License Downloads arXiv

This repository contains a digital model of the Klon Centaur guitar pedal. The model is constructed using a variety of circuit modelling techniques, including nodal analysis, wave digital filters, and recurrent neural networks. The model is implemented as an audio plugin (Standalone/VST/AU/LV2) for desktop and iOS, and as a guitar pedal-style effect embedded on a Teensy microcontroller. This work began as part of a class project for EE 292D at Stanford University.

Quick Links:

Audio Plugin

The latest release can be downloaded from our website. ChowCentaur for iOS can be downloaded from the app store. The latest builds (potentially unstable) can be found on our Nightly Builds page. Linux users can find builds available on the Open Build Service, courtesy of Konstantin Voinov.

Building from Source

To build the audio plugin, you must have CMake installed (version 3.15 or greater). Then use the following steps:

# clone repository
$ git clone https://github.com/jatinchowdhury18/KlonCentaur.git
$ cd KlonCentaur
$ git submodule update --init --recursive

# Build with CMake
$ cmake -Bbuild
$ cmake --build build/ --config Release

ChowCentaur also has a headless mode that contains a performance benchmarking app. You can run the benchmarks yourself as follows:

# build with CMake
$ cmake -Bbuild -DBUILD_CENTAUR_HEADLESS=ON
$ cmake --build build/ --config Release --target Centaur_Headless

# run benchmarks
$ ./build/ChowCentaurHeadless bench

For more information, run ./build/ChowCentaurHeadless bench --help.

ChowCentaur uses the RTNeural neural network inferencing engine for running computing the output of a recurrent neural network in real-time. RTNeural has three available computational backends: Eigen, xsimd, and STL. By default, ChowCentaur uses the xsimd backend, but that can be changed using a different CMake configuration command, for example: cmake -Bbuild -DRTNEURAL_EIGEN=ON.

Teensy Pedal

Check out the video demo on YouTube! For more information on the Teensy pedal-style implementation, see the TeensyCentaur/ subfolder.

Circuit Modelling

The circuit model is constructed using nodal analysis and wave digital filters. For more information see:

The wave digital filters are implemented using a WDF library, available here.

Neural Network Modelling

In the neural network version of the emulation, a recurrent neural network is used to emulate the gain stage circuit of the original pedal. The RNN architecture used is derived from the one presented by Wright et. al. in their 2019 DAFx paper "Real-Time Black-Box Modelling with Recurrent Neural Networks". Training data consists of ~4 minutes of Direct In (DI) recordings of electric guitar, chopped into 0.5 second segments. The data is then processed through a SPICE model to create a "ground truth" version of the effect to train against. The training data, SPICE model, and Python code for training the networks can be found in the GainStageML/ subfolder.

License

This repository is licensed under the BSD-3-Clause license. Enjoy!

More Repositories

1

AnalogTapeModel

Physical modelling signal processing for analog tape recording
C++
1,093
star
2

RTNeural

Real-time neural network inferencing
C++
493
star
3

ComplexNonlinearities

Complex Nonlinearities for Audio Signal Processing
C++
176
star
4

WaveDigitalFilters

Circuit Modelling with Wave Digital Filters
C++
97
star
5

ChowDSP-VCV

ChowDSP modules for VCV Rack
C++
82
star
6

ChowPhaser

Phaser effect based loosely on the Schulte Compact Phasing 'A'
C++
76
star
7

time-stretcher

Audio time-stretching algorithm
C++
73
star
8

ADAA

Experiments with Antiderivative Antialiasing
C++
66
star
9

audio_dspy

A Python package for audio signal processing tools
Python
65
star
10

distortion-rs

An example audio plugin built with JUCE6 and Rust
CMake
56
star
11

differentiable-wdfs

Differentiable Wave Digital Filters
C++
47
star
12

Bad-Circuit-Modelling

Correct modelling of incorrect circuits
C++
36
star
13

RTNeural-example

An example project for RTNeural
C++
32
star
14

CrossroadsEffects

At the crossroads of programming your own audio effects, and letting your audio effects be programmed for you.
Python
31
star
15

NonIntegerSRC

Faster Non-Integer Sample Rate Conversion
C++
27
star
16

DrumFixer

Audio plugin for editing drum tones
C++
22
star
17

NewMixer

A unique and revolutionary audio mixing tool
C++
22
star
18

Feedback-Delay-Networks

Time-varying, nonlinear, fun-loving FDNs
C++
20
star
19

plugin-ci-example

An example of an audio plugin with Continuous Integration
Shell
20
star
20

FIRBenchmarks

A minimal JUCE console app to compare the performance of FIR filtering algorithms
C++
20
star
21

RNNAudioEffects

Real-time audio effects using single sample recurrent neural networks
C++
19
star
22

RTNeural-Variant

An example audio plugin using RTNeural with a variant model type
C++
19
star
23

modal-waterbottles

Modal models of waterbottles
C++
18
star
24

MasterEars

A listening test app for mixing/mastering engineers
C++
17
star
25

SampleRateRNN

Sample rate agnostic recurrent neural networks
C++
15
star
26

PluginRunner

Utility command-line application for running audio through a plugin
C++
14
star
27

ADC_VAModelling_2023

CMake
14
star
28

wdf-bakeoff

Comparing the performance of Wave Digital Filter implementations
C++
14
star
29

Aphex_Exciter

Virtual Analog Model of an Aphex Type B Aural Exciter
Jupyter Notebook
13
star
30

RTNeural-compare

Comparing performance for neural network inferencing libraries in C++
C++
12
star
31

R-Solver

Python/Sage Tool for deriving Scattering Matrices for WDF R-Adaptors
Python
12
star
32

BBDDelay

Experimenting with delay lines using bucket-brigade device emulation
C++
11
star
33

juce_clap_hosting

CLAP plugin hosting in JUCE
C++
9
star
34

vscode-supercollider

A VS Code extension for the SuperCollider language
JavaScript
8
star
35

RTNeural-SIMDRuntimePlugin

An example plugin using RTNeural with a SIMD architecture determined at run-time
CMake
7
star
36

DX7Learning

CS 230 Class Project
Python
6
star
37

notGuitar

notGuitar is an audio DSP system meant to perform a timbral conversion of single note melodies from guitar to saxophone. notGuitar is designed to run in real-time on a TI DSK6713 DSP board, using no MIDI conversion or pre-recorded samples.
MATLAB
6
star
38

NUPR-Filterbanks

Non-Uniform Perfect Reconstruction Filterbanks
C++
5
star
39

types_list

Types list template object for C++17
C++
4
star
40

clap-jai-example-plugin

A simple example CLAP plugin made with Jai
Shell
4
star
41

LinkTestPlugin

A minimal test audio plugin containing an Ableton Link instance
CMake
3
star
42

RTNeural-Experimental

RTNeural Experiments
C++
2
star
43

ChowTunes

C++
2
star
44

jatinchowdhury18

2
star
45

WebAudioDistortion

A web application distortion effect
JavaScript
1
star
46

matplotlib-cpp

A minimal fork of https://github.com/lava/matplotlib-cpp
C++
1
star
47

file-player-plugin

C++
1
star
48

fp-from-scratch

C++
1
star