UNPKG

tone

Version:

A Web Audio framework for making interactive music in the browser.

136 lines (135 loc) 4.01 kB
import { Source, SourceOptions } from "../Source.js"; import { ToneAudioBuffer } from "../../core/context/ToneAudioBuffer.js"; import { Cents, Positive, Seconds, Time } from "../../core/type/Units.js"; interface GrainPlayerOptions extends SourceOptions { onload: () => void; onerror: (error: Error) => void; reverse: boolean; url?: ToneAudioBuffer | string | AudioBuffer; overlap: Seconds; grainSize: Seconds; playbackRate: Positive; detune: Cents; loop: boolean; loopStart: Time; loopEnd: Time; } /** * GrainPlayer implements [granular synthesis](https://en.wikipedia.org/wiki/Granular_synthesis). * Granular Synthesis enables you to adjust pitch and playback rate independently. The grainSize is the * amount of time each small chunk of audio is played for and the overlap is the * amount of crossfading transition time between successive grains. * @category Source */ export declare class GrainPlayer extends Source<GrainPlayerOptions> { readonly name: string; /** * The audio buffer belonging to the player. */ buffer: ToneAudioBuffer; /** * Create a repeating tick to schedule the grains. */ private _clock; /** * Internal loopStart value */ private _loopStart; /** * Internal loopStart value */ private _loopEnd; /** * All of the currently playing BufferSources */ private _activeSources; /** * Internal reference to the playback rate */ private _playbackRate; /** * Internal grain size reference; */ private _grainSize; /** * Internal overlap reference; */ private _overlap; /** * Adjust the pitch independently of the playbackRate. */ detune: Cents; /** * If the buffer should loop back to the loopStart when completed */ loop: boolean; /** * @param url Either the AudioBuffer or the url from which to load the AudioBuffer * @param onload The function to invoke when the buffer is loaded. */ constructor(url?: string | AudioBuffer | ToneAudioBuffer, onload?: () => void); constructor(options?: Partial<GrainPlayerOptions>); static getDefaults(): GrainPlayerOptions; /** * Internal start method */ protected _start(time?: Time, offset?: Time, duration?: Time): void; /** * Stop and then restart the player from the beginning (or offset) * @param time When the player should start. * @param offset The offset from the beginning of the sample to start at. * @param duration How long the sample should play. If no duration is given, * it will default to the full length of the sample (minus any offset) */ restart(time?: Seconds, offset?: Time, duration?: Time): this; protected _restart(time?: Seconds, offset?: Time, duration?: Time): void; /** * Internal stop method */ protected _stop(time?: Time): void; /** * Invoked when the clock is stopped */ private _onstop; /** * Invoked on each clock tick. scheduled a new grain at this time. */ private _tick; /** * The playback rate of the sample */ get playbackRate(): Positive; set playbackRate(rate: Positive); /** * The loop start time. */ get loopStart(): Time; set loopStart(time: Time); /** * The loop end time. */ get loopEnd(): Time; set loopEnd(time: Time); /** * The direction the buffer should play in */ get reverse(): boolean; set reverse(rev: boolean); /** * The size of each chunk of audio that the * buffer is chopped into and played back at. */ get grainSize(): Time; set grainSize(size: Time); /** * The duration of the cross-fade between successive grains. */ get overlap(): Time; set overlap(time: Time); /** * If all the buffer is loaded */ get loaded(): boolean; dispose(): this; } export {};