// https://webaudio.github.io/web-audio-api/#AudioBufferOptions
dictionary AudioBufferOptions {
    unsigned long numberOfChannels = 1;
    required unsigned long length;
    required float sampleRate;
};

// https://webaudio.github.io/web-audio-api/#AudioBuffer
[Exposed=Window]
interface AudioBuffer {
    constructor (AudioBufferOptions options);
    readonly attribute float sampleRate;
    readonly attribute unsigned long length;
    readonly attribute double duration;
    readonly attribute unsigned long numberOfChannels;
    Float32Array getChannelData(unsigned long channel);
    undefined copyFromChannel(Float32Array destination,
                              unsigned long channelNumber,
                              optional unsigned long bufferOffset = 0);
    undefined copyToChannel(Float32Array source,
                            unsigned long channelNumber,
                            optional unsigned long bufferOffset = 0);
};
