Sonasound
Requirements
- Some kind of Unix (Tested under Mac OSX, Linux (Intel and PowerPC) and Solaris 8)
- FFTW Version 2.* or 3.* (then you need pkg-config as well)
- OpenGL
- GLU
- GTK (1.2.*) (A Port to version 2.* will maybe be done)
- gtk-glarea (newest version corresponding to Gtk 1.2.*)
- Portaudio (V18 or V18-patch)
- LibSndFile (>= 1.0.1)
Features
- Adjustables:
- Buffer size
- Sampling rate
- Number of FFT-points
- Number of LPC-coefficients
- Sound device
- Window type for analysis-buffer (hamming, hanning, blackmann, bartlett, kaiser, rectangular)
- Display type (logarithmic or linear)
- Reference A (default 440 Hz) for the staff-lines
- Type of spectrum generation: FFT or LPC
- Presets for different kinds of analysis tasks
- Scale-factor for spectral display to allow for full usage of window and colour-palette
- Number of seconds to be displayed in the waveform-view
- Input from File or from Soundcard
- What it does:
- Check for OpenGL-support, set up windows, measure fastest FFT-method or read it from wisdom-file
- start audio-engine in new thread and calculate FFT or LPC from the given buffer size
(Windowing-functions are applied to either the number of samples in one buffer or to the number of samples
corresponding to the number of FFT-points, whatever is smaller)
- Draw waveform, FFT-view and one sonogram-strip every time a new audio-buffer arrives.
Shift sonogram one pixel to the left and discard the leftmost strip
- LPC: autoregressive calculation of the filter-coefficients followed by frequency response with half the number of FFT-points
- Caveats:
- LPC-calculation takes quite a long time, be careful on slow (less than 700MHz) systems.
- memmove is slow on Mac OSX: Don't choose too large a buffer.
- Textures under Linux are limited to sizes of powers of two, so making the sonogram-view too large for your graphics card
(typically larger than 512 by 512 or 1024 by 1024) may give you a white window and lots of error-messages.
Solution: make the window smaller! This is an OpenGL-limitation (More exactly a MESA-limitation)
and doesn't apply on Mac OSX, because there I'm using a different way of blitting.
It is known from some Linux-Systems (noteably those with NVIDIA-Cards) that "./configure --enable-fast-ga" speeds up the display immensely. Just try it, it won't break anything :-)
- Resizing the window when playing garbles the sonogram-view, because there is no way of knowing
what happens inside the graphics-card-memory.
- Large values (>=512) for the number of LPC-coefficients together with large values for the number of FFT-points (>=4096)
slows the display down to unusable.
Solution: choose a larger buffer (then the redrawing doesn't happen that often) or a smaller number of FFT-points.
- The calculation of the waveform takes a long time, because of the large amount of data to be processed.
Solution: choose a smaller range of seconds to be displayed or a larger buffer.
- Switching from file-input to soundcard-input requires closing the sounddevice
Solution: For performance reasons I have to reallocate lots of buffers. so no soultion ATM.
- On PPC-computers stopping the playback results in an endless loop of the last buffer.
Solution: This seems to be a portaudio version18-patch bug. Close the device or restart the playback.
Back to Main