File size: 1,175 Bytes
dfd0713
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import streamlit as st
import mido
from mido import Message, MidiFile, MidiTrack

st.title("7 Chords MIDI Player")

# Define the chords
C = [60, 64, 67]
D = [62, 65, 69]
E = [64, 68, 71]
F = [65, 69, 72]
G = [67, 71, 74]
A = [69, 73, 76]
B = [71, 75, 78]

# Create a MIDI file and track
mid = MidiFile()
track = MidiTrack()
mid.tracks.append(track)

# Function to play a chord
def play_chord(chord, velocity=64, duration=1):
    for note in chord:
        track.append(Message('note_on', note=note, velocity=velocity, time=0))
        track.append(Message('note_off', note=note, velocity=0, time=duration))

# Main function that plays the 7 chords
def main():
    st.header("Select a chord to play")
    chord = st.selectbox("", ["C", "D", "E", "F", "G", "A", "B"])
    if chord == "C":
        play_chord(C)
    elif chord == "D":
        play_chord(D)
    elif chord == "E":
        play_chord(E)
    elif chord == "F":
        play_chord(F)
    elif chord == "G":
        play_chord(G)
    elif chord == "A":
        play_chord(A)
    elif chord == "B":
        play_chord(B)
    mid.save("chord.mid")
    st.header("Now playing...")

if __name__ == '__main__':
    main()