import LCD import matrix from time import sleep_ms from machine import Pin, PWM Spkr = PWM(Pin(18)) def Init(): Spkr.freq(100) Spkr.duty_u16(0) def Parse(X): X = X.strip() X = X.replace(',',' ') X = X.replace('\t',' ') for i in range(0,10): X = X.replace(' ',' ') m = X.find(' ') Note = X[0:m] Dur = int(X[(m+1):]) return([Note,Dur]) def Freq(a): n = len(a) Note = a[0:n-1] Harmonic = a[n-1] Hz = 0 if(Note == 'C'): Hz = 16.35 elif(Note == 'C#'): Hz = 17.32 elif(Note == 'D'): Hz = 18.35 elif(Note == 'E'): Hz = 20.60 elif(Note == 'F'): Hz = 21.83 elif(Note == 'F#'): Hz = 23.12 elif(Note == 'G'): Hz = 24.50 elif(Note == 'G#'): Hz = 25.96 elif(Note == 'A'): Hz = 27.50 elif(Note == 'A#'): Hz = 29.14 elif(Note == 'B'): Hz = 30.87 if(Hz > 0): Hz = Hz * (2 ** int(Harmonic)) return(Hz) def Play(Hz, Eighths): if(Hz > 0): Spkr.freq(round(Hz)) Spkr.duty_u16(32768) else: Spkr.duty_u16(0) sleep_ms(75 * Eighths - 50) Spkr.duty_u16(0) sleep_ms(50) f = open("Super_Mario.txt", "rt") Data = f.readlines() f.close() n = len(Data) Y = [] for i in range(0,n): Y.append(Parse(Data[i])) print(Y) Init() for i in range(0,n): Hz = Freq(Y[i][0]) Dur = Y[i][1] print(i, Hz, Dur) Play(Hz, Dur)