I'm interested in exploring sound synthesis using ChucK.In particular I'm interested in algorithmic synthesis of simple physically-based sounds, like a water drip or a hand-clap. Does anybody have any examples lying around that create a sound like this from scratch? I'm a complete noob when it comes to audio signal synthesis, and I'd love to see how others have approached building up the sound. -- Jeff Smith Computer Science Dept. University of Saskatchewan
Here's a patch I named water drops... hope it helps Impulse imp => ResonZ f /*=> WvOut file*/ => JCRev rev => dac; //"water_drops.wav" => file.wavFilename; 50. => f.Q; 1000. => float fund_freq => f.freq; 50 => f.gain; .2 => rev.gain; 0.2 => rev.mix; now => time later; Phasor line => blackhole; 100. => line.freq; while( true ) { 1. => imp.next; fund_freq*(0.01+Std.fabs(line.last())) => f.freq; Std.rand2f(100., 1000. )::ms => now; } On 19 Apr 2008, at 23:53, Jeff Smith wrote:
I'm interested in exploring sound synthesis using ChucK.In particular I'm interested in algorithmic synthesis of simple physically-based sounds, like a water drip or a hand-clap. Does anybody have any examples lying around that create a sound like this from scratch? I'm a complete noob when it comes to audio signal synthesis, and I'd love to see how others have approached building up the sound.
-- Jeff Smith Computer Science Dept. University of Saskatchewan _______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
On Apr 19, 2008, at 6:52 PM, eduard aylon wrote:
Impulse imp => ResonZ f /*=> WvOut file*/ => JCRev rev => dac; //"water_drops.wav" => file.wavFilename; 50. => f.Q; 1000. => float fund_freq => f.freq; 50 => f.gain; .2 => rev.gain; 0.2 => rev.mix; now => time later; Phasor line => blackhole; 100. => line.freq; while( true ) { 1. => imp.next; fund_freq*(0.01+Std.fabs(line.last())) => f.freq; Std.rand2f(100., 1000. )::ms => now; }
This is awesome. I have 3 running at different f,freq values - instant pseudo-Babbitt! (400, 1000, and 4000, in case you want to try it yourself). --- Joe M.
On 19/04/2008, Jeff Smith
I'm interested in exploring sound synthesis using ChucK.In particular I'm interested in algorithmic synthesis of simple physically-based sounds, like a water drip or a hand-clap. Does anybody have any examples lying around that create a sound like this from scratch? I'm a complete noob when it comes to audio signal synthesis, and I'd love to see how others have approached building up the sound.
Hi Jeff. The easy way would be to take the Shakers Ugen. I'm sure it does water-drops and seem to remember it does hand-claps as well. It's a great little Ugen for fun simple physically modelled sounds. Taking that one hardly counts as "from scratch" though. The good news is that it comes from the STK which is aimed at exactly what you need; explaining how to build things like this in practical terms. There is extensive documentation to it in the form of Perry Cook's little book "real sound synthesis for interactive applications". The bad-ish news is that this is done in C++ and not in ChucK, with the results ending up as ChucK Ugens. Typically a good strategy is to look at natural sounds as "something" (the wind, a hammer...) acting on "something else" (a string, a table, a car-trunk) and causing the second thing to vibrate. These two are typically called the "exciter" and the "resonator". You can get very far modelling the exciter as some sort of noise with a certain envelope (a thrown pebble would come down to a very short impulse-like burst of noise while a violin bow would be a longer more gentle type of noise with some periodic characteristics) and the resonator can typically be modelled as a set of band-pass filters or a tuned delay-line with feedback and a filter in the feedback-chain to represent the internal damping of the material. A guitar string is quite simple and could be successfully modelled with a simple feedbacking delay with a simple filter while something like a car-trunk would likely need a network of tuned filters. The example Eduard send is a good example of this approach. Physical modelling can be a lot of fun because the sounds are often so evocative but it can also be quite hard as the real world is quite complicated. Hope that gives you some leads. Yours, Kas.
Thanks very much for that extremely concise explanation, Kas.
Fortunately, C++ doesn't scare me. I'm a black-belt when it comes to
rendering visual phenomena, but a lowly white-belt-wannabe with audio,
so I'm not at all surprised that noise lies at the heart of natural
audio synthesis, since it is so ubiquitous in visual synthesis.
On that score, has anybody created a Perlin Noise Ugen? I've already
had a lot of success with perlin in my day job (musical score
synthesis - alas, not done in ChucK) and I suspect it would be just as
useful as a generic signal synth tool as it is in image synthesis.
On Sun, Apr 20, 2008 at 8:57 AM, Kassen
On 19/04/2008, Jeff Smith
wrote: I'm interested in exploring sound synthesis using ChucK.In particular I'm interested in algorithmic synthesis of simple physically-based sounds, like a water drip or a hand-clap. Does anybody have any examples lying around that create a sound like this from scratch? I'm a complete noob when it comes to audio signal synthesis, and I'd love to see how others have approached building up the sound.
Hi Jeff.
The easy way would be to take the Shakers Ugen. I'm sure it does water-drops and seem to remember it does hand-claps as well. It's a great little Ugen for fun simple physically modelled sounds. Taking that one hardly counts as "from scratch" though.
The good news is that it comes from the STK which is aimed at exactly what you need; explaining how to build things like this in practical terms. There is extensive documentation to it in the form of Perry Cook's little book "real sound synthesis for interactive applications". The bad-ish news is that this is done in C++ and not in ChucK, with the results ending up as ChucK Ugens.
Typically a good strategy is to look at natural sounds as "something" (the wind, a hammer...) acting on "something else" (a string, a table, a car-trunk) and causing the second thing to vibrate. These two are typically called the "exciter" and the "resonator". You can get very far modelling the exciter as some sort of noise with a certain envelope (a thrown pebble would come down to a very short impulse-like burst of noise while a violin bow would be a longer more gentle type of noise with some periodic characteristics) and the resonator can typically be modelled as a set of band-pass filters or a tuned delay-line with feedback and a filter in the feedback-chain to represent the internal damping of the material. A guitar string is quite simple and could be successfully modelled with a simple feedbacking delay with a simple filter while something like a car-trunk would likely need a network of tuned filters. The example Eduard send is a good example of this approach.
Physical modelling can be a lot of fun because the sounds are often so evocative but it can also be quite hard as the real world is quite complicated.
Hope that gives you some leads.
Yours, Kas.
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
-- Jeff Smith Computer Science Dept. University of Saskatchewan
On 20/04/2008, Jeff Smith
Thanks very much for that extremely concise explanation, Kas. Fortunately, C++ doesn't scare me. I'm a black-belt when it comes to rendering visual phenomena, but a lowly white-belt-wannabe with audio, so I'm not at all surprised that noise lies at the heart of natural audio synthesis, since it is so ubiquitous in visual synthesis.
Sure. I think it's actually the same "noise" at times. If you brush a large cymbal the resulting sound is largely a function of the un-even surface... but so is the typical way a cymbal has of scattering the light. Kas.
participants (4)
-
eduard aylon
-
Jeff Smith
-
Joe McMahon
-
Kassen