android-audio-recorder/docs/fft.py
2016-03-31 21:59:31 +03:00

45 lines
No EOL
844 B
Python

import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack
import random
# Fe = sample rate
# N = samples count
def plot(Fe, N, x, y):
plt.subplot(2, 1, 1)
plt.plot(x, y)
yf = scipy.fftpack.fft(y)
xf = np.linspace(0.0, Fe/2, N/2)
yf = 2.0/N * np.abs(yf[:N/2])
plt.subplot(2, 1, 2)
plt.plot(xf, yf)
plt.show()
def noise(y, amp):
return y + amp*np.random.sample(len(y))
def simple(Fe):
N = Fe
x = np.linspace(0.0, 1.0, N)
y = 0.9 * np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)
#y = noise(y, 2)
plot(Fe, N, x, y)
def real_sound_weave(freqHz):
Fe = 16000
durationMs = 100
N = Fe * durationMs / 1000
x = np.linspace(0.0, N, N)
y = np.sin(2.0 * np.pi * x / (Fe / float(freqHz))) * 0x7FFF
#y = noise(y, 0x7fff)
plot(Fe, N, x, y)
simple(1000)
#real_sound_weave(4500)