Usage

Piano

This is how piano can be supposedly played.

from Instrument import Instrument

piano = Instrument(bit_rate = 44100)
piano.record_key(52, duration=0.3)  # C5
piano.record_chord([(52, 56, 61)], duration=0.3)  # C5 E5 A5

piano.play()
piano.close()   # Terminates PyAudio

You can look at here the key numbers for corresponding frequency.

Plotting Graph

import matplotlib.pyplot as plt

key_colors = {40: ["red", 1], 42: ["blue", 1], 44: ["green", 1], 45: ["gray", 1],
                  47: ["orange", 1], 35: ["purple", 1], ((51, 56, 61),): ['black', 1]}

# piano.graphing sample contains key, time take as an array, wave equation as an array.
for key, time, wave in piano.graphing_sample:
    if key_colors[key][1]:
        plt.plot(time, wave, label=key, color=key_colors[key][0])
        key_colors[key][1] = 0
    else:
        plt.plot(time, wave, color=key_colors[key][0])

plt.show()

Plotting Spectogram

import librosa.display

amplitude = librosa.stft(piano.sample)
db = librosa.amplitude_to_db(abs(amplitude))
plt.figure(figsize=(14, 5))
librosa.display.specshow(db, sr=44100, x_axis='time', y_axis='hz')
plt.colorbar()
plt.show()