UNPKG

js-synthesizer

Version:

Synthesizer library for web-based JS program, using with Web Audio or etc.

208 lines (207 loc) 6.52 kB
/** Event type value */ export declare const enum EventType { Note = 0, NoteOn = 1, NoteOff = 2, AllSoundsOff = 3, AllNotesOff = 4, BankSelect = 5, ProgramChange = 6, ProgramSelect = 7, PitchBend = 8, PitchWheelSensitivity = 9, Modulation = 10, Sustain = 11, ControlChange = 12, Pan = 13, Volume = 14, ReverbSend = 15, ChorusSend = 16, Timer = 17, /** internally used */ _AnyControlChange = 18, ChannelPressure = 19, KeyPressure = 20, SystemReset = 21, /** internally used */ _Unregistering = 22 } export interface EventBase { /** event type */ type: EventType | string; } /** Note on/off event with duration */ export interface NoteEvent extends EventBase { type: EventType.Note | 'note'; /** MIDI channel number */ channel: number; /** MIDI note key (0-127) */ key: number; /** velocity value (0-127) */ vel: number; /** duration in the time scale (milliseconds by default) */ duration: number; } /** Note on event */ export interface NoteOnEvent extends EventBase { type: EventType.NoteOn | 'noteon' | 'note-on'; /** MIDI channel number */ channel: number; /** MIDI note key (0-127) */ key: number; /** velocity value (0-127) */ vel: number; } /** Note off event */ export interface NoteOffEvent extends EventBase { type: EventType.NoteOff | 'noteoff' | 'note-off'; /** MIDI channel number */ channel: number; /** MIDI note key (0-127) */ key: number; } /** All sounds off event */ export interface AllSoundsOffEvent extends EventBase { type: EventType.AllSoundsOff | 'allsoundsoff' | 'all-sounds-off'; /** MIDI channel number */ channel: number; } /** All notes off event */ export interface AllNotesOffEvent extends EventBase { type: EventType.AllNotesOff | 'allnotesoff' | 'all-notes-off'; /** MIDI channel number */ channel: number; } /** Bank select event */ export interface BankSelectEvent extends EventBase { type: EventType.BankSelect | 'bankselect' | 'bank-select'; /** MIDI channel number */ channel: number; /** bank number (0-16383) */ bank: number; } /** Program change event */ export interface ProgramChangeEvent extends EventBase { type: EventType.ProgramChange | 'programchange' | 'program-change'; /** MIDI channel number */ channel: number; /** preset number (0-127) */ preset: number; } /** Program select event */ export interface ProgramSelectEvent extends EventBase { type: EventType.ProgramSelect | 'programselect' | 'program-select'; /** MIDI channel number */ channel: number; /** SoundFont ID */ sfontId: number; /** bank number (0-16383) */ bank: number; /** preset number (0-127) */ preset: number; } /** General control change event */ export interface ControlChangeEvent extends EventBase { type: EventType.ControlChange | 'controlchange' | 'control-change'; /** MIDI channel number */ channel: number; /** control number (0-127) */ control: number; /** value for control (0-127) */ value: number; } /** Pitch bend event */ export interface PitchBendEvent extends EventBase { type: EventType.PitchBend | 'pitchbend' | 'pitch-bend'; /** MIDI channel number */ channel: number; /** value (0-16383, 8192 = no bend) */ value: number; } /** Pitch-wheel sensitivity event */ export interface PitchWheelSensitivityEvent extends EventBase { type: EventType.PitchWheelSensitivity | 'pitchwheelsens' | 'pitchwheelsensitivity' | 'pitch-wheel-sens' | 'pitch-wheel-sensitivity'; /** MIDI channel number */ channel: number; /** value in semitones */ value: number; } /** Modulation event */ export interface ModulationEvent extends EventBase { type: EventType.Modulation | 'modulation'; /** MIDI channel number */ channel: number; /** value (0-127) */ value: number; } /** Sustain event */ export interface SustainEvent extends EventBase { type: EventType.Sustain | 'sustain'; /** MIDI channel number */ channel: number; /** value (0-127) */ value: number; } /** Pan event */ export interface PanEvent extends EventBase { type: EventType.Pan | 'pan'; /** MIDI channel number */ channel: number; /** value (0-127, 0: left, 127: right) */ value: number; } /** Volume event */ export interface VolumeEvent extends EventBase { type: EventType.Volume | 'volume'; /** MIDI channel number */ channel: number; /** value (0-127) */ value: number; } /** Reverb-send event */ export interface ReverbSendEvent extends EventBase { type: EventType.ReverbSend | 'reverb' | 'reverbsend' | 'reverb-send'; /** MIDI channel number */ channel: number; /** value (0-127) */ value: number; } /** Chorus-send event */ export interface ChorusSendEvent extends EventBase { type: EventType.ChorusSend | 'chorus' | 'chorussend' | 'chorus-send'; /** MIDI channel number */ channel: number; /** value (0-127) */ value: number; } /** Key pressure event */ export interface KeyPressureEvent extends EventBase { type: EventType.KeyPressure | 'keypressure' | 'key-pressure' | 'aftertouch'; /** MIDI channel number */ channel: number; /** MIDI note key */ key: number; /** aftertouch value (0-127) */ value: number; } /** Channel pressure event */ export interface ChannelPressureEvent extends EventBase { type: EventType.ChannelPressure | 'channelpressure' | 'channel-pressure' | 'channel-aftertouch'; /** MIDI channel number */ channel: number; /** aftertouch value (0-127) */ value: number; } /** System reset event */ export interface SystemResetEvent extends EventBase { type: EventType.SystemReset | 'systemreset' | 'system-reset'; } /** Timer event (used for marker; no effect for synthesizer) */ export interface TimerEvent extends EventBase { type: EventType.Timer | 'timer'; /** any number data */ data: number; } /** All available events type */ declare type SequencerEvent = NoteEvent | NoteOnEvent | NoteOffEvent | AllSoundsOffEvent | AllNotesOffEvent | BankSelectEvent | ProgramChangeEvent | ProgramSelectEvent | ControlChangeEvent | PitchBendEvent | PitchWheelSensitivityEvent | ModulationEvent | SustainEvent | PanEvent | VolumeEvent | ReverbSendEvent | ChorusSendEvent | KeyPressureEvent | ChannelPressureEvent | SystemResetEvent | TimerEvent; export default SequencerEvent;