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...
Inherits ICloneable, and ICloneable.
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 ...
The MPTKEvent main property is MPTKEvent.Command, the content and role of other properties (as MPTKEvent.Value) depend on the value of MPTKEvent.Command. Look at the MPTKEvent.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:
- MidiFileLoader to read MIDI events from a MIDI file.
- MidiFilePlayer process MIDI events, thank to the class event OnEventNotesMidi when MIDI events are played from the internal MIDI sequencer.
- MidiFileWriter2 generate MIDI Music file from your own algorithm.
- MidiStreamPlayer real-time generation of MIDI Music from your own algorithm.
See here https://paxstellar.fr/class-mptkevent and here https://mptkapi.paxstellar.com/d9/d50/class_midi_player_t_k_1_1_m_p_t_k_event.html
Also, below an example with MidiStreamPlayer
Description of a MIDI Event. It's the heart of MPTK! Essential to handling MIDI by script from all ot...
Definition: MPTKEvent.cs:45
long Duration
Definition: MPTKEvent.cs:199
MPTKCommand Command
Definition: MPTKEvent.cs:99
int Velocity
Definition: MPTKEvent.cs:187
int Value
Definition: MPTKEvent.cs:153
int Channel
Definition: MPTKEvent.cs:182
Builds and plays real-time music in relation to user actions or algorithms. This class must be used w...
Definition: MidiStreamPlayer.cs:36
void MPTK_StartMidiStream()
Definition: MidiStreamPlayer.cs:79
void MPTK_PlayEvent(MPTKEvent mptkEvent)
Definition: MidiStreamPlayer.cs:109
MPTKCommand
Definition: MPTKEnum.cs:12
◆ EnumLength
◆ MPTKEvent()
| MidiPlayerTK.MPTKEvent.MPTKEvent |
( |
ulong |
data | ) |
|
Creates a MPTK MIDI event from a MIDI input message
- Parameters
-
◆ BeatPerMinute2QuarterPerMicroSecond()
| static int MidiPlayerTK.MPTKEvent.BeatPerMinute2QuarterPerMicroSecond |
( |
double |
bpm | ) |
|
|
static |
Convert Beat Per Minute to duration of a quarter in microsecond.
With BPM=1, microsecondsPerQuaterNote=60 000 000 µs -> 60 secondes per quarter (quite slow!)
With BPM=120, microsecondsPerQuaterNote=500 000 µs -> 0.5 seconde per quarter
- Parameters
-
| bpm | Beats Per Minute (with assumption beat=quarter) |
- Returns
- 60000000 / bpm or 500000 if bpm <= 0
◆ BuildIntFromBytes()
| static int MidiPlayerTK.MPTKEvent.BuildIntFromBytes |
( |
byte |
b1, |
|
|
byte |
b2, |
|
|
byte |
b3, |
|
|
byte |
b4 |
|
) |
| |
|
static |
Store four bytes into one integer.
- Parameters
-
| b1 | byte 0 - less significant |
| b2 | byte 1 |
| b3 | byte 2 |
| b4 | byte 3 - moss significant |
- Returns
- (b4 << 24) | (b3 << 16) | (b2 << 8) | b1
◆ ClearSynthParameter()
| void MidiPlayerTK.MPTKEvent.ClearSynthParameter |
( |
| ) |
|
Resets synth parameters to default SoundFont values.
- Version
- Maestro Pro
◆ ConvertToString()
| string MidiPlayerTK.MPTKEvent.ConvertToString |
( |
bool |
brief | ) |
|
Builds a string description of the MIDI event. V2.83 removes "end of lines" on each returns string. For a better result when displayed on the console (Debug.Log), enable "Monospace font" in the setting of the console (three vertical dot in the panel)
- Returns
◆ ExtractFromInt()
| static byte MidiPlayerTK.MPTKEvent.ExtractFromInt |
( |
uint |
v, |
|
|
int |
n |
|
) |
| |
|
static |
Extract byte position 'n' from an integer
- Parameters
-
| v | value build with BuildIntFromBytes |
| n | byte position from 0 (less significant) to 3 (most significant) |
- Returns
- (v >> (8*n)) & 0xFF
◆ GetSynthParameterCurrentValue()
| float MidiPlayerTK.MPTKEvent.GetSynthParameterCurrentValue |
( |
fluid_gen_type |
genType | ) |
|
Gets the current value for the generator.
Each generator has a specific range of value, see generators list here.
Also the value returned by this method is normalized (value between 0 and 1).
- Version
- Maestro Pro
- Parameters
-
- Returns
- Returns the normalized value of the parameter.
◆ GetSynthParameterDefaultValue()
| float MidiPlayerTK.MPTKEvent.GetSynthParameterDefaultValue |
( |
fluid_gen_type |
genType | ) |
|
Gets the default SoundFont value for the generator.
Each generator has a specific range of value, see generators list here.
Also the value returned by this method is normalized (value between 0 and 1).
- Version
- Maestro Pro
- Parameters
-
- Returns
- Returns the normalized value of the parameter.
◆ GetSynthParameterLabel()
| static string MidiPlayerTK.MPTKEvent.GetSynthParameterLabel |
( |
fluid_gen_type |
genType | ) |
|
|
static |
Gets the label for the generator.
- Version
- Maestro Pro
- Parameters
-
- Returns
- Returns the generator label.
◆ GetSynthParameterListGenerator()
| static List< MPTKListItem > MidiPlayerTK.MPTKEvent.GetSynthParameterListGenerator |
( |
| ) |
|
|
static |
Gets the list of modifiable generators.
It's a list of MPTKListItem where the properties are:
- Parameters
-
- Returns
- Returns a list of modifiable generators (do not modify this list!).
◆ ModifySynthParameter()
| bool MidiPlayerTK.MPTKEvent.ModifySynthParameter |
( |
fluid_gen_type |
genType, |
|
|
float |
value, |
|
|
MPTKModeGeneratorChange |
mode |
|
) |
| |
Applies a modification to a default SoundFont generator value. It can be applied independently for each note,
before the note is played, and in real time while the note is playing.
Each generator has a specific range of value, see generators list here.
The value used by this method is normalized (between 0 and 1). See here for more details.
- Version
- Maestro Pro
mptkEvent.ModifySynthParameter(fluid_gen_type.GEN_FINETUNE, 0.52f, MPTKModeGeneratorChange.Override);
mptkEvent.ModifySynthParameter(fluid_gen_type.GEN_FILTERFC, 0.6f, MPTKModeGeneratorChange.Override);
midiStream.MPTK_PlayDirectEvent(mptkEvent);
- Parameters
-
| genType | Type of generator to modify. Not all generators support real-time modification.
- GEN_MODLFOTOPITCH Modulation LFO to pitch
- GEN_VIBLFOTOPITCH Vibrato LFO to pitch
- GEN_MODENVTOPITCH Modulation envelope to pitch
- GEN_FILTERFC Filter cutoff
- GEN_FILTERQ Filter Q
- GEN_MODLFOTOFILTERFC Modulation LFO to filter cutoff
- GEN_MODENVTOFILTERFC Modulation envelope to filter cutoff
- GEN_MODLFOTOVOL Modulation LFO to volume
- GEN_CHORUSSEND Chorus send amount
- GEN_REVERBSEND Reverb send amount
- GEN_PAN Stereo panning
- GEN_MODLFODELAY Modulation LFO delay
- GEN_MODLFOFREQ Modulation LFO frequency
- GEN_VIBLFODELAY Vibrato LFO delay
- GEN_VIBLFOFREQ Vibrato LFO frequency
- GEN_MODENVDELAY Modulation envelope delay
- GEN_MODENVATTACK Modulation envelope attack
- GEN_MODENVHOLD Modulation envelope hold
- GEN_MODENVDECAY Modulation envelope decay
- GEN_MODENVSUSTAIN Modulation envelope sustain
- GEN_MODENVRELEASE Modulation envelope release
- GEN_VOLENVDELAY Volume envelope delay
- GEN_VOLENVATTACK Volume envelope attack
- GEN_VOLENVHOLD Volume envelope hold
- GEN_VOLENVDECAY Volume envelope decay
- GEN_VOLENVSUSTAIN Volume envelope sustain
- GEN_VOLENVRELEASE Volume envelope release
- GEN_ATTENUATION Volume attenuation
- GEN_COARSETUNE Coarse tuning
- GEN_FINETUNE Fine tuning
|
| value | Normalized value for the generator between 0 and 1.
See the actual value range for each parameter here.
- 0 sets the minimum value for the generator. For example, with an envelope parameter, 0 sets -12000 (minimum for this type of parameter).
- 1 sets the maximum value for the generator. For example, with an envelope parameter, 1 sets 12000 (maximum for this type of parameter).
|
| mode | Defines how to apply the value.
- Override: the SoundFont value is overridden.
- Reinforce: the value is added to the default value.
- Restore: the default SoundFont value is used.
|
- Returns
- True if the change has been applied.
◆ QuarterPerMicroSecond2BeatPerMinute()
| static double MidiPlayerTK.MPTKEvent.QuarterPerMicroSecond2BeatPerMinute |
( |
int |
microsecondsPerQuaterNote | ) |
|
|
static |
Convert duration of a quarter in microsecond to Beats Per Minute (with assumption beat=quarter).
With microsecondsPerQuaterNote=500 000 µs, BPM = 120
- Parameters
-
| microsecondsPerQuaterNote | |
- Returns
- 60000000 / bpm or 120 if microsecondsPerQuaterNote <= 0
◆ StopEvent()
| void MidiPlayerTK.MPTKEvent.StopEvent |
( |
| ) |
|
If the MPTKEvent is a note-on, sends a note-off event. Equivalent to sending a note-off to the synth; the sound enters the release phase.
Has an effect only on NoteOn events. v2.9.0 Pro.
◆ ToData()
| ulong MidiPlayerTK.MPTKEvent.ToData |
( |
| ) |
|
Builds a packet MIDI message from a MPTKEvent. Example: 0x00403C90 for a noton (90h, 3Ch note, 40h volume)
- Returns
◆ ToString()
| override string MidiPlayerTK.MPTKEvent.ToString |
( |
| ) |
|
Extract value 2 from a double int build with BuildIntFromBytes
- Parameters
-
- Returns
- v - (v / 100) * 100
◆ Beat
| int MidiPlayerTK.MPTKEvent.Beat |
Beat in the measure of this event. Present in all MIDI events, but only has musical meaning for note-on. The beat is calculated using the Time Signature event when a MIDI file is loaded.
By default the time signature is 4/4.
◆ Channel
| int MidiPlayerTK.MPTKEvent.Channel |
MIDI channel fom 0 to 15 (9 for drum)
◆ Command
MIDI Command code. Defined the type of message. See MPTKCommand (Note On, Control Change, Patch Change...)
◆ Controller
◆ CreateTime
| long MidiPlayerTK.MPTKEvent.CreateTime |
V2.9.0 Time from System.DateTime when the Event has been created (in the constructor of this class). Divide by 10000 to get milliseconds.
Replace TickTime from previous version (was confusing).
◆ Delay
| long MidiPlayerTK.MPTKEvent.Delay |
Short delay before playing the note in milliseconds. Available only in Core mode. Apply only on NoteOn event.
◆ Duration
| long MidiPlayerTK.MPTKEvent.Duration |
When Command = MPTKCommand.NoteOn, contains duration of the note in milliseconds.
Sets -1 for a note-on played indefinitely.
- Version
- 2.10.0
- Note
- Others Command roles removed:
- SetTempo: no longer contains new tempo (quarter per minute)
- TimeSignature: no longer contains the Denominator (Beat unit: 1 means 2, 2 means 4 (crochet), 3 means 8 (quaver), 4 means 16, ...)
- KeySignature: no longer contains the MajorMinor flag.
◆ GensModifier
| GenModifier [] MidiPlayerTK.MPTKEvent.GensModifier |
List of generator modifiers associated with the voices being played. Null if no modifier is defined.
- Version
- Maestro Pro
◆ IdSession
| int MidiPlayerTK.MPTKEvent.IdSession |
Associate an id with this event.
When reading a MIDI file with MidiFilePlayer: this Id is unique for all MIDI events played for this MIDI.
MPTK_ClearAllSound is able to clear (note off) only the voices associated with this MIDI file when switching MIDI.
Switching between MIDI playing is very quick.
Could also be used for other prefab like MidiStreamPlayer for your specific need, but avoid changing this properties with MidiFilePlayer.
◆ Index
| int MidiPlayerTK.MPTKEvent.Index |
Initial Event Index in the MIDI list, set only when a MIDI file is loaded.
◆ Info
| string MidiPlayerTK.MPTKEvent.Info |
◆ Length
| int MidiPlayerTK.MPTKEvent.Length |
◆ Measure
| int MidiPlayerTK.MPTKEvent.Measure |
Measure (bar) when this event will be played. Measure is calculated with the Time Signature event when a MIDI file is loaded.
By default the time signature is 4/4.
◆ Meta
For Command = MPTKCommand.MetaEvent contains MetaEvent Code. (Lyric, TimeSignature, ...).
Others properties will contains the value of the meta. See MPTKMeta (TextEvent, Lyric, TimeSignature, ...).
◆ RealTime
| float MidiPlayerTK.MPTKEvent.RealTime |
◆ Source
| uint MidiPlayerTK.MPTKEvent.Source |
Origin of the message. MIDI ID if from MIDI Input else zero. V2.83: rename source to Source et set public.
◆ Tag
| object MidiPlayerTK.MPTKEvent.Tag |
Tag information free for use in the application
◆ Tick
| long MidiPlayerTK.MPTKEvent.Tick |
Time in MIDI Tick (part of a Beat) of the Event since the start of playing the MIDI file.
This time is independent of the Tempo or Speed. Not used for MidiStreamPlayer nor MidiInReader because they are real-time player.
◆ Track
| long MidiPlayerTK.MPTKEvent.Track |
Track index of the event in the MIDI.
There is any impact on the music played.
It's just a cool way to regroup MIDI events in a ... track like in a sequencer.
Track 0 is the first track read from the MIDI file.
◆ Value
| int MidiPlayerTK.MPTKEvent.Value |
Contains a value in relation with the Command.
◆ Velocity
| int MidiPlayerTK.MPTKEvent.Velocity |
◆ Voices
| List<fluid_voice> MidiPlayerTK.MPTKEvent.Voices |
List of voices associated to a NoteOn Event. This is a list because it is common for several samples to be used simultaneously to play a note.
◆ IsOver
| bool MidiPlayerTK.MPTKEvent.IsOver |
|
get |
Check if this MIDI event has finished playing. All voices are OFF.
◆ LatenceTime
| long MidiPlayerTK.MPTKEvent.LatenceTime |
|
get |
Delta time in system time (calculated with DateTime.UtcNow.Ticks) since the creation of this event.
Mainly useful to evaluate MPTK latency. One system ticks equal 100 nano second.
- Note
- Disabled by default. Defined DEBUG_PERF_AUDIO in MidiSynth to activate for debug purpose only.
◆ LatenceTimeMillis
| long MidiPlayerTK.MPTKEvent.LatenceTimeMillis |
|
get |
Delta time in milliseconds (calculated with DateTime.UtcNow.Ticks) since the creation of this event.
Mainly useful to evaluate MPTK latency. One system ticks equal 100 nano second.
- Note
- Disabled by default. Defined DEBUG_PERF_AUDIO in MidiSynth to activate for debug purpose only.