MIDI input to MIDI Stream object?

I’m playing with the new Harmonix plugin, and see an object they’ve built called a, “MIDI Stream”.

I’d like to generate one of these dynamically and push MIDI data directly into it from a controller. It seems like a pretty obvious use case, but I’m not sure whether it’s built into everything yet. Will I need to create a plugin and dig through the code to do this?

1 Like

Also interested in this. I have a system built for playing MIDI files using the Sample player + Fusion patches. But would love to trigger these sample instruments with live MIDI input instead of just reading pre-baked files. Any ideas/updates/future plans?

So, after a lot more research, this is a tougher problem to tackle than I originally understood.

Basically, there are two clocks you would need to sync to have game events and music playback sync properly. There’s also various forms of controller latency involved. What needs to be managed to handle this for a rhythm game would be combining a quartz clock with MIDI input and managing it all on a set of ticks.

I had so much trouble trying to pass any kind of MIDI information from a game object which had an attached MIDI controller into a Metasound I moved on for the moment. The functionality you want is absolutely not built into the current system; the MIDI controller input plugin is still in a “Beta” version and the Harmonix stuff is “experimental” so by my understanding it won’t be there for a year or two.

You can generate a midi stream by creating a midi clock with the midi player and using a midi pulse generator node, there are other ways to do it including just generating new UMidiFile objects and feeding them to midi players inside metasounds.

Anyway, the new harmonix midi and quartz really have nothing to do with one another and I don’t think there’s any reason to try to combine the two, if you need to trigger events from the midi clock you can use the TimeStamp to Trigger node, or the new MusicClock actor component, you can use the midi clock itself to quantize parameter inputs into the metasound, if needed, the timestamp to trigger node already gives some quantization options.