Skip to main content

SpiegeLib

Synthesizer Programming with Intelligent Exploration, Generation, and Evaluation Library.

PyPI version License: MIT


An object oriented Python library for research and development related to Automatic Synthesizer Programming. SpiegeLib contains a set of classes and base classes for developing and evaluating algorithms for generating parameters and patch settings for synthesizers.

SpiegeLib is named after composer Laurie Spiegel, an early pioneer in electronic music. She is known for her work with synthesizers and for automating various aspects of the music composition process. Her philosophy for using technology and automation in music serves as motivation for this project:

I automate whatever can be automated to be freer to focus on those aspects of music that can’t be automated. The challenge is to figure out which is which.

Documentation & Examples

Detailed installation instructions, API reference, and examples are available here.

An example using SpiegeLib for synthesizer sound matching of Dexed, an emulation of the Yamaha DX7, is available here

Features

  • Classes for creating research datasets and running sound matching experiments
  • Programmatic control and rendering of audio from VST synthesizers
  • Audio feature extraction
  • Deep learning algorithms
  • Evolutionary algorithms
  • Objective & subjective evaluation tools
Programmatic Control of Synthesizers

Program and render audio from VST synthesizers or write your own custom synthesizer classes. SynthVST class provides control of VST synthesizers using the RenderMan library.

Deep Learning

Deep learning algorithms implemented using Keras & TensorFlow. SpiegeLib includes the following models which have been used in preivous work in the field of automatic synthesizer programming:

  • Multi-layer Perceptron (MLP)
  • Long Short-Term Memory (LSTM)
  • Bi-directional Long Short Term Memory with Highway Layers (LSTM++)
  • Convolutional Neural Network (CNN)

The DatasetGenerator class can be used to create datasets of synthesizer patches for training and validating deep learning models.

Evolutionary Algorithms

Evolutionary algorithms, including genetic algorithms, supported using the DEAP framework. SpiegeLib includes the following algorithms which have been used in previous automatic synthesizer programming research:

  • A basic single objective genetic algorithm (GA)
  • A multi-objective non-dominated sorting genetic algorithm (NSGA III)
Evaluation

Tools for running both objective and subjective evaluation of experimental results are provided. Results can be evaluated objectively using the MFCCEval class which calcuates error and distance metrics on a set of audio file targets and estimations.

Basic subjective evaluation of results is provided in the Subjective class which creates a basic MUSHRA style listening test using BeaqleJS and serves it to localhost so it can be taken in a browser.

Installation

Detailed instructions on installing SpeigeLib in a conda environment are available here

SpiegeLib is available via pip: pip install spiegelib

Note: Requires Python > 3.6

All requirements except for RenderMan will be installed via pip. RenderMan must be installed manually. We have instructions for installing RenderMan in a conda environment here.

Currently RenderMan is only available for MacOSX and Linux operating systems. However, there was a recent pull request made to RenderMan to add support for Windows - it has not been merged yet and we have not tested it, but you Windows users might be interested in checking that out, here.

Issues and Contributions

Please report and issues or desires for enhancements on the GitHub issues page. Contributions are also welcome and encouraged. Check out the contributions guide for more information on getting setup for development.

Planned Future Additions

Parameter Estimation / Generation Models

Acknowledgements

Thank you to Matthew Yee-King, Leon Fedden, and Mark d'Inverno for their work on Automatic Programming of VST Sound Synthesizers Using Deep Networks and Other Techniques and the research code they released with that project. Their work served as inspiration for SpiegeLib and was an invaluable resource in beginning to put together this library.

Contributors

Release files for spiegelib 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spiegelib 0.0.4
File Size Uploaded
spiegelib-0.0.4.tar.gz 174.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for spiegelib 0.0.4
File Interpreter ABI Platform
spiegelib-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 389.7 kB

Release files / spiegelib-0.0.4.tar.gz

Download URL spiegelib-0.0.4.tar.gz
Size 174.8 kB
Tags Source
SHA-256 checksum
How to use checksums
190638763d3b28345a1f6b0d1972b43ae6edc24f8f33223e9bec6e69b5a4054d
BLAKE2b-256 checksum
How to use checksums
df74f9b394d12bc6e5650f34f5200092a41dbb5f9afe82728817156acd65d7e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

Release files / spiegelib-0.0.4-py3-none-any.whl

Download URL spiegelib-0.0.4-py3-none-any.whl
Size 214.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b648d2bd6b5cc58c91871f3b1c9680075ca7ce5b1d08f84f9ee57947ecd7a3ed
BLAKE2b-256 checksum
How to use checksums
f648dd2c9399326203c17eb23305ec3906c076835b52cc164cd8107df94f6fc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.24.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

1 release file

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page