Author |
Message |
rogan

Joined: Dec 16, 2007 Posts: 83 Location: Urbana, IL
Audio files: 5
|
Posted: Fri Jun 06, 2008 3:46 am Post subject:
Gardner Reverbs |
 |
|
Hi all,
I've coded the Gardner reverbs from the CSound book, by Hans Mikelson, into Chuck. They're based on loops of allpass filters, based on the idea of loading up lots of echos. The only problem is that they let a bit of high-freq ringing in, which make them sound sort of metallic.
I'll post my first versions here, along with a testing script. Let me know what you think!
Description: |
Allpass filter, used everywhere. |
|
 Download (listen) |
Filename: |
Allpass.ck |
Filesize: |
1.19 KB |
Downloaded: |
219 Time(s) |
Description: |
|
 Download (listen) |
Filename: |
Gardner_SmallRoom.ck |
Filesize: |
1.21 KB |
Downloaded: |
256 Time(s) |
Description: |
|
 Download (listen) |
Filename: |
Gardner_MediumRoom.ck |
Filesize: |
1.87 KB |
Downloaded: |
258 Time(s) |
Description: |
|
 Download (listen) |
Filename: |
Gardner_LargeRoom.ck |
Filesize: |
1.91 KB |
Downloaded: |
249 Time(s) |
Description: |
Extendable script to test the reverbs. |
|
 Download (listen) |
Filename: |
reverb_test.ck |
Filesize: |
418 Bytes |
Downloaded: |
236 Time(s) |
|
|
Back to top
|
|
 |
Kassen
Janitor


Joined: Jul 06, 2004 Posts: 7678 Location: The Hague, NL
G2 patch files: 3
|
Posted: Sat Jun 07, 2008 3:02 am Post subject:
|
 |
|
You're using "public" as a equivalent to "fun" but I don't understand why? I thought the word was just reserved but didn't do a thing. I just tried and "public" seems completely equivalent to "fun" in classes. Then I tried to use it outside of a class (which is fine as well) and it turns out I can even spork a "public". This is quite weird. _________________ Kassen |
|
Back to top
|
|
 |
rogan

Joined: Dec 16, 2007 Posts: 83 Location: Urbana, IL
Audio files: 5
|
Posted: Sat Jun 07, 2008 11:25 am Post subject:
|
 |
|
Hmm.... I thought that functions in classes should be declared public if they were going to be used outside of the class.
But, I guess I was wrong. I just looked at the chuck manual, and I should definitely have 'fun' instead of 'public' there.
Thanks Kassan! |
|
Back to top
|
|
 |
kijjaz

Joined: Sep 20, 2004 Posts: 765 Location: bangkok, thailand
Audio files: 4
|
Posted: Sat Jun 07, 2008 11:27 pm Post subject:
|
 |
|
Public and fun in class -_-" (That's what I read the first time and got confused lol..) |
|
Back to top
|
|
 |
rogan

Joined: Dec 16, 2007 Posts: 83 Location: Urbana, IL
Audio files: 5
|
Posted: Mon Jun 23, 2008 9:50 pm Post subject:
|
 |
|
Hi all,
I've been playing around a bit more with these reverbs and some additional delays. The following code is kinda neat (although the actual sound isn't that wonderful).
Code: |
LargeRoom lr_reverb;
MediumRoom mr_reverb;
mr_reverb.chuck() => Delay delaym => lr_reverb.chuck => LPF rlpf => Delay delayl => mr_reverb.chuck;
0.5::second => delaym.max;
0.5::second => delaym.delay;
0.5 => delaym.gain;
0.25::second => delayl.max;
0.25::second => delayl.delay;
0.25 => delayl.gain;
1000 => rlpf.freq;
0.0 => float dry;
Gain forward;
dry => forward.gain;
Gain revgain;
1.0 - dry => revgain.gain;
Impulse i => LPF lpf => forward => dac;
lpf => revgain => mr_reverb.chuck => dac;
10000 => lpf.freq;
dur delholder;
while( true ) {
if ( Std.rand2f(0.0,1.0) > 0.5 ) {
1.0 => i.next;
}
delaym.delay() + (std.rand2(0,1) - std.rand2(0,1))::ms => delholder;
if ( delholder < (delaym.max() - 1::ms) || delholder > (delaym.max() / 2.0) ) {
delholder => delaym.delay;
} else if ( delholder > (delaym.max() - 1::ms) ) {
delaym.max() - 2::ms => delaym.delay;
} else {
(delaym.max() / 2) + 2::ms => delaym.delay;
}
Std.rand2f(0.1,1000.0)::ms => now;
}
|
The really cool part is where I change the delay length of one of the delays a random amount every random amount of time. This has the effect of tamping down transient high-frequency noise.
I've been thinking about doing something like this for awhile, because all the high-frequency elements pass right through digital reverbs without any loss. Randomness like this can help to quash it down.
So, just some thoughts. |
|
Back to top
|
|
 |
|