0.1.13 • Published 10 years ago

midi-node v0.1.13

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

MIDI for Node.js

A very basic node library to parse and write MIDI messages.

Usage

The library supports three major types of MIDI structures:

  1. A sequence, representing a full MIDI file with multiple tracks.
  2. A track, a ordered collection of messages.
  3. A message, the basic component for the MIDI protocol.

These can all be parsed from a Buffer.

Parsing a Message

var midi = require('midi-node');
var noteOff = new Buffer('803c00', 'hex'); // Channel 0, middle C4, 0 velocity
var message = midi.Message.fromBuffer(noteOff);

message.getStatus(); // 0x80
message.getCommand(); // "NOTE_OFF"
message.getChannel(); // 0
message.getData(); // [0x3c, 0x00]

Parsing messages from a stream

Anything that emits a 'data' event can be used as a stream.

var midi = require('midi-node');
var input = <something readable>;
var stream = new midi.Stream(input);

stream.on('startTrack', function (track) {
		// do something with the track
});

stream.on('event', function (delta, message) {
		message.getStatus(); // 0x80
		message.getCommand(); // "NOTE_OFF"
		message.getChannel(); // 0
		message.getData(); // [0x3c, 0x00]
});

The following events are emitted:

  • startFile, parameter is the file header
  • startTrack, parameter is the track object
  • event, parameters are delta and message
  • endTrack, parameter is the track object
  • error, parameter is the error object

Writing a Message

var midi = require('midi-node');
var stream = <something writable>;
var writer = new midi.Writer(stream);

writer.startFile(0, 1, 128);
writer.startTrack();
writer.noteOn(0, 0, 0x3c, 100); // Channel 0, middle C4, 100 velocity

Resources

http://www.midi.org/techspecs/midimessages.php

0.1.13

10 years ago

0.1.12

10 years ago

0.1.11

10 years ago

0.1.10

10 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago