blob: 3c786df269ab9fa24efc858e23c02b6eb030adac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function [y]=mu2lin(mu)
//Utility fct: converts mu-law encoding to linear signal.
// y=mu2lin(mu) converts mu-law encoded 8-bit audio signals,
// stored in the range 0 <= mu <= 255, to
// linear signal amplitude in the range -s < y < s where
// s = 32124/32768 ~= .9803. The input mu is often obtained
// using mget(...,'uc') to read byte-encoded audio files.
// Translation of C program by:
// Craig Reese: IDA/Supercomputing Research Center
// Joe Campbell: Department of Defense
// 29 September 1989
SCALE = 1/32768;
ETAB = [0,132,396,924,1980,4092,8316,16764];
mu = 255-mu;
sig = mu>127;
e = fix(mu/16)-8*bool2s(sig)+1;
f = mu-fix(mu./16).*16;
y = f.*2.^(e+2);
e(:) = ETAB(e);
y = SCALE*(1-2*bool2s(sig)) .* (e+y);
endfunction
|