forked from junh1024/Reaper-Surround
-
Notifications
You must be signed in to change notification settings - Fork 0
/
5.1 Mix Control (M).txt
87 lines (64 loc) · 1.69 KB
/
5.1 Mix Control (M).txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
desc:Based on DTS Neural Upmix (Medium). Useful after upscalers that don't have these controls.
slider1:0<0,100,1>Width
slider2:0<-100,100,1>Depth
slider3:0<-100,100,1>Pan
slider4:100<0,100,10>Rear Width
@init
// this is stuff that happens once (or if the samplerate changes, etc)
@slider
// gain = 2^(slider1/6); // convert from dB to a multiplier
width_coeff=slider1/100;
pan_temp=(slider3*$pi)/200; //depth scaled from 0-100 to 0>half pi
R_width_coeff=slider4/100;
depth_temp=(slider2*$pi)/200; //depth scaled from 0-100 to 0>half pi
( slider2 >= 0 )? (
coeff_A = cos( depth_temp - ($pi/2) );
):
(
coeff_A = cos( depth_temp + ($pi/2) );
);
coeff_B = cos( depth_temp );
//Pan ref
( slider3 >= 0 )? (
coeff_C =cos( pan_temp - ($pi/2) ) ;
):
(
coeff_C = cos( pan_temp + ($pi/2) ) ;
);
coeff_D = cos( pan_temp );
@sample
//Width
spl0 = spl0+0.707*(spl2*width_coeff);
spl1 = spl1+0.707*(spl2*width_coeff);
spl2 = spl2*(1-width_coeff);
//Depth
( slider2 >= 0 )? (
spl0 += coeff_A*spl4;
spl4 = coeff_B*spl4;
spl1 += coeff_A*spl5;
spl5 = coeff_B*spl5;
):
(
spl4 += coeff_A*spl0; //reversed order is important
spl0 = coeff_B*spl0;
spl5 += coeff_A*spl1; //reversed order is important
spl1 = coeff_B*spl1;
);
//Pan
( slider3 >= 0 )? (
spl1 += coeff_C *spl0;
spl0 = coeff_D *spl0;
spl5 += coeff_C *spl5;
spl4 = coeff_D *spl4;
):
(
spl0 += coeff_C*spl1; //reversed order is important
spl1 = coeff_D*spl1;
spl4 += coeff_C*spl5; //reversed order is important
spl5 = coeff_D*spl5;
);
//Rear width
R_M=(spl4+spl5)*0.5;
R_S=(spl4-spl5)*0.5*R_width_coeff;
spl4=R_M+R_S;
spl5=R_M-R_S;