smoosic
Version:
<sub>[Github site](https://github.com/Smoosic/smoosic) | [source documentation](https://smoosic.github.io/Smoosic/release/docs/modules.html) | [change notes](https://aarondavidnewman.github.io/Smoosic/changes.html) | [application](https://smoosic.github.i
126 lines • 3.98 kB
TypeScript
import { SmoMeasure } from '../../smo/data/measure';
import { SmoNote } from '../../smo/data/note';
import { SmoSelection } from '../../smo/xform/selections';
import { SmoScore } from '../../smo/data/score';
import { SmoOscillatorInfo } from '../../smo/data/staffModifiers';
import { AudioSample } from './samples';
/**
* Create audio reverb node.
* @category SuiAudio
*/
export declare class SuiReverb {
static get defaults(): {
length: number;
decay: number;
};
static impulse: AudioBuffer | null;
connect(destination: AudioNode): void;
disconnect(): void;
_buildImpulse(): void;
output: ConvolverNode;
input: ConvolverNode;
length: number;
decay: number;
damp: number;
reverse: boolean;
_context: AudioContext;
constructor(context: AudioContext);
}
/**
* Audio custom osc node. Not used much.
*/
export interface WaveTable {
real: number[];
imaginary: number[];
}
/**
* Parameters to create an oscillator for a single note of music
* @category SuiAudio
*/
export interface SuiOscillatorParams {
duration: number;
frequency: number;
attackEnv: number;
decayEnv: number;
sustainEnv: number;
releaseEnv: number;
sustainLevel: number;
releaseLevel: number;
waveform: OscillatorType;
gain: number;
wavetable?: WaveTable;
useReverb: boolean;
instrument: string;
}
export declare const SynthWavetable: WaveTable;
/**
* Simple waveform synthesizer thing that plays notes. Oscillator works in either
* analog synthisizer or sampler mode.
* @category SuiAudio
*/
export declare abstract class SuiOscillator {
static audio: AudioContext;
static created: number;
static get defaults(): SuiOscillatorParams;
static sampleFiles: string[];
static samples: AudioSample[];
static playSelectionNow(selection: SmoSelection, score: SmoScore, gain: number): void;
static get attackTime(): number;
static get decayTime(): number;
static fromNote(measure: SmoMeasure, note: SmoNote, score: SmoScore, soundInfo: SmoOscillatorInfo, gain: number): SuiOscillator[];
static get attributes(): string[];
static resolveAfter(time: number): Promise<void>;
_playPromise(duration: number, gain: GainNode): Promise<void>;
static toFloatArray(ar: number[]): Float32Array;
reverb: SuiReverb | null;
attack: number;
decay: number;
sustain: number;
release: number;
waveform: OscillatorType;
attackEnv: number;
duration: number;
decayEnv: number;
sustainEnv: number;
releaseEnv: number;
gain: number;
sustainLevel: number;
releaseLevel: number;
frequency: number;
wavetable: WaveTable | null;
useReverb: boolean;
gainNode: GainNode | undefined;
delayNode: DelayNode | undefined;
instrument: string;
osc: AudioScheduledSourceNode | undefined;
constructor(parameters: SuiOscillatorParams);
abstract play(): Promise<any>;
abstract createAudioNode(): AudioScheduledSourceNode;
disconnect(): void;
/**
* Connect the audio sound source to the output, combining other
* nodes in the mix such as convolver (reverb), delay, and gain.
* Also set up the envelope
* @returns - a promise that tis resolved when `duration` time has expired
*/
createAudioGraph(): Promise<any>;
playPromise(duration: number): Promise<void>;
}
/**
* An audio output that uses browser audio api OscillatorNode as a sound source
* @category SuiAudio
*/
export declare class SuiWavetable extends SuiOscillator {
createAudioNode(): AudioScheduledSourceNode;
play(): Promise<any>;
}
/**
* An audio output primitive that uses frequency-adjusted sampled sounds
* @category SuiAudio
*/
export declare class SuiSampler extends SuiOscillator {
constructor(params: SuiOscillatorParams);
createAudioNode(): AudioScheduledSourceNode;
play(): Promise<void>;
}
//# sourceMappingURL=oscillator.d.ts.map