%pylab inline f = 10 # Hz time = 1 #seconds sr = 44100 phs = linspace(0, 2* pi* f* time, time*sr) plot(sin(phs)) f2 = 2 phs2 = linspace(0, 2* pi* f2* time, time*sr) plot(sin(phs2)) out = sin(phs) * sin(phs2) # Ring modulation plot(out) out = sin(phs) * (1 + sin(phs2)) # Amplitude modulation plot(out) phs = linspace(0, 2* pi* 30* time, 300, endpoint=False) plot(sin(phs)) phs2 = linspace(0, 2* pi* 3* time, 300, endpoint=False) plot(sin(phs2)) out = sin(phs) * sin(phs2) plot(out) plot(abs(fft.rfft(out))) xlim((0, 40)) grid() out = sin(phs) * (0.5 + sin(phs2)) plot(out) plot(abs(fft.rfft(out))) xlim((0, 40)) grid() f = 10 # Hz time = 1 #seconds sr = 44100 phs = linspace(0, 2* pi* f* time, time*sr) plot(sin(phs)) fm = 2 mod = sin(linspace(0, 2 * pi * fm * time, time*sr)) mod_phs = phs + mod plot(mod_phs) mod_phs = phs + (2*pi*mod) plot(mod_phs) plot(sin(mod_phs)) plot(abs(rfft(sin(mod_phs)))) plot(abs(rfft(sin(mod_phs)))) xlim((0, 30)) f = 4410 # Hz time = 1 #seconds sr = 44100 phs = linspace(0, 2* pi* f * time, time*sr) fm = 2205 mod = sin(linspace(0, 2 * pi * fm * time, time*sr)) mod_phs = phs + mod plot(abs(rfft(sin(mod_phs)))) plot(abs(rfft(sin(mod_phs)))) xlim((2000, 8000)) grid() from JSAnimation import IPython_display from matplotlib import animation fig = plt.figure() ax = plt.axes(xlim=(0, 22050), ylim=(0,17000)) ax.grid() line, = ax.plot([], []) amp_text = ax.text(10000, 15000, "") x = np.linspace(0, 22050, 22051) phs = linspace(0, 2* pi* f, time*sr) mod_amp = linspace(0, 4*pi, 100) def init(): line.set_data([], []) return line, def animate(i): mod_phs = phs + (mod_amp[i] * mod) line.set_data(x, abs(rfft(sin(mod_phs)))) amp_text.set_text("mod_amp = %f"%mod_amp[i]) return line, animation.FuncAnimation(fig, animate, init_func=init, frames=len(mod_amp), interval=300, blit=True) f = 10 phs_inc = ones((time*sr)) * 2*pi*f/(time*sr) phs = cumsum(phs_inc) plot(sin(phs))