The prefab MidiFileLoader is useful for loading all or a part of the MIDI events from a Midi file.
There is no MIDI Sequencer, no MIDI Synthesizer, no music playing capabilities, just loading and decoding a MIDI file to a list of MPTKEvent. Obviously, this prefab has some interest only for scripting.
MIDI can be loaded from the MidiDB list (see Unity menu MPTK / Midi Player Setup) or from a folder on the desktop (Pro).
Classically, the Prefab can be added to the scene hierachy:
// A MidiFileLoader prefab must be added to the hierarchy with the editor (see menu MPTK)
MidiFileLoader midiFileLoader = FindObjectOfType<MidiFileLoader>();
Code language: C# (cs)
Or it can be created and loaded only by script:
MidiFileLoader midiFileLoader;
private void Awake()
{
// MidiPlayerGlobal is a singleton: only one instance can be created.
if (MidiPlayerGlobal.Instance == null)
gameObject.AddComponent<MidiPlayerGlobal>();
// When running, this component will be added to this gameObject
midiFileLoader = gameObject.AddComponent<MidiFileLoader>();
}
Code language: C# (cs)
Then reading the MIDI contents is easy:
// Select a MIDI from the MIDI DB (with exact name)
midiFileLoader.MPTK_MidiName = "Bach - Fugue";
// Load the MIDI file
if (midiFileLoader.MPTK_Load())
{
// Read all MIDI events
List<MPTKEvent> sequence = midiFileLoader.MPTK_ReadMidiEvents();
Debug.Log($"Loading '{midiFileLoader.MPTK_MidiName}', MIDI events count:{sequence.Count}");
}
else
Debug.Log($"Loading '{midiFileLoader.MPTK_MidiName}' - Error");
Code language: PHP (php)