BPM = 180 QUARTER = 60.0 / BPM HALF = QUARTER * 2 NOTE_TO_FREQ = { "C1": 32.70, "C#1": 34.65, "D1": 36.71, "D#1": 38.89, "E1": 41.20, "F1": 43.65, "F#1": 46.25, "G1": 49.00, "G#1": 51.91, "A1": 55.00, "A#1": 58.27, "B1": 61.74, "C2": 65.41, "C#2": 69.30, "D2": 73.42, "D#2": 77.78, "E2": 82.41, "F2": 87.31, "F#2": 92.50, "G2": 98.00, "G#2": 103.83, "A2": 110.00, "A#2": 116.54, "B2": 123.47, "C3": 130.81, "C#3": 138.59, "D3": 146.83, "D#3": 155.56, "E3": 164.81, "F3": 174.61, "F#3": 185.00, "G3": 196.00, "G#3": 207.65, "A3": 220.00, "A#3": 233.08, "B3": 246.94, "C4": 261.63, "C#4": 277.18, "D4": 293.66, "D#4": 311.13, "E4": 329.63, "F4": 349.23, "F#4": 369.99, "G4": 392.00, "G#4": 415.30, "A4": 440.00, "A#4": 466.16, "B4": 493.88, "C5": 523.25, "C#5": 554.37, "D5": 587.33, "D#5": 622.25, "E5": 659.25, "F5": 698.46, "F#5": 739.99, "G5": 783.99, "G#5": 830.61, "A5": 880.00, "A#5": 932.33, "B5": 987.77 } NOTE_TO_MIDI = { "C1": 24, "C#1": 25, "D1": 26, "D#1": 27, "E1": 28, "F1": 29, "F#1": 30, "G1": 31, "G#1": 32, "A1": 33, "A#1": 34, "B1": 35, "C2": 36, "C#2": 37, "D2": 38, "D#2": 39, "E2": 40, "F2": 41, "F#2": 42, "G2": 43, "G#2": 44, "A2": 45, "A#2": 46, "B2": 47, "C3": 48, "C#3": 49, "D3": 50, "D#3": 51, "E3": 52, "F3": 53, "F#3": 54, "G3": 55, "G#3": 56, "A3": 57, "A#3": 58, "B3": 59, "C4": 60, "C#4": 61, "D4": 62, "D#4": 63, "E4": 64, "F4": 65, "F#4": 66, "G4": 67, "G#4": 68, "A4": 69, "A#4": 70, "B4": 71, "C5": 72, "C#5": 73, "D5": 74, "D#5": 75, "E5": 76, "F5": 77, "F#5": 78, "G5": 79, "G#5": 80, "A5": 81, "A#5": 82, "B5": 83 } NOTES = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"] SOUNDFONTS = { 'Bassoon': 'SJO - Bassoon.sf2', 'Cello': 'SJO - Cello.sf2', 'Choir Aahs': 'SJO - Choir Aahs.sf2', 'Clarinet': 'SJO - Clarinet.sf2', 'Double Bass': 'SJO - Double Bass.sf2', 'English Horn': 'SJO - English Horn.sf2', 'Flute': 'SJO - Flute.sf2', 'French Horn': 'SJO - French Horn.sf2', 'Glockenspiel': 'SJO - Glockenspiel.sf2', 'Harp': 'SJO - Harp.sf2', 'Marimbas': 'SJO - Marimbas.sf2', 'Strings slow': 'SJO - Strings slow.sf2', 'Strings': 'SJO - Strings.sf2', 'Timpani': 'SJO - Timpani.sf2', 'Trombone': 'SJO - Trombone.sf2', 'Trumpet - Velocity fix': 'SJO - Trumpet - Velocity fix.sf2', 'Tuba': 'SJO - Tuba.sf2', 'Vibes': 'SJO - Vibes.sf2', 'Viola': 'SJO - Viola.sf2', 'Xylophone': 'SJO - Xylophone.sf2' } GENERAL_MIDI_PROGRAMS = { 'Glockenspiel': 9, 'Vibes': 11, 'Marimbas': 12, 'Xylophone': 13, 'Harp': 46, 'Timpani': 47, 'Strings': 48, 'Strings slow': 49, 'Viola': 41, 'Cello': 42, 'Double Bass': 43, 'Choir Aahs': 52, 'Trumpet - Velocity fix': 56, 'Trombone': 57, 'Tuba': 58, 'French Horn': 60, 'Flute': 73, 'English Horn': 69, 'Clarinet': 71, 'Bassoon': 70 } RESET = "\033[0m" BOLD = "\033[1m" REVERSE = "\033[7m" BLACK = "\033[30m" RED = "\033[31m" GREEN = "\033[32m" YELLOW = "\033[33m" BLUE = "\033[34m" MAGENTA = "\033[35m" CYAN = "\033[36m" WHITE = "\033[37m"