3.1.0 • Published 3 months ago

shimi v3.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
3 months ago

Shimi

logo

GitHub npm bundle size GitHub package.json version GitHub last commit npm Snyk Vulnerabilities for GitHub Repo CircleCI Coverage Status

Overview

Shimi is a lightweight javascript MIDI library.

It came out of a desire to easily build new and experimental MIDI instruments out of user input devices, though it can be used for much more than just that.

The library provides an easy, modular way to build up music systems, providing classes for metronomes, scales, chords, clips, arpeggios, and more.

It includes its own wrapper around the WebAudio API, for generating sounds from MIDI messages in the browser. It can just as easily send and receive MIDI messages to/from external devices and software.

Example

Here is a simple example, using shimi to play the start of 'Twinkle Twinkle Little Star' every time the user presses the spacebar:

<script src="https://unpkg.com/shimi"></script>
<script>
function run() {
    const midiOut = new shimi.WebAudioMidiOut(new AudioContext()).withDefaultChannels();

    const keyboard = new shimi.Keyboard(new shimi.EventSubscriber(document));
    keyboard.activate();
	
    const metronome = new shimi.Metronome(120);

    const clock = new shimi.Clock();
    clock.children.push(keyboard, metronome, midiOut);
    clock.start();

    //Twinkle Twinkle Little Star
    const clip = new shimi.Clip(8)
        .addNote([0,1], 1, 'C4', 80)
        .addNote([2,3], 1, 'G4', 80)
        .addNote([4,5], 1, 'A4', 80)
        .addNote(6, 2, 'G4', 80);
	
    //Start a new playthrough of the clip each time the spacebar is pressed
    keyboard.space.pressed.add(() => {
        const clipPlayer = new shimi.ClipPlayer(clip, metronome, midiOut);
        clipPlayer.beatCount = clip.duration;
        clock.addChild(clipPlayer);
    });
}
run();
</script>

Install

$ npm install shimi

or

<script src="https://unpkg.com/shimi"></script>

Documentation

See the full technical documentation here: https://jamescoyle1989.github.io/shimi/modules.html

3.1.0

3 months ago

3.0.0

5 months ago

2.6.0

6 months ago

2.5.0

7 months ago

2.4.0

11 months ago

2.3.0

12 months ago

2.2.0

1 year ago

2.0.0

1 year ago

2.1.0

1 year ago

1.12.0

1 year ago

1.8.0

1 year ago

1.6.1

1 year ago

1.4.3

2 years ago

1.6.0

1 year ago

1.4.2

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.2.1

2 years ago

1.11.0

1 year ago

1.13.0

1 year ago

1.11.2

1 year ago

1.11.1

1 year ago

1.9.0

1 year ago

1.7.0

1 year ago

1.5.0

1 year ago

1.3.0

2 years ago

1.10.0

1 year ago

1.2.0

2 years ago

1.0.2

2 years ago

1.1.0

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.8.2

2 years ago

0.5.7

2 years ago

0.5.4

2 years ago

0.5.3

2 years ago

0.5.6

2 years ago

0.5.5

2 years ago

0.5.0

2 years ago

0.7.0

2 years ago

0.5.2

2 years ago

0.6.0

2 years ago

0.5.1

2 years ago

0.4.1

2 years ago

0.3.0

2 years ago

0.3.2

2 years ago

0.4.0

2 years ago

0.3.1

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.2.2

2 years ago

0.1.0

3 years ago

0.1.1

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.5

3 years ago

0.0.6

3 years ago

0.0.3

3 years ago

0.0.4

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago