- From: Chris Rogers <crogers@google.com>
- Date: Thu, 22 Mar 2012 10:31:49 -0700
- To: Chris Lowis <chris.lowis@bbc.co.uk>
- Cc: Raymond Toy <rtoy@google.com>, public-audio@w3.org
- Message-ID: <CA+EzO0kyirFVE5TpbTWfBMU+n5Mquw950rxRdnvD-NxnhoM0sw@mail.gmail.com>
On Thu, Mar 22, 2012 at 3:18 AM, Chris Lowis <chris.lowis@bbc.co.uk> wrote: > On 20/03/2012 17:18, Raymond Toy wrote: > >> My question - is it possible to set the convolver buffer from a >> regular javascript array? For example to generate the impulse >> response using Math.sin()? >> >> >> Yes, you can do this. Something like the following should work: >> > > Hi Raymond, > > Thank you for your advice! I've been trying to get to grips with the > convolver node by reading the source in Webkit, but I'm having a little > trouble understanding whether I can do what I want with it. > > I'm attempting to create a "ring modulation" effect. In the time domain > I'd like to multiply the input signal (an audio buffer node) with a 30Hz > sine wave. I thought I could achieve the same in the frequency domain using > a convolution. > Hi Chris, ring-modulation or amplitude-modulation is a type of "non-linear" effect and so convolution will not be the appropriate technique for achieving it, since convolution is for "linear" effects. In the meantime, if you want to play with AM-type effects you could modulate the .gain attribute on an AudioGainNode by using the setValueCurveAtTime() method (with say a 5-second long 30Hz sine wave). This can get you started, but what we really want is to be able to connect outputs of AudioNodes to an AudioParam, which is not *yet* possible. This will be important for synthesis... Cheers, Chris > > I have something like > > convolver = context.createConvolver() > loadImpulseResponse('sine_**30hz.wav', convolver, context); > source.connect(convolver) > convolver.connect(context.**destination) > > Where sine_30hz.wav is a single-channel, 30Hz sine wave of 5 seconds in > duration. The source is a audio buffer node. I've reverted to loading the > "impulse response" using an XMLHttpRequest to make sure I'm not doing > something stupid. > > When I load the "echo-chamber.wav" impulse response from the demos > repository I get the expected result. When I use my 30Hz Sine wav, just > silence. > > Am I missing something here? The documentation of the Convolution node > suggests that it is operating as a FIR filter, I'm not quite sure whether > it is possible to do a straight convolution with this node. > > Thank you again for your help! > > Cheers, > > Chris > >
Received on Thursday, 22 March 2012 17:32:23 UTC