34midi Module

34.1Overview

The midi module provides measures to read/write MIDI files. To utilize it, import the midi module using import function.

34.2Module Function

34.3midi.event Class

34.4midi.track Class

midi.track#seek(offset:number, origin?:symbol):reduce
Moves the insertion point in the track at which the next event is inserted. If origin is omitted or set to `set, the insertion point will be set to absolute offset from the beginning. If origin is set to `cur, the insertion point will be moved by offset from the current position.
midi.track#tell()
Returns the current insertion point in the track.
midi.track#erase(n?:number):reduce
Deletes an event at the current insertion point in the track. The argument n specifies the number of events to be deleted. If n is omitted, one event will be deleted.
midi.track#mml(str:string, max_velocity?:number):map:reduce

Parses MML in the string str and inserts resulted MIDI events at the current insertion point in the track.

The argument max_velocity specifies the maximum number of velocity in the MML. If omitted, it will be set to 127.

midi.track#note_off(channel:number, note:number, velocity:number, deltaTime?:number):map:reduce
midi.track#note_on(channel:number, note:number, velocity:number, deltaTime?:number):map:reduce
midi.track#poly_pressure(channel:number, note:number, value:number, deltaTime?:number):map:reduce
midi.track#control_change(channel:number, controller, value:number, deltaTime?:number):map:reduce
midi.track#program_change(channel:number, program, deltaTime?:number):map:reduce
midi.track#channel_pressure(channel:number, pressure:number, deltaTime?:number):map:reduce
midi.track#pitch_bend(channel:number, value:number, deltaTime?:number):map:reduce
midi.track#sequence_number(number:number, deltaTime?:number):map:reduce
midi.track#text_event(text:string, deltaTime?:number):map:reduce
midi.track#copyright_notice(text:string, deltaTime?:number):map:reduce
midi.track#sequence_or_track_name(text:string, deltaTime?:number):map:reduce
midi.track#instrument_name(text:string, deltaTime?:number):map:reduce
midi.track#lyric_text(text:string, deltaTime?:number):map:reduce
midi.track#marker_text(text:string, deltaTime?:number):map:reduce
midi.track#cue_point(text:string, deltaTime?:number):map:reduce
midi.track#midi_channel_prefix_assignment(channel:number, deltaTime?:number):map:reduce
midi.track#end_of_track(deltaTime?:number):map:reduce
midi.track#tempo_setting(mpqn:number, deltaTime?:number):map:reduce
midi.track#smpte_offset(hour:number, minute:number, second:number, frame:number, subFrame:number, deltaTime?:number):map:reduce
midi.track#time_signature(numerator:number, denominator:number, metronome:number, cnt32nd:number, deltaTime?:number):map:reduce
midi.track#key_signature(key:number, scale:number, deltaTime?:number):map:reduce
midi.track#sequencer_specific_event(binary:binary, deltaTime?:number):map:reduce

34.5midi.sequence Class

midi.sequence(stream?:stream) {block?}
It creates an instance that contains SMF information.
midi.sequence#read(stream:stream:r):map:reduce
midi.sequence#write(stream:stream:w):map:reduce
midi.sequence#play(port:midi.port, speed?:number, repeat:number:nil => 1):[background,player]
midi.sequence#track(index:number):map {block?}
midi.sequence#mml(str:string, max_velocity?:number):reduce
midi.sequence#readmml(stream:stream, max_velocity?:number):reduce

34.6midi.port Class

midi.port#send(msg+:number):map:reduce
midi.port#play(sequence:midi.sequence, speed?:number, repeat:number:nil => 1):map:[background,player]
midi.port#mml(str:string, max_velocity?:number):[background,player]
midi.port#readmml(stream:stream, max_velocity?:number):[background,player]
midi.port#note_off(channel:number, note:number, velocity:number):map:reduce
midi.port#note_on(channel:number, note:number, velocity:number):map:reduce
midi.port#poly_pressure(channel:number, note:number, value:number):map:reduce
midi.port#control_change(channel:number, controller:number, value:number):map:reduce
midi.port#program_change(channel:number, program:number):map:reduce
midi.port#channel_pressure(channel:number, pressure:number):map:reduce
midi.port#pitch_bend(channel:number, value:number):map:reduce

34.7midi.controller Class

34.8midi.program Class

34.9midi.soundfont Class

midi.soundfont(stream:stream) {block?}
It creates an instance to access data in SoundFont file.
midi.soundfont#synthesizer(preset:number, bank:number, key:number, velocity:number):map {block?}
midi.soundfont#print():void

34.10midi.synthesizer Class