
Quick description
With the Maestro Midi Player Tool Kit, you can:
- Add all the MIDI music’s you want to your Unity applications, thanks to the huge public MIDI collection available on the web.
- Music and gameplay can easily interact.
- Get started quickly by watching this video “how to add a MIDI music to your app in just three clicks”.
MIDI Gives you Full Control on the Music:
- Easy interaction between the music and your gameplay.
- Change tempo without affecting the pitch
- Adapt in real-time music speed to game speed.
- Mute or change instrument on fly.
- Jump to other places in the music with a 100% smooth transition.
- Music looping is easy.
- Apply all transformations you want on the music.
- Nothing gets smaller than MIDI file for playing music!
If you need more information about MIDI, you could read this short tutorial: MIDI Tutorial.
Want to start directly the journey? Go to these pages:
Main functionalities
- No need to install external component like a Synthesizer or MIDI device to play music.
- No coding required for main functions: dedicated inspectors defined all your needs directly in the Unity editor.
- Maestro follows the full SoundFont standard and MIDI norms based on a rewrite of the legendary FluidSynth synthesizer.
- Contains many demonstrations to get you started.
- Two versions are available, begin with the Free and if you like it, get the Pro!
- Fully documentation (Web) that is freely available from the website before purchase.
Features All Versions:
- Add as many MIDI Prefabs to your scene as you desire.
- Play MIDI files from the web or from your own compositions as much as you want.
- A SoundFont with 270 instruments and 864 samples from GeneralUser_GS_SoftSynth_v144 is provided. It’s a free SoundFont, see the schristiancollins site.
- MIDI Parameters: loop, transpose, speed, position, quantization, auto start, auto pause, stat, verbose …
- Enable or disable channels, change instruments on the fly.
- Synchronize MIDI events with your game or application.
- Synthesizer Parameters: spatialization, rate, buffer size, interpolation level, apply pan, LFOs, Modulator, release time, auto buffer, device performance, stat, verbose
- Play & Pause MIDI automatically based on distance.
- Build generated notes from your algorithm, see our demos.
- Karaoke capabilities (by script).
- Spatialization capabilities, ready for your Virtual Reality project.
- Advanced API for more complex interactions.
Features Pro Version:
- MIDI Editor integrated in the Unity Editor.
- MIDI files Analyzer to optimize the samples need by your set of MIDI.
- Midi External Player plays MIDI directly from a website or on your desktop.
- Midi File Writer: Compose your music, save or MIDI or play it directly.
- Midi Input Reader: read MIDI events from a MIDI keyboard connected to your computer (Windows and MacOS only).
- Midi Spatializer: spatialize a Midi file by channel/instrument in a 3D environment.
- Midi List Player automatically plays a list of MIDI files. It has the ability to play parts of a MIDI (from / to in ticks, seconds or time) with overlapping between the Midis being played.
- Warp Dynamic Sound Effects processing: modify in real-time parameters for low-pass filter, reverb, chorus. Use standard Unity effect or dedicated effect.
- Helper to build Chords: dynamically created from parameters as degree, scale, arpeggio or from the 85 chords in library.
- Helper to build Scales from the 86 scales in library: Major, Minor, Blues, Pentatonic, Enigmatic, Oriental, Bitonal, …
- Integration ready with other packages from the Asset Store. No scripting C# or JS is mandatory to add Midi music to your application!
- Cinematic Sequencer – Slate
- Adventure Creator
- PlayMaker
- Bolt
- Other integrations can be studied on request …
- Look here for a full comparison between pro and free.
SoundFont
A synthesizer based on SoundFont is indeed a fantastic solution to access hundreds of sounds from real instruments as well as synthetic sounds, often for free.
What’s more, there are hundreds of SoundFonts available on the web! Whether they’re free or not, they come in various styles (general, classic, jazz, electro, hip hop, etc.), and different qualities and sizes. The possibilities are vast, almost infinite!
And if that’s not enough, there are tools available to create your own! You can find more information here. Please note that SoundFont® is a registered trademark of E-mu Systems, Inc.
Prefab & Class
- Maestro propose Prefab and Class to answer to your need. See here.
Demos
Demo have several roles: regression tests for the Maestro team, capabilities demonstrations, script examples, … you like demo and we like creating demos!
Demos available for Free :

