import type { Connectable } from '../../interfaces'; import type { ChannelNumber } from '../../types'; import type { Visualizer, VisualizerParams, Color, GraphicsApi, Gradient, Gradients, Shape, Font, GraphicsStyles, SpectrumScale } from './Visualizer'; import type { TimeOverviewParams, CurrentTimeStyles, MouseEventTypes, DragMode, DragCallbackFunction } from './TimeOverview'; import type { TimeParams } from './Time'; import type { FFTParams } from './FFT'; import type { SpectrogramParams } from './Spectrogram'; import type { Spectrum, SpectrumParams } from './Spectrum'; import type { AmplitudeSpectrumParams, AmplitudeSpectrumUnit } from './AmplitudeSpectrum'; import type { PhaseSpectrumParams, PhaseSpectrumUnit } from './PhaseSpectrum'; import { TimeOverview } from './TimeOverview'; import { Time } from './Time'; import { FFT } from './FFT'; import { Spectrogram } from './Spectrogram'; import { AmplitudeSpectrum } from './AmplitudeSpectrum'; import { PhaseSpectrum } from './PhaseSpectrum'; export type Domain = 'timeoverview' | 'time' | 'fft' | 'spectrogram' | 'offline-amplitude-spectrum' | 'offline-phase-spectrum'; export type DataType = 'uint' | 'float'; export type FFTSize = 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 | 32768; export type { Visualizer, VisualizerParams, Color, GraphicsApi, Gradient, Gradients, Shape, Font, GraphicsStyles, SpectrumScale, TimeOverview, TimeOverviewParams, CurrentTimeStyles, MouseEventTypes, DragMode, DragCallbackFunction, Time, TimeParams, FFT, FFTParams, Spectrogram, SpectrogramParams, Spectrum, SpectrumParams, AmplitudeSpectrum, AmplitudeSpectrumParams, AmplitudeSpectrumUnit, PhaseSpectrum, PhaseSpectrumParams, PhaseSpectrumUnit }; export type AnalyserParams = { fftSize?: FFTSize; readonly frequencyBinCount?: number; minDecibels?: number; maxDecibels?: number; smoothingTimeConstant?: number; }; /** * This private class manages private classes (`TimeOverview`, `Time`, `FFT`, `Spectrogram`, `AmplitudeSpectrum`, `PhaseSpectrum`) for visualizing sound wave. */ export declare class Analyser implements Connectable { private analysers; private splitter; private input; private timeOverviews; private times; private ffts; private spectrograms; private timeDomainAnimationIds; private timeDomainTimerIds; private frequencyDomainAnimationIds; private frequencyDomainTimerIds; private spectrogramAnimationIds; private spectrogramTimerIds; private amplitudeSpectrum; private phaseSpectrum; private minDecibels; private maxDecibels; /** * @param {AudioContext} context This argument is in order to use Web Audio API. */ constructor(context: AudioContext); /** * This method visualizes sound wave. * @param {Domain} domain This argument is one of 'timeoverview', 'time', 'fft', 'spectrogram', 'offline-amplitude-spectrum', 'offline-phase-spectrum'. * @param {ChannelNumber} channelNumber This argument is channel number (Left: 0, Right: 1 ...). * @param {AudioBuffer} buffer This argument is instance of `AudioBuffer` (If domain is 'timeoverview', this argument is required). * @param {Float32Array} offlineData This argument is amplitude spectrum or phase spectrum. * @return {Analyser} Return value is for method chain. */ start(domain: Domain, channelNumber?: ChannelNumber, buffer?: AudioBuffer, offlineData?: Float32Array): Analyser; /** * This method stops visualizer. * @param {Domain} domain This argument is one of 'timeoverview', 'time', 'fft', 'spectrogram'. * @param {ChannelNumber} channelNumber This argument is channel number (Left: 0, Right: 1 ...). * @return {Analyser} Return value is for method chain. */ stop(domain: Domain, channelNumber?: ChannelNumber): Analyser; /** * This method gets or sets parameters for analyser. * This method is overloaded for type interface and type check. * @param {keyof AnalyserParams|AnalyserParams} params This argument is string if getter. Otherwise, setter. * @return {AnalyserParams[keyof AnalyserParams]|Analyser} Return value is parameter for analyser if getter. * Otherwise, return value is for method chain. */ param(params: 'fftSize'): number; param(params: 'frequencyBinCount'): number; param(params: 'minDecibels'): number; param(params: 'maxDecibels'): number; param(params: 'smoothingTimeConstant'): number; param(params: AnalyserParams): Analyser; /** * This method selects domain for visualization. * This method is overloaded for type interface and type check. * @param {Domain} domain This argument is one of 'timeoverview', 'time', 'fft', 'spectrogram', 'offline-amplitude-spectrum', 'offline-phase-spectrum'. * @param {ChannelNumber} channelNumber This argument is channel number (Left: 0, Right: 1 ...). * @return {TimeOverview|Time|FFT|Spectrogram|AmplitudeSpectrum|PhaseSpectrum|Analyser} Return value is instance of selected `Visualizer` class. */ domain(domain: 'timeoverview', channelNumber: ChannelNumber): TimeOverview; domain(domain: 'time', channelNumber?: ChannelNumber): Time; domain(domain: 'fft', channelNumber?: ChannelNumber): FFT; domain(domain: 'spectrogram', channelNumber?: ChannelNumber): Spectrogram; domain(domain: 'offline-amplitude-spectrum'): AmplitudeSpectrum; domain(domain: 'offline-phase-spectrum'): PhaseSpectrum; /** * This method gets instance of `AnalyserNode`. * @param {ChannelNumber} channelNumber This argument is channel number (Left: 0, Right: 1 ...). * @return {AnalyserNode} */ get(channelNumber?: ChannelNumber): AnalyserNode | null; /** @override */ get INPUT(): GainNode; /** @override */ get OUTPUT(): GainNode; } //# sourceMappingURL=index.d.ts.map