~ubuntu-branches/ubuntu/saucy/faust/saucy

« back to all changes in this revision

Viewing changes to tools/faust2pd/examples/seqdemo/freeverb.dsp

  • Committer: Package Import Robot
  • Author(s): Mario Lang
  • Date: 2012-04-04 13:52:01 UTC
  • mfrom: (1.1.6) (3.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20120404135201-hpsrk87x3hga94tc
Tags: 0.9.46-2
* Fix "ftbfs with GCC-4.7":
  - debian/patches/unistd: Include <unistd.h> where necessary.
    (Closes: #667163)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//======================================================
 
2
//
 
3
//                                              Freeverb
 
4
//                Faster version using fixed delays (20% gain)
 
5
//
 
6
//======================================================
 
7
 
 
8
declare name "freeverb -- a Schroeder reverb";
 
9
declare author "Yann Orlarey";
 
10
declare version "1.0";
 
11
 
 
12
// Constant Parameters
 
13
//--------------------
 
14
 
 
15
fixedgain       = 0.015;
 
16
scalewet        = 3.0;
 
17
scaledry        = 2.0;
 
18
scaledamp       = 0.4;
 
19
scaleroom       = 0.28;
 
20
offsetroom      = 0.7;
 
21
initialroom     = 0.5;
 
22
initialdamp     = 0.5;
 
23
initialwet      = 1.0/scalewet;
 
24
initialdry      = 0;
 
25
initialwidth= 1.0;
 
26
initialmode     = 0.0;
 
27
freezemode      = 0.5;
 
28
stereospread= 23;
 
29
allpassfeed     = 0.5;
 
30
 
 
31
 
 
32
// Filter Parametres
 
33
//------------------
 
34
 
 
35
combtuningL1    = 1116;
 
36
combtuningL2    = 1188;
 
37
combtuningL3    = 1277;
 
38
combtuningL4    = 1356;
 
39
combtuningL5    = 1422;
 
40
combtuningL6    = 1491;
 
41
combtuningL7    = 1557;
 
42
combtuningL8    = 1617;
 
43
 
 
44
allpasstuningL1 = 556;
 
45
allpasstuningL2 = 441;
 
46
allpasstuningL3 = 341;
 
47
allpasstuningL4 = 225;
 
48
 
 
49
 
 
50
// Control Sliders
 
51
//--------------------
 
52
// Damp : filtrage des aigus des echos (surtout actif pour des grandes valeurs de RoomSize)
 
53
// RoomSize : taille de la piece
 
54
// Dry : signal original
 
55
// Wet : signal avec reverbŽration
 
56
 
 
57
dampSlider              = hslider("damp",0.5, 0, 1, 0.025)*scaledamp;
 
58
roomsizeSlider  = hslider("roomsize", 0.5, 0, 1, 0.025)*scaleroom + offsetroom;
 
59
wetSlider               = hslider("wet", 0.3333, 0, 1, 0.025);
 
60
drySlider               = hslider("dry", 0, 0, 1, 0.025);
 
61
combfeed                = roomsizeSlider;
 
62
 
 
63
 
 
64
 
 
65
 
 
66
 
 
67
// Comb and Allpass filters
 
68
//-------------------------
 
69
 
 
70
allpass(dt,fb) = (_,_ <: (*(fb),_:+:@(dt)), -) ~ _ : (!,_);
 
71
 
 
72
comb(dt, fb, damp) = (+:@(dt)) ~ (*(1-damp) : (+ ~ *(damp)) : *(fb));
 
73
 
 
74
 
 
75
// Reverb components
 
76
//------------------
 
77
 
 
78
monoReverb(fb1, fb2, damp, spread)  
 
79
        = _ <:  comb(combtuningL1+spread, fb1, damp),
 
80
                        comb(combtuningL2+spread, fb1, damp),
 
81
                        comb(combtuningL3+spread, fb1, damp),
 
82
                        comb(combtuningL4+spread, fb1, damp),
 
83
                        comb(combtuningL5+spread, fb1, damp),
 
84
                        comb(combtuningL6+spread, fb1, damp),
 
85
                        comb(combtuningL7+spread, fb1, damp),
 
86
                        comb(combtuningL8+spread, fb1, damp) 
 
87
                +>      
 
88
                        allpass (allpasstuningL1+spread, fb2)
 
89
                :       allpass (allpasstuningL2+spread, fb2)
 
90
                :       allpass (allpasstuningL3+spread, fb2)
 
91
                :       allpass (allpasstuningL4+spread, fb2) 
 
92
                ;
 
93
 
 
94
stereoReverb(fb1, fb2, damp, spread)
 
95
        = + <:  monoReverb(fb1, fb2, damp, 0), monoReverb(fb1, fb2, damp, spread);
 
96
                        
 
97
        
 
98
// fxctrl : add an input gain and a wet-dry control to a stereo FX
 
99
//----------------------------------------------------------------
 
100
 
 
101
fxctrl(g,w,Fx) =  _,_ <: (*(g),*(g) : Fx : *(w),*(w)), *(1-w), *(1-w) +> _,_;
 
102
 
 
103
 
 
104
        
 
105
// Freeverb 
 
106
//---------
 
107
 
 
108
freeverb = vgroup("freeverb", fxctrl(fixedgain, wetSlider, stereoReverb(combfeed, allpassfeed, dampSlider, stereospread)));
 
109
 
 
110
process = freeverb;