Skip to main content

Synthesizer Programming with Intelligent Exploration, Generation, and Evaluation Library

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spiegelib-0.0.4.tar.gz (174.8 kB view details)

Uploaded Source

Built Distribution

spiegelib-0.0.4-py3-none-any.whl (214.9 kB view details)

Uploaded Python 3

File details

Details for the file spiegelib-0.0.4.tar.gz.

File metadata

  • Download URL: spiegelib-0.0.4.tar.gz
  • Upload date:
  • Size: 174.8 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for spiegelib-0.0.4.tar.gz
Algorithm Hash digest
SHA256 190638763d3b28345a1f6b0d1972b43ae6edc24f8f33223e9bec6e69b5a4054d
MD5 dbbb6dd089bd62d8f5c2e1980648645e
BLAKE2b-256 df74f9b394d12bc6e5650f34f5200092a41dbb5f9afe82728817156acd65d7e5

See more details on using hashes here.

File details

Details for the file spiegelib-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: spiegelib-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 214.9 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for spiegelib-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b648d2bd6b5cc58c91871f3b1c9680075ca7ce5b1d08f84f9ee57947ecd7a3ed
MD5 bec6332fa16d060b9189e826eb9779a3
BLAKE2b-256 f648dd2c9399326203c17eb23305ec3906c076835b52cc164cd8107df94f6fc1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page