jazz-soft/JZZ

How do I output to OmniMIDI?

GamingMidi opened this issue · 11 comments

I am trying to output to a synth called OmniMIDI, doing
JZZ().openMidiOut('OmniMIDI') results in no sound, and so does JZZ().openMidiOut(1)...
Any ideas on how to get around this?

Sorry, I'm not familiar with OmniMIDI...
Is it visible from other MIDI applications?
Can the port be in use by another application when you are trying to open it?

Yes, it is visible in a whole bunch of other MIDI applications I use, OmniMIDI is a sort of well known synth

Do I understand correctly that your script works with all MIDI ports except OmniMIDI?

Yep.

I guess I will need some investigation...

I just got it working somehow, I changed where I define JZZ's output to var JZZ = tJZZ().openMidiOut(1).or(console.log("failed"))
tJZZ is just require(jzz) btw

Huh, it does not work with the winmm patch (which works on most programs)
If you wonder what the point of that is, you use the built in patcher in OmniMIDI on a MIDI program, and it bypasses winmm and goes straight to OmniMIDI, the point of this is to reduce lag
I am patching node.exe itself btw

Actually is there a way to list all available MIDI outputs?

JZZ works via winmm on Windows. The source code is available at https://github.com/jazz-soft/jazz-midi
Here is the code to list the midi devices:

JZZ().and(function(){
  var i;
  var outputs = this.info().outputs;
  var inputs = this.info().inputs;
  for (i = 0; i < outputs.length; i++) console.log(outputs[i].name);
  for (i = 0; i < inputs.length; i++) console.log(inputs[i].name);
});

When patched, it returns no device names at all... huh
Btw the winmm patch just places a winmm.dll next to whatever exe you patched, so instead of that application going to the one in system32 (the normal winmm), it instead uses the one next to the exe, and this method works on stuff like FL Studio and PianoFromAbove (so I know it works)
It would be lovely to have the patch work, because I am trying to use JZZ for Black MIDI (which requires performant hardware/software) and using regular winmm cripples the MIDI player's performance

Try to put the dll into "C:\Program Files (x86)\Jazz-Soft\Jazz-Plugin" if you run JZZ in browser
or "...\node_modules\jazz-midi\bin\win64" if you run it in Node