Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

numm.spectral-analysis(7) [debian man page]

spectral-analysis(7)						  Numm Tutorials					      spectral-analysis(7)

NAME
spectral analysis - perform realtime spectral analysis SYNOPSIS
numm-run FILE DESCRIPTION
Frequency 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 ALSO
numm-run(1), numm.getting-started(7), numm.one-bit-instrument(7) numm February 2012 spectral-analysis(7)

Check Out this Related Man Page

getting-started(7)						  Numm Tutorials						getting-started(7)

NAME
getting started - numm installation and usage SYNOPSIS
numm-run FILE import numm DESCRIPTION
numm is a python library -- the bastard child of Processing.org and MATLAB, if you will -- that fuses python, numpy, and gstreamer together to create a numerical-computing environment for multimedia generation, analysis, and interaction. Installation A Debian package is provided for ease of installation on Debian and derivative operating systems, such as Ubuntu; we recommend you abandon alternative systems and install Debian, but in the interim direct your attention to virtualization software such as VirtualBox. The following command downloads and installs numm: % wget http://numm.org/numm/releases/python-numm_0.1-1_all.deb % sudo dpkg -i python-numm_0.1-1_all.deb Usage At its simplest, numm provides three pairs of invertable functions that connect common media formats with numpy: Images represented as (height, width, color) numpy.uint8 arrays. o image2np(path) -> np o np2image(np, path) Sounds as (frames, channels) numpy.int16s o sound2np(path) -> np o np2sound(np, path) # XXX: must be .wav Videos as (frames, height, width, color) numpy.uint8s o video2np(path) -> np o np2video(np, path) # XXX: must be .mkv For rapid-prototyping of interactive numpy-based audio-visual experiments, the numm package has a real-time mode. The numm package installs a program named numm-run, which launches (and reloads on modification) python scripts that may implement any subset of the follow- ing functions, which are asynchronously called as needed: o video_in(a) # webcam o video_out(a) # mutate a in-place to set video o audio_in(a) # mic o audio_out(a) # mutate a for audio output o mouse_in(type, px, py, button) o keyboard_in(type, key) SEE ALSO
numm-run(1), numm.one-bit-instrument(7), numm.spectral-analysis(7) numm February 2012 getting-started(7)
Man Page