diff options
Diffstat (limited to 'modules/sound/macros/mu2lin.sci')
-rwxr-xr-x | modules/sound/macros/mu2lin.sci | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/modules/sound/macros/mu2lin.sci b/modules/sound/macros/mu2lin.sci new file mode 100755 index 000000000..3c786df26 --- /dev/null +++ b/modules/sound/macros/mu2lin.sci @@ -0,0 +1,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 |