ambv / aiotone

A demo of using AsyncIO for music sequencing
MIT License
118 stars 9 forks source link

aiotone

Audio synthesis and MIDI processing tools in AsyncIO.

Installation

$ git clone https://github.com/ambv/aiotone
$ python3.8 -m venv /tmp/aiotone
$ source /tmp/aiotone/bin/activate
(aiotone)$ pip install Cython cymem
(aiotone)$ pip install -e .[dev]
(aiotone)$ python build.py

DISCLAIMER: tested on macOS only.

Usage

Realtime FM synthesis in pure Python

For more information see:

(aiotone)$ python -m aiotone.fmsynth --help

Available algorithms:

Available FM algorithms

Performing on two Moog Mother 32 synthesizers as one instrument

For more information:

(aiotone)$ python -m aiotone.redblue --help

Sequencing the Novation Circuit + Novation Circuit Mono Station

(aiotone)$ python -m aiotone.circuits --help

See this talk for a full tutorial: https://www.youtube.com/watch?v=02CLD-42VdI

Self-generating sequences for two Moog Mother 32 synthesizers and one Moog Subharmonicon

For more information see:

(aiotone)$ python -m aiotone.mothergen --help

Automatic multisampling into 32-bit float WAVs

(aiotone)$ python -m aiotone.samplesnake --help

Long story short: this enables you to automatically record many samples of different note pitches and velocities for use with a sample player, especially handy to export nice VST sounds for use with hardware samplers.

Caveats:

How to use:

Help, how do I use this?

You will need to figure out the names of your MIDI ports (and, in the case of the FM synth, the name of your audio port).

You can run python -m aiotone.lsdev to list all the audio and MIDI ports detected on your system, so that you know what to enter in your .ini configuration file.

Many scripts here use virtual MIDI ports built into macOS. To configure one, open "Audio MIDI Setup", open the "MIDI Studio" screen, find the red IAC object there, double-click it, and add a port using "+". A port with one input and one output is enough. Scripts here use a port called "aiotone", which is visible in lsdev as "IAC aiotone".

Some scripts here rely on virtual audio I/O called BlackHole, which is open-source and available for the Mac.