Classes | |
class | MidiExternalPlayer |
Play a Local MIDI file or from a Web site. This class must be used with the prefab MidiExternalPlayer More... | |
class | MidiFileLoader |
@Warning - will be soon deprecated, please rather use MidiFilePlayer prefab which have the same features + eventually MIDI sequencer and MIDI synth! Exemple for just loading a MIDI with MidiFilePlayer: More... | |
class | MidiFilePlayer |
Play a MIDI file from the MidiDB. This class must be used with the prefab MidiFilePlayer. See "Midi File Setup" in the Unity menu MPTK for adding MIDI in MidiDB. More... | |
class | MidiInReader |
Read MIDI events from a MIDI keyboard connected to your Windows or Mac desktop. This class must be used with the prefab MidiInReader. There is no need to writing a script. For a simple usage, all the job can be done in the prefab inspector. More information here https://paxstellar.fr/prefab-midiinreader/ More... | |
class | MidiKeyboard |
Base class to send and receive Midi Message from a Midi keyboard connected to the desktop More... | |
class | MidiListPlayer |
Play a list of pre-selected MIDI files from the MidiDB. This class must be used with the prefab MidiListPlayer. More... | |
class | MidiLoad |
Base class for loading a MIDI file and reading MIDI event in a MIDI sequencer. It's not possible to instanciate directly this class. Rather, use MidiFilePlayer to load a MIDI This class is used by MidiFilePlayer, MidiListPlayer, MidiFileWrite2, MidiFileLoader (see members MPTK_MidiLoaded of these classes). More... | |
class | MidiPlayerGlobal |
Singleton class to manage all globales MPTK features. More information here: https://paxstellar.fr/midiplayerglobal/ More... | |
class | MidiSpatializer |
For playing Spatialized MIDI by channels or by tracks from the MidiDB. This class must be used with the prefab MidiSpatializer. More... | |
class | MidiStreamPlayer |
Build and Play Real Time Music in relation with user actions or algorithms. This class must be used with the prefab MidiStreamPlayer. More... | |
class | MidiSynth |
Base class wich contains all the stuff to build a Wave Table Synth. More... | |
class | MPTKChannel |
Description of a MIDI Channel associated to the MIDI synth. They serve to distinguish between instruments and provide independent control over each one. By transmitting MIDI messages on their respective channels, you can alter the instrument, volume, pitch, and other parameters. Within the Maestro Midi Player Toolkit, MIDI channels are designated numerically from 0 to 15. Notably, channel 9 is set aside specifically for drum sounds. More... | |
class | MPTKChannels |
Description and list of MIDI Channels associated to the MIDI synth. Each MIDI synth has 16 channels that carry all the relevant MIDI information. More... | |
class | MPTKChordBuilder |
Build Chord and Play with MidiStreamPlayer. More... | |
class | MPTKChordLib |
Build Chord from a library and Play with MidiStreamPlayer. More... | |
class | MPTKEffectSoundFont |
A SoundFont contains parameters to apply three kinds of effects: low-pass filter, reverb, chorus. These parameters can be specifics for each instruments and even each voices. Maestro MPTK effects are based on FluidSynth algo effects modules. Furthermore, to get more liberty from SoundFont, Maestro can increase or decrease the impact of effects (from the inspector or by script). To summarize: More... | |
class | MPTKEffectUnity |
Unlike SoundFont effects, they applied to the whole player. On the other hand, the Unity effects parameters are rich and, obviously based on Uniy algo! https://docs.unity3d.com/Manual/class-AudioEffectMixer.html Only most important effect are integrated in Maestro: Reverb and Chorus. On need, others effects could be added. More... | |
class | MPTKEvent |
Description of a MIDI Event. It's the heart of MPTK! Essential to handling MIDI by script from all others classes as MidiStreamPlayer, MidiFilePlayer, MidiFileLoader, MidiFileWriter2 ... More... | |
class | MPTKFootPrint |
Experimental - Search a MIDI from a sequence of notes and calculate a score tempo. More... | |
class | MPTKInnerLoop |
MIDI inner loop setting available for MidiFilePlayer and MidiExternalPlayer [Pro]. Look at MidiFilePlayer.MPTK_InnerLoop and MidiExternalPlayer.MPTK_InnerLoop. See Example: More... | |
class | MPTKListItem |
This class is useful when a list of paired value string+id is needed. More... | |
class | MPTKScaleLib |
Build Scale and Play with MidiStreamPlayer. More... | |
class | MPTKSignature |
Contains information about signature change. More... | |
class | MPTKTempo |
Contains information about the tempo change. More... | |
class | MPTKWriter |
Create, build, write, import, play MIDI by script. See full example with these scripts: More... | |
Enumerations | |
enum | LoadingStatusMidiEnum { NotYetDefined = -1 , Success = 0 , NotFound = 1 , TooShortSize = 2 , NoMThdSignature = 3 , NetworkError = 4 , MidiFileInvalid = 5 , SoundFontNotLoaded = 6 , AlreadyPlaying = 7 , MidiNameInvalid = 8 , MidiNameNotDefined = 9 , MidiFileEmpty = 10 } |
enum | LoadingStatusSoundFontEnum { InProgress = -1 , Success = 0 , NoRIFFSignature = 3 , NetworkError = 4 , SoundFontNotLoaded = 6 , InvalidURL = 8 , SoundFontEmpty = 10 } |
enum | midi_rpn_event { RPN_PITCH_BEND_RANGE = 0x00 , RPN_CHANNEL_FINE_TUNE = 0x01 , RPN_CHANNEL_COARSE_TUNE = 0x02 , RPN_TUNING_PROGRAM_CHANGE = 0x03 , RPN_TUNING_BANK_SELECT = 0x04 , RPN_MODULATION_DEPTH_RANGE = 0x05 } |
enum | MPTKChordName |
List of chords available More... | |
enum | MPTKCommand : byte { NoteOff = 0x80 , NoteOn = 0x90 , KeyAfterTouch = 0xA0 , ControlChange = 0xB0 , PatchChange = 0xC0 , ChannelAfterTouch = 0xD0 , PitchWheelChange = 0xE0 , Sysex = 0xF0 , Eox = 0xF7 , TimingClock = 0xF8 , StartSequence = 0xFA , ContinueSequence = 0xFB , StopSequence = 0xFC , AutoSensing = 0xFE , MetaEvent = 0xFF } |
enum | MPTKController : byte { BankSelectMsb = 0 , Modulation = 1 , BreathController = 2 , FootController = 4 , PORTAMENTO_TIME_MSB = 0x05 , DATA_ENTRY_MSB = 6 , VOLUME_MSB = 7 , BALANCE_MSB = 8 , Pan = 10 , Expression = 11 , EFFECTS1_MSB = 12 , EFFECTS2_MSB = 13 , GPC1_MSB = 16 , GPC2_MSB = 17 , GPC3_MSB = 18 , GPC4_MSB = 19 , BankSelectLsb = 32 , MODULATION_WHEEL_LSB = 33 , BREATH_LSB = 34 , FOOT_LSB = 36 , PORTAMENTO_TIME_LSB = 37 , DATA_ENTRY_LSB = 38 , VOLUME_LSB = 39 , BALANCE_LSB = 40 , PAN_LSB = 42 , EXPRESSION_LSB = 43 , EFFECTS1_LSB = 44 , EFFECTS2_LSB = 45 , GPC1_LSB = 48 , GPC2_LSB = 49 , GPC3_LSB = 50 , GPC4_LSB = 51 , Sustain = 64 , Portamento = 65 , Sostenuto = 66 , SoftPedal = 67 , LegatoFootswitch = 68 , HOLD2_SWITCH = 69 , SOUND_CTRL1 = 70 , SOUND_CTRL2 = 71 , SOUND_CTRL3 = 72 , SOUND_CTRL4 = 73 , SOUND_CTRL5 = 74 , SOUND_CTRL6 = 75 , SOUND_CTRL7 = 76 , SOUND_CTRL8 = 77 , SOUND_CTRL9 = 78 , SOUND_CTRL10 = 79 , GPC5 = 80 , GPC6 = 81 , GPC7 = 82 , GPC8 = 83 , PORTAMENTO_CTRL = 84 , EFFECTS_DEPTH1 = 91 , EFFECTS_DEPTH2 = 92 , EFFECTS_DEPTH3 = 93 , EFFECTS_DEPTH4 = 94 , EFFECTS_DEPTH5 = 95 , DATA_ENTRY_INCR = 96 , DATA_ENTRY_DECR = 97 , NRPN_LSB = 98 , NRPN_MSB = 99 , RPN_LSB = 100 , RPN_MSB = 101 , AllSoundOff = 120 , ResetAllControllers = 121 , LOCAL_CONTROL = 122 , AllNotesOff = 123 , OMNI_OFF = 124 , OMNI_ON = 125 , POLY_OFF = 126 , POLY_ON = 127 } |
enum | MPTKMeta : byte { TrackSequenceNumber = 0x00 , TextEvent = 0x01 , Copyright = 0x02 , SequenceTrackName = 0x03 , TrackInstrumentName = 0x04 , Lyric = 0x05 , Marker = 0x06 , CuePoint = 0x07 , ProgramName = 0x08 , DeviceName = 0x09 , MidiChannel = 0x20 , MidiPort = 0x21 , EndTrack = 0x2F , SetTempo = 0x51 , SmpteOffset = 0x54 , TimeSignature = 0x58 , KeySignature = 0x59 , SequencerSpecific = 0x7F } |
enum | MPTKScaleName |
List of ranges available More... | |
Status of the last midi file loaded
Enumerator | |
---|---|
NotYetDefined | -1: midi file is loading. |
Success | 0: succes, midi file loaded. |
NotFound | 1: error, no Midi file found. |
TooShortSize | 2: error, not a midi file, too short size. |
NoMThdSignature | 3: error, not a midi file, signature MThd not found. |
NetworkError | 4: error, network error or site not found. |
MidiFileInvalid | 5: error, midi file corrupted, error detected when loading the midi events. |
SoundFontNotLoaded | 6: SoundFont not loaded. |
AlreadyPlaying | 7: error, Already playing. |
MidiNameInvalid | 8: error, MPTK_MidiName must start with file:// or http:// or https:// (only for MidiExternalPlayer). |
MidiNameNotDefined | 9: error, Set MPTK_MidiName by script or in the inspector with Midi Url/path before playing. |
MidiFileEmpty | 10: error, Read 0 byte from the MIDI file. |
Status of the last SoundFont loaded
Enumerator | |
---|---|
InProgress | -1: SoundFont is loading. |
Success | 0: succes, SoundFont loaded. |
NoRIFFSignature | 1: error, no SoundFont found. 2: error, not a SoundFont, too short size. 3: error, not a SoundFont, signature RIFF not found. |
NetworkError | 4: error, network error or site not found. |
SoundFontNotLoaded | 5: error, SoundFont corrupted, error detected when loading the SoundFont. 6: SoundFont not loaded. |
InvalidURL | 7: error, Already playing. AlreadyPlaying = 7, 8: error, URL must start with file:// or http:// or https:// |
General MIDI RPN event numbers (LSB, MSB = 0) The only confusing part of using parameter numbers, initially, is that there are two parts to using them.
First you need to tell the synthesizer what parameter you want to change, then you need to tell it how to change the parameter.
For example, if you want to change the "pitch bend sensitivity" to 12 semitones, you would send the following controler midi message:
Enumerator | |
---|---|
RPN_PITCH_BEND_RANGE | Change pitch bend sensitivity |
List of chords available
enum MidiPlayerTK.MPTKCommand : byte |
MIDI command codes. Defined the action to be done with the message: note on/off, change instrument, ...
Depending of the command selected, others properties must be set; Value, Channel, ...
Enumerator | |
---|---|
NoteOff | Note Off
|
NoteOn | Note On.
|
KeyAfterTouch | Key After-touch. |
ControlChange | Control change.
|
PatchChange | Patch change.
|
ChannelAfterTouch | Channel after-touch. |
PitchWheelChange | Pitch wheel change
|
Sysex | Sysex message - not processed by Maestro |
Eox | Eox (comes at end of a sysex message) - not processed by Maestro |
TimingClock | Timing clock |
StartSequence | Start sequence |
ContinueSequence | Continue sequence |
StopSequence | Stop sequence |
AutoSensing | Auto-Sensing |
MetaEvent | Meta events are optionnals information that could be defined in a MIDI. None are mandatory
|
enum MidiPlayerTK.MPTKController : byte |
Midi Controller list.
Each MIDI CC operates at 7-bit resolution, meaning it has 128 possible values. The values start at 0 and go to 127.
Some instruments can receive higher resolution data for their MIDI control assignments. These high res assignments are defined by combining two separate CCs,
one being the Most Significant Byte (MSB), and one being the Least Significant Byte (LSB).
Most instruments just receive the MSB with default 7-bit resolution. See more information here https://www.presetpatch.com/midi-cc-list.aspx
Enumerator | |
---|---|
BankSelectMsb | Bank Select (MSB) |
Modulation | Modulation (MSB) |
BreathController | Breath Controller |
FootController | Foot controller (MSB) |
VOLUME_MSB | Channel volume (was MainVolume before v2.88.2 |
Pan | Pan MSB |
Expression | Expression (EXPRESSION_MSB) |
BankSelectLsb | Bank Select LSB. |
Sustain | Sustain |
Portamento | Portamento On/Off - not yet imlemented |
Sostenuto | Sostenuto On/Off - not yet imlemented |
SoftPedal | Soft Pedal On/Off - not yet imlemented |
LegatoFootswitch | Legato Footswitch - not yet imlemented |
NRPN_LSB | Non Registered Parameter Number LSB |
NRPN_MSB | Non Registered Parameter Number MSB |
RPN_LSB | Registered Parameter Number LSB |
RPN_MSB | Registered Parameter Number MSB |
AllSoundOff | <summary >All sound off (ALL_SOUND_OFF) |
ResetAllControllers | Reset all controllers (ALL_CTRL_OFF) |
AllNotesOff | All notes off (ALL_NOTES_OFF) |
enum MidiPlayerTK.MPTKMeta : byte |
MIDI MetaEvent Type. Meta events are optionnals information that could be defined in a MIDI. None are mandatory
In MPTKEvent the attibute MPTKEvent.Meta defined the type of meta event.
Enumerator | |
---|---|
TrackSequenceNumber | Track sequence number |
TextEvent | Text event |
Copyright | Copyright |
SequenceTrackName | Sequence track name |
TrackInstrumentName | Track instrument name |
Lyric | Lyric |
Marker | Marker |
CuePoint | Cue point |
ProgramName | Program (patch) name |
DeviceName | Device (port) name |
MidiChannel | MIDI Channel (not official?) |
MidiPort | MIDI Port (not official?) |
EndTrack | End track |
SetTempo | Set tempo MPTKEvent.Value contains new Microseconds Per Beat Note.
|
SmpteOffset | MPTE offset |
TimeSignature | Time signature MPTKEvent.Value contains four bytes. From less significant to most significant. Please investigate MPTKEvent.ExtractFromInt():
|
KeySignature | Key signature MPTKEvent.Value contains two bytes. From less significant to most significant. Please investigate MPTKEvent.ExtractFromInt().
|
SequencerSpecific | Sequencer specific |
List of ranges available