AudioletNode = function(audiolet, numberOfInputs, numberOfOutputs,
                            generate) {
    this.audiolet = audiolet;

    this.inputs = [];
    for (var i = 0; i < numberOfInputs; i++) {
        this.inputs.push(new AudioletInput(this, i));
    }

    this.outputs = [];
    for (var i = 0; i < numberOfOutputs; i++) {
        this.outputs.push(new AudioletOutput(this, i));
    }

    if (generate) {
        this.generate = generate;
    }
}
The basic building block of Audiolet applications.  Nodes are connected
together to create a processing graph which governs the flow of audio data.
AudioletNodes can contain any number of inputs and outputs which send and
receive one or more channels of audio data.  Audio data is created and
processed using the generate function, which is called whenever new data is
needed.

@constructor
@param {Audiolet} audiolet The audiolet object.
@param {Number} numberOfInputs The number of inputs.
@param {Number} numberOfOutputs The number of outputs.
@param {Function} [generate] A replacement for the generate function.