libmls-0.2 - Maximum Length Sequence measurement library
Copyright (C) 2002 Scott Edward Thomson
libmls is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Comments are welcome.
- Scott Edward Thomson <s_thomson@bigpond.com>
Written by Scott Edward Thomson. libmls also uses some transformation routines written by Anders Torger.
What does libmls do?
libmls is a system response measurement library that uses a Maximum Sequence Length signal for excellent noise immunity. It allows gated measurements to minimise effects of room reflections. It also allows measurement of electrical systems including impedence vs frequency plots in a single two channel measurement.
What will libmls do in the future?
- calculate phase response properly
- do cumulative decay spectra (waterfall graphs)
- do sine and warble stepped frequency measurements
Requirements
- Full duplex sound card, ie one that will record and play at the same time
- Alsa 0.9 or greater with same API as Alsa 0.9 including development headers
- fftw2 libraries and development libraries ("apt-get fftw2 fftw-dev" on Debian)
Building
To build the library, type
make
then to install, su root and type
make install
Using
To build the test application (which is also the API reference), type
make testmls
run testmls and it will generate "response.dat" which is an amplitude response of the system being measured.
Mixer settings are very important for MLS testing. Run alsamixer to adjust. All cards are different so I will try to generalise as best as I can. Start by turning everything down to zero and also mute everything. Unmute master volume and turn up to 74%. Unmute PCM and turn up to 74%. For microphone tests, enable capture on the microphone channel but LEAVE IT MUTED. Mic boost is optional. For impedence or line tests enable capture on the line channel but LEAVE IT MUTED. Don't enable both microphone and line capture. If there is an additional channel labelled Capture, also unmute it. Turn off ADC/DAC loopback or anything that resembles it. As I said, all cards are different and you may have to experiment until you get a good signal level and response.
To do
- Get libmls to work with OSS and possibly ESD
- Error reporting and result codes needs improvement
- Finish implementing response smoothing
- Add support for cumulative decay spectrum (waterfall plot)
Contact
email: s_thomson@bigpond.com
postal: libmls
PO Box 5018
Pinewood
Mount Waverley
Victoria 3149
Australia
