Maestro Conceptual Views
Two Main Modes for Playing Music
- Green on the schema: play music from a MIDI file within your app (MidiFilePlayer, MidiFileWriter2, MidiExternalPlay, MidiInReader MidiListPlayer, MidiSpatializer).
- Orange on the schema: create your music at run-time in your app (MidiStreamPlayer, MidiKeyboard, MPTKChordBuilder, MPTKChordLib, MPTKRangeLib). Typically, music is created in your Update() method.
Simplified view:
Detailed view:

These two modes can be combined as you want around the central class MPTKEvent which describes a MIDI event.
Maestro Unity Prefabs & Classes

Three Prefabs available with the Free version
- MidiFilePlayer:
- Play music from a MIDI file with a full control of speed, position, quantization, channel, instrument, loop, move to specific position …
- No C# script needed to add music, playing music can be done with the Unity Editor.
- The easier and quick way to add music to your app.
- Obviously you don’t need to be a musician, there is a lot of MIDI files available on internet, often for free.
- Integrated Maestro MIDI Editor can also be used to create your MIDI sequence [Pro].
- Play music from a MIDI file with a full control of speed, position, quantization, channel, instrument, loop, move to specific position …
- MidiStreamPlayer:
- Create and play music from your algorithm.
- Play music by creating MIDI event (note-on, preset change, control change, …) in relation with your Unity action (see MPTKEvent class).
- Generally from your Update() method or on Unity event.
- Generative music is at your fingertips.
- Create and play music from your algorithm.
- MidiFileLoader:
- Load a MIDI file for analysis or processing by accessing to all the MIDI events: note, tempo, text, instrument, … No player on boarded.
Four Prefabs available with the Pro version
- MidiListPlayer:
- Play music from a list of MIDI files.
- Overlap between MIDI
- Play part of a midi.
- Loop …
- Play music from a list of MIDI files.
- MidiExternalPlay:
- Play a MIDI directly with an URL from the Web or anywhere from the device (desktop or mobile).
- MidiInReader:
- Read MIDI events from a MIDI keyboard.
- Play directly, or do all that you want with the MIDI events (see MPTKEvent class).
- MidiSpatializer:
- Play music from a MIDI files with the spatializer ready for a 3D environment where each instruments can be localized in space.
There is surely a prefab for your need! All you have to do is to add one of this prefab to your scene.

Main Maestro Classes
Quick overview of the main classes:
- MPTKEvent class
- It’s a central class for all others Maestro prefabs and classes!
- Create MIDI events or interact with the attribute of a MIDI message.
- Play and stop a note.
- Modify in real time default internal synthesizer generators values.
- Change instrument (preset, patch, …).
- Change controllers values.
- Access for the parameters of each voice.
- It’s a central class for all others Maestro prefabs and classes!
- MidiFileWriter2 class [Pro]
- MIDI Editor is built with this class.
- Create and export MIDI files by script
- Play directly.
- Insert/append MIDI to a MIDI at run-time
- MidiKeyboard class [Pro]
- Connect external MIDI keyboard
- By script:
- List device
- Open / Close the selected device
- Read or write MIDI event to the device