# 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 ## Commands | Command | Action | Page | Notes | |---|---|---|---| | `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 ` | Play row X times in loop | Main Page | | | `seq ,... ` | 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 seq ,` - 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 - `0` Only play base octave - `1` Randomize octaves, increasing octave range by +1 and -1 (example: base octave = 3, octave range = 2-4) - `2` Randomize octaves, increasing octave range by +2 and -2 (example: base octave = 3, octave range = 1-5) - `3` Randomize 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 - `0` No Rhythmic Complexity, Will play default division - `1` Will play a rhythm based on sequence generated by tone matrix - `2` Will play a rhythm based on sequence generated by tone matrix, Including rests (if rest probability is greater than 0) - `3` Will play a random rhythm not based on a sequence - DEFAULT_DIVISION - `0` Whole Note - `1` Half Note - `2` Quarter Note - `3` Eight 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