• Stars
    star
    105
  • Rank 328,196 (Top 7 %)
  • Language
    Python
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 1 year ago

Reviews

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

Repository Details

A demo of using AsyncIO for music sequencing

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

  • this is work-in-progress polyphonic 4-operator FM synthesizer following the general Yamaha design;
  • this is pushing Python real hard, your CPU might not be able to do realtime audio with this, if that's the case: decrease polyphony;
  • as usual, MIDI IN and AUDIO OUT configuration is done through a config file;
  • tested under macOS and Linux (both PulseAudio and ALSA) where we were able to achieve 8+ voices of polyphony without buffer underruns;
  • use something like BlackHole to route audio to your DAW of choice.

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

  • regular unison mode for rich chorus;
  • power chord mode;
  • duophonic mode: real 2-voice polyphony;
  • legato-controlled glide (or sustain pedal-controlled glide);
  • velocity-controlled accent notes;
  • one Mother receives mod wheel on ASSIGN CV;
  • the other Mother receives expression pedal on ASSIGN CV.

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

  • the idea is to have a generative sequence that can still be modulated with incoming MIDI signal from the musician;
  • so far very simple but will be extended;
  • the musician controls pitch bend, expression, and damper pedal (I personally have them patched to control resonance, cutoff, and glide of the synthesizers);
  • the musician can transpose the generated sequences on the fly.

For more information see:

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

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.

More Repositories

1

bitrot

Detects bit rotten files on the hard drive to save your precious photo and music collection from slow decay.
Python
186
star
2

retype

Re-apply type annotations from .pyi stubs to your codebase.
Python
134
star
3

flake8-mypy

A plugin for flake8 integrating Mypy.
Python
102
star
4

dj.choices

An enum implementation for Django forms and models
Python
30
star
5

commonplace

A basic Python-based publishing platform based around the idea of commonplace books
Python
29
star
6

kitdjango

lck.django: a reusable library of typical Django routines, apps, filters, template tags and configuration techniques.
Python
26
star
7

httproxy

Tiny HTTP proxy based on work by Suzuki Hisao and Mitko Haralanov
Python
24
star
8

fm-demo

FM synthesis in Python from scratch, accompanying my PyCon US 2021 talk
Python
23
star
9

dj.chain

An object that enables chaining multiple iterables to serve them lazily as a queryset-compatible object.
Python
21
star
10

.dot_files

My distributed configuration
Shell
17
star
11

aioecho

A non-broken echo protocol example for asyncio
Python
16
star
12

static-annotations

PEP 563: Postponed Evaluation of Annotations
15
star
13

cpython-stats

Gathering stats about python/cpython
Python
15
star
14

singledispatch

Implements PEP443. This is a synchronized copy from Bitbucket kept for Travis support.
Python
11
star
15

rename

Renames files using regular expression matching. This enables elegant handling of multiple renames using a single command.
Python
7
star
16

gha-issuenumber

A GitHub action that enforces all commits have issue numbers linked
Python
6
star
17

requests-testadapter

An adapter for unit testing with requests
Python
5
star
18

requests-robotstxt

Support for robots.txt in a requests Session
Python
4
star
19

kitpy

lck.common: A library of various simple common routines that keep being rewritten all over again in every project we're working on.
Python
4
star
20

kiti18n

lck.i18n: a reusable library of typical i18n routines.
Python
4
star
21

oblique

Shows koans from Oblique Strategies.
Python
3
star
22

benchmark-annotations

A very simple benchmark of `from __future__ import annotations`
Python
3
star
23

spectro

Creates a spectrogram PNG suited for synchronized Full HD display.
Python
3
star
24

modalcommands

Custom commands for vscode-modaledit
TypeScript
2
star
25

django-crystal-big

Everaldo's Crystal icons bundled for direct consumption from Django applications
Python
2
star
26

django-crystal-small

Everaldo's Crystal icons bundled for direct consumption from Django applications. Sizes up to 48x48.
Python
2
star
27

gol

Game of Life talk material from EuroPython 2023
Python
2
star
28

casecheck

Lists all paths that would clash on a case-insensitive filesystem.
Python
1
star
29

thingsweforget-fetcher

Synchronization of images at thingsweforget.blogspot.com for offline use
Python
1
star
30

mudmafia

Managing extortion.
Python
1
star
31

zamawiacz

Simplistic application for managing orders in a shop. Made for a specific client, not meant to be generic.
Python
1
star
32

null

Implements the null object pattern. This is a synchronized copy from Bitbucket kept for Travis support.
Python
1
star
33

dj

This is just a namespace package for Django-related packages. Feel free to use it.
Python
1
star