Octave provides a few functions for dealing with audio data. An audio ‘sample’ is a single output value from an A/D converter, i.e., a small integer number (usually 8 or 16 bits), and audio data is just a series of such samples. It can be characterized by three parameters: the sampling rate (measured in samples per second or Hz, e.g., 8000 or 44100), the number of bits per sample (e.g., 8 or 16), and the number of channels (1 for mono, 2 for stereo, etc.).
There are many different formats for representing such data. Currently,
only the two most popular, linear encoding and mu-law
encoding, are supported by Octave. There is an excellent FAQ on audio
formats by Guido van Rossum guido@cwi.nl which can be
found at any FAQ ftp site, in particular in the directory
/pub/usenet/news.answers/audio-fmts of the archive site
rtfm.mit.edu
.
Octave simply treats audio data as vectors of samples (non-mono data are not supported yet). It is assumed that audio files using linear encoding have one of the extensions lin or raw, and that files holding data in mu-law encoding end in au, mu, or snd.
y =
lin2mu (x)
¶y =
lin2mu (x, n)
¶Convert audio data from linear to mu-law.
Linear values use floating point values in the range -1 ≤ x ≤ 1 if n is 0 (default), or n-bit signed integers if n is 8 or 16. Mu-law values are 8-bit unsigned integers in the range 0 ≤ y ≤ 255.
See also: mu2lin.
y =
mu2lin (x)
¶y =
mu2lin (x, n)
¶Convert audio data from mu-law to linear.
Mu-law values are 8-bit unsigned integers in the range 0 ≤ y
≤ 255. Linear values use floating point values in the range
-linmax ≤ x linmax (where
linmax = 32124/32768 =~ 0.98
) when n is zero (default).
If n is 8 or 16 then n-bit signed integers are used instead.
Programming Note: mu2lin
maps maximum mu-law inputs to values
slightly below the maximum ([-0.98, +0.98]) representable with a linear
scale. Because of this, mu2lin (lin2mu (x))
might not
reproduce the original input.
See also: lin2mu.
data =
record (sec)
¶data =
record (sec, fs)
¶Record sec seconds of audio from the system’s default audio input at a sampling rate of 8000 samples per second.
If the optional argument fs is given, it specifies the sampling rate for recording.
For more control over audio recording, use the audiorecorder
class.
See also: @audiorecorder/audiorecorder, sound, soundsc.
(y)
¶(y, fs)
¶(y, fs, nbits)
¶Play audio data y at sample rate fs to the default audio device.
The audio signal y can be a vector or a two-column array representing mono or stereo audio, respectively.
If fs is not given, a default sample rate of 8000 samples per second is used.
The optional argument nbits specifies the bit depth to play to the audio device and defaults to 8 bits.
For more control over audio playback, use the audioplayer
class.
See also: soundsc, @audioplayer/audioplayer, record.
(y)
¶(y, fs)
¶(y, fs, nbits)
¶(…, [ymin, ymax])
¶Scale the audio data y and play it at sample rate fs to the default audio device.
The audio signal y can be a vector or a two-column array representing mono or stereo audio, respectively.
If fs is not given, a default sample rate of 8000 samples per second is used.
The optional argument nbits specifies the bit depth to play to the audio device and defaults to 8 bits.
By default, y is automatically normalized to the range [-1, 1]. If the range [ymin, ymax] is given, then elements of y that fall within the range ymin ≤ y ≤ ymax are scaled to the range [-1, 1] instead.
For more control over audio playback, use the audioplayer
class.
See also: sound, @audioplayer/audioplayer, record.