Programmer Guide/Command Reference/EVAL/cvphase: Difference between revisions

From STX Wiki
Jump to navigationJump to search
(Created page with '{{DISPLAYTITLE:{{SUBPAGENAME}}}} Smooth multiplier matrix using a two dimensional convolution. ;Usage:<code>optmm(<var>mflag</var>, <var>a</var>, <var>w</var>)</code> :;<var>m…')
 
No edit summary
 
(5 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
Smooth multiplier matrix using a two dimensional convolution.
Convert phase spectrum.
 
;Usage:<code>cvphase(<var>p</var>, <var>ifmt</var>,  <var>ipos</var>, <var>ibin</var>, <var>ofmt</var>, <var>opos</var>, <var>obin</var>, <var>nbin</var>,  <var>rev</var>, <var>sr</var>, <var>len</var>, <var>hop</var>)</code>
;Usage:<code>optmm(<var>mflag</var>, <var>a</var>, <var>w</var>)</code>
:;<var>p</var>: original phase spectrum at frame ''ipos'' and in the format ''ifmt''; ''p'' is a vector with ''n'' values
:;<var>mflag</var>:selects the method used to modify the multiplier matrix; currently only the method ''mflag''='''0''' is implemented
:;<var>ifmt, ofmt</var>: input and output phase format ('''1''' = locked phase, '''2''' = normal phase (not locked))
:;<var>a</var>:The multiplier matrix. Each row ''a''[i] contains one linear filter spectrum to be applied to a signal.
:;<var>ipos, opos</var>: input and output frame index
:;<var>w</var>:The smoothing matrix, containg a two dimensional a smoothing function.
:;<var>ibin, obin</var>: input and output spectral bin
;Description:
:;<var>nbin</var>: number of spectral bins to convert
:*<code>nrow(''w'') = 2M+1</code> and <code>nrow(''a'') >> M</code>
:;<var>rev</var>:reverse output phase (0=no, 1=yes)
:*<code>ncol(''w'') = 2N+1</code> and <code>ncol(''w'') = ncol(''a'')</code>
:;<var>sr</var>:signal sampling rate in Hz; this argument is currently not used but must be supplied!
:*The matrix ''w'' contains the weighting function, with the maximum at ''w''[M,N] and which should be symetrical in both dimensions.
:;<var>len, hop</var>:transformation length and hopsize (in samples) used for analysis and resynthesis
::<code>''w''[M-i,N-j]=''w''[M-i,N+j]=''w''[M+i,N-j]=''w''[M+i,N+j]; with: i=1..M, j=1..N</code>
;Description: This function replaces the following macro code
:*The smoothed output is computed as follows:
<pre>
::<math>r[i]=\sum_{j=-M}^M \sum_{k=-N}^N a[i+j,N+k].w[M+j,N+k]</math>
    [macro cvphase arg: #p #ifmt #ipos #ibin #ofmt #opos #obin #nbin #rev #sr #len #hop]
::with: <code>i=0..nrow(''a'')-1</code>; <code>''a''[i+j]=0</code> if <code>i+j<0</code> or <code>i+j>=nrow(''a'')</code>
    #dp  := eval 2 * pi * $#hop / $#len
 
    #idt := eval $#ifmt == 2 ? 0 : $#dp * $#ipos
;Result: The vector ''r'' with the length <code>nrow(''a'')</code>, containing the smoothed filter spectrum.
    #odt := eval $#ofmt == 2 ? 0 : $#dp * $#opos
;See also: [[../hcomb|hcomb]], [[../cvphase|cvphase]], [[Programmer_Guide/BScript#MulAc|script application '''MulAc''']]
    #r := eval init($#nbin,1,0)
    for #i := 0 to $#i < $#nbin step #i := int $#i+1
        #z := eval ($#p[$#i] + pi + ($#i+$#ibin)*$#idt) % (2*pi)
        if $#rev == 1 #z := eval -$#z
        $#r[$#i] := eval ($#z - ($#i+$#obin)*$#odt) % (2*pi) - pi
    end
    exit 1 set $#r
</pre>
;Result:A vector ''r'' with ''nbin'' values, containing the converted phase values.
:Note: The input and output phase values are in the range <code>-pi..pi</code>.
;See also: [[../hcomb|hcomb]], [[../optmm|optmm]], [[Programmer_Guide/BScript#MulAc|script application '''MulAc''']]


[[../#Functions|<function list>]]
[[../#Functions|<function list>]]

Latest revision as of 10:30, 21 April 2011

Convert phase spectrum.

Usage
cvphase(p, ifmt, ipos, ibin, ofmt, opos, obin, nbin, rev, sr, len, hop)
p
original phase spectrum at frame ipos and in the format ifmt; p is a vector with n values
ifmt, ofmt
input and output phase format (1 = locked phase, 2 = normal phase (not locked))
ipos, opos
input and output frame index
ibin, obin
input and output spectral bin
nbin
number of spectral bins to convert
rev
reverse output phase (0=no, 1=yes)
sr
signal sampling rate in Hz; this argument is currently not used but must be supplied!
len, hop
transformation length and hopsize (in samples) used for analysis and resynthesis
Description
This function replaces the following macro code
    [macro cvphase arg: #p #ifmt #ipos #ibin #ofmt #opos #obin #nbin #rev #sr #len #hop]
    #dp  := eval 2 * pi * $#hop / $#len
    #idt := eval $#ifmt == 2 ? 0 : $#dp * $#ipos
    #odt := eval $#ofmt == 2 ? 0 : $#dp * $#opos
    #r := eval init($#nbin,1,0)
    for #i := 0 to $#i < $#nbin step #i := int $#i+1
        #z := eval ($#p[$#i] + pi + ($#i+$#ibin)*$#idt) % (2*pi)
        if $#rev == 1 #z := eval -$#z
        $#r[$#i] := eval ($#z - ($#i+$#obin)*$#odt) % (2*pi) - pi
    end
    exit 1 set $#r
Result
A vector r with nbin values, containing the converted phase values.
Note: The input and output phase values are in the range -pi..pi.
See also
hcomb, optmm, script application MulAc

<function list>

Navigation menu

Personal tools