Feature request and a Chrome 22 bug?

On a little project I have going on just now (more of that in a week or
two) I was trying to create a filter whose frequency AudioParam was
controlled by an envelope generator, where the EG itself was a GainNode:

  vcfenv.connect(vcfgain);
  vcfgain.connect(filter1.frequency);

I wasn't getting anywhere getting this working, and finally realised
that it was because my GainNode had no input, and hence was producing no
output.

So first, the feature request - I think we need a SourceNode whose sole
job is to produce a _constant_ output.

It seems inefficient to use an a-rate BufferSourceNode or an Oscillator
just to be able to use a GainNode as a modulating source for another node.

In the absence of such a node, I used this code:

  function unitySourceNode(ctx) {
    var array = new Float32Array(1024);
    for (var i = 0, n = array.length; i < n; ++i) {
      array[i] = 1;
    }

    var buffer = ctx.createBuffer(1, array.length, ctx.sampleRate);
    buffer.getChannelData(0).set(array);

    var node = ctx.createBufferSource();
    node.buffer = buffer;
    node.loop = true;

    return node;
  };

This works on Chrome 25.0.1317.0 canary but doesn't work on Chrome 22 -
the node's "playBackState" appears stuck in "scheduled" even though I
called "node.noteOn(0)".

Does anyone have an equivalent that works on Chrome 22?

cheers,

Ray

Received on Tuesday, 6 November 2012 16:43:16 UTC