summaryrefslogtreecommitdiff
path: root/modules/sound/macros/lin2mu.sci
blob: c0365d436810a7ded0b548cd70d77ed15ebd156d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) ???? - INRIA - Scilab
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt

function [mu]=lin2mu(y)
    //Utility fct: converts linear signal to mu-law encoding.
    //  mu = lin2mu(y) converts linear audio signal amplitudes
    //   in the range  -1 <= y <= 1 to mu-law in the range 0 <= mu <= 255.
    SCALE = 32768;
    BIAS = 132;
    CLIP = 32635;
    OFFSET = 335;
    y = SCALE*y;
    sig = sign(y)+bool2s(y==0);
    y = min(abs(y),CLIP);
    [f,e] = frexp(y+BIAS);
    mu = 64*sig-16*e-fix(32*f)+OFFSET;
endfunction