- TestMidiFilePlayer: a very simple example with only one MidiFilePlayer prefab to play MIDI music. An example of using MPTK to play MIDI music without programming. There is no script !
- TestMidiFilePlayerScripting: how to integrate MPTK by script in your application. Example of a a Karaoke like application. Use of the MPTK API with a few lines of code.
- TestMidiLoader: a simple MIDI loader able to display the MIDI events.
- TestMidiFilePlayerMulti: four MidiFilePlayer prefabs are defined on a scene with the camera moving on each to experiment the “Playing on distance” function.
- TestMidiStream: how to generate music without any MIDI files with a few lines of code.
- CatchMusic: MIDI is read from a MidiFilePlayer but playing music is delayed in time, thank to the MidiStreamPlayer. Could become a game! See Here.
Demos available with Pro :

- TestExternalMidiPlay: MIDI is loaded directly from your desktop or from a web site.
- TestMidiPlayList: demonstration of the prefab MidiListPlayer able to play a list of MIDI files with overlap and loop inside a MIDI itself.
- TestMidiWriter: Four methods to create and write a MIDI file with MPTK. Contain also a light music sequencer.
- TestMidiInReader: wait and play MIDI events from a Midi keyboard connected to your computer. Use of the MPTK API with a few lines of code.
- EuclideanRhythm: The Euclidean rhythm in music was discovered by Godfried Toussaint in 2004 and is described in a 2005 paper “The Euclidean Algorithm Generates Traditional Musical Rhythms”. An impressive Rhythm Box. It’s a demonstration, but a lot of potential for a more complex application! See Here.
- SpatializerFly: Each instruments from the MIDI are positionned on the 3D stage. You can navigate among them in a spatial journey! See Here.
See menu MPTK / Load Demonstration for a quick access to all the demos.

Free or Pro version ?
Function | Free | Pro |
---|---|---|
Play MIDI Music (MIDI File) with no code | X | X |
Play Generated Music (MIDI Stream) | X | X |
Play / Paused automatically based on distance and on focus lost | X | X |
Loop, transpose, quantization, start play at first note, change position, speed, all on fly | X | X |
Channel, applied mute, volume, force instruments. | X | X |
Load MIDI file and explore MIDI events. | X | X |
API for a full integration in your script | X | X |
MIDI Spatializer on the whole MIDI | X | X |
MIDI Editor as a Unity Editor extension | X | |
MIDI File Writer for building your MIDI file | X | |
MIDI Spatializer by channels or by tracks | X | |
Play External MIDI File from a web site or locally from the device | X | |
MIDI Play List and Looping function | X | |
MIDI Input Reader from an external MIDI keyboard | X | |
Import and manage several SoundFonts and optimize samples count | X | |
Load SoundFont on the fly from a local file or from the web | X | |
Accurate MIDI Inner loop | X | |
Add audio effects: low-pass filter, reverb, chorus (V2.8). | X | |
Integration with Cinematic Sequencer – Slate (V2.8). | X | |
Builder for Chords and Scales | X | |
Real Time Effect modifier (MTPK_ModifySynthParameter | X | |
Real Time Synth (OnAudioFrameStart) processing | X | |
Change MIDI event in real time | X |
Obviously, even if you don’t have the need of the Pro function, you can also bought it 😉 It’s a lot of work. Please, help us to maintain this application with a professional behaviors !!!
Playing Music Without MIDI File
Furthermore, you can generate your music from your own algorithm by using hundreds waves extracted from SoundFont.
Of course, some examples are provided to explain how to this. Have a look to : TestMidiStreamSimple demo or EuclideanRhythm.
For more information see Class MidiPlayerTK.MidiStreamPlayer. More information about integrating MPTK in your script here.
Limitations
There is no binary or hidden code (except for reading MIDI input from external keyboard), all the source code of Maestro MPTK is available and is C#.
Nevertheless, playing music is not available with WebGL app. See here why.
Example of integration with MPTK







