/EHX-SmallStone

Phaser experiments source code for "Differentiable All-pole Filters for Time-varying Audio Systems".

Primary LanguagePythonMozilla Public License 2.0MPL-2.0

Differentiable All-pole Filters for Time-varying Audio Systems

Chin-Yun Yu, Christopher Mitcheltree, Alistair Carson, Stefan Bilbao, Joshua D. Reiss, and György Fazekas

arXiv Listening Samples Plugins License

Phaser (EHX Small Stone) Experiments

Instructions for reproducibility

  1. Clone this repo and open its directory.

  2. Install requirements: conda env create -f conda_env_cpu.yml

  3. Activate environment: conda activate phaser

Train models

The recommended training configurations for six snapshots of the EHX Small-Stone pedal considered in the paper can be found in config.py.

Train a model with one of these configs using the proposed time-domain filter implementation:

python3 train_phaser.py --config ss-a --sample_based

or with the baseline frequency sampling approach:

python3 train_phaser.py --config ss-a

Inference

Run inference on all pretrained models provided in checkpoints/ and save output audio files to audio_data/:

python3 inference.py

Note that by default LFO will be out of phase with the equivalent target files in audio_data/small_stone. This is because the beginning of the training data was truncated to speed up training; only a few cycles of LFO are required to obtain a good model. To align the phase, comment out line 17 and uncomment line 18 in inference.py:

#out_sig, _ = model(in_sig)
out_sig, _ = model(in_sig[..., int((60 - get_config(k)['train_data_length']) * sample_rate):])

Citation

@inproceedings{ycy2024diffapf,
  title={Differentiable All-pole Filters for Time-varying Audio Systems},
  author={Chin-Yun Yu and Christopher Mitcheltree and Alistair Carson and Stefan Bilbao and Joshua D. Reiss and György Fazekas},
  booktitle={International Conference on Digital Audio Effects (DAFx)},
  year={2024}
}