3.9 KiB
3.9 KiB
Twelve Tone Generator
TUI Application for composing serialism music.
Features:
- Generate 12 Tone Matrix
- Play 12 Tone rows with over 15 instruments
- Loop and/or Sequence 12 tone rows
- Generate Serialized Octave Sequences based on tone matrix
- Generate Serialized Rhythm Sequences based on tone matrix
- Save Matrices and Other Sequences for later use
Installation Guide
Prerequisites
atonatui requires the FluidSynth audio engine to be installed on your system:
- Arch Linux:
sudo pacman -S fluidsynth - Ubuntu/Debian:
sudo apt install fluidsynth - macOS (Homebrew):
brew install fluidsynth - Windows: Download the binaries and add them to your system PATH.
Installation
pipx install atonatui
Main Page
The main page consists of a 12 Tone Matrix.
The only part of the main page that really needs explaining is the tri-colored table below the matrix.
- The TONE row contains the tones of P0 row.
- RTHM is the rhythmic division assigned to a given note.
- OCTV is the octave assigned to a given note.
The rhythmic division and octave will always be the same for their associated note, the order just changes when you play a row other than P0.
When you do begin playback, this tri-colored table will be replaced with the row that is currently being played.
Commands
| Command | Action | Page |
|---|---|---|
P0-P11 |
Play Prime Row | Main Page |
I0-I11 |
Play Inversion Row | Main Page |
R0-R11 |
Play Retrograde Row | Main Page |
i0-i11 |
Play Retrograde Inversion Row | Main Page |
loop <count> <P0-i11> |
Play row X times in loop | Main Page |
seq <P0-i11>,<P0-i11>... |
Play sequence of rows, comma separated | Main Page |
r OR regen |
Regenerate Matrix | Main Page |
s OR settings |
Go To Settings Page | Main Page |
h OR help |
Open This Document | Main Page |
q OR quit |
Quit Application | Main Page, Settings Page |
| Setting ID | Edit Setting | Settings Page |
Advanced Commands:
- Loop a sequence:
loop <x> seq <P0-i11>,<P0-i11>- Example:
loop 5 seq P0,R3,i11,I0
- Debug
debug: Open up python console via breakpoint()
Settings:
- BPM
- Set the BPM of the overall project, between 30 - 300 BPM
- INSTRUMENT
- Select an instrument for playback
- OCTAVE
- Select base octave for playback
- OCTAVE_RANDOMIZATION
0Only play base octave1Randomize octaves, increasing octave range by +1 and -1 (example: base octave = 3, octave range = 2-4)2Randomize octaves, increasing octave range by +2 and -2 (example: base octave = 3, octave range = 1-5)3Randomize octaves, increasing octave range by +3 and -3 (example: base octave = 1, octave range = 1-4)- When the range would result in an octave higher than 5 or lower than 0, it clamps range to fit 0-5
- RHYTHM_COMPLEXITY
0No Rhythmic Complexity, Will play default division1Will play a rhythm based on sequence generated by tone matrix2Will play a rhythm based on sequence generated by tone matrix, Including rests (if rest probability is greater than 0)3Will play a random rhythm not based on a sequence
- DEFAULT_DIVISION
0Whole Note1Half Note2Quarter Note3Eight Note
- REST_PROBABILITY
- The probability in which a rest will occur during playback when RHYTHM_COMPLEXITY = 2
- SAVE_SETTINGS
- Save current settings to a file, will automatically load when you restart the program
- SAVE_MATRIX
- Save the current tone matrix to a file, you can manually load this later
- LOAD_MATRIX
- Load a previously saved tone matrix
Upcoming Features
- Support independent generation, saving, and loading for rhythm and octave rows
- Support loading of custom soundfonts
- Support custom input of Tone Row + Rhythm and Octave rows
- Output rows to midi
- Up arrow functionality so users can rerun commands easily