8.0.14 • Published 5 months ago

midi-player v8.0.14

Weekly downloads
572
License
MIT
Repository
github
Last release
5 months ago

midi-player

A MIDI player which sends MIDI messages to connected devices.

version

This module provides a player which sends MIDI messages to connected devices. It schedules the messages with a look ahead of about 500 milliseconds. It does not directly rely on the Web MIDI API but expects a MIDIOutput to be passed as constructor argument. But theoretically that could be anything which implements the same interface.

Usage

midi-player is published on npm and can be installed as usual.

npm install midi-player

The only exported function is a factory method to create new player instances.

import { create } from 'midi-player';

// This is a JSON object which represents a MIDI file.
const json = {
    division: 480,
    format: 1,
    tracks: [
        { channel: 0, delta: 0, noteOn: { noteNumber: 36, velocity: 100 } },
        { channel: 0, delta: 240, noteOff: { noteNumber: 36, velocity: 64 } },
        { delta: 0, endOfTrack: true }
    ]
};

// This is a quick & dirty approach to grab the first known MIDI output.
const midiAccess = await navigator.requestMIDIAccess();
const midiOutput = Array.from(midiAccess.outputs)[0];

const midiPlayer = create({ json, midiOutput });

By default all status events will be sent. But it's possible to provide a custom filter function. The following player will only send note off and note on events.

const midiPlayer = create({
    filterMidiMessage: (event) => 'noteOff' in event || 'noteOn' in event
    // ... other options as described above
});

If you want to play a binary MIDI file you can use the midi-json-parser package to transform it into a compatible JSON representation.

position

The position is set to the current position in milliseconds.

midiPlayer.position;

state

The state property will either be set to 'paused', 'playing', or 'stopped'.

midiPlayer.state;

play()

Calling play() will initiate the playback from the start.

midiPlayer.play().then(() => {
    // All MIDI messages have been sent when the promise returned by play() resolves.
});

It can only be called when the state of the player is 'stopped'.

pause()

Calling pause() will pause the playback at the current position.

midiPlayer.pause();

It can only be called when the state of the player is 'playing'.

resume()

Calling resume() will resume a previously paused playback at the current position.

midiPlayer.resume().then(() => {
    // All MIDI messages have been sent when the promise returned by resume() resolves.
});

It can only be called when the state of the player is 'paused'.

stop()

Calling stop() will stop the player.

midiPlayer.stop();

It can only be called when the state of the player is not 'stopped'.

Acknowledgement

Most of the features of this package have been originally developed by @infojunkie who maintains a midi-player fork (infojunkie/midi-player) with even more functionality.

8.0.10

7 months ago

8.0.12

6 months ago

8.0.11

6 months ago

8.0.14

5 months ago

8.0.13

5 months ago

8.0.9

8 months ago

8.0.8

9 months ago

8.0.7

9 months ago

8.0.6

10 months ago

8.0.5

10 months ago

8.0.4

10 months ago

8.0.1

11 months ago

8.0.0

12 months ago

8.0.3

10 months ago

8.0.2

11 months ago

7.4.0

1 year ago

7.5.0

12 months ago

7.3.5

1 year ago

7.3.6

1 year ago

7.3.4

1 year ago

7.3.3

1 year ago

7.3.1

1 year ago

7.3.2

1 year ago

7.3.0

1 year ago

7.2.0

1 year ago

7.1.25

1 year ago

7.1.24

1 year ago

7.1.23

1 year ago

7.1.22

1 year ago

7.1.20

1 year ago

7.1.21

1 year ago

7.1.19

1 year ago

7.1.17

2 years ago

7.1.18

2 years ago

7.1.16

2 years ago

7.1.14

2 years ago

7.1.15

2 years ago

7.1.13

2 years ago

7.1.12

2 years ago

7.1.11

2 years ago

7.1.7

2 years ago

7.1.6

2 years ago

7.1.5

2 years ago

7.1.4

2 years ago

7.1.9

2 years ago

7.1.8

2 years ago

7.1.10

2 years ago

7.1.3

2 years ago

7.1.2

2 years ago

7.1.1

2 years ago

7.1.0

2 years ago

7.0.67

3 years ago

7.0.68

3 years ago

7.0.69

2 years ago

7.0.70

2 years ago

7.0.71

2 years ago

7.0.72

2 years ago

7.0.65

3 years ago

7.0.66

3 years ago

7.0.63

3 years ago

7.0.64

3 years ago

7.0.62

3 years ago

7.0.60

3 years ago

7.0.61

3 years ago

7.0.59

3 years ago

7.0.56

3 years ago

7.0.57

3 years ago

7.0.54

3 years ago

7.0.55

3 years ago

7.0.58

3 years ago

7.0.53

3 years ago

7.0.52

3 years ago

7.0.51

3 years ago

7.0.45

4 years ago

7.0.46

4 years ago

7.0.44

4 years ago

7.0.49

4 years ago

7.0.47

4 years ago

7.0.48

4 years ago

7.0.50

4 years ago

7.0.43

4 years ago

7.0.42

4 years ago

7.0.41

4 years ago

7.0.40

4 years ago

7.0.39

4 years ago

7.0.38

4 years ago

7.0.37

4 years ago

7.0.36

4 years ago

7.0.35

4 years ago

7.0.34

4 years ago

7.0.29

4 years ago

7.0.28

4 years ago

7.0.32

4 years ago

7.0.33

4 years ago

7.0.30

4 years ago

7.0.31

4 years ago

7.0.27

4 years ago

7.0.26

4 years ago

7.0.25

4 years ago

7.0.24

4 years ago

7.0.23

4 years ago

7.0.22

4 years ago

7.0.21

4 years ago

7.0.20

4 years ago

7.0.19

4 years ago

7.0.18

4 years ago

7.0.17

4 years ago

7.0.16

4 years ago

7.0.15

5 years ago

7.0.14

5 years ago

7.0.13

5 years ago

7.0.12

5 years ago

7.0.11

5 years ago

7.0.10

5 years ago

7.0.9

5 years ago

7.0.8

5 years ago

7.0.7

5 years ago

7.0.6

5 years ago

7.0.5

5 years ago

7.0.4

5 years ago

7.0.3

5 years ago

7.0.2

5 years ago

7.0.1

5 years ago

7.0.0

5 years ago

6.0.12

5 years ago

6.0.11

5 years ago

6.0.10

5 years ago

6.0.9

5 years ago

6.0.8

5 years ago

6.0.7

5 years ago

6.0.6

5 years ago

6.0.5

5 years ago

6.0.4

5 years ago

6.0.3

5 years ago

6.0.2

5 years ago

6.0.1

5 years ago

6.0.0

5 years ago

5.0.11

5 years ago

5.0.10

5 years ago

5.0.9

5 years ago

5.0.8

5 years ago

5.0.7

5 years ago

5.0.6

5 years ago

5.0.5

5 years ago

5.0.4

5 years ago

5.0.3

5 years ago

5.0.2

5 years ago

5.0.1

6 years ago

5.0.0

6 years ago

4.0.61

6 years ago

4.0.60

6 years ago

4.0.59

6 years ago

4.0.58

6 years ago

4.0.57

6 years ago

4.0.56

6 years ago

4.0.55

6 years ago

4.0.54

6 years ago

4.0.53

6 years ago

4.0.52

6 years ago

4.0.51

6 years ago

4.0.50

6 years ago

4.0.49

6 years ago

4.0.48

6 years ago

4.0.47

6 years ago

4.0.46

6 years ago

4.0.45

6 years ago

4.0.44

6 years ago

4.0.43

6 years ago

4.0.42

6 years ago

4.0.41

6 years ago

4.0.40

6 years ago

4.0.39

6 years ago

4.0.38

6 years ago

4.0.37

6 years ago

4.0.36

6 years ago

4.0.35

6 years ago

4.0.34

6 years ago

4.0.33

6 years ago

4.0.32

6 years ago

4.0.31

6 years ago

4.0.30

6 years ago

4.0.29

6 years ago

4.0.28

6 years ago

4.0.27

6 years ago

4.0.26

6 years ago

4.0.25

6 years ago

4.0.24

6 years ago

4.0.23

7 years ago

4.0.22

7 years ago

4.0.21

7 years ago

4.0.20

7 years ago

4.0.19

7 years ago

4.0.18

7 years ago

4.0.17

7 years ago

4.0.16

7 years ago

4.0.15

7 years ago

4.0.14

7 years ago

4.0.13

7 years ago

4.0.12

7 years ago

4.0.11

7 years ago

4.0.10

7 years ago

4.0.9

7 years ago

4.0.8

7 years ago

4.0.7

7 years ago

4.0.6

7 years ago

4.0.5

7 years ago

4.0.4

7 years ago

4.0.3

7 years ago

4.0.2

7 years ago

4.0.1

7 years ago

4.0.0

7 years ago

3.0.53

7 years ago

3.0.52

7 years ago

3.0.51

7 years ago

3.0.50

7 years ago

3.0.49

7 years ago

3.0.48

7 years ago

3.0.47

7 years ago

3.0.46

7 years ago

3.0.45

7 years ago

3.0.44

7 years ago

3.0.43

7 years ago

3.0.42

7 years ago

3.0.41

7 years ago

3.0.40

7 years ago

3.0.39

7 years ago

3.0.38

7 years ago

3.0.37

7 years ago

3.0.36

7 years ago

3.0.35

7 years ago

3.0.34

7 years ago

3.0.33

7 years ago

3.0.32

7 years ago

3.0.31

7 years ago

3.0.30

7 years ago

3.0.29

7 years ago

3.0.28

7 years ago

3.0.27

7 years ago

3.0.26

7 years ago

3.0.25

7 years ago

3.0.24

7 years ago

3.0.23

7 years ago

3.0.22

7 years ago

3.0.21

7 years ago

3.0.20

7 years ago

3.0.19

7 years ago

3.0.18

7 years ago

3.0.17

7 years ago

3.0.16

7 years ago

3.0.15

7 years ago

3.0.14

7 years ago

3.0.13

7 years ago

3.0.12

7 years ago

3.0.11

7 years ago

3.0.10

7 years ago

3.0.9

7 years ago

3.0.8

7 years ago

3.0.7

7 years ago

3.0.6

7 years ago

3.0.5

7 years ago

3.0.4

7 years ago

3.0.3

7 years ago

3.0.2

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.0.85

7 years ago

2.0.84

7 years ago

2.0.83

7 years ago

2.0.82

7 years ago

2.0.81

7 years ago

2.0.80

7 years ago

2.0.79

8 years ago

2.0.78

8 years ago

2.0.77

8 years ago

2.0.76

8 years ago

2.0.75

8 years ago

2.0.74

8 years ago

2.0.73

8 years ago

2.0.72

8 years ago

2.0.71

8 years ago

2.0.70

8 years ago

2.0.69

8 years ago

2.0.68

8 years ago

2.0.67

8 years ago

2.0.66

8 years ago

2.0.65

8 years ago

2.0.64

8 years ago

2.0.63

8 years ago

2.0.62

8 years ago

2.0.61

8 years ago

2.0.60

8 years ago

2.0.59

8 years ago

2.0.58

8 years ago

2.0.57

8 years ago

2.0.56

8 years ago

2.0.55

8 years ago

2.0.54

8 years ago

2.0.53

8 years ago

2.0.52

8 years ago

2.0.51

8 years ago

2.0.50

8 years ago

2.0.49

8 years ago

2.0.48

8 years ago

2.0.47

8 years ago

2.0.46

8 years ago

2.0.45

8 years ago

2.0.44

8 years ago

2.0.43

8 years ago

2.0.42

8 years ago

2.0.41

8 years ago

2.0.40

8 years ago

2.0.39

8 years ago

2.0.38

8 years ago

2.0.37

8 years ago

2.0.36

8 years ago

2.0.35

8 years ago

2.0.34

8 years ago

2.0.33

8 years ago

2.0.32

8 years ago

2.0.31

8 years ago

2.0.30

8 years ago

2.0.29

8 years ago

2.0.28

8 years ago

2.0.27

8 years ago

2.0.26

8 years ago

2.0.25

8 years ago

2.0.23

8 years ago

2.0.22

8 years ago

2.0.21

8 years ago

2.0.20

8 years ago

2.0.19

8 years ago

2.0.18

8 years ago

2.0.17

8 years ago

2.0.16

8 years ago

2.0.15

8 years ago

2.0.14

8 years ago

2.0.13

8 years ago

2.0.12

8 years ago

2.0.11

8 years ago

2.0.10

8 years ago

2.0.9

8 years ago

2.0.8

8 years ago

2.0.7

8 years ago

2.0.6

8 years ago

2.0.5

8 years ago

2.0.4

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.0.7

8 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago

1.0.0

9 years ago

0.0.14

9 years ago

0.0.13

9 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago