cbdevnet / midimonster

Multi-protocol control & translation software (ArtNet, MIDI, OSC, sACN, ...)
https://midimonster.net/
BSD 2-Clause "Simplified" License
506 stars 50 forks source link

[Question] MIDI into MidiMonster on Mac OS X? #116

Open grahamhr opened 2 years ago

grahamhr commented 2 years ago

Has anyone successfully routed MIDI on Mac OS X into MidiMonster and can give some guidance?

As far as I can tell, the Jack backend is the way to go for MIDI on Mac OS. Also seems like I need to learn the Jack system which I believe is totally separate from the virtual MIDI ports provided by Core MIDI?

Context: I'm trying to convert MIDI coming from Ableton Live on Mac OS X to Art-Net/DMX (and a simple 1:1 MIDI note to DMX channel mapping is perfect for my needs). Very similar to this Q&A on Reddit, except on Mac OS: https://www.reddit.com/r/lightingdesign/comments/i7poiy/noob_needs_help_with_midi_to_artnet/g1e9odr/

Thank you for this great rosetta stone software!

Spacelord09 commented 2 years ago

Hey @grahamhr, I think you mean our rtp-midi backend that can communicate directly with apple's midi subsystem over the network.

If you want, you can share a working tutorial at our KnowledgeBase that can help users with the same Problem!

If you need more help, just ask here ;-)

grahamhr commented 2 years ago

@Spacelord09 Thanks for the tip!

I didn't realize that rtpmidi is the default/normal Mac OS MIDI backend - is that true?

I thought rtpmidi was for a more-esoteric multi-computer IP network situation, and not for a single computer MIDI -> MidiMonster -> anything, e.g. Midi out of Live into Art-Net/DMX.

Once I get this working, I'm happy to contribute a detailed tutorial - I suspect Ableton Live on Mac (or any other MIDI source on Mac) to Art-Net/DMX is a pretty common use-case for MidiMonster.

Spacelord09 commented 2 years ago

@Spacelord09 Thanks for the tip!

@grahamhr No problem, glad that I can help you ;-)

I didn't realize that rtpmidi is the default/normal macOS MIDI backend - is that true?

I'm not a Mac user myself, so I can't say 100%. But I think that it is currently the only possibility to interact directly with the (you called it:)"Core MIDI" on Apple devices. (Speak without installing jack.)

I thought rtpmidi was for a more-esoteric multi-computer IP network situation, and not for a single computer MIDI -> MidiMonster -> anything, e.g. Midi out of Live into Art-Net/DMX.

It can be used for multi-computer setups, but it's not a requirement. It should work on any single-pc setup.

Once I get this working, I'm happy to contribute a detailed tutorial - I suspect Ableton Live on Mac (or any other MIDI source on Mac) to Art-Net/DMX is a pretty common use-case for MidiMonster.

That would be perfect 👍🏻

If you want you can join our Discord.

cbdevnet commented 2 years ago

Hi @grahamr, sorry for replying so late and thanks for your interest in the MIDIMonster!

Indeed on OSX currently jack is the best-supported option (as it is usable cross-platform), along with rtpmidi for networked Apple devices. For input from the local host (as with Ableton), the jack backend would probably be best-suited.

A dedicated Core MIDI backend for OSX might eventually be the best option, but I currently don't have the Hardware to do that.

grahamhr commented 2 years ago

@cbdevnet Thanks for the guidance - I really appreciate it! I'll keep moving forward with both Jack and rtpmidi and see where I can get to.

Do you happen to know anyone who has setup a working MIDI >> MidiMonster setup on OSX?

Solander commented 2 years ago

@grahamhr Did you get this to work? I've tried installing Jack, but no MIDI devices are showing up so I'm pretty stuck.. :/ A native MIDI backend for OSX would be preferable but I get that it's an open-source project and that may take a while.

connorworley commented 1 year ago

I got this working today. Here's an example config:

[backend jack]
errors = on

[jack j]
name = MIDIMonster
midi_in = midi in
midi_out = midi out

[map]
j.midi_in.ch{0..15}.note{1..127} > j.midi_out.ch{0..15}.note{1..127}

The key is to connect MIDIMonster's ports to autogenerated Core MIDI ports. Run MIDIMonster, then inspect with jack_lsp:

~ jack_lsp -Ac
system:capture_1
   coreaudio::out_1
system:playback_1
   coreaudio::in_11
system:playback_2
   coreaudio::in_22
system_midi:capture_1
   coremidi:TRAKTOR X1 MK3:out1
system_midi:capture_2
   coremidi:virtual1:out2
system_midi:capture_3
   coremidi:virtual2:out3
system_midi:playback_1
   coremidi:TRAKTOR X1 MK3:in1
MIDIMonster:midi_in
MIDIMonster:midi_out
system_midi:playback_2
   coremidi:virtual1:in2
system_midi:playback_3
   coremidi:virtual2:in3

Then make connections:

~ jack_connect 'coremidi:TRAKTOR X1 MK3:out1' MIDIMonster:midi_in
~ jack_connect MIDIMonster:midi_out coremidi:virtual1:in2

Now in my case, MIDIMonster is forwarding notes from the TRAKTOR X1 MK3 device to the virtual1 device.