With Maestro Midi Player Tool Kit, you can add to your Unity applications all the MIDI musics that you want: thank to the huge public collection of MIDI on the web .
And why not ? build your own music with free tools available on the net and integrate your musical creation with Maestro in your app!
You want more? ok, Build your music directly by scripts with your algorythm!
All these use cases are well documented with full demos available.
To begin easily, watch this video to understand how to add MIDI music file to your app in three clicks and a few seconds.
Why using MIDI for your app? MIDI gives you much more control on the music, that is why it’s very suitable for a game:
- Change tempo without affecting the pitch (perfect to 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.
- Make things happen in your game when certain notes are played in the music.
- 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.
- With 2.89: Hack your MIDI file when playing!
- With 2.88: VR Games are at your door!
- Sound Spatialization enhanced, set by channels or by tracks.
- Resonance Audio tested with success.
- DearVR tested with success.
- More details here.
- With 2.87: Perfect for your Rhythmic games!
- Fight Android Audio Latency with Oboe .
- Improve Accuracy with New Audio Callback method.
Want to start directly the journey? here a Quick start otherwise, read main functionalities below:
⭐ No need to install external component like Synthesizer or MIDI device to play music.
⭐ No coding required for main function: dedicated inspectors defined all your needs directly in the Unity editor.
⭐ 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, get the Pro!
⭐ Fully documentation (Web) that is freely available from the website before purchase.
Features All Versions:
☑ Add MIDI Prefabs in your scene as much as you want.
☑ Play MIDI files from the web or from your composition as much as you want.
☑ SoundFont with 270 instruments and 864 samples from GeneralUser_GS_SoftSynth_v144 is provided. it’s a free SoundFont, see schristiancollins site.
☑ MIDI Parameters: loop, transpose, speed, position, quantization, auto start, auto pause, stat, verbose …
☑ MIDI Sequencer: enable or disable channel, change instrument on fly.
☑ Synchronize MIDI events with your game or application.
☑ Synthesier Parameters: spatialization, rate, buffer size, interpolation level, apply pan, LFOs, Modulator, release time, auto buffer, device performance, stat, verbose
☑ Play & Paused 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:
☑ Load SoundFont and extract samples associated from the web or from your device as much as you want. Mastered the quality, diversity and size of your music. Possibility to load or change a SoundFont when running.
☑ Analyze MIDI files to optimize the samples need by your set of MIDI. Essential to avoid big application!
☑ Midi List Player automatically plays a list of MIDI files. Abilities to play part of a MIDI (from / to in ticks, seconds or time) with overlapping betwen the Midis playing.
☑ Midi External Player plays MIDI directly from a web site, no need to download the file before running. In real time, reach all the music you want, from your web site or from compatible site.
☑ Midi File Writer: save MIDI stream to MIDI file.
☑ 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.
☑ 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
• other integrations can be studied on request …
☑ Look here for a full comparison between pro and free.
Synthesizer based on SoundFont is a wonderful solution to get hundreds sounds from Real Instruments and also Synthetic Sounds often for free.
Moreover hundreds SoundFont are available on the web! For free or not, with different styles (general, classic, jazz, electro, hip hop, …), with different quality and size. The possibilities are huge, quite infinite!
And if it’s not sufficient, there are tools to create it! More information here.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.
Prefab & Class
Maestro propose Prefab and Class to answer to your need. See here.
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 ?
|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 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|
|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.
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.