Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
[detail level 123]
 NMidiPlayerTK
 CHelperNoteLabelClass contains some static methods about notes helper.
 CMidiExternalPlayer[MPTK PRO] - Script associated to the prefab MidiExternalPlayer.
Play a midi file from a path on the local deskop or from a web site.
There is no need to writing a script. For a simple usage, all the job can be done in the prefab inspector.

But a set of API is also available to drive the music from your script.
On top of that, this class inherits from MidiFilePlayer and MidiSynth
All properties, event, methods from MidiFilePlayer and MidiSynth are available in this class.

 CMidiFileLoaderThis class, associated with the prefab MidiFileLoader is useful for loading all or a part of the MIDI events from a Midi file.
No sequencer, no synthetizer, no music playing capabilities, just loading and decoding a MIDI file to the more easy class MPTKEvent.
MIDI can be loaded from the MidiDB list (see Unity menu MPTK / Midi Player Setup) or from a folder on the desktop (Pro)
 CMidiFilePlayerThis class, associated to the prefab MidiFilePlayer, is able to play music from MIDI file.
MIDI files must be added from the Unity menu MPTK in the Unity editor.
There is no need to writing a script. For a simple usage, all the job can be done in the prefab inspector.
For more information see here https://paxstellar.fr/midi-file-player-detailed-view-2/
But for specific interactions, this class can be useful. Some use cases:
 CMidiFileWriter2[MPTK PRO] - Write a midi file from differents sources based on NAudio frawemork.
See full example TestMidiWriter.cs with a light sequencer.
This class replaced MidiFileWriter with these changes: channel start at 0, new specfic event, better control.
More information here: https://paxstellar.fr/class-midifilewriter2/
 CMidiInReader[MPTK PRO] - Script associated to the prefab MidiInReader.
Read Midi events from a Midi keyboard connected your device (Windows 10 or MacOS). See example of use in TestMidiInputScripting.cs
There is no need to writing a script. For a simple usage, all the job can be done in the prefab inspector.
 CMidiKeyboard[MPTK PRO] - BAse class to send and receive Midi Message from a Midi keyboard connected to the device
More information here https://paxstellar.fr/class-midikeyboard/
 CMidiListPlayer[MPTK PRO] - Script for the prefab MidiListPlayer.
Play a list of pre-selected midi files from the dedicated inspector or from an API.
List of Midi files must exists in MidiDB. See Midi Player Setup (Unity menu MPTK).
Two Midi Players are defined in the MidiListPlayer. Only one is played at a given time.
They are switched at the end of a midi. There is an overlap time between.
 CMidiListPlayerStatusMidi Player status. Two Midi Players are defined in the MidiListPlayer.
Only one is playing at a time and they are switched at the end of a midi.
There is an overlap time between them when the two are playing.
 CMPTK_MidiPlayItemDefine a midi to be added in the list
 CMidiLoadBase class for loading a Midi file.
Internal class used by MidiFilePlayer, MidiListPlayer, MidiFileWrite2, MidiFileLoader.
It is not recommended to instanciate directly this class. It is better to use the prefab and class MidiFileLoader if you want to only load a Midi file
 CMidiPlayerGlobalSingleton class to manage all global features of MPTK. More information here: https://paxstellar.fr/midiplayerglobal/
 CMidiSpatializer[MPTK PRO] - Script associated to the prefab MidiSpatializer.
It's quite light because the major job is done with MidiSynth
There is no specific API for this prefab.
Scripting is necessary to defined position of channel or instrument in your 3D env. See below.

On top of that, this class inherits from MidiFilePlayer and MidiSynth
All properties, event, methods from MidiFilePlayer and MidiSynth are available in this class.

///!
 CMidiStreamPlayerThe prefab MidiStreamPlayer is useful for playing real time music in relation with user actions or an algo.
Any Midi file is necessary, the notes are generated by your scripts from your own algorithm. Thank to the API of this class.
The main function MPTK_PlayEvent() and the class MPTKEvent are able to create all kind of midi events as note-on.
All the values must be set in MPTKEvent, command, note value, duration ... for more details look at the class MPTKEvent.
A note-on must also be stopped, : if duration = -1 the note is infinite, it's the goal of MPTK_StopEvent() to stop the note with a note-off.
On top of that, the Pro version adds playing chords with MPTK_PlayChordFromRange() and MPTK_PlayChordFromLib().
For playing scales, have a look to the class MPTKRangeLib
For more information see here https://paxstellar.fr/midi-file-player-detailed-view-2-2/
and look at the demo TestMidiStream with the source code TestMidiStream.cs.

On top of that, this class inherits from MidiSynth
All properties, event, methods from MidiSynth are available in the class MidiStreamPlayer.

 CMidiSynthContains all the functions to build a wave table synth: load SoundFont and samples, process midi event, play voices, controllers, generators ...
This class is inherited by others class to build these prefabs: MidiStreamPlayer, MidiFilePlayer, MidiInReader.
It is not recommended to instanciate directly this class, rather add prefabs to the hierarchy of your scene.
 CMPTKChordBuilder[MPTK PRO] Chord builder class for MPTK. Usefull to generate Midi Music with MidiStreamPlayer - V2.82 See example in TestMidiStream.cs and ExtStreamPlayerPro.cs
 CMPTKChordLib[MPTK PRO] - Load library of chord from ChordLib.csv in folder Resources/GeneratorTemplate.csv - V2.82 new
 CMPTKEventMidi Event class for MPTK. This class is more simple to use that the standard Midi structure.
The main property is Command, the content and role of other properties (as Value) depend on the value of Command. Look at the Value property.
With this class, you can: play and stop a note, change instrument (preset, patch, ...), change some control as modulation (Pro) ...
Use this class in relation with these classes:
 CMPTKFootPrintExperimental - Pro version 2.89.0 - These capability and API could evolve in time or ... disappear!
Search a MIDI from a sequence of notes and calculate a score tempo.
A footprint is calculated for each MIDI added in MPTK_MidiLib with MPTK_AddOne or MPTK_AddMultiple.
Then MPTK_Search can be used to find a list of MIDI with the same fooprint (or partial footprint) from a sequence of notes (List of MPTKEvent).
If notes in the sequence contains duration then a tempo score is given for each MIDI found.
Limitation: max of 8 first notes are used for calculating the footprint
 CFootPrintContains detailed information about a MIDI footprint.
 CMPTKListItemThis class is useful when a list of paired value string+id is needed.
This is also the entry point to display a popup for selecting a value by user: midi, preset, bank, drum, generator, ...
 CMPTKRangeLib[MPTK PRO] - Load library of scale from GammeDefinition.csv in folder Resources/GeneratorTemplate.csv
For more information see here https://paxstellar.fr/midi-file-player-detailed-view-2-2/