Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter
- import numpy as np
- import sounddevice as sd
- notas={1:"C",2:"C#",3:"D",4:"D#",5:"E",6:"F",7:"F#",8:"G",9:"G#",10:"A",11:"A#",12:"B"}
- octava=0
- valornota=0
- def valor_nota(a):
- global valornota
- for i in range(1,13):
- if notas[i]==a:
- valornota=i
- def textodelacaja():
- global octava
- octava=int(Cajaoctava.get())
- def frecuencia(nota, octava):
- ex=(octava-4)*12+(nota-10)
- return 440*(((2)**(1/12))**ex)
- def rep_nota(nota, octava):
- framerate=44100
- tiempo=3000
- frec=frecuencia(nota, octava)
- t=np.linspace(0, tiempo/1000, int(framerate*tiempo/1000))
- onda=np.sin(2*np.pi * frec * t)
- sd.play(onda, framerate)
- print("la nota es:", valornota, "y la octava es", octava) #para ver la asignación
- ventana=tkinter.Tk()
- ventana.title("Diapasón")
- seleccionarnota=tkinter.Label(ventana, text="Selecciona la nota:")
- seleccionarnota.grid(row=0, column=0, columnspan=6)
- botonC=tkinter.Button(ventana, text="C", command=lambda: valor_nota("C"))
- botonC.grid(row=1, column=0)
- botonCs=tkinter.Button(ventana, text="C#", command=lambda: valor_nota("C#"))
- botonCs.grid(row=1, column=1)
- botonD=tkinter.Button(ventana, text="D", command=lambda: valor_nota("D"))
- botonD.grid(row=1, column=2)
- botonDs=tkinter.Button(ventana, text="D#", command=lambda: valor_nota("D#"))
- botonDs.grid(row=1, column=3)
- botonE=tkinter.Button(ventana, text="E", command=lambda: valor_nota("E"))
- botonE.grid(row=1, column=4)
- botonF=tkinter.Button(ventana, text="F", command=lambda: valor_nota("F"))
- botonF.grid(row=1, column=5)
- botonFs=tkinter.Button(ventana, text="F#", command=lambda: valor_nota("F#"))
- botonFs.grid(row=2, column=0)
- botonG=tkinter.Button(ventana, text="G", command=lambda: valor_nota("G"))
- botonG.grid(row=2, column=1)
- botonGs=tkinter.Button(ventana, text="G#", command=lambda: valor_nota("G#"))
- botonGs.grid(row=2, column=2)
- botonA=tkinter.Button(ventana, text="A", command=lambda: valor_nota("A"))
- botonA.grid(row=2, column=3)
- botonAs=tkinter.Button(ventana, text="A#", command=lambda: valor_nota("A#"))
- botonAs.grid(row=2, column=4)
- botonB=tkinter.Button(ventana, text="B", command=lambda: valor_nota("B"))
- botonB.grid(row=2, column=5)
- ingresaroctava=tkinter.Label(ventana, text="Ingresa la octava deseada:")
- ingresaroctava.grid(row=3, column=0, columnspan=6)
- Cajaoctava=tkinter.Entry(ventana, font="Helvetica 20")
- Cajaoctava.grid(row=4, column=0, columnspan=6)
- botoncaja=tkinter.Button(ventana, text="Clic", command=textodelacaja)
- botoncaja.grid(row=5, column=5)
- botonrepro=tkinter.Button(ventana, text="Reproducir", command=lambda: rep_nota(valornota, octava))
- botonrepro.grid(row=6, column=5)
- #boton_rep=tkinter.Button(ventana, text="A4-440Hz", command=lambda: rep_nota(10,4))
- #boton_rep.pack()
- ventana.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment