Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import matplotlib
- import numpy as np
- import matplotlib.pyplot as plt
- import sounddevice as sd
- import scipy as np
- from numpy.dual import fft
- duration = 1
- amplitude = -0.1
- fs = 10000
- timeSamples = np.arange(np.ceil(duration * fs)) / fs
- do = amplitude * np.sin(2 * np.pi * 261 * timeSamples)
- re = amplitude * np.sin(2 * np.pi * 293 * timeSamples)
- mi = amplitude * np.sin(2 * np.pi * 329 * timeSamples)
- fa = amplitude * np.sin(2 * np.pi * 348 * timeSamples)
- sol = amplitude * np.sin(2 * np.pi * 391 * timeSamples)
- lya = amplitude * np.sin(2 * np.pi * 439 * timeSamples)
- si = amplitude * np.sin(2 * np.pi * 493 * timeSamples)
- do_3 = amplitude * np.sin(2 * np.pi * 522 * timeSamples)
- mi_3 = amplitude * np.sin(2 * np.pi * 658 * timeSamples)
- re_3 = amplitude * np.sin(2 * np.pi * 586 * timeSamples)
- re_3_diez = amplitude * np.sin(2 * np.pi * 621 * timeSamples)
- fa_diez = amplitude * np.sin(2 * np.pi * 369 * timeSamples)
- sol_diez = amplitude * np.sin(2 * np.pi * 414 * timeSamples)
- lya_diez = amplitude * np.sin(2 * np.pi * 465 * timeSamples)
- a = lya + re_3_diez
- do_major = do + mi + sol
- mel = []
- mel.extend(do)
- mel.extend(sol)
- mel.extend(sol)
- mel.extend(fa_diez)
- mel.extend(sol)
- mel.extend(sol_diez)
- mel.extend(sol)
- mel.extend(fa)
- mel.extend(do_3)
- mel.extend(fa)
- mel.extend(do_3)
- mel.extend(do_3)
- mel.extend(si)
- mel.extend(do_3)
- mel.extend(re_3)
- mel.extend(do_3)
- mel.extend(a)
- sd.play(mel, fs)
- status = sd.wait()
- '''
- fur = np.fft.rfft(mel)
- fr = np.fft.rfftfreq(duration[0] * fs, 1./fs)
- plt.plot(fr, np.abs(fur), 'b')
- plt.xlabel("Frequency")
- plt.ylabel("Amplitude")
- plt.show()
- r = np.fft.ifft(fur)
- plt.plot(timeSamples[0][:1000] * 1000, r[:1000], 'b')
- plt.show()
- fs_1 = 1000
- fs_2 = 500
- fs_3 = 100
- fs_4 = 50
- timeSamples_1 = np.arange(np.ceil(duration * fs_1)) / fs_1
- timeSamples_2 = np.arange(np.ceil(duration * fs_2)) / fs_2
- timeSamples_3 = np.arange(np.ceil(duration * fs_3)) / fs_3
- timeSamples_4 = np.arange(np.ceil(duration * fs_4)) / fs_4
- do_1 = amplitude * np.sin(2 * np.pi * 261 * timeSamples_1)
- do_2 = amplitude * np.sin(2 * np.pi * 261 * timeSamples_2)
- do_3 = amplitude * np.sin(2 * np.pi * 261 * timeSamples_3)
- do_4 = amplitude * np.sin(2 * np.pi * 261 * timeSamples_4)
- plt.plot(timeSamples_1[:100] * 1000, do_1[:100])
- plt.title("f = 1000")
- plt.xlabel("time / milliseconds")
- plt.show()
- plt.plot(timeSamples_2[:100] * 1000, do_2[:100])
- plt.title("f = 500")
- plt.xlabel("time / milliseconds")
- plt.show()
- plt.plot(timeSamples_3[:100] * 1000, do_3[:100])
- plt.title("f = 100")
- plt.xlabel("time / milliseconds")
- plt.show()
- plt.plot(timeSamples_4[:100] * 1000, do_4[:100])
- plt.title("f = 50")
- plt.xlabel("time / milliseconds")
- plt.show()
- for i in range(7):
- sd.play(mi, fs)
- status = sd.wait()
- sd.play(sol, fs)
- status = sd.wait()
- sd.play(do, fs)
- status = sd.wait()
- sd.play(re, fs)
- status = sd.wait()
- sd.play(mi, fs)
- status = sd.wait()
- for i in range(4):
- sd.play(fa, fs)
- status = sd.wait()
- for i in range(3):
- sd.play(mi, fs)
- status = sd.wait()
- for i in range(2):
- sd.play(re, fs)
- status = sd.wait()
- sd.play(mi, fs)
- status = sd.wait()
- sd.play(re, fs)
- status = sd.wait()
- sd.play(sol, fs)
- status = sd.wait()
- plt.plot(timeSamples[:100] * 1000, do[:100])
- plt.title("sine tone")
- plt.xlabel("time / milliseconds")
- plt.show()
- plt.plot(do)
- plt.xlabel("time samples")
- plt.show()
- plt.plot(timeSamples[:100] * 1000, do_major[:100])
- plt.title("sine tone")
- plt.xlabel("time / milliseconds")
- '''
Add Comment
Please, Sign In to add comment