[Framework] MIDI Engine Plugins For MIDI Files And Rhythm Games

MIDI Engine is a Framework that focuses on Importing And integrating MIDI and MIDI Files for the purpose of creating Rhythm Games And Audio Visualizers in Unreal Engine.

The core principle of the Framework is to ensure things are as accurately synced to Music as possible without sacrificing performance and being Highly Extensible.

By Framework , we mean as a whole MIDI Engine is a Group of plugins carefully organized and split so that you as the developer/programmer should be able to only use the subset of plugins that your project needs instead of bundling everything into one , creating bloat for your project.

Base Plugin : MIDI Engine : Core
MidiEngine Core in short is a plugin for unreal engine 5 that parses and reads in MIDI Files (.mid) files and turns the data into something that can be used by UObjects or Actors.

All other Plugins in the Midi Engine Framework have this plugin integrated within them.

Marketplace Link: Midi Engine : Core

Keep an eye on this topic for other parts of the framework and feel free to ask question and/comments.

If you instead prefer chatting on discord, there is a specific channel for Midi Engine here:

The Second Most Important Plugin In The Midi Engine Framework:
Midi Engine : Broadcasters.
In short Midi Engine Broadcasters manages the process of sending Midi Events to Actors and Receiving Midi Events In Actors.
So at the minimum, this is the plugin you need to make virtually any type of rhythm game you can think about OR add rhythm gameplay to an already existing Game. So if you already have a game and want to make some elements react to music, this plugin will seamlessly integrate with your pre-existing game.
It’s minimal, its fast, its highly extensible.

Marketplace Link: Midi Engine : Broadcasters in Code Plugins - UE Marketplace

The Most Powerful Feature In The MidiEngine Framework:
Support For Multiple Playheads With Unique Offsets. Available within MidiEngine Broadcasters Plugin

Learn how to use MIDI Playheads and MIDI Filters to schedule animations or reactions well in time.

In short, Imagine you want to be notified 4 seconds ahead of the music so that you can start playing a timed Dance animation or release Midi Notes on the note highway(think Guitar Hero, Beatstar… etc type of games).

Remember: You can download & try these plugins for free on Gumroad then come back and get them on epic marketplace…

New Addition to the framework :

Midi Engine Rhythm Tools: A Plugin and Template to help create Note Highway types of rhythm games.

Examples are Guitar Hero, TapTapMusic, Beatstar and more.

Download here :

Nice plugin :smiley: . After the “death” of Rocksmith 2014 I’ve been working on something similar for the web browser, not for UE though. It’s a note highway for string instruments.

I will follow your progress on this. Interestingly MIDI files do not contain techniques used on an instrument (guitar slide, tap, harmonic, vibrato, pulls).

My goal is to create:

  1. an accessable file format (just midi, or json), not obfuscated in psarc, gpx, etc.
  2. Make the file contain instrument techniques for the “note highway”
  3. These files should be created in “3 clicks” from an existing format like psarc, gpx.

Having the MIDI file accessable from UE or in my case javascript is great but for the note highway we must integrate the instrument techniques and have converter to make it from existing file formats.

Do you have plans to work on this as well? Integrating instrument techniques into midi data for a note highway? I wonder if some common accepted format exists.

I’ve been studying some tools like Editor On Fire and the Rocksmith Toolkit, they seem to write a lot of data to XML instead of to MIDI. The MIDI to JSON library I am using on the repo I linked also bloats MIDI files enormously by writing pitch bends to a separate tick list. If that is the common format it’s a bit absurd.

Hi thanks!
The plugin takes a MIDI File (.mid) file and extracts and packs its data into a Unreal engine format (UObject). Called UMidiAsset. This UMidiAsset is diverse and you can actually pack/add extra data to it.

An example of this , is the MidiEngine Ableton Live plugin (coming soon to UE marketplace), which uses a custom file (.LiveMidiAsset) , to create the same type of UObject UMidiAsset.

So the “source” of the data (whether .midi or .json or .LiveMidiAsset) doesn’t matter much, as long as the programmer understands how the source packs its data and can extract that and pack it into this UMidiAsset.

So you’ll need to design a custom file reader for any custom file types, (psarc, pgx etc).

The main reason this plugin targets mainly MIDI is because ALL or most DAWs export their music projects as MIDI to some extent. They don’t do it in XML or other formats. Not that it would be much of a limit. So if you have someone who is a music producer, works mainly on the DAW, they don’t need to know about unreal engine to make you a file that can be used in a rhythm game. They can just send you the .MIDI file.

Can you please elaborate more on what you mean by Integrating instrument techniques, i don’t follow. Maybe an example?

1 Like

You mentioned the “note highway” like guitar hero :slight_smile: . Guitar hero does light up notes which should not be picked but played by “hammer on” / “pull off” those are techniques specific to string instruments like guitars. On a guitar you also do things like sliding from note to note over the strings and have various ways to play harmonics to generate different pitches on the same frets. So for a true note highway for instruments, passing on the midi numbers is not enough data. You would show something like an harmonic / hammer on icon or slide bars etc.

It would be nice to have a common format (or perhaps just midi) to add the technique data in. I understand it’s possible to just program, but was curious if there is a common format for this that people are using already. I know rocksmith does it hidden away in xml stuffed into psarc and it’s a pain in the butt to try to get abandoned parsers from github to work on such things.

For rythm games and many more applications your plugin does looks perfect actually.

This really wouldn’t be a problem with the Rhythm Tools plugin at all since the plugin allows the blueprint programmer/designer to choose what happens for each note. So if you want some specific notes to “hammer on” , you can do that pretty easily. Just need to have a filter criteria.

While following the tutorial for Rhythm Tools you’ll notice what i mean… You can almost do anything you want that’s been in all/most note highway rhythm games…

Here’s a tutorial series where the Midi Engine Plugins are used to recreate Fortnite Festival

Here’s part 5 covering how the cameras in Fortnite Festival likely work :

Part 6 Covers the VFX in Fortnite Festival…

MidiEngine Metasounds includes a midi file player and Virtual Instrument Interface.

1 Like

This one is pretty cool.

Thanks for the kind words… I’m using it to build https://unrealmusician.com ,
Hope the Unreal Musician app will demonstrate the plugin’s true capabilities.

Guitar Hero’s “note highway” simplifies guitar playing by lighting up picked notes, but it doesn’t consider techniques like hammer-ons, pull-offs, slides, and harmonics. A true “note highway” for instruments would need to show additional information, like icons for these techniques, to accurately guide players.

1 Like