Man Page: numm.spectral-analysis
Operating Environment: debian
Section: 7
spectral-analysis(7) Numm Tutorials spectral-analysis(7)NAMEspectral analysis - perform realtime spectral analysisSYNOPSISnumm-run FILEDESCRIPTIONFrequency makes for a meaningful description of many audio signals. We can use numpy's fourier analysis to compute spectra from the micro- phone and display the results visually. We will break down the process into smaller parts: baby steps... First, create and save a skeletal file that moves a line across the screen: idx = 0 def video_out(a): global idx a[:,idx] = 255 idx = (idx + 1) % a.shape[1] def audio_in(a): pass Save this snippet and run it with numm-run. We will use the numpy.fft module for our analysis. First we define a function to get a particular frequency from the fourier transform: import numpy as np def get_freq(fourier, frequency): freqs = np.fft.fftfreq(len(fourier), 1/44100.0) nearest = (abs(freqs - frequency)).argmin() return abs(fourier[nearest]) Next, we hook up this function to audio input from the microphone. A frequency bin is chosen on a log scale for each row on the screen to display a spectogram. In total: import numpy as np idx = 0 recent_audio = np.zeros(4096, np.int16) recent_video = np.zeros((240,320,3), np.uint8) freq_bins = np.exp2(np.linspace(np.log2(27000),np.log2(27),240)) def get_freq(fourier, frequency): freqs = np.fft.fftfreq(len(fourier), 1/44100.0) nearest = (abs(freqs - frequency)).argmin() return abs(fourier[nearest]) def video_out(a): global idx fourier=np.fft.fft(recent_audio) values =np.array([get_freq(fourier,X) for X in freq_bins]) recent_video[:,idx,1] = (values/10000).clip(0,255) idx = (idx + 1) % a.shape[1] a[:] = np.roll(recent_video, -idx, axis=1) def audio_in(a): recent_audio[:] = np.roll(recent_audio, len(a)) recent_audio[:len(a)] = a.mean(axis=1)SEE ALSOnumm-run(1), numm.getting-started(7), numm.one-bit-instrument(7) numm February 2012 spectral-analysis(7)
| Related Man Pages |
|---|
| dispatch_apply_f(3) - debian |
| dispatch_apply(3) - debian |
| numm.getting-started(7) - debian |
| lire::config::list(3pm) - debian |
| numm.one-bit-instrument(7) - debian |
| Similar Topics in the Unix Linux Community |
|---|
| eXtace 1.9.7 (Stable branch) |
| eXtace 1.9.8 (Stable branch) |
| Iso 27000 |
| Multiprocessing Help |
| Variable frequency audio generator... |