remidi

0.1.0 • Public • Published

ReMidi

Pipe MIDI messages from one app to another.

Purpose

I wanted to connect Reason Studio to Resolume Avenue so that I could create an automated audio/video composition that was controlled by MIDI. I wanted something that was more performant than the clunky IAC Bus and more stable than MidiPipe.

Pre-Requisites

  • Node.js
  • Two Midi Applications you want to link

Install

  1. Clone this repository.

  2. Install the Node dependencies.

    npm install

Usage

Press Control + C twice, to quite the program.

  1. Start the MIDI server with Node.js.

    node index.js
  2. Goto Reason Studio MIDI Preferences and disable "ReMidi from Reason".

    ⚠️ Important: If you stop and start the program, you will need to go back into Reason MIDI preferences and disable "ReMidi from Reason" again, otherwise your will start an infinite MIDI loop.

    Disable ReMidi from Reason

  3. Create a MIDI Output device in Reason studio. Create Midi Output Device

  4. Choose "ReMidi to Avenue" from the input dropdown.

    Choose ReMidi to Avenue

  5. Move the Mod Wheel on the MIDI output and you should see MIDI messages in your terminal.

    MIDI Output Messages.png

  6. You can select the "ReMidi from Reason" device from another application, and see the same MIDI messages.

    In this case I am using Resolume Avenue.

    MIDI-Input-Avenue.png

Example Code

const easymidi = require('easymidi');
 
const avenue = new easymidi.Output('ReMidi from Reason', true);
const reason = new easymidi.Input('ReMidi to Avenue', true);
 
reason.on('noteon', ({_type: type, channel, note, velocity}) => {
    console.log('Output from Reason', {type, channel, note, velocity});
    avenue.send(type, {channel, note, velocity});
});
 
reason.on('noteoff', ({_type: type, channel, note, velocity}) => {
    console.log('Output from Reason', {type, channel, note, velocity});
    avenue.send(type, {channel, note, velocity});
});
 
reason.on('cc', ({_type: type, controller, value, channel}) => {
    console.log('Output from Reason', {type, controller, value, channel});
    avenue.send(type, {controller, value, channel});
});
 
console.log('ReMidi is running!');

Conclusion

This simple code allows you to send MIDI messages easily from one application to another.

In my case, I can write an audio/visual composition in Reason. Reason triggers and changes the video clips and parameters in Avenue, making the music and the music video a single process.

You can update the code if you want to provide more channels, and change the names.

Contact me you need help.

~ F1LT3R

Package Sidebar

Install

npm i remidi

Weekly Downloads

0

Version

0.1.0

License

MIT

Unpacked Size

3.49 MB

Total Files

8

Last publish

Collaborators

  • f1lt3r