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()