Skip to main content

Class: MidiInput

Defined in: src/audio/MidiInput.ts:196

Reads live MIDI input and feeds it into manim-web animations.

Constructors​

Constructor​

new MidiInput(options): MidiInput

Defined in: src/audio/MidiInput.ts:211

Parameters​

options​

MidiInputOptions = {}

Returns​

MidiInput

Accessors​

connected​

Get Signature​

get connected(): boolean

Defined in: src/audio/MidiInput.ts:363

Whether an access is bound (reads reflect live input).

Returns​

boolean

Methods​

bindToTracker()​

bindToTracker(tracker, read, options): UpdaterFunction

Defined in: src/audio/MidiInput.ts:331

Drive a ValueTracker from a MIDI read each frame.

Adds an updater to the tracker that sets its value to offset + read() * scale on every update(dt). Other mobjects follow the tracker through their own updaters.

Parameters​

tracker​

ValueTracker

The tracker to drive

read​

() => number

MIDI read to sample (defaults to getPitchBend)

options​

MidiBindOptions = {}

Scale and offset applied to the read

Returns​

UpdaterFunction

The updater, so it can be removed with tracker.removeUpdater


connect()​

connect(options): Promise<MidiInput>

Defined in: src/audio/MidiInput.ts:228

Request MIDI access and attach to every input port.

Uses an injected access when one is given (constructor or options); otherwise calls navigator.requestMIDIAccess(). A no-op that resolves to this when the Web MIDI API is unavailable.

Parameters​

options​

MidiConnectOptions = {}

Returns​

Promise<MidiInput>

this (resolved) for chaining


createUpdater()​

createUpdater<M>(apply): UpdaterFunction

Defined in: src/audio/MidiInput.ts:352

Build an updater that maps the MIDI state onto any mobject property.

The returned updater passes the mobject, this driver, and dt to apply, so apply can read notes or controls and set any property. Add it with mobject.addUpdater(midi.createUpdater(...)).

Type Parameters​

M​

M extends Mobject

Parameters​

apply​

(mobject, midi, dt) => void

Returns​

UpdaterFunction


dispose()​

dispose(): void

Defined in: src/audio/MidiInput.ts:368

Detach from every input port and reset the state.

Returns​

void


getControl()​

getControl(controller): number

Defined in: src/audio/MidiInput.ts:275

The latest value [0, 1] of a control-change (CC) number. Returns 0 when the controller has not been seen.

Parameters​

controller​

number

MIDI CC number (0..127)

Returns​

number


getInputNames()​

getInputNames(): string[]

Defined in: src/audio/MidiInput.ts:245

The names of the attached input ports (empty when disconnected).

Returns​

string[]


getNote()​

getNote(note): number

Defined in: src/audio/MidiInput.ts:257

The latest velocity [0, 1] of a note, or null when the note is off.

Parameters​

note​

number

MIDI note number (0..127)

Returns​

number


getPitchBend()​

getPitchBend(): number

Defined in: src/audio/MidiInput.ts:280

The latest pitch-bend value in [-1, 1] (0 = centered).

Returns​

number


isNoteOn()​

isNoteOn(note): boolean

Defined in: src/audio/MidiInput.ts:266

Whether a note is currently held down.

Parameters​

note​

number

MIDI note number (0..127)

Returns​

boolean


onControlChange()​

onControlChange(listener): () => void

Defined in: src/audio/MidiInput.ts:310

Register a control-change listener.

Parameters​

listener​

MidiControlListener

Returns​

An unsubscribe function that removes the listener.

(): void

Returns​

void


onNoteOff()​

onNoteOff(listener): () => void

Defined in: src/audio/MidiInput.ts:301

Register a note-off listener.

Parameters​

listener​

MidiNoteOffListener

Returns​

An unsubscribe function that removes the listener.

(): void

Returns​

void


onNoteOn()​

onNoteOn(listener): () => void

Defined in: src/audio/MidiInput.ts:292

Register a note-on listener.

Parameters​

listener​

MidiNoteListener

Returns​

An unsubscribe function that removes the listener.

(): void

Returns​

void