npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jp.keijiro.rtmidi

v1.0.4

Published

RtMidi plugin for Unity

Downloads

9,856

Readme

RtMidi for Unity

This is a wrapper library of RtMidi for Unity that allows Unity programs to access MIDI devices within C# scripts.

Note that this library only provides a thin wrapper of the original C language implementation. There are lots of unsafe and inconvenient elements in the library. In other words, this is a kind of a raw device driver provided for plugin developers -- It's not recommended to use directly in application code.

System Requirements

  • Unity 2019.1 or later
  • Windows, macOS or Linux
  • Only supports 64-bit architecture

How To Install

This package uses the scoped registry feature to resolve package dependencies. Please add the following sections to the manifest file (Packages/manifest.json).

To the scopedRegistries section:

{
  "name": "Keijiro",
  "url": "https://registry.npmjs.com",
  "scopes": [ "jp.keijiro" ]
}

To the dependencies section:

"jp.keijiro.rtmidi": "1.0.4"

After changes, the manifest file should look like below:

{
  "scopedRegistries": [
    {
      "name": "Keijiro",
      "url": "https://registry.npmjs.com",
      "scopes": [ "jp.keijiro" ]
    }
  ],
  "dependencies": {
    "jp.keijiro.rtmidi": "1.0.4",
    ...

Examples

There is an example implementation of low-level wrapper class for using the plugin to input/output MIDI messages. Please see the script files under the Assets directory in this repository for details.

Frequently Asked Questions

Nice! So is it possible to implement a music sequencer with Unity?

Unfortunately, it's quite hard -- I'd say it's almost impossible.

The script behaviors in Unity are hard-locked to screen refreshing. Due to this limitation, you can't achieve enough temporal resolution that is required to keep a correct tempo.

If the display is refreshing at 60 Hz, and the tempo of the song is 120 BPM, it could work correctly. But how about 130 BPM? What if the display is refreshing at 50 Hz?

You may have to create a separate thread and use a media-timer API or something like that. However, this plugin is only tested in a non-threaded fashion. You may have to test it on supported platforms too.

There might be more things to be considered. Does it worth investing time? Or isn't it better to create a new plugin from scratch? There is no clear yes/no answer to it. I just think it's quite hard.