Software Listing of Author : "Dan Ellis"
- audioread - unified audio file input function
- License: Shareware
- Price:


audioread provides a single, unified function for reading audio files in a range of different file formats, including wav, mp3, aac, flac, AIFF, etc. In most cases, access is actually provided by external binaries, but this is hidden within audioread (and its subfunctions). The idea is to make your code independent of the kind of audio files used as input. In addition, audioread provides support for common modifications performed during sound input, namely resampling (changing the sampling rate), casting multi-channel signals to mono, and loading only a limited time range of the sound. Care has been taken to ensure that short subregions of very large soundfiles can be read with the minimum of memory overhead (for instance, without having to load in the entire soundfile at any time.
- Platform: Matlab, Scripts
- flacwrite - write out a FLAC-encoded audio file using flac
- License: Shareware
- Price:


If you have a flac binary, and also the popenw mex extension, this routine allows you to write flac (free lossless audio coder)-format files as a drop-in replacement for wavwrite, accepting all the same syntax. You can get popenw at http://www.mathworks.com/matlabcentral/fileexchange/13851 You can get the flac binary at http://flac.sourceforge.net/
- Platform: Matlab, Scripts
- Lagrange Interpolator Polynomial
- License: Shareware
- Price:


The two inputs X and Y are vectors defining a set of N points. The function uses Lagrange's method to find the N-1th order polynomial that passes through all these points, and returns in P the N coefficients defining that polynomial. Then, polyval(P,X) = Y. R returns the x co-ordinates of the N-1 extrema/inflection points of the resulting polynomial (roots of its derivative), and S returns the value of the polynomial at those points. For a general-purpose way to find a smooth curve connecting points, you probably want to use SPLINE instead.
- Platform: Matlab, Scripts
- m4aread - read MPEG4 (AAC or M4A) compressed audio files
- License: Freeware
- Price: 0.00


m4aread provides a drop-in replacement for wavread when the audio files are compressed using MPEG4 audio (AAC or M4A) format. (Protected m4p files cannot be decoded, unfortunately.) All the work is done by the external "faad" binary, an open-source AAC decoder available for multiple platforms. Matlab File Exchange precludes posting binaries, but binaries for MACI64, GLNXA64, and Windows, can be downloaded from http://www.ee.columbia.edu/~dpwe/resources/matlab/m4aread/ . faad can extract the audio from an mp4 format video, so you can also read these files directly with m4aread. This is based on my mp3read code.
- Platform: Matlab, Scripts
- m4awrite - write m4a format audio file
- License: Shareware
- Price:


m4awrite is a drop-in replacement for wavwrite that will write MPEG4 Audio-format files by piping the output through an external "faac" binary. It accepts the same syntax and options as wavread. It works best in conjunction with the popenw MEX extension, http://www.mathworks.com/matlabcentral/fileexchange/13851 It requires an external faac binary, available from http://www.audiocoding.com/faac.html
- Platform: Matlab, Scripts
- mp3read and mp3write
- License: Shareware
- Price:


These versions of mp3read and mp3write are direct drop-in replacements for wavread and wavwrite to access MPEG audio mp3 files. Features include: - aims to duplicate complete syntax of wavread and wavwrite - also supports on-the-fly downsampling and channel merging of mpg123 - optimized for very long mp3 files - only decodes the needed portion - uses popen for encoding to avoid a large temporary file (when available - see my popenw mex) - attempts to preserve time alignment of files through read/write loop by removing "warm up" samples - package includes helper binaries for Linux, Windows, Mac-PPC, Mac-Intel, and Mac-Intel-64bit
- Platform: Matlab, Scripts
- Robust Landmark-Based Audio Fingerprinting
- License: Freeware
- Price: 0.00


This landmark-based audio fingerprinting system is able to match short, noisy snippets to a reference database in near-constant time. This is my implementation of the music audio matching algorithm developed by Avery Wang for the Shazam service. Shazam can identify apparently any commercial music track from a short snippet recorded via your cell phone in a noisy bar. I don't have the database to check if my version is quite that good, but it is able to rapidly match and locate a poor-quality excerpt from within a database of (at least) hundreds of tracks. See http://labrosa.ee.columbia.edu/~dpwe/resources/matlab/fingerprint/ for the "published" output of the demo script. Notes for running under Windows (from Rob Macrae) are at http://labrosa.ee.columbia.edu/matlab/fingerprint/windows-notes.txt .
- Platform: Matlab, Scripts
- Time-domain scrambling of audio signals
- License: Freeware
- Price: 0.00


These routines scramble an audio file by moving around short, overlapping windows within a local window. They can be used to create new versions of existing recordings that preserve the spectral content over longer time scales, but remove structure at shorter timescales. This can be useful e.g. for making speech unintelligible. Routines are also included to shuffle Gammatone subbands independently, for further scrambling. Code is also available from http://www.ee.columbia.edu/~dpwe/resources/matlab/scramble/ Includes Gammatone / ERB filtering routines lightly adapted from Malcolm Slaney's Auditory Toolbox, http://cobweb.ecn.purdue.edu/~malcolm/interval/1998-010/
- Platform: Matlab, Scripts
- Time-frequency Automatic Gain Control (AGC)
- License: Freeware
- Price: 0.00


This code implements automatic gain control for audio signals, which attempts to apply a smoothly-varying gain to an audio waveform in order to keep its energy close to some target level. This version also tries to balance the energy in individual frequency bands. It works by taking the short-time Fourier transform of the signal, smoothing that energy using time and frequency scales specified as arguments, then dividing out that scaled energy.
- Platform: Matlab, Scripts
- urlreadpost - url POST method with binary file uploading (Sripts)
- License: Shareware
- Price:


The HTTP 'POST' method is provided as a mechanism for uploading data as part of a URL request. There are two methods for encoding this data: application/x-www-form-urlencoded, in which each parameter is inserted as part of one long string, and multipart/form-data, in which each parameter gets its own MIME form-data block in the stream. This latter method allows the inclusion of large amounts of binary data (for instance, a POST which uploads a file) which is not possible with x-www-form-urlencoded. Matlab's stock urlread does support the 'POST' method, but only with the x-www-form-urlencoded encoding. I wrote this replacement to be able to access web services that involve uploading binary files directly from Matlab. Here's an example, of uploading MP3 audio data to the Echo Nest Analyze API: f = fopen('music.mp3'); d =...
- Platform: Matlab, Scripts