remidi v0.1.0
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
- Clone this repository.
Install the Node dependencies.
npm install
Usage
Press Control + C twice, to quite the program.
Start the MIDI server with Node.js.
node index.js
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.
Create a MIDI Output device in Reason studio.
Choose "ReMidi to Avenue" from the input dropdown.
Move the Mod Wheel on the MIDI output and you should see MIDI messages in your terminal.
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.
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
4 years ago