8.0.14 • Published 4 months ago

midi-player v8.0.14

Weekly downloads
572
License
MIT
Repository
github
Last release
4 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

6 months ago

8.0.12

4 months ago

8.0.11

4 months ago

8.0.14

4 months ago

8.0.13

4 months ago

8.0.9

6 months ago

8.0.8

8 months ago

8.0.7

8 months ago

8.0.6

8 months ago

8.0.5

8 months ago

8.0.4

9 months ago

8.0.1

9 months ago

8.0.0

10 months ago

8.0.3

9 months ago

8.0.2

9 months ago

7.4.0

11 months ago

7.5.0

11 months ago

7.3.5

12 months ago

7.3.6

12 months 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

1 year ago

7.1.18

1 year ago

7.1.16

1 year 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

2 years ago

7.0.68

2 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

3 years ago

7.0.47

4 years ago

7.0.48

3 years ago

7.0.50

3 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

4 years ago

7.0.14

4 years ago

7.0.13

4 years ago

7.0.12

4 years ago

7.0.11

4 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

5 years ago

5.0.0

5 years ago

4.0.61

5 years ago

4.0.60

5 years ago

4.0.59

5 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

6 years ago

4.0.22

6 years ago

4.0.21

6 years ago

4.0.20

6 years ago

4.0.19

6 years ago

4.0.18

6 years ago

4.0.17

6 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

7 years ago

2.0.78

7 years ago

2.0.77

7 years ago

2.0.76

7 years ago

2.0.75

7 years ago

2.0.74

7 years ago

2.0.73

7 years ago

2.0.72

7 years ago

2.0.71

7 years ago

2.0.70

7 years ago

2.0.69

7 years ago

2.0.68

7 years ago

2.0.67

7 years ago

2.0.66

7 years ago

2.0.65

7 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

8 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