piano keys waveform

Status
Not open for further replies.

noelcucu

Member
how can I show the waveform when I press the button?
Python:
from tkinter import*
import time;
import datetime
import pygame

pygame.init()
root = Tk()
root .title("Music box")
root. geometry("1352x700+0+0")
root .configure(background = 'white')


ABC = Frame(root, bg = "powder blue",bd = 20, relief = RIDGE)
ABC.grid()
ABC1 = Frame(root, bg = "powder blue",bd = 20, relief = RIDGE)
ABC1.grid()
ABC2 = Frame(root, bg = "powder blue", relief = RIDGE)
ABC2.grid()
ABC3 = Frame(root, bg = "powder blue", relief = RIDGE)
ABC3.grid()

strl = StringVar()
strl.set("Just Like Music")
Date1 = StringVar()
Time1 = StringVar()

Date1.set(time.strftime("%d/%m/%Y"))
Time1.set(time.strftime("%H:%M:%S"))
#========================================Sound of every piano keys=========================================================
def value_Cs():
    strl.set("C#")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\C_s.wav")
    sound.play()
def value_Ds():
    strl.set("D#")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\D_s.wav")
    sound.play()
def value_Fs():
    strl.set("F#")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\F_s.wav")
    sound.play()
def value_Gs():
    strl.set("G#")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\G_s.wav")
    sound.play()
def value_Bb():
    strl.set("Bb")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\Bb.wav")
    sound.play()
def value_C_s1():
    strl.set("C_s1")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\C_s1.wav")
    sound.play()
def value_D_s1():
    strl.set("D_s1")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\D_s1.wav")
    sound.play()
def value_C():
    strl.set("C")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\C.wav")
    sound.play()
def value_D():
    strl.set("D")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\D.wav")
    sound.play()
def value_E():
    strl.set("E")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\E.wav")
    sound.play()
def value_F():
    strl.set("F")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\F.wav")
    sound.play()
def value_G():
    strl.set("G")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\G.wav")
    sound.play()
def value_A():
    strl.set("A")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\A.wav")
    sound.play()
def value_B():
    strl.set("B")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\B.wav")
    sound.play()
def value_C1():
    strl.set("C1")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\C1.wav")
    sound.play()
def value_D1():
    strl.set("D1")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\D1.wav")
    sound.play()
def value_E1():
    strl.set("E1")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\E1.wav")
    sound.play()
def value_F1():
    strl.set("F1")
    sound = pygame.mixer.Sound(r"C:\Users\Dell\Desktop\Music_Notes\F1.wav")
    sound.play()

#=================================================label with title===================================================
Label(ABC1, text = "Piano Musical Keys", font = ('arial', 25 , 'bold'), padx = 8, pady = 8, bd = 4, bg = "powder blue",
      fg = "white", justify = CENTER).grid(row = 0, column = 0, columnspan = 11)

#===================================================================================================================
txtDate = Entry(ABC1, textvariable = Date1, font = ('arial', 18, 'bold'), bd = 34, bg = "powder blue",
      fg = "black", width = 28, justify = CENTER).grid(row = 1, column = 0, pady = 1)
txtDisplay = Entry(ABC1, textvariable = strl, font = ('arial', 18, 'bold'), bd = 34, bg = "powder blue",
      fg = "black", width = 28, justify = CENTER).grid(row = 1, column = 1, pady = 1)
txtTime = Entry(ABC1, textvariable = Time1, font = ('arial', 18, 'bold'), bd = 34, bg = "powder blue",
      fg = "black", width = 28, justify = CENTER).grid(row = 1, column = 2, pady = 1)

#================================================Button for the keys==================================================
btnCs = Button(ABC2,  height = 6, width = 6, bd = 4, text = "C#", font = ('arial', 18 , 'bold')
               , bg = "black",  fg = "white", command = value_Cs)
btnCs.grid(row = 0, column = 0, padx = 5, pady = 5)

btnDs = Button(ABC2,  height = 6, width = 6, bd = 4, text = "D#", font = ('arial', 18 , 'bold')
               , bg = "black",  fg = "white", command = value_Ds)
btnDs.grid(row = 0, column = 2, padx = 5, pady = 5)

btnSpace2 = Button(ABC2, state = DISABLED,  height = 6, width = 2, bg = "powder blue", relief = FLAT)
btnSpace2.grid(row = 0, column = 3, padx = 0, pady = 0)

btnFs = Button(ABC2,  height = 6, width = 6, bd = 4, text = "F#", font = ('arial', 18 , 'bold')
               , bg = "black",  fg = "white", command = value_Fs)
btnFs.grid(row = 0, column = 4, padx = 5, pady = 5)

btnGs = Button(ABC2,  height = 6, width = 6, bd = 4, text = "G#", font = ('arial', 18 , 'bold')
               , bg = "black",  fg = "white", command = value_Gs)
btnGs.grid(row = 0, column = 6, padx = 5, pady = 5)

#============

btnBb = Button(ABC2,  height = 6, width = 6, bd = 4, text = "Bb", font = ('arial', 18 , 'bold')
               , bg = "black",  fg = "white",command = value_Bb)
btnBb.grid(row = 0, column = 8, padx = 5, pady = 5)

btnSpace5 = Button(ABC2, state = DISABLED,  height = 6, width = 2, bg = "powder blue", relief = FLAT)
btnSpace5.grid(row = 0, column = 9, padx = 0, pady = 0)

btnCs1 = Button(ABC2,  height = 6, width = 6, bd = 4, text = "C#1", font = ('arial', 18 , 'bold')
                , bg = "black",  fg = "white", command = value_C_s1)
btnCs1.grid(row = 0, column = 10, padx = 5, pady = 5)

btnDs1 = Button(ABC2,  height = 6, width = 6, bd = 4, text = "D#1", font = ('arial', 18 , 'bold')
                , bg = "black",  fg = "white",command = value_D_s1)
btnDs1.grid(row = 0, column = 12, padx = 5, pady = 5)

#=======
btnC = Button(ABC3,  height = 8, width = 6, bd = 4, text = "C", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_C)
btnC.grid(row = 0, column = 0, padx = 5, pady = 5)

btnD = Button(ABC3,  height = 8, width = 6, bd = 4, text = "D", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_D)
btnD.grid(row = 0, column = 1, padx = 5, pady = 5)

btnE = Button(ABC3,  height = 8, width = 6, bd = 4, text = "E", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_E)
btnE.grid(row = 0, column = 2, padx = 5, pady = 5)

btnF = Button(ABC3,  height = 8, width = 6, bd = 4, text = "F", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_F)
btnF.grid(row = 0, column = 3, padx = 5, pady = 5)

btnG = Button(ABC3,  height = 8, width = 6, bd = 4, text = "G", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_G)
btnG.grid(row = 0, column = 4, padx = 5, pady = 5)

btnA = Button(ABC3,  height = 8, width = 6, bd = 4, text = "A", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_A)
btnA.grid(row = 0, column = 5, padx = 5, pady = 5)

btnB = Button(ABC3,  height = 8, width = 6, bd = 4, text = "B", font = ('arial', 18 , 'bold')
              , bg = "white",  fg = "black", command = value_B)
btnB.grid(row = 0, column = 6, padx = 5, pady = 5)

btnC1 = Button(ABC3,  height = 8, width = 6, bd = 4, text = "C1", font = ('arial', 18 , 'bold')
               , bg = "white",  fg = "black", command = value_C1)
btnC1.grid(row = 0, column = 7, padx = 5, pady = 5)

btnD1 = Button(ABC3,  height = 8, width = 6, bd = 4, text = "D1", font = ('arial', 18 , 'bold')
               , bg = "white",  fg = "black", command = value_D1)
btnD1.grid(row = 0, column = 8, padx = 5, pady = 5)

btnE1 = Button(ABC3,  height = 8, width = 6, bd = 4, text = "E1", font = ('arial', 18 , 'bold')
               , bg = "white",  fg = "black", command = value_E1)
btnE1.grid(row = 0, column = 9, padx = 5, pady = 5)

btnF1 = Button(ABC3,  height = 8, width = 6, bd = 4, text = "F1", font = ('arial', 18 , 'bold')
               , bg = "white",  fg = "black", command = value_F1)
btnF1.grid(row = 0, column = 10, padx = 5, pady = 5)

root.mainloop()
 
The waveform played is not within the code, it looks like the code instructs a laptop to play a note from .wav files.
The waveform is stored in the laptop that the program is associated with.
You could run an audio software package on the laptop and examine the .wav files directly.
 
If the processor is fast enough you could use the analogue to digital input and use the serial plot function within the arduino Ide, you'd need to do some fudging to slow down the sample rate so's not to make a display that scrolls too fast.
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…