diff --git a/Assets/Dependencies/Melanchall.meta b/Assets/Dependencies/Melanchall.meta deleted file mode 100644 index c2bf038..0000000 --- a/Assets/Dependencies/Melanchall.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8bc0313c819636b4b8ec82d24b0c623f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI.meta b/Assets/Dependencies/Melanchall/DryWetMIDI.meta deleted file mode 100644 index 18aab00..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9f38261c52828ec4db7e9d50d559f24d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Demo.meta deleted file mode 100644 index 49b9a53..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: c4846e74d9536e94b9e609edad27300e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScene.unity b/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScene.unity deleted file mode 100644 index ef3cf50..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScene.unity +++ /dev/null @@ -1,311 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 705507994} - m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641258, b: 0.5748172, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 500 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 2 - m_PVRDenoiserTypeDirect: 0 - m_PVRDenoiserTypeIndirect: 0 - m_PVRDenoiserTypeAO: 0 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 0 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &705507993 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 705507995} - - component: {fileID: 705507994} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &705507994 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 705507993} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 1 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &705507995 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 705507993} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &963194225 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 963194228} - - component: {fileID: 963194227} - - component: {fileID: 963194226} - - component: {fileID: 963194229} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &963194226 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 963194225} - m_Enabled: 1 ---- !u!20 &963194227 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 963194225} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &963194228 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 963194225} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &963194229 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 963194225} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6f6ce4d1e4dbc0c46a9fbd5716768bab, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScene.unity.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScene.unity.meta deleted file mode 100644 index a07558d..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScene.unity.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: df76419175a5d72429f0f1c8e5283a04 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Demo/DemoScene.unity - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScript.cs b/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScript.cs deleted file mode 100644 index 53c5b3f..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScript.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Linq; -using System.Text; -using Melanchall.DryWetMidi.Common; -using Melanchall.DryWetMidi.Composing; -using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; -using Melanchall.DryWetMidi.Standards; -using UnityEngine; - -public class DemoScript : MonoBehaviour -{ - private const string OutputDeviceName = "Microsoft GS Wavetable Synth"; - - private OutputDevice _outputDevice; - private Playback _playback; - - private void Start() - { - InitializeOutputDevice(); - var midiFile = CreateTestFile(); - InitializeFilePlayback(midiFile); - StartPlayback(); - } - - private void OnApplicationQuit() - { - Debug.Log("Releasing playback and device..."); - - if (_playback != null) - { - _playback.NotesPlaybackStarted -= OnNotesPlaybackStarted; - _playback.NotesPlaybackFinished -= OnNotesPlaybackFinished; - _playback.Dispose(); - } - - if (_outputDevice != null) - _outputDevice.Dispose(); - - Debug.Log("Playback and device released."); - } - - private void InitializeOutputDevice() - { - Debug.Log($"Initializing output device [{OutputDeviceName}]..."); - - var allOutputDevices = OutputDevice.GetAll(); - if (!allOutputDevices.Any(d => d.Name == OutputDeviceName)) - { - var allDevicesList = string.Join(Environment.NewLine, allOutputDevices.Select(d => $" {d.Name}")); - Debug.Log($"There is no [{OutputDeviceName}] device presented in the system. Here the list of all device:{Environment.NewLine}{allDevicesList}"); - return; - } - - _outputDevice = OutputDevice.GetByName(OutputDeviceName); - Debug.Log($"Output device [{OutputDeviceName}] initialized."); - } - - private MidiFile CreateTestFile() - { - Debug.Log("Creating test MIDI file..."); - - var patternBuilder = new PatternBuilder() - .SetNoteLength(MusicalTimeSpan.Eighth) - .SetVelocity(SevenBitNumber.MaxValue) - .ProgramChange(GeneralMidiProgram.Harpsichord); - - foreach (var noteNumber in SevenBitNumber.Values) - { - patternBuilder.Note(Melanchall.DryWetMidi.MusicTheory.Note.Get(noteNumber)); - } - - var midiFile = patternBuilder.Build().ToFile(TempoMap.Default); - Debug.Log("Test MIDI file created."); - - return midiFile; - } - - private void InitializeFilePlayback(MidiFile midiFile) - { - Debug.Log("Initializing playback..."); - - _playback = midiFile.GetPlayback(_outputDevice); - _playback.Loop = true; - _playback.NotesPlaybackStarted += OnNotesPlaybackStarted; - _playback.NotesPlaybackFinished += OnNotesPlaybackFinished; - - Debug.Log("Playback initialized."); - } - - private void StartPlayback() - { - Debug.Log("Starting playback..."); - _playback.Start(); - } - - private void OnNotesPlaybackFinished(object sender, NotesEventArgs e) - { - LogNotes("Notes finished:", e); - } - - private void OnNotesPlaybackStarted(object sender, NotesEventArgs e) - { - LogNotes("Notes started:", e); - } - - private void LogNotes(string title, NotesEventArgs e) - { - var message = new StringBuilder() - .AppendLine(title) - .AppendLine(string.Join(Environment.NewLine, e.Notes.Select(n => $" {n}"))) - .ToString(); - Debug.Log(message.Trim()); - } -} \ No newline at end of file diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScript.cs.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScript.cs.meta deleted file mode 100644 index 0537a32..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Demo/DemoScript.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 6f6ce4d1e4dbc0c46a9fbd5716768bab -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Demo/DemoScript.cs - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll deleted file mode 100644 index 80873aa..0000000 Binary files a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll and /dev/null differ diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll.meta deleted file mode 100644 index 5a5cef2..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll.meta +++ /dev/null @@ -1,40 +0,0 @@ -fileFormatVersion: 2 -guid: 18d4e48c53b364b4281db2c9fb5210b1 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.dll - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml deleted file mode 100644 index f11947c..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml +++ /dev/null @@ -1,35433 +0,0 @@ - - - - Melanchall.DryWetMidi - - - - - MIDI controller names. - - - - - Bank Select. - - - - - Modulation Wheel or Lever. - - - - - Breath Controller. - - - - - Foot Controller. - - - - - Portamento Time. - - - - - Data Entry MSB. - - - - - Channel Volume (formerly Main Volume). - - - - - Balance. - - - - - Pan. - - - - - Expression Controller. - - - - - Effect Control 1. - - - - - Effect Control 2. - - - - - General Purpose Controller 1. - - - - - General Purpose Controller 2. - - - - - General Purpose Controller 3. - - - - - General Purpose Controller 4. - - - - - LSB for Bank Select. - - - - - LSB for Modulation. - - - - - LSB for Breath Controller. - - - - - LSB for Control 3 (Undefined). - - - - - LSB for Foot Controller. - - - - - LSB for Portamento Time. - - - - - LSB for Data Entry. - - - - - LSB for Channel Volume (formerly Main Volume). - - - - - LSB for Balance. - - - - - LSB for Control 9 (Undefined). - - - - - LSB for Pan. - - - - - LSB for Expression Controller. - - - - - LSB for Effect Control 1. - - - - - LSB for Effect Control 2. - - - - - LSB for Control 14 (Undefined). - - - - - LSB for Control 15 (Undefined). - - - - - LSB for General Purpose Controller 1. - - - - - LSB for General Purpose Controller 2. - - - - - LSB for General Purpose Controller 3. - - - - - LSB for General Purpose Controller 4. - - - - - LSB for Control 20 (Undefined). - - - - - LSB for Control 21 (Undefined). - - - - - LSB for Control 22 (Undefined). - - - - - LSB for Control 23 (Undefined). - - - - - LSB for Control 24 (Undefined). - - - - - LSB for Control 25 (Undefined). - - - - - LSB for Control 26 (Undefined). - - - - - LSB for Control 27 (Undefined). - - - - - LSB for Control 28 (Undefined). - - - - - LSB for Control 29 (Undefined). - - - - - LSB for Control 30 (Undefined). - - - - - LSB for Control 31 (Undefined). - - - - - Damper Pedal On/Off (Sustain). - - - - - Portamento On/Off. - - - - - Sostenuto On/Off. - - - - - Soft Pedal On/Off. - - - - - Legato Footswitch. - - - - - Hold 2. - - - - - Sound Controller 1 (default: Sound Variation). - - - - - Sound Controller 2 (default: Timbre/Harmonic Intens.). - - - - - Sound Controller 3 (default: Release Time). - - - - - Sound Controller 4 (default: Attack Time). - - - - - Sound Controller 5 (default: Brightness). - - - - - Sound Controller 6 (default: Decay Time - see MMA RP-021). - - - - - Sound Controller 7 (default: Vibrato Rate - see MMA RP-021). - - - - - Sound Controller 8 (default: Vibrato Depth - see MMA RP-021). - - - - - Sound Controller 9 (default: Vibrato Delay - see MMA RP-021). - - - - - Sound Controller 10 (default undefined - see MMA RP-021). - - - - - General Purpose Controller 5. - - - - - General Purpose Controller 6. - - - - - General Purpose Controller 7. - - - - - General Purpose Controller 8. - - - - - Portamento Control. - - - - - High Resolution Velocity Prefix. - - - - - Effects 1 Depth (default: Reverb Send Level - see MMA RP-023; formerly External Effects Depth). - - - - - Effects 2 Depth (formerly Tremolo Depth). - - - - - Effects 3 Depth (default: Chorus Send Level - see MMA RP-023; formerly Chorus Depth). - - - - - Effects 4 Depth (formerly Celeste [Detune] Depth). - - - - - Effects 5 Depth (formerly Phaser Depth). - - - - - Data Increment (Data Entry +1; see MMA RP-018). - - - - - Data Decrement (Data Entry -1; see MMA RP-018). - - - - - Non-Registered Parameter Number (NRPN) - LSB. - - - - - Non-Registered Parameter Number (NRPN) - MSB. - - - - - Registered Parameter Number (RPN) - LSB. - - - - - Registered Parameter Number (RPN) - MSB. - - - - - Channel Mode Message: All Sound Off. - - - - - Channel Mode Message: Reset All Controllers (See MMA RP-015). - - - - - Channel Mode Message: Local Control On/Off. - - - - - Channel Mode Message: All Notes Off. - - - - - Channel Mode Message: Omni Mode Off (+ all notes off). - - - - - Channel Mode Message: Omni Mode On (+ all notes off). - - - - - Channel Mode Message: Mono Mode On (+ poly off, + all notes off). - - - - - Channel Mode Message: Poly Mode On (+ mono off, +all notes off). - - - - - Undefined Controller. - - - - - Type that is used to represent a four-bit number (0-15; or in binary format 0000-1111). - - - Four-bit numbers widely used by MIDI protocol as parameters of MIDI events - (channel number, for example). Instead of manipulating built-in .NET numeric types - (like byte or int) and checking for out-of-range errors all validation of numbers - in the [0; 15] range happens on data type level via casting .NET integer values to - the (see ). - - - - For example, to set a note's channel: - - - var noteOnEvent = new NoteOnEvent(); - noteOnEvent.Channel = (FourBitNumber)10; - - - - - - The smallest possible value of a . - - - - - The largest possible value of a . - - - - - All possible values of . - - - - - Initializes a new instance of the with the specified value. - - Value representing four-bit number. - is out of - [; ] range. - - - - Converts the string representation of a four-bit number to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing a number to convert. - When this method returns, contains the - equivalent of the four-bit number contained in , if the conversion succeeded, - or zero if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a four-bit number to its equivalent. - - A string containing a number to convert. - A equivalent to the four-bit number contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Converts the value of a to a . - - object to convert to a byte value. - represented as . - - - - Converts the value of a to a . - - Byte value to convert to a object. - represented as . - is out of [0; 15] range. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Returns the for value type . - - The enumerated constant, . - - - - Converts the value of this instance to an equivalent value using the - specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A value equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent Unicode character using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A Unicode character equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 8-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 8-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 8-bit unsigned integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 8-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 16-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 16-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 16-bit unsigned integer - using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 16-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 32-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 32-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 32-bit unsigned integer - using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 32-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 64-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 64-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 64-bit unsigned integer - using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 64-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent single-precision floating-point - number using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A single-precision floating-point number equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent double-precision floating-point - number using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A double-precision floating-point number equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent number using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A number equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent using the - specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A instance equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent using the - specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A instance equivalent to the value of this instance. - - - - Converts the value of this instance to an System.Object of the specified - that has an equivalent value, using the specified culture-specific formatting - information. - - The to which the value of this instance is converted. - An interface implementation that - supplies culture-specific formatting information. - An instance of type conversionType whose value is equivalent to - the value of this instance. - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Type that is used to represent a seven-bit number (0-127; or in binary format 0000000-1111111). - - - - Seven-bit numbers widely used by MIDI protocol as parameters of MIDI events (note number or - velocity). Instead of manipulating built-in .NET numeric types (like byte or int) - and checking for out-of-range errors all validation of numbers in the [0; 127] range happens - on data type level via casting .NET integer values to the - (see ). - - - - - For example, to set a note's number: - - - var noteOnEvent = new NoteOnEvent(); - noteOnEvent.NoteNumber = (SevenBitNumber)100; - - - or velocity: - - - var noteOffEvent = new NoteOffEvent(SevenBitNumber.MinValue, (SevenBitNumber)70); - - - where SevenBitNumber.MinValue passed to the noteNumber parameter and - (SevenBitNumber)70 passed to the velocity one. - - - - - - The smallest possible value of a . - - - - - The largest possible value of a . - - - - - All possible values of . - - - - - Initializes a new instance of the with the specified value. - - Value representing seven-bit number. - is out of - [; ] range. - - - - Converts the string representation of a seven-bit number to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing a number to convert. - When this method returns, contains the - equivalent of the seven-bit number contained in , if the conversion succeeded, - or zero if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a seven-bit number to its equivalent. - - A string containing a number to convert. - A equivalent to the seven-bit number contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Converts the value of a to a . - - object to convert to a byte value. - represented as . - - - - Converts the value of a to a . - - Byte value to convert to a object. - represented as . - is out of [0; 127] range. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Returns the for value type . - - The enumerated constant, . - - - - Converts the value of this instance to an equivalent value using the - specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A value equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent Unicode character using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A Unicode character equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 8-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 8-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 8-bit unsigned integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 8-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 16-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 16-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 16-bit unsigned integer - using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 16-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 32-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 32-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 32-bit unsigned integer - using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 32-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 64-bit signed integer using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 64-bit signed integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent 64-bit unsigned integer - using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - An 64-bit unsigned integer equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent single-precision floating-point - number using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A single-precision floating-point number equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent double-precision floating-point - number using the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A double-precision floating-point number equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent number using - the specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A number equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent using the - specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A instance equivalent to the value of this instance. - - - - Converts the value of this instance to an equivalent using the - specified culture-specific formatting information. - - An interface implementation that - supplies culture-specific formatting information. - A instance equivalent to the value of this instance. - - - - Converts the value of this instance to an System.Object of the specified - that has an equivalent value, using the specified culture-specific formatting - information. - - The to which the value of this instance is converted. - An interface implementation that - supplies culture-specific formatting information. - An instance of type conversionType whose value is equivalent to - the value of this instance. - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Provides a way to attach arbitrary data to an object. - - - - - Gets or sets a metadata associated with the current object. - - - - - Base MIDI exception class. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class with the - specified error message and a reference to the inner exception that is the - cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, - or a null reference if no inner exception is specified. - - - - Initializes a new instance of the class with serialized data. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - SMPTE format which represents the frame rate. - - - - - 24 frame/sec. - - - - - 25 frame/sec. - - - - - 29.97 frame/sec (dropped 30). - - - - - 30 frame/sec. - - - - - Represents an object that describes a chord. - - - - - Initializes a new instance of the with the specified notes, - velocity and length. - - Notes of the chord. - Velocity of the chord's notes. - Length of the chord. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets the notes of the chord. - - - - - Gets the velocity of the chord. - - - - - Gets the length of the chord. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the descriptors are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the descriptors are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Represents an object that describes a note. - - - - - Initializes a new instance of the with the specified note, - velocity and length. - - Note. - Velocity of the note. - Length of the note. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets the note. - - - - - Gets the velocity of the note. - - - - - Gets the length of the note. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the descriptors are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the descriptors are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Represents a musical pattern represented as a sequence of actions to create a musical composition. - - - Pattern allows to represent musical composition as a set of actions like 'note' or 'program change'. - In other words, it allows to create MIDI file in more musical manner. - There are two ways to get an instance of the : - - - Build a pattern from scratch with fluent API provided by . - - - Use one of extension methods within to create pattern - by processing existing one. - - - You can see examples of building musical compositions in the corresponding article. - - - - - Exports the current to track chunk. - - Tempo map to process pattern data according with. - Channel of notes that will be generated by pattern. - The containing notes events generated by the current . - is null. - - - - Exports the current to track chunk using zero channel. - - Tempo map to process pattern data according with. - The containing notes events generated by the current . - is null. - - - - Exports the current to MIDI file. - - Tempo map to process pattern data according with. - Channel of notes that will be generated by pattern. - The containing notes events generated by the current . - is null. - - - - Exports the current to MIDI file using zero channel. - - Tempo map to process pattern data according with. - The containing notes events generated by the current . - is null. - - - - Clones pattern by creating a copy of it. - - Copy of the pattern containing all actions from original one. - - - - Defines the state of a pattern action. - - - Pattern actions correspond to methods on . For example, - - creates 'Add note' action, so the state will define whether a note will be enabled, disabled or excluded - from pattern at all. - - - - - Action is enabled and will be exported to MIDI data. - - - - - Action is disabled. It will still occupy time span corresponding to the action, - but MIDI data will not be generated for it. - - - - - Action is completely excluded from pattern. It won't occupy time span and - MIDI data will not be generated. - - - - - Provides a fluent API to build an instance of the . - - - Following example shows how to create first four bars of Beethoven's 'Moonlight Sonata': - - // Define a chord for bass part which is just an octave - var bassChord = new[] { Interval.Twelve }; - - // Build the composition - var pattern = new PatternBuilder() - - // The length of all main theme's notes within four first bars is - // triplet eight so set it which will free us from necessity to specify - // the length of each note explicitly - .SetNoteLength(MusicalTimeSpan.Eighth.Triplet()) - - // Anchor current time (start of the pattern) to jump to it - // when we'll start to program bass part - .Anchor() - - // We will add notes relative to G#3. - // Instead of Octave.Get(3).GSharp it is possible to use Note.Get(NoteName.GSharp, 3) - .SetRootNote(Octave.Get(3).GSharp) - - // Add first three notes and repeat them seven times which will - // give us two bars of the main theme - // G#3 - .Note(Interval.Zero) // +0 (G#3) - .Note(Interval.Five) // +5 (C#4) - .Note(Interval.Eight) // +8 (E4) - .Repeat(3, 7) // repeat three previous notes seven times - - // Add notes of the next two bars - // G#3 - .Note(Interval.One) // +1 (A3) - .Note(Interval.Five) // +5 (C#4) - .Note(Interval.Eight) // +8 (E4) - .Repeat(3, 1) // repeat three previous notes - .Note(Interval.One) // +1 (A3) - .Note(Interval.Six) // +6 (D4) - .Note(Interval.Ten) // +10 (F#4) - .Repeat(3, 1) // repeat three previous notes - // reaching the end of third bar - .Note(Interval.Zero) // +0 (G#3) - .Note(Interval.Four) // +4 (C4) - .Note(Interval.Ten) // +10 (F#4) - .Note(Interval.Zero) // +0 (G#3) - .Note(Interval.Five) // +5 (C#4) - .Note(Interval.Eight) // +8 (E4) - .Note(Interval.Zero) // +0 (G#3) - .Note(Interval.Five) // +5 (C#4) - .Note(Interval.Seven) // +7 (D#4) - .Note(-Interval.Two) // -2 (F#3) - .Note(Interval.Four) // +4 (C4) - .Note(Interval.Seven) // +7 (D#4) - - // Now we will program bass part. To start adding notes from the - // beginning of the pattern we need to move to the anchor we set - // above - .MoveToFirstAnchor() - - // First two chords have whole length - .SetNoteLength(MusicalTimeSpan.Whole) - - // insert a chord relative to - .Chord(bassChord, Octave.Get(2).CSharp) // C#2 (C#2, C#3) - .Chord(bassChord, Octave.Get(1).B) // B1 (B1, B2) - - // Remaining four chords has half length - .SetNoteLength(MusicalTimeSpan.Half) - - .Chord(bassChord, Octave.Get(1).A) // A1 (A1, A2) - .Chord(bassChord, Octave.Get(1).FSharp) // F#1 (F#1, F#2) - .Chord(bassChord, Octave.Get(1).GSharp) // G#1 (G#1, G#2) - .Repeat() // repeat the previous chord - - // Build a pattern that can be then saved to a MIDI file - .Build(); - - - - - - Places the specified anchor at the current time. - - Anchor to place. - The current . - is null. - - - - Places an anchor at the current time. - - The current . - - - - Moves to the first specified anchor. - - Anchor to move to. - The current . - is null. - There are no anchors with the key. - - - - Move to the first anchor. - - The current . - There are no anchors. - - - - Moves to the last specified anchor. - - Anchor to move to. - The current . - is null. - There are no anchors with the key. - - - - Moves to the last anchor. - - The current . - The are no anchors. - - - - Moves to the nth specified anchor. - - Anchor to move to. - Index of an anchor to move to. - The current . - is null. - is out of range. - - - - Moves to the nth anchor. - - Index of an anchor to move to. - The current . - is out of range. - - - - Adds a chord using the specified octave, length and velocity. - - Chord to add. - Octave to resolve chord's notes. null - can be passed to use the property value (see ). - Chord's notes length. null can be passed - to use the property value (see ). - Chord's notes velocity. null can be passed - to use the property value (see ). - The current . - is null. - - - - Adds a chord by the specified intervals, root note's name, length and velocity. - - Intervals that represent the chord. - The root note's name of the chord. The note will be resolved using the current octave - (see ). - Chord's notes length. null can be passed - to use the property value (see ). - Chord's notes velocity. null can be passed - to use the property value (see ). - The current . - is null. - specified an invalid value. - - - - Adds a chord by the specified intervals relative to the root note using specified - length and velocity. - - The objects which define - a numbers of half steps from the . - The chord's root note. null can be passed - to use the property value (see ). - Chord's notes length. null can be passed - to use the property value (see ). - Chord's notes velocity. null can be passed - to use the property value (see ). - The current . - - The result chord will contain the specified root note and notes produced by transposing - the by the . - - is null. - The number of result chord's note is out of valid range. - - - - Adds a chord by the specified notes names using specified velocity and length, and default octave. - - Names of notes that represent a chord. The notes will be resolved using the current octave - (see ). - Chord's notes length. null can be passed - to use the property value (see ). - Chord's notes velocity. null can be passed - to use the property value (see ). - The current . - - To set default octave use method. By default the octave number is 4. - - is null. - - - - Adds a chord by the specified notes using specified velocity and length. - - Notes that represent a chord. - Chord's notes length. null can be passed - to use the property value (see ). - Chord's notes velocity. null can be passed - to use the property value (see ). - The current . - is null. - - - - Adds a chord using the specified octave, length and velocity. - - A chord as a string (see the corresponding article - to learn more). - Octave to resolve chord's notes. null - can be passed to use the property value (see ). - Chord's notes length. null can be passed - to use the property value (see ). - Chord's notes velocity. null can be passed - to use the property value (see ). - The current . - is null or contains white-spaces only. - has invalid format. - - - - Default velocity that will be applied to all further notes and chords if it's not - specified explicitly. Velocity can be altered with . - - - - - Default length that will be applied to all further notes and chords if it's not - specified explicitly. The length can be altered with . - - - - - Default step size that will be applied to all further move operations if it's not - specified explicitly. Step size can be altered with . - - - - - Default octave further notes and chords will be relative to if it's not - specified explicitly. Octave can be altered with . - - - - - Default root note further notes will be based on if it's not specified explicitly. - Root note can be altered with . - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified pattern. - - Pattern to initialize builder with. - - - This constructor is equivalent to calling default one followed by - call. Using this constructor pattern builder's - current position will be placed right after so all further actions - will be relative to the end of rather than zero. - - - To start with fresh pattern and place data starting from zero use - constructor. - - - is null. - - - - Gets the velocity that will be applied to all further notes and chords if it's not - specified explicitly. Velocity can be altered with . - - - - There are methods to add notes and chords that don't take velocity as an argument. In these - cases the value of the property will be used. For example, - or - . - - - - - - Gets the length that will be applied to all further notes and chords if it's not - specified explicitly. The length can be altered with . - - - - There are methods to add notes and chords that don't take length as an argument. In these - cases the value of the property will be used. For example, - or - . - - - - - - Gets the step size that will be applied to all further move operations if it's not - specified explicitly. Step size can be altered with . - - - - There are methods to move current builder's position that don't take step as an argument. In these - cases the value of the property will be used. For example, - or . - - - - - - Gets the octave further notes and chords will be relative to if it's not - specified explicitly. Octave can be altered with . - - - - There are methods to add notes and chords where octave is not specified explicitly. In these - cases the value of the property will be used. For example, - or - . - - - - - - Gets the root note further notes will be based on if it's not specified explicitly. - Root note can be altered with . - - - - There are methods to add notes by interval where root note is not specified explicitly. - In these cases the value of the property will be used. For example, - . - - - - - - Build an instance of the holding all actions - defined via builder. - - An instance of the that holds all actions - defined by the current . - - - - Replays all actions contained in the specified pattern. - - Pattern to replay actions of. - - - inserts all actions from - that were added by using methods of to produce the specified pattern. - These actions will be added as separate ones unlike which - adds pattern as one single action. - - - The current . - is null. - - - - Inserts to specify a change of a controller that will be used by following notes. - - Controller number. - Controller value. - The current . - - - - Sets a root note that will be used by next actions of the builder using - objects. - - The root note. - The current . - - Setting a root note is not an action and thus will not be stored in a pattern. - - is null. - - - - Sets default velocity that will be used by next actions of the builder. - - New default velocity of a note. - The current . - - Setting default velocity is not an action and thus will not be stored in a pattern. - - - - - Sets default note length that will be used by next actions of the builder. - - New default note length. - The current . - - Setting default note length is not an action and thus will not be stored in a pattern. - - is null. - - - - Sets default step for step back and step forward actions of the builder. - - New default step. - The current . - - Setting default step is not an action and thus will not be stored in a pattern. - - is null. - - - - Sets default note octave that will be used by next actions of the builder. - - New default octave. - The current . - - Setting default octave is not an action and thus will not be stored in a pattern. - - is null. - - - - Moves the current time by the specified step forward. - - Step to move by. - The current . - is null. - - - - Moves the current time by the default step forward. - - The current . - - To set default step use method. By default the step is 1/4. - - - - - Moves the current time by the specified step back. - - Step to move by. - The current . - is null. - - - - Moves the current time by the default step back. - - The current . - - To set default step use method. By default the step is 1/4. - - - - - Moves the current time to the specified one. - - Time to move to. - The current . - is null. - - - - Moves the current time to the previous one. - - The current . - - On every action current time is stored in the time history. To return to the last saved time - you can call the . - - - - - Moves the current time to the start (zero time) of a pattern. - - The current . - - - - Adds a note by the specified interval relative to the current root note using - specified length and velocity. - - The which defines - a number of half steps from the current root note (see ). - The length of a note. null can be passed - to use the property value (see ). - The velocity of a note. null can be passed - to use the property value (see ). - The current . - is null. - The number of result note is out of valid range. - - - - Adds a note by the specified note name using specified velocity and length, and default octave. - - The name of a note to resolve using the current octave - (see ). - The length of a note. null can be passed - to use the property value (see ). - The velocity of a note. null can be passed - to use the property value (see ). - The current . - - To set default octave use method. By default the octave number is . - - specified an invalid value. - - - - Adds a note using specified velocity and length. - - A note. - The length of a note. null can be passed - to use the property value (see ). - The velocity of a note. null can be passed - to use the property value (see ). - The current . - is null. - - - - Adds a note using specified velocity and length. - - A note as a string (see the corresponding article - to learn more). - The length of a note. null can be passed - to use the property value (see ). - The velocity of a note. null can be passed - to use the property value (see ). - The current . - is null or contains white-spaces only. - has invalid format. - - - - Adds a pattern. - - Pattern to add. - The current . - is null. - - - - Inserts to specify a pitch bend that will be used by following notes. - - Pitch value. - The current . - is out of - [; ] range. - - - - Inserts to specify an instrument that will be used by following notes. - - The number of a MIDI program. - The current . - - - - Inserts to specify an instrument that will be used by following notes. - - The General MIDI Level 1 program. - The current . - specified an invalid value. - - - - Inserts to specify an instrument that will be used by following notes. - - The General MIDI Level 2 program. - The current . - specified an invalid value. - - - - Repeats the specified number of previous actions. - - Number of previous actions to repeat. - Count of repetitions. - Settings according to which actions should be repeated. - The current . - - Note that , , - and are not - actions and will not be repeated since default values applies immediately on next actions. - - - One of the following errors occurred: - - - is negative. - - - is greater than count of existing actions. - - - is negative. - - - - - - - Repeats the previous action the specified number of times. - - Count of repetitions. - Settings according to which actions should be repeated. - The current . - - Note that , , - and are not - actions and will not be repeated since default values applies immediately on next actions. - - is negative. - There are no actions to repeat. - - - - Repeats the previous action one time. - - Settings according to which actions should be repeated. - The current . - - Note that , , - and are not - actions and will not be repeated since default values applies immediately on next actions. - - There are no actions to repeat. - - - - Adds lyrics. - - Text of lyrics. - The current . - is null. - - - - Adds a marker. - - The text of marker. - The current . - is null. - - - - Inserts notes data by the specified piano roll string. More info in the - Pattern: Piano roll article. - - String that represents notes data as a piano roll. - Settings according to which a piano roll should be handled. - The current . - is null, a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - - One of the following errors occurred: - - - Failed to parse a note. - - - Single-cell note can't be placed inside a multi-cell one. - - - Note can't be started while a previous one is not ended. - - - Note is not started. - - - - - - - Utilities to process an instance of the . - - - - - Creates a new by transforming notes in the specified pattern. - - Pattern to transform notes of. - Transformation to apply to notes of the . - A value indicating whether nested patterns should be processed or not. The - default value is true. - that created by transforming notes of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Creates a new by transforming notes in the specified pattern using predicate - to select notes to transform. - - Pattern to transform notes of. - Predicate to select notes to transform. - Transformation to apply to notes of the . - A value indicating whether nested patterns should be processed or not. The - default value is true. - that created by transforming notes of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Creates a new by transforming chords in the specified pattern. - - Pattern to transform notes of. - Transformation to apply to chords of the . - A value indicating whether nested patterns should be processed or not. The - default value is true. - that created by transforming chords of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Creates a new by transforming chords in the specified pattern using predicate - to select chords to transform.. - - Pattern to transform notes of. - Predicate to select chords to transform. - Transformation to apply to chords of the . - A value indicating whether nested patterns should be processed or not. The - default value is true. - that created by transforming chords of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Splits a pattern into subpatterns in points where the specified anchor inserted. - - Pattern to split. - Anchor to split at. - A value indicating whether empty patterns should be - automatically removed or not. The default value is true. - A collection whose elements are the subpatterns from the that is - split at . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Splits a pattern into subpatterns in points where anchors inserted. - - Pattern to split. - A value indicating whether empty patterns should be - automatically removed or not. The default value is true. - A collection whose elements are the subpatterns from the that is - split at anchors. - is null. - - - - Splits a pattern into subpatterns in points where the specified marker inserted. - - Pattern to split. - Marker to split at. - A value indicating whether empty patterns should be - automatically removed or not. The default value is true. - Value that specifies how the marker strings will be compared. - A collection whose elements are the subpatterns from the that is - split at . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Splits a pattern into subpatterns in points where markers inserted. - - Pattern to split. - A value indicating whether empty patterns should be - automatically removed or not. The default value is true. - A collection whose elements are the subpatterns from the that is - split at markers. - is null. - - - - Combines the specified patterns into single one placing them after each other. - - Patterns to combine. - Pattern that made up from following each other. - is null. - - - - Combines the specified patterns into single one starting all them at the same time (i.e. stacking patterns). - - Patterns to combine. - Pattern that made up from arranged into stack. - is null. - - - - Sets the state of notes within the specified pattern. - - Pattern to set notes state within. - Predicate to select notes to set state. - State of notes selected with . - A value indicating whether nested patterns should be processed or not. The - default value is true. - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Sets the state of chords within the specified pattern. - - Pattern to set chords state within. - Predicate to select chords to set state. - State of chords selected with . - A value indicating whether nested patterns should be processed or not. The - default value is true. - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Provides a custom action for piano roll. More info in the - Pattern: Piano roll: Customization article. - - - - - Creates a single-cell action. - - Symbol to trigger the action. - Action to execute on the . - An instance of the that holds information - of what to do when the is encountered. - - - - Creates a multi-cell action. - - Symbol to trigger the action. Cell time of the symbol - defines the start time of the action. - Symbol to finish the action, so cell time of the symbol - defines the end time of the action. - Action to execute. - An instance of the that holds information - of what to do when cells span between the and - is encountered. - - - - Provides context for a custom piano roll action. More info in the - Pattern: Piano roll: Customization article. - - - - - Get the note is being processed by the piano roll engine. - - - - - Gets the number of cells an action should take into account. For - a single-cell action this value is always 1. - - - - - Gets the length (duration) of a cells span. The number of cells within the span is . - The type of returned value is defined by the type of the - property value. - - - - - Settings to control handling of a piano roll be the - method. More info in the - Pattern: Piano roll: Customization article. - - - - - Gets or sets a symbol which means a single-cell note. The default value - is '|'. - - Space (' ') is the prohibted character. - - One of the following errors occurred: - - - The same symbol defined by the property. - - - The same symbol defined by the property. - - - The symbol used for a custom action wuthin the . - - - - - - - Gets or sets a symbol which means the start of a multi-cell note. The default value - is '['. - - Space (' ') is the prohibted character. - - One of the following errors occurred: - - - The same symbol defined by the property. - - - The same symbol defined by the property. - - - The symbol used for a custom action wuthin the . - - - - - - - Gets or sets a symbol which means the end of a multi-cell note. The default value - is ']'. - - Space (' ') is the prohibted character. - - One of the following errors occurred: - - - The same symbol defined by the property. - - - The same symbol defined by the property. - - - The symbol used for a custom action wuthin the . - - - - - - - Gets or sets a dictionary which maps specified symbols to custom actions. - - - One of the following errors occurred: - - - Actions keys contain the space (' ') symbol which is prohibited. - - - Actions keys contain the symbol defined by the - property which is prohibited. - - - Actions keys contain the symbol defined by the - property which is prohibited. - - - Actions keys contain the symbol defined by the - property which is prohibited. - - - - - - - Defines additional options for a pattern's actions repeating. - - - - - - Gets or sets a transformation for every repeated note. If set to null, - no transformation will be applied. - - - - - Gets or sets a transformation for every repeated chord. If set to null, - no transformation will be applied. - - - - - Defines a predicate to select chords from pattern. - - The index of currently processing chord. Index is continuous so - it will not be set to zero for sub-patterns. - The descriptor of a chord containing all required information - about the chord. - true if a chord should be selected and processed; otherwise, false. - - - - Defines a predicate to select notes from pattern. - - The index of currently processing note. Index is continuous so - it will not be set to zero for sub-patterns. - The descriptor of a note containing all required information - about the note. - true if a note should be selected and processed; otherwise, false. - - - - Transforms a chord described by the specified and returns - new that is result of transformation. - - Descriptor of a chord to transform. - that is result of transformation. - - - - Transforms a note described by the specified and returns - new that is result of transformation. - - Descriptor of a note to transform. - that is result of transformation. - - - - Provider of an implementation of the interface which - is appropriate for a specified MIDI file format. - - - - - Gets chunks converter which is appropriate for a passed MIDI file format. - - MIDI file format to get for. - An instance of the appropriate for - . - specified an invalid value. - is not supported. - - - - Provides a way to convert a collection of objects to - another representation according to rules defined by implementation of this - interface. - - - - - Converts collection of objects to another representation. - - Chunks collection that need to be converted. - Another representation of the collection. - - - - ID of the header chunk. This field is constant. - - - - - Initializes a new instance of the . - - - - - Reads content of a . - - - Content of a is format of the file, number of track chunks and time division. - - Reader to read the chunk's content with. - Settings according to which the chunk's content must be read. - Expected size of the content taken from the chunk's header. - Method was called after the reader's underlying stream was disposed. - An I/O error occurred on the reader's underlying stream. - The header chunk contains unknown file format and - property of the set to - . - - - - Writes content of a . - - - Content of a is format of the file, number of track chunks and time division. - Six bytes required to write all of this information. - - Writer to write the chunk's content with. - Settings according to which the chunk's content must be written. - Method was called after the writer's underlying stream was disposed. - An I/O error occurred on the writer's underlying stream. - - - - Gets size of 's content as number of bytes required to write it according - to specified . - - Settings according to which the chunk's content will be written. - Number of bytes required to write 's content. - - This method must always return 6. - - - - - Represents a chunk's identity described by its type and corresponding ID. - - - - - Initializes a new instance of the with the specified type and ID. - - Type of a chunk. - 4-character ID of a chunk. - - - - Gets the type of chunks described by this instance of the . - - - - - Gets the ID of chunks described by this instance of the . - - - - - Collection of objects which provide identity information of a chunk. - - - - - Adds chunk type along with the corresponding ID. - - Type of chunk. - ID of chunk. - - One of the following errors occurred: - - - is null. - - - is null. - - - - Chunk type specified by and - already exists in the . - - - - Gets the chunk type associated with the specified ID. - - ID of the chunk type to get. - When this method returns, contains the chunk type associated with - the specified ID, if ID is found; otherwise, null. This parameter is passed - uninitialized. - true if the contains a chunk type with the - specified ID; otherwise, false. - - - - Gets the ID associated with the specified chunk type. - - Chunk type to get ID for. - When this method returns, contains the ID associated with the specified - chunk type, if the type is found; otherwise, null. This parameter is passed uninitialized. - true if the contains an ID for the - specified chunk type; otherwise, false. - - - - Returns an enumerator that iterates through a collection. - - An enumerator that can be used to iterate through the collection. - - - - Returns an enumerator that iterates through a collection. - - An enumerator that can be used to iterate through the collection. - - - - Represents a chunk of Standard MIDI file. - - - - MIDI files are made up of chunks. Each chunk has a 4-character type ID and a 32-bit length, - which is the number of bytes in the chunk. You manage chunks via property - of the . - - - There are two standard types of MIDI chunks: header chunk and track chunk. The first one will - not be presented in the . Its data is used by the reading engine to set properties - of the such as and . You cannot add header - chunks in the chunks collection of the file since an appropriate one will be written by writing engine automatically - on or - . - - - The structure of a MIDI chunk allows any custom chunks be placed in a MIDI file along with the standard - ones described above. You can implement custom chunks that can be read from and written to a MIDI - file. See Custom chunks article to learn more. If you doesn't specify information - about your custom chunk types the reading engine will read them as instances of the class where - property will hold chunk's data and will hold the ID of a chunk. - - - See for detailed MIDI file specification. - - - - - - The length of a chunk's ID. This field is constant. - - - - - Initializes a new instance of the with the specified ID. - - The type of the chunk. - - is null. - - - is empty, or consists only of white-space characters; or - length of doesn't equal 4. - - - - - Gets 4-character ID of the chunk which specifies its type. - - - - - Clones chunk by creating a copy of it. - - Copy of the chunk. - - - - Returns array of IDs of standard chunks. - - - Standard chunks are header chunk (ID is MThd) and track chunk (ID is MTrk). - - Array of IDs of standard chunks. - - - - Determines whether two specified objects have the same content. - - The first chunk to compare, or null. - The second chunk to compare, or null. - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content. - - The first chunk to compare, or null. - The second chunk to compare, or null. - Message containing information about what exactly is different in - and . - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content. - - The first chunk to compare, or null. - The second chunk to compare, or null. - Settings according to which chunks should be compared. - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content using - the specified comparison settings. - - The first chunk to compare, or null. - The second chunk to compare, or null. - Settings according to which chunks should be compared. - Message containing information about what exactly is different in - and . - true if the is equal to the ; - otherwise, false. - - - - Reads chunk from the 's underlying stream according to - specified . - - Reader to read the chunk's data with. - Settings according to which the chunk's data must be read. - Method was called after - was disposed. - An I/O error occurred on the 's - underlying stream. - Actual chunk's size differs from the one declared - in its header. - Size of the chunk cannot be read since the reader's - underlying stream doesn't have enough bytes. - - - - Writes chunk to the 's underlying stream according to - specified . - - Writer to write the chunk's data with. - Settings according to which the chunk's data must be written. - - Method was called after was disposed. - - - An I/O error occurred on the 's underlying stream. - - - - - Reads content of a chunk. Content is a part of chunk's data without its header (ID and size). - - Reader to read the chunk's content with. - Settings according to which the chunk's content must be read. - Expected size of the content taken from the chunk's header. - - - - Writes content of a chunk. Content is a part of chunk's data without its header (ID and size). - - Writer to write the chunk's content with. - Settings according to which the chunk's content must be written. - - - - Gets size of chunk's content as number of bytes required to write it according to specified - . - - Settings according to which the chunk's content will be written. - Number of bytes required to write chunk's content. - - - - Represents a track chunk of a standard MIDI file. - - - - See for detailed MIDI file specification. - - - - - - ID of the track chunk. This field is constant. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified events. - - Events to add to the track chunk. - - Note that End Of Track events cannot be added into the collection since it may cause inconsistency in a - track chunk structure. End Of Track event will be written to the track chunk automatically on - . - - is null. - - - - Initializes a new instance of the with the specified events. - - Events to add to the track chunk. - - Note that End Of Track events cannot be added into the collection since it may cause inconsistency in a - track chunk structure. End Of Track event will be written to the track chunk automatically on - . - - is null. - contain an instance of ; or - contain null. - - - - - Gets the collection of events contained in the track chunk. - - - - - Clones chunk by creating a copy of it. - - Copy of the chunk. - - - - Reads content of a . - - - Content of a is collection of MIDI events. - - Reader to read the chunk's content with. - Settings according to which the chunk's content must be read. - Expected size of the content taken from the chunk's header. - Method was called after the writer's underlying stream - was disposed. - An I/O error occurred on the writer's underlying stream. - Unexpected running status is encountered. - Reader has encountered an unknown channel event. - Not enough bytes to read an event. - Value of a channel event's parameter just - read is invalid. - Track chunk doesn't end with End Of Track event. - - - - Writes content of a . - - - Content of a is collection of MIDI events. - - Writer to write the chunk's content with. - Settings according to which the chunk's content must be written. - Method was called after the writer's underlying stream was disposed. - An I/O error occurred on the writer's underlying stream. - - - - Gets size of 's content as number of bytes required to write it according - to specified . - - Settings according to which the chunk's content will be written. - Number of bytes required to write 's content. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents an unknown chunk. - - - - Structure of MIDI file chunks allows custom chunks be implemented and written to a MIDI file. - Chunks DryWetMIDI doesn't know about will be read as an instances of the . - - - See for detailed MIDI file specification. - - - - - - Initializes a new instance of the with the specified ID. - - Chunk's ID. - - - - Gets data contained in the current . - - - - - Clones chunk by creating a copy of it. - - Copy of the chunk. - - - - Reads content of a . - - - Content of an is array of bytes. - - Reader to read the chunk's content with. - Settings according to which the chunk's content must be read. - Expected size of the content taken from the chunk's header. - Method was called after the reader's underlying stream was disposed. - An I/O error occurred on the reader's underlying stream. - - - - Writes content of a . - - - Content of an is array of bytes. - - Writer to write the chunk's content with. - Settings according to which the chunk's content must be written. - Method was called after the writer's underlying stream was disposed. - An I/O error occurred on the writer's underlying stream. - - - - Gets size of 's content as number of bytes required to write it according - to the specified . - - Settings according to which the chunk's content will be written. - Number of bytes required to write 's content. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Collection of objects. - - - - - Gets or sets the chunk at the specified index. - - The zero-based index of the chunk to get or set. - The chunk at the specified index. - - is less than 0; or is equal to or greater than - . - - value is null. - - - - Gets the number of chunks contained in the collection. - - - - - Gets a value indicating whether the is read-only. - - - - - Adds a chunk to the end of the collection. - - The chunk to be added to the end of the collection. - - Note that header chunks cannot be added into the collection since it may cause inconsistency in the file structure. - Header chunk with appropriate information will be written to a file automatically on - . - - is null. - - - - Adds chunks the end of the collection. - - Chunks to add to the collection. - - Note that header chunks cannot be added into the collection since it may cause inconsistency in the file structure. - Header chunk with appropriate information will be written to a file automatically on - . - - is null. - - - - Inserts a chunk into the collection at the specified index. - - - Note that header chunks cannot be inserted into the collection since it may cause inconsistency in the file structure. - Header chunk with appropriate information will be written to a file automatically on - . - - The zero-based index at which the chunk should be inserted. - The chunk to insert. - is null. - - One of the following errors occurred: - - - is less than 0. - - - is greater than . - - - - - - - Inserts a set of chunks into the collection at the specified index. - - - Note that header chunks cannot be inserted into the collection since it may cause inconsistency in the file structure. - Header chunk with appropriate information will be written to a file automatically on - . - - The zero-based index at which the chunk should be inserted. - The chunk to insert. - is null. - - One of the following errors occurred: - - - is less than 0. - - - is greater than . - - - - - - - Removes the first occurrence of a specific chunk from the collection. - - The chunk to remove from the collection. The value cannot be null. - true if chunk is successfully removed; otherwise, false. This method also returns - false if chunk was not found in the collection. - is null. - - - - Removes the chunk at the specified index of the collection. - - The zero-based index of the chunk to remove. - is less than 0; or - is equal to or greater than . - - - - Removes all the chunks that match the conditions defined by the specified predicate. - - The delegate that defines the conditions - of the chunks to remove. - The number of chunks removed from the . - is null. - - - - Searches for the specified chunk and returns the zero-based index of the first - occurrence within the entire . - - The chunk to locate in the . - The zero-based index of the first occurrence of chunk within the entire - , if found; otherwise, –1. - is null. - - - - Removes all chunks from the . - - - - - Returns an enumerator that iterates through the . - - An enumerator for the . - - - - Returns an enumerator that iterates through the . - - An enumerator for the . - - - - Determines whether the contains a specific chunk. - - The chunk to locate in the . - true if chunk is found in the ; otherwise, false. - - - - Copies the elements of the to an , - starting at a particular index. - - The one-dimensional that is the destination of - the elements copied from . The array must have zero-based - indexing. - The zero-based index in array at which copying begins. - is null. - is less than 0. - The number of elements in the source - is greater than the available space from to the end of the destination - array. - - - - Collection of objects. - - - - - Initializes a new instance of the . - - - - - Gets or sets the event at the specified index. - - The zero-based index of the event to get or set. - The event at the specified index. - is less than 0; - or is equal to or greater than . - value is null. - - - - Gets the number of events contained in the collection. - - - - - Gets a value indicating whether the is read-only. - - - - - Adds an event to the end of collection. - - The event to be added to the end of the collection. - - Note that End Of Track events cannot be added into the collection since it may cause inconsistency in a - track chunk structure. End Of Track event will be written to the track chunk automatically on - . - - is null. - - - - Adds events to the end of collection. - - Events to be added to the end of the collection. - - Note that End Of Track events cannot be added into the collection since it may cause inconsistency in a - track chunk structure. End Of Track event will be written to the track chunk automatically on - . - - is null. - - - - Inserts an event into the collection at the specified index. - - - Note that End Of Track events cannot be added into the collection since it may cause inconsistency in a - track chunk structure. End Of Track event will be written to the track chunk automatically on - a MIDI file writing. - - The zero-based index at which the event should be inserted. - The event to insert. - is null. - - One of the following errors occurred: - - - is less than 0. - - - is greater than . - - - - - - - Inserts a set of events into the collection at the specified index. - - - Note that End Of Track events cannot be added into the collection since it may cause inconsistency in a - track chunk structure. End Of Track event will be written to the track chunk automatically on - a MIDI file writing. - - The zero-based index at which the events should be inserted. - The events to insert. - is null. - - One of the following errors occurred: - - - is less than 0. - - - is greater than . - - - - - - - Removes the first occurrence of a specific event from the collection. - - The event to remove from the collection. The value cannot be null. - true if event is successfully removed; otherwise, false. This method also returns - false if event was not found in the collection. - is null. - - - - Removes the event at the specified index of the collection. - - The zero-based index of the event to remove. - is less than 0; or - is equal to or greater than . - - - - Removes all the events that match the conditions defined by the specified predicate. - - The delegate that defines the conditions - of the events to remove. - The number of events removed from the . - is null. - - - - Searches for the specified event and returns the zero-based index of the first - occurrence within the entire . - - The event to locate in the . - The zero-based index of the first occurrence of event within the entire - , if found; otherwise, –1. - is null. - - - - Removes all events from the . - - - - - Returns an enumerator that iterates through the . - - An enumerator for the . - - - - Returns an enumerator that iterates through the . - - An enumerator for the . - - - - Determines whether the contains a specific event. - - The event to locate in the . - true if event is found in the ; otherwise, false. - - - - Copies the elements of the to an , - starting at a particular index. - - The one-dimensional that is the destination of - the elements copied from . The array must have zero-based - indexing. - The zero-based index in array at which copying begins. - is null. - is less than 0. - The number of elements in the source - is greater than the available space from to the end of the destination - array. - - - - Holds settings according to which objects should - be compared for equality. - - - - - Gets or sets settings according to which objects should - be compared for equality. - - - - - Holds settings according to which objects should - be compared for equality. - - - - - Gets or sets a value indicating whether values - should be compared or not. The default value is true. - - - - - Gets or sets a value that specifies the rules for the comparison of text data (in meta events). - The default value is . - - specified an invalid value. - - - - Holds settings according to which objects should - be compared for equality. - - - - - Gets or sets a value indicating whether values - should be compared or not. - - - In objects created by reading MIDI data from file or stream - is always set if format was valid. But if format was invalid or - is created from scratch using constrictor, the property will throw - exception so you may want to exclude this property from comparison process. - - - - - Gets or sets settings according to which objects should - be compared for equality. - - - - - Represents a MIDI file channel event. - - - - - Initializes a new instance of the with the specified parameters count. - - The type of event. - - - - Gets or sets channel for this event. - - - - - Reads channel event's data byte using the specified reader and settings. - - Reader to read data byte with. - Settings according to which a data byte should be read and processed. - A data byte read with . - - - - Represents a MIDI file meta event. - - - - Meta event specifies non-MIDI information useful to specific applications. - - - As with chunks, future meta events may be designed which may not be known to - existing programs, so programs must properly ignore meta events which they do not recognize, and indeed, - should expect to see them. Programs must never ignore the length of a meta-event which they do recognize, - and they shouldn't be surprised if it's bigger than they expected. If so, they must ignore everything past - what they know about. However, they must not add anything of their own to the end of a meta-event. - - - You can create custom meta events that can be read from and written to a MIDI file. - See Custom meta events article to learn more. - - - See for detailed MIDI file specification. - - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified event type. - - The type of event. - - - - Reads content of a MIDI event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Returns array of status bytes of standard meta events. - - Array of status bytes of standard meta events. - - This method can be used for choosing status byte for custom meta event to prevent - the status byte is equal to one of the standard ones. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Represents a MIDI file event stored in a track chunk. - - - - See for detailed MIDI file specification. - - - - - - Constant for content's size of events that don't have size information stored. - - - - - Initializes a new instance of the with the specified event type. - - The type of event. - - - - Gets the type of the event. - - - - - Gets or sets delta-time of the event. - - - Delta-time represents the amount of time before the following event. If the first event in a track - occurs at the very beginning of a track, or if two events occur simultaneously, a delta-time of zero is used. - Delta-time is in some fraction of a beat (or a second, for recording a track with SMPTE times), as specified - by the file's time division. - - Delta-time is negative. - - - - Reads content of a MIDI event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Determines whether two specified objects have the same content. - - The first event to compare, or null. - The second event to compare, or null. - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content. - - The first event to compare, or null. - The second event to compare, or null. - Message containing information about what exactly is different in - and . - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content. - - The first event to compare, or null. - The second event to compare, or null. - Settings according to which events should be compared. - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content using - the specified comparison settings. - - The first event to compare, or null. - The second event to compare, or null. - Settings according to which events should be compared. - Message containing information about what exactly is different in - and . - true if the is equal to the ; - otherwise, false. - - - - The type of a MIDI event. - - - - - Normal system exclusive event. - - - - - "Escape" system exclusive event which defines an escape sequence. - - - - - Sequence Number meta event. - - - - - Text meta event. - - - - - Copyright Notice meta event. - - - - - Sequence/Track Name meta event. - - - - - Instrument Name meta event. - - - - - Lyric meta event. - - - - - Marker meta event. - - - - - Cue Point meta event. - - - - - Program Name meta event. - - - - - Device Name meta event. - - - - - MIDI Channel Prefix meta event. - - - - - MIDI Port meta event. - - - - - End of Track meta event. - - - - - Set Tempo meta event. - - - - - SMPTE Offset meta event. - - - - - Time Signature meta event. - - - - - Key Signature meta event. - - - - - Sequencer Specific meta event. - - - - - Unknown meta event. - - - - - Custom meta event. - - - - - Note Off event. - - - - - Note On event. - - - - - Polyphonic Key Pressure (Aftertouch) event. - - - - - Control Change event. - - - - - Program Change event. - - - - - Channel Pressure (Aftertouch) event. - - - - - Pitch Bend Change event. - - - - - Timing Clock event. - - - - - Start event. - - - - - Continue event. - - - - - Stop event. - - - - - Active Sensing event. - - - - - Reset event. - - - - - MIDI Time Code (MIDI Quarter Frame) event. - - - - - Song Position Pointer event. - - - - - Song Select event. - - - - - Tune Request event. - - - - - Represents a MIDI file system exclusive event. - - - System exclusive events are used to specify a MIDI system exclusive message, either as one unit or in packets, - or as an "escape" to specify any arbitrary bytes to be transmitted. - - - - - The value indicating the end of a system exclusive event. - - - - - Initializes a new instance of the with the specified event type. - - The type of event. - - - - Gets a value indicating whether this system exclusive event is completed or not. - - - - - Gets or sets the event's data. - - - - - Reads content of a MIDI event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Represents a system common event. - - - MIDI system common messages are those MIDI messages that prompt all devices on - the MIDI system to respond (are not specific to a MIDI channel), but do not - require an immediate response from the receiving MIDI devices. - - - - - Initializes a new instance of the with the specified event type. - - The type of event. - - - - Represents a system real-time event. - - - MIDI system realtime messages are messages that are not specific to a MIDI channel but - prompt all devices on the MIDI system to respond and to do so in real time. - - - - - Initializes a new instance of the with the specified event type. - - The type of event. - - - - Represents a Channel Pressure (Aftertouch) message. - - - This message is most often sent by pressing down on the key after it "bottoms out". - This message is different from polyphonic after-touch. Use this message to send the - single greatest pressure value (of all the current depressed keys). - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - aftertouch (pressure) value. - - Aftertouch (pressure) value. - - - - Gets or sets aftertouch (pressure) value. - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Control Change message. - - - This message is sent when a controller value changes. Controllers include devices - such as pedals and levers. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - controller number and controller value. - - Controller number. - Controller value. - - - - Gets or sets controller number. - - - - - Gets or sets controller value. - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Polyphonic Key Pressure (Aftertouch) message. - - - This message is most often sent by pressing down on the key after it "bottoms out". - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - note number and aftertouch (pressure) value. - - Note number. - Aftertouch (pressure) value. - - - - Gets or sets note number. - - - - - Gets or sets aftertouch (pressure) value. - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Base class that represents a Note On or a Note Off message. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - note number and velocity. - - The type of event. - Note number. - Velocity. - specified an invalid value. - - - - Gets or sets note number. - - - - - Gets or sets velocity. - - - - - Represents a Note Off message. - - - This message is sent when a note is released (ended). - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - note number and velocity. - - Note number. - Velocity. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Note On message. - - - This message is sent when a note is depressed (start). - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - note number and velocity. - - Note number. - Velocity. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Pitch Bend Change message. - - - This message is sent to indicate a change in the pitch bender (wheel or lever, typically). - The pitch bender is measured by a fourteen bit value. Center (no pitch change) is 0x2000. - - - - - Represents the smallest possible pitch value. - - - - - Represents the largest possible pitch value. - - - - - Represents the default pitch value which means no pitch bend applied. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - pitch value. - - Pitch value. - is out of - [; ] range. - - - - Gets or sets pitch value. - - is out of - [; ] range. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Program Change message. - - - This message sent when the patch number changes. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - program number. - - Program number. - - - - Gets or sets program (patch) number. - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Defines format of a MIDI data bytes. Depending on this format the specific - MIDI data reading/writing rules can be applied. - - - - If format specified, a system exclusive bytes layout is - F0 <length> <bytes to be transmitted after F0>, and 0xFF - status byte means a meta event. - - - If format specified, a system exclusive bytes layout is - F0 <bytes to be transmitted after F0>, and 0xFF - status byte means Reset system real-time event. - - - - - - Format used by MIDI files. - - - - - Format used in communication with MIDI devices. - - - - - Provides methods to convert bytes to an instance of the . - - - - - Initializes a new instance of the with the specified - initial capacity of internal buffer. - - Initial capacity of the internal buffer. - is negative. - - - - Initializes a new instance of the . - - - - - Gets or sets reaction of the reading engine on unknown channel event. The default is - . - - - If is used, an instance of the - will be thrown if channel event has unknown status byte. - - specified an invalid value. - - - - Gets or sets a callback used to read unknown channel event if - set to . - - - - - Gets or sets reaction of the reading engine on Note On events with velocity of zero. - The default is . - - - Although it is recommended to treat silent Note On event as Note Off you can turn - this behavior off to get original event. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on invalid value of a channel event's - parameter value. The default is . - - - Valid values are 0-127 so, for example, 128 is the invalid one - and will be processed according with this policy. If - is used, an instance of the will be thrown if - event's parameter value just read is invalid. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on invalid value of a meta event's - parameter value. The default is . - - - For example, 255 is the invalid value for the - and will be processed according with this policy. If - is used, an instance of the will be thrown if event's - parameter value just read is invalid. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on invalid value of a system common event's - parameter value. The default is . - - - For example, 255 is the invalid value for the - and will be processed according with this policy. If - is used, an instance of the will be thrown if event's - parameter value just read is invalid. - - specified an invalid value. - - - - Gets or sets collection of custom meta events types. - - - Types within this collection must be derived from the - class and have parameterless constructor. No exception will be thrown - if some types don't meet these requirements. - - - - - Gets or sets an that will be used to read the text of a - text-based meta events. The default is . - - - Value of this property will be used only if is not set. - - - - - Gets or sets a callback used to decode a string from the specified bytes during reading a text-based - meta event's text. The default is null. - - - If callback is not set, will be used. - - - - - Gets or sets reaction of the reading engine on zero-length objects such as strings or arrays. - The default is . - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on lack of bytes in the underlying stream - that are needed to read MIDI data (for example, DWORD requires 4 bytes available). - The default is . - - - If is used, an instance of the - will be thrown if the reader's underlying stream doesn't - have enough bytes to read MIDI data. - - specified an invalid value. - - - - Gets or sets a value indicating whether incoming bytes array contains delta-times before - each event data (and thus they must be read) or not. The default value is false. - - - - - Gets or sets the format of source bytes layout. The default is . - - specified an invalid value. - - - - Converts sub-array of the specified bytes to a collection of . - - Bytes to take sub-array from. - Offset of sub-array to read MIDI events from. - Length of sub-array to read MIDI events from. - Collection of read from starting from - and taking of bytes. - is null. - is an empty array. - - One of the following errors occurred: - - - is out of range. - - - is out of range. - - - - Value of a channel event's parameter - just read is invalid (is out of [0; 127] range) and that should be treated as error according to the - . - Value of a meta event's parameter - just read is invalid and that should be treated as error according to the - . - MIDI events data cannot be read since the sub-array - doesn't have enough bytes and that should be treated as error according to the . - Unexpected running status is encountered. - - - - Converts the specified bytes to a collection of . - - Bytes to convert to collection of . - Collection of read from . - is null. - is an empty array. - Value of a channel event's parameter - just read is invalid (is out of [0; 127] range) and that should be treated as error according to the - . - Value of a meta event's parameter - just read is invalid and that should be treated as error according to the - . - MIDI events data cannot be read since the sub-array - doesn't have enough bytes and that should be treated as error according to the . - Unexpected running status is encountered. - - - - Converts the specified status byte and data bytes to an instance of the . - - The status byte of MIDI event. - Data bytes of MIDI event (bytes except status byte). Can be null - if MIDI event has no data bytes. - read from and . - - - - Converts the specified bytes to an instance of the . First byte is - the status byte of MIDI event. If bytes array contains multiple events, only first one will be read. - - - Use or to read - multiple events. - - Bytes representing a MIDI event. - read from . - is null. - is an empty array. - - - - Converts sub-array of the specified bytes to an instance of the . First byte - at the specified offset is the status byte of MIDI event. If sub-array contains multiple events, only - first one will be read. - - - Use or to read - multiple events. - - Bytes to take sub-array from. - Offset of sub-array to read MIDI event from. - Length of sub-array to read MIDI event from. - read from starting from - and taking of bytes. - is null. - is an empty array. - - One of the following errors occurred: - - - is out of range. - - - is out of range. - - - - - - - Releases all resources used by the current instance of the class. - - - - - Provides methods to convert an instance of the to bytes. - - - - - Initializes a new instance of the with the specified - initial capacity of internal buffer. - - Initial capacity of the internal buffer. - is negative. - - - - Initializes a new instance of the . - - - - - Gets or sets a value indicating whether 'running status' (to turn off writing of the status - bytes of consecutive events of the same type) should be used or not. The default value is false. - - - - - Gets or sets a value indicating whether Note Off events should be written as Note On ones - with velocity of zero, or not. In conjunction with set to true - can give some compression of MIDI data. The default value is false. - - - - - Gets or sets collection of custom meta events types. - - - Types within this collection must be derived from the - class and have parameterless constructor. No exception will be thrown - while writing a MIDI file if some types don't meet these requirements. - - - - - Gets or sets an that will be used to write the text of a - text-based meta event. The default is . - - - - - Gets or sets a value indicating whether delta-times of events must be written to bytes - array or not. The default value is false. - - - - - Gets or sets the format of target bytes layout. The default is . - - specified an invalid value. - - - - Converts an instance of the to bytes array. - - MIDI event to convert. - Array of bytes representing . - is null. - - - - Converts an instance of the to bytes array using the specified - minimum size of resulting array. - - MIDI event to convert. - Minimum size of bytes array representing . - Array of bytes representing . - is null. - is negative. - - - - Converts collection of to bytes array. - - MIDI events to convert. - Array of bytes representing . - is null. - - - - Releases all resources used by the current instance of the class. - - - - - Represents an event's identity described by its type and corresponding status byte. - - - - - Initializes a new instance of the with the specified type and - status byte. - - Type of an event. - Status byte of an event. - - - - Gets the type of events described by this instance of the . - - - - - Gets the status byte of events described by this instance of the . - - - - - Collection of objects which provide identity information of an event. - - - - - Adds event type along with the corresponding status byte. - - Type of event. - Status byte of event. - is null. - Event type specified by and - already exists in the . - - - - Gets the event type associated with the specified status byte. - - The status byte of the event type to get. - When this method returns, contains the event type associated with - the specified status byte, if the status byte is found; otherwise, null. This parameter - is passed uninitialized. - true if the contains an event type with the - specified status byte; otherwise, false. - - - - Gets the status byte associated with the specified event type. - - Event type to get status byte for. - When this method returns, contains the status byte associated with - the specified event type, if the type is found; otherwise, 0. This parameter is passed - uninitialized. - true if the contains a status byte for the - specified event type; otherwise, false. - - - - Returns an enumerator that iterates through a collection. - - An enumerator that can be used to iterate through the collection. - - - - Returns an enumerator that iterates through a collection. - - An enumerator that can be used to iterate through the collection. - - - - Represents a text meta event. - - - There are several meta events that have text content and the same structure. All these - events are derived from . - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified text. - - The type of event. - Text contained in the event. - specified an invalid value. - - - - Gets or sets text contained in the event. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - Text event cannot be read since the size is - negative number. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Represents a MIDI Channel Prefix meta event. - - - The MIDI channel prefix meta message specifies a MIDI channel so that meta messages that - follow are specific to a channel. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified MIDI channel. - - MIDI channel. - - - - Gets or sets MIDI channel. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Copyright Notice meta event. - - - The MIDI copyright notice meta message places a copyright notice in a MIDI file. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified text of copyright notice. - - Text of copyright notice. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Cue Point meta event. - - - The MIDI cue point meta message denotes a cue in a MIDI file, usually to signify - the beginning of an action. It can describe something that happens within a film, - video or stage production at that point in the musical score. E.g. 'Car crashes', - 'Door opens', etc. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified text of cue. - - Text of the cue. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Device Name meta event. - - - This optional event is used to identify the hardware device used to produce - sounds for this track. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified device name. - - Name of the device. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents an End Of Track meta event. - - - The MIDI end of track meta message denotes the end of a MIDI track. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents an Instrument Name meta event. - - - The MIDI instrument name meta message shows the name of the instrument used in the - current track. This optional event is used to provide a textual clue regarding the - intended instrumentation for a track (e.g. 'Piano' or 'Flute', etc). If used, it is - recommended to place this event near the start of a track. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified instrument name. - - Name of the instrument. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Key Signature meta event. - - - The MIDI key signature meta message specifies the key signature and scale of a MIDI file. - - - - - Default key (C). - - - - - Default scale (major). - - - - - Represents the smallest possible key value. - - - - - Represents the largest possible key value. - - - - - Represents the smallest possible scale value. - - - - - Represents the largest possible scale value. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified key and scale. - - The number of flats (if negative) or - sharps (if positive). - The scale (0 for major or 1 for minor). - - One of the following errors occurred: - - - is out of [; ] range. - - - is out of [; ] range. - - - - - - - Gets or sets key signature in terms of number of flats (if negative) or - sharps (if positive). - - is out of - [; ] range. - - - - Gets or sets scale (0 for major or 1 for minor). - - is out of - [; ] range. - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Lyric meta event. - - - The MIDI lyrics meta message shows the lyrics of a song at a particular time in the MIDI sequence. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified text of lyrics. - - Text of the lyrics. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Marker meta event. - - - The MIDI marker meta message marks a point in time for a MIDI sequence. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified text of marker. - - Text of the marker. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a MIDI Port meta event. - - - This optional event specifies the MIDI output port on which data within a track chunk - will be transmitted. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified port. - - MIDI port. - - - - Gets or sets MIDI port. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Program Name meta event. - - - This optional event is used to embed the patch/program name that is called up by the - immediately subsequent Bank Select and Program Change messages. It serves to aid the - end user in making an intelligent program choice when using different hardware. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified program name. - - Name of the program. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Sequence Number meta event. - - - The MIDI sequence number meta message defines the number of a sequence in type 0 and 1 MIDI files, - or the pattern number in type 2 MIDI files. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified number of a sequence. - - The number of a sequence. - - - - Gets or sets the number of a sequence. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Sequencer Specific meta event. - - - The MIDI sequencer specific meta message carries information that is specific to a - MIDI sequencer produced by a certain MIDI manufacturer. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified data. - - Sequencer specific data. - - - - Gets or sets sequencer specific data. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - Sequencer specific event cannot be read since the size is - negative number. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Sequence/Track Name meta event. - - - The MIDI track name meta message defines either the name of a MIDI sequence - (when in MIDI type 0 or MIDI type 2 files, or when in the first track of a MIDI type 1 file), - or the name of a MIDI track (when in other tracks of a MIDI type 1 file). - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified sequence or track name. - - Name of a sequence or track. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Set Tempo meta event. - - - The MIDI set tempo meta message sets the tempo of a MIDI sequence in terms - of microseconds per quarter note. - - - - - Default tempo. - - - - - Represents the smallest possible microseconds-per-quarter-note value. - - - - - Represents the largest possible microseconds-per-quarter-note value. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified number of microseconds per quarter note. - - Number of microseconds per quarter note. - is out of - [; ] range. - - - - Gets or sets number of microseconds per quarter note. - - is out of - [; ] range. - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a SMPTE Offset meta event. - - - The MIDI SMPTE offset meta message specifies an offset for the starting point - of a MIDI track from the start of a sequence in terms of SMPTE time - (hours:minutes:seconds:frames:subframes). - - - - - Represents the largest possible hours value. - - - - - Represents the largest possible minutes value. - - - - - Represents the largest possible seconds value. - - - - - Represents the largest possible sub-frames value. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified SMPTE format, hours, minutes, seconds, number of frames and sub-frames. - - SMPTE format. - Number of hours. - Number of minutes. - Number of seconds. - Number of frames. - Number of sub-frames. - specified an invalid value. - - One of the following errors occurred: - - - is out of valid range. - - - is out of valid range. - - - is out of valid range. - - - is out of valid range. - - - is out of valid range. - - - - - - - Gets or sets SMPTE format. - - - - - Gets or sets number of hours. - - Hours number is out of valid range (0-23). - - - - Gets or sets number of minutes. - - Minutes number is out of valid range (0-59). - - - - Gets or sets number of seconds. - - Seconds number is out of valid range (0-59). - - - - Gets or sets number of frames. - - Frames number is out of valid range. - - Maximum valid value for the depends on the frame rate specified by the - : 23 for , 24 for , - 28 for and 29 for . - - - - - Gets or sets number of sub-frames. - - Sub-frames number is out of valid range (0-99). - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Text meta event. - - - The MIDI text meta message defines some text to be carried within a MIDI file. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified text. - - Text of the message. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a Time Signature meta event. - - - The MIDI time signature meta message defines the musical time signature of a MIDI sequence. - - - - - Numerator of the default time signature. - - - - - Denominator of the default time signature. - - - - - Default number of MIDI clock ticks per metronome click. - - - - - Default number of 32nd notes per beat. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified numerator and denominator. - - Numerator of the time signature. - Denominator of the time signature. - is zero or is not a - power of two. - - - - Initializes a new instance of the with the - specified numerator, denominator, number of MIDI clocks per metronome click - and number of 32nd notes per beat. - - Numerator of the time signature. - Denominator of the time signature. - Number of MIDI clocks per metronome click. - Number of 32nd notes per beat. - is zero or is not a - power of two. - - - - Gets or sets numerator of the time signature. - - - - - Gets or sets denominator of the time signature. - - Denominator is zero or is not a - power of two. - - - - Gets or sets number of MIDI clock ticks per metronome click. - - - - - Gets or sets number of 32nd notes per beat. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents an unknown meta event. - - - Structure of meta events allows custom ones be implemented and stored within a MIDI file. - Any meta event DryWetMIDI doesn't know about will be read as an instance of the - . - - - - - Initializes a new instance of the with the - specified status byte. - - Status byte of the meta event. - - - - Initializes a new instance of the with the - specified status byte and data. - - Status byte of the meta event. - Data of an unknown meta event. - - - - Gets the status byte of the meta event. - - - - - Gets the content of the meta event as array of bytes. - - - - - Reads content of a MIDI meta event. - - Reader to read the content with. - Settings according to which the event's content must be read. - Size of the event's content. - Unknown meta event cannot be read since the size is - negative number. - - - - Writes content of a MIDI meta event. - - Writer to write the content with. - Settings according to which the event's content must be written. - - - - Gets the size of the content of a MIDI meta event. - - Settings according to which the event's content must be written. - Size of the event's content. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Provides a way to get for an event. - - - - - Gets for an event with the specified status byte. - - Status byte to get reader for. - Indicates whether only reader for SMF events should be returned or not. - Reader for an event with the specified status byte. - - - - Represents an "escape" system exclusive event which defines an escape sequence. - - - "Escape" system exclusive events start with 0xF7 byte and don't have a terminal 0xF7 - byte that is required for normal sysex events. - When an "escape" sysex event is encountered whilst reading a MIDI file, its interpretation - (SysEx packet or escape sequence) is determined as follows: - - When an event with 0xF0 status but lacking a terminal 0xF7 is encountered, then this is the - first of a Casio-style multi-packet message, and a flag (boolean variable) should be set to - indicate this. - - If an event with 0xF7 status is encountered whilst this flag is set, then this is a continuation - event (a system exclusive packet, one of many). If this event has a terminal 0xF7, then it is - the last packet and flag should be cleared. - - If an event with 0xF7 status is encountered whilst flag is clear, then this event is an escape sequence. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified data. - - Data of the "escape" sysex event. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a normal system exclusive event. - - - A MIDI event that carries the MIDI system exclusive message, also known as a "MIDI sysex message", - carries information that is specific to the manufacturer of the MIDI device receiving the message. - The action that this message prompts for can be anything. - Note that although the terminal 0xF7 is redundant (strictly speaking, due to the use of a length - parameter) it must be included. - System exclusive events can be split into multiple packets. In this case the first packet uses - the 0xF0 status (such event will be read as ), whereas the second and - subsequent packets use the 0xF7 status (such events will be read as ). - This use of the 0xF7 status is referred to as a continuation event. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified data. - - Data of the sysex event. - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - MIDI time code component. - - - - - LSB of frames number. - - - - - MSB of frames number. - - - - - LSB of seconds number. - - - - - MSB of seconds number. - - - - - LSB of minutes number. - - - - - MSB of minutes number. - - - - - LSB of hours number. - - - - - MSB of hours number and time code type. - - - - - Represents MIDI Time Code (MIDI Quarter Frame) event. - - - A MIDI event that carries the MIDI quarter frame message is timing information in the - hours:minutes:seconds:frames format (similar to SMPTE) that is used to synchronize MIDI devices. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - time code component and its value. - - MIDI time code component. - Value of . - specified an - invalid value. - - - - Gets or sets the MIDI time code component presented by the current . - - - - - Gets or sets value of the MIDI time code component presented by the current . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - MIDI time code type (frames per second). - - - - - 24 frames per second. - - - - - 25 frames per second. - - - - - 29.97 frames per second (also called "30 drop"). - - - - - 30 frames per second. - - - - - Represents Song Position Pointer event. - - - A MIDI event that carries the MIDI song position pointer message tells a MIDI device - to cue to a point in the MIDI sequence to be ready to play. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - MSB and LSB parts of the pointer value. - - The value of a song position pointer. - - - - Gets the song position pointer value. - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Song Select event. - - - A MIDI event that carries the MIDI song request message (also known as a "song select message") - tells a MIDI device to select a sequence for playback. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - song number. - - Number of the song to be chosen. - - - - Gets or sets number of the song to be chosen. - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Tune Request event. - - - A MIDI event that carries the MIDI tune request message tells a MIDI device to tune itself. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Active Sensing event. - - - A MIDI event that carries the MIDI active sense message tells a MIDI device - that the MIDI connection is still active. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Continue event. - - - A MIDI event that carries the MIDI continue message tells a MIDI slave device to resume playback. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Reset event. - - - A MIDI event that carries the MIDI reset message tells a MIDI device to reset itself. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Start event. - - - A MIDI event that carries the MIDI start message tells a MIDI slave device to start playback. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Stop event. - - - A MIDI event that carries the MIDI stop message tells a MIDI slave device to stop playback. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents Timing Clock event. - - - A MIDI event that carries the MIDI clock message keeps a slave MIDI device - synchronized with a master MIDI device. The MIDI clock message is a timing - message that the master device sends at regular intervals to tell the slave - device where it is in terms of time. - - - - - Initializes a new instance of the . - - - - - Clones event by creating a copy of it. - - Copy of the event. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Provides a way to get for an event. - - - - - Gets for an event. - - Event to get writer for. - Writer for the event. - - - - The exception that is thrown when the reading engine has encountered an invalid parameter - of a channel event. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the type of channel event that caused this exception. - - - - - Gets the value of the channel event's parameter that caused this exception. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the actual size of a MIDI file chunk differs from - the one declared in its header. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the ID of a chunk caused this exception. - - - - - Gets the expected size of a chunk written in its header. - - - - - Gets the actual size of a chunk. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the reading engine has encountered an invalid parameter - of a meta event. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the type of event that caused this exception. - - - - - Gets the name of event's property which value is invalid. - - - - - Gets the value of the meta event's parameter that caused this exception. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the reading engine has encountered an invalid MIDI time - code component (i.e. a value that doesn't belong to values of ) - during reading . - - - - - Gets the value representing MIDI time code component that caused this exception. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the reading engine has encountered an invalid parameter - of a system common event. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the type of an event that caused this exception. - - - - - Gets the name of MIDI Time Code event's component which value is invalid. - - - - - Gets the value of the system common event's parameter that caused this exception. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when a MIDI file chunk doesn't end with an End of Track event. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - The exception that is thrown when a MIDI file doesn't contain a header chunk. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - The exception that is thrown when a MIDI file doesn't contain enough bytes - to read a value. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the expected count of bytes. - - - - - Gets the actual count of bytes available in the reader's underlying stream. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown while writing a MIDI file when the - contains more than track chunks which is the maximum allowed count for - chunks of this type. - - - - - Gets the actual track chunks count. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the reading engine encountered unexpected running - status. - - - - - The exception that is thrown when count of track chunks in a MIDI file differs from - the one declared in the header chunk of this file. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the expected count of track chunks read from the header chunk. - - - - - Gets the actual count of track chunks read from a MIDI file. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the reading engine encountered unknown channel event. - - - - - Gets the channel of an unknown channel event. - - - - - Gets the status byte of an unknown channel event. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when the reading engine encountered a chunk with unknown ID. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the ID of an unknown chunk. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - The exception that is thrown when a MIDI file format is unknown. - - - Note that this exception will be thrown only if - is set to for the - used for reading a MIDI file. - - - - - Gets the number that represents format of a MIDI file. - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - Represents a result of the - method. - - - - - Gets a lazy collection of MIDI events. - - - - - Gets a MIDI token following the last MIDI event iterated by the - method. - - - - - Represents a single MIDI token from a MIDI file. - - - - - - Initializes a new instance of the with the - specified token type. - - The type of a MIDI token. - - - - Gets the type of a MIDI token. - - - - - Gets the position of a MIDI token within an input data stream. - - - - - Gets the length of a MIDI token in bytes within an input data stream. - - - - - Provides a way to read a MIDI file sequentially token by token keeping - low memory consumption. See - Lazy reading/writing article to learn more. - - - - - - Reads a next MIDI token from the underlying stream. - - An instance of the . - An I/O error occurred while reading the file. - There is no header chunk in a file and that should be treated as error - according to the of the used settings. - Actual header or track chunk's size differs from the one declared - in its header and that should be treated as error according to the - of the used settings. - Chunk to be read has unknown ID and that - should be treated as error according to the of the - used settings. - Actual track chunks - count differs from the expected one (declared in the file header) and that should be treated as error according to - the of the used settings. - The header chunk of the file specifies unknown file format and - that should be treated as error according to the of - the used settings. - Value of a channel event's parameter - just read is invalid (is out of [0; 127] range) and that should be treated as error according to the - of the used settings. - Value of a meta event's parameter - just read is invalid and that should be treated as error according to the - of the used settings. - Reader has encountered an unknown channel event and that - should be treated as error according to the of - the used settings. - MIDI file data cannot be read since the reader's underlying stream doesn't - have enough bytes and that should be treated as error according to the - of the used settings. - Unexpected running status is encountered. - Track chunk doesn't end with End Of Track event and that - should be treated as error according to the of - the used settings. - of the used settings - is null in case of set to - . - - - - Releases all resources used by the current . - - - - - Provides useful utility methods for . See - Lazy reading/writing article to learn more. - - - - - Returns all MIDI tokens read with the specified - as a lazy collection. - - to read MIDI tokens with. - Lazy collection of MIDI tokens read with the . - is null. - - - - Returns all consecutive MIDI events read with the specified - as a lazy collection. - - - - A collection contained in the returned object will iterate over MIDI tokens with the - until a file's end or start of a next chunk occurred. - - - For example, the reader is now at the first MIDI events of a track chunk that contains 10 events. - The method will return an object that contains a lazy collection that will iterate over those 10 events - only, because a next MIDI token in the file is not a MIDI event. - - - to read MIDI events with. - An instance of the containing a lazy collection of consecutive - MIDI events read with the . - is null. - - - - Provides a way to write data to a MIDI file sequentially token by token keeping - low memory consumption. See - Lazy reading/writing article to learn more. - - - - - - Starts a new track chunk writing the chunk's header. - - - If the current track chunk is not ended properly via , - the method will be called automatically on - called. - - An I/O error occurred while writing the file. - - - - Ends the current track chunk. - - An I/O error occurred while writing the file. - - - - Writes the specified MIDI event. - - - is null. - An I/O error occurred while writing the file. - - One of the following errors occurred: - - - A track chunk is not started (see ). - - - is of type but - previously written event is of the same type, writing of two End of Track events - is prohibited. - - - - - - - Writes the specified chunk. - - A chunk to write. - is null. - An I/O error occurred while writing the file. - Another chunk is being written, end it first. - - - - Releases all resources used by the current - and also flushes all remaining data to the underlying stream. - - - - - The type of a MIDI token. - - - - - - A chunk's header. See . - - - - - The data of a header chunk of a MIDI file. See . - - - - - A MIDI event. See . - - - - - A bytes packet. See . - - - - - Represents a bytes packet. - - - - - - Gets the data of the current bytes packet. - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a chunk's header. - - - - - - Gets the ID of a chunk. - - - - - Gets the size (in bytes) of a chunk's content. - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents the data of a header chunk of a MIDI file. - - - - - - Gets the format (see ) of a MIDI file. - - - - - Gets the time division of a MIDI file. - - - - - Gets the number of track chunks in a MIDI file. - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a MIDI event. - - - - - - Gets a MIDI event. - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Represents a MIDI file. - - - An instance of can be obtained via one of Read - ( or ) - static methods or via constructor which allows to create a MIDI file from scratch. - Content of MIDI file available via property which contains instances of - following chunk classes (derived from ): - - - - - - - - - Any of the types specified by property of the - that was used to read the file - - - To save MIDI data to file on disk or to stream use appropriate Write method - ( or - ). - - See for detailed MIDI file specification. - - - - - - - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified chunks. - - Chunks to add to the file. - - Note that the library doesn't provide class for MIDI file header chunk - so it cannot be added into the collection. Use and - properties instead. Header chunk with appropriate information will be written to a file automatically - on Write method. - - is null. - - - - Initializes a new instance of the with the specified chunks. - - Chunks to add to the file. - - Note that the library doesn't provide class for MIDI file header chunk - so it cannot be added into the collection. Use and - properties instead. Header chunk with appropriate information will be written to a file automatically - on Write method. - - is null. - - - - Gets or sets the time division of a MIDI file. - - - Time division specifies the meaning of the delta-times of MIDI events within . - There are two types of the time division: ticks per quarter note and SMPTE. The first type represented by - class and the second one represented by - class. - - - - - Gets collection of chunks of a MIDI file. - - - MIDI files are made up of chunks. Collection returned by this property may contain chunks - of the following types: - - - - - - - - - Custom chunk types - - - You cannot create instance of the . It will be created by the - library on reading unknown chunk (neither track chunk nor custom one). - - - - - Gets original format of the file that was read or null if the current - was created by constructor. - - File format is unknown. - Unable to get original format of the file. It means - the current was created not as a result of reading the file. - - - - Reads a MIDI file specified by its full path. - - Path to the file to read. - Settings according to which the file must be read. Specify null to use - default settings. - An instance of the representing a MIDI file. - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - The specified path, file name, or both exceed the system-defined - maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, - and file names must be less than 260 characters. - The specified path is invalid (for example, - it is on an unmapped drive). - An I/O error occurred while reading the file. - is in an invalid format. - - One of the following errors occurred: - - - This operation is not supported on the current platform. - - - specified a directory. - - - The caller does not have the required permission. - - - - There is no header chunk in a file and that should be treated as error - according to the of the . - Actual header or track chunk's size differs from the one declared - in its header and that should be treated as error according to the - of the . - Chunk to be read has unknown ID and that - should be treated as error according to the of the - . - Actual track chunks - count differs from the expected one (declared in the file header) and that should be treated as error according to - the of the specified . - The header chunk of the file specifies unknown file format and - that should be treated as error according to the of - the . - Value of a channel event's parameter - just read is invalid (is out of [0; 127] range) and that should be treated as error according to the - of the . - Value of a meta event's parameter - just read is invalid and that should be treated as error according to the - of the . - Reader has encountered an unknown channel event and that - should be treated as error according to the of - the . - MIDI file data cannot be read since the reader's underlying stream doesn't - have enough bytes and that should be treated as error according to the - of the . - Unexpected running status is encountered. - Track chunk doesn't end with End Of Track event and that - should be treated as error according to the of - the . - of - is null in case of set to - . - - - - Creates an instance of the allowing to read a MIDI file sequentially - token by token keeping low memory consumption. See - Lazy reading/writing article to learn more. - - Path to the file to read. - Settings according to which the file must be read. Specify null to use - default settings. - An instance of the wrapped around the specified file. - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - The specified path, file name, or both exceed the system-defined - maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, - and file names must be less than 260 characters. - The specified path is invalid (for example, - it is on an unmapped drive). - An I/O error occurred while reading the file. - is in an invalid format. - - One of the following errors occurred: - - - This operation is not supported on the current platform. - - - specified a directory. - - - The caller does not have the required permission. - - - - - - - Writes the MIDI file to location specified by full path. - - Full path of the file to write to. - If true and file specified by already - exists it will be overwritten; if false and the file exists exception will be thrown. - Format of a MIDI file. - Settings according to which the file must be written. Specify null to use - default settings. - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - specified an invalid value. - The specified path, file name, or both exceed the system-defined - maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, - and file names must be less than 260 characters. - The specified path is invalid (for example, - it is on an unmapped drive). - An I/O error occurred while writing the file. - is in an invalid format. - - One of the following errors occurred: - - - This operation is not supported on the current platform. - - - specified a directory. - - - The caller does not have the required permission. - - - - Time division is null. - Count of track chunks presented in the file - exceeds maximum value allowed for MIDI file. - - - - Creates an instance of the allowing to write data to a - MIDI file sequentially token by token keeping low memory consumption. See - Lazy reading/writing article to learn more. - - Full path of the file to write to. - If true and file specified by already - exists it will be overwritten; if false and the file exists exception will be thrown. - Format of a MIDI file (default value is ). - Settings according to which the file must be written. Specify null - (default value) to use default settings. - The time division to write to a file. Specify null - (default value) to use the default one - - ticks per quarter note. - An instance of the wrapped around the specified file. - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - specified an invalid value. - The specified path, file name, or both exceed the system-defined - maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, - and file names must be less than 260 characters. - The specified path is invalid (for example, - it is on an unmapped drive). - An I/O error occurred while writing the file. - is in an invalid format. - - One of the following errors occurred: - - - This operation is not supported on the current platform. - - - specified a directory. - - - The caller does not have the required permission. - - - - Time division is null. - Count of track chunks presented in the file - exceeds maximum value allowed for MIDI file. - - - - Reads a MIDI file from the specified stream. - - Stream to read file from. - Settings according to which the file must be read. Specify null to use - default settings. - An instance of the representing a MIDI file was read from the stream. - - Stream must be readable, seekable and be able to provide its position and length via - and properties. - - is null. - - One of the following errors occurred: - - - doesn't support reading. - - - is already read. - - - - An I/O error occurred while reading the file. - is disposed. - - One of the following errors occurred: - - - This operation is not supported on the current platform. - - - The caller does not have the required permission. - - - - There is no header chunk in a file and that should be treated as error - according to the of the . - Actual header or track chunk's size differs from the one declared - in its header and that should be treated as error according to the - of the . - Chunk to be read has unknown ID and that - should be treated as error according to the of the - . - Actual track chunks - count differs from the expected one (declared in the file header) and that should be treated as error according to - the of the specified . - The header chunk of the file specifies unknown file format and - that should be treated as error according to the of - the . - Value of a channel event's parameter - just read is invalid (is out of [0; 127] range) and that should be treated as error according to the - of the . - Value of a meta event's parameter - just read is invalid and that should be treated as error according to the - of the . - Reader has encountered an unknown channel event and that - should be treated as error according to the of - the . - MIDI file data cannot be read since the reader's underlying stream doesn't - have enough bytes and that should be treated as error according to the - of the . - Unexpected running status is encountered. - Track chunk doesn't end with End Of Track event and that - should be treated as error according to the of - the . - of - is null in case of set to - . - - - - Creates an instance of the allowing to read a MIDI file - from the specified stream sequentially token by token keeping low memory consumption. See - Lazy reading/writing article to learn more. - - Stream to read file from. - Settings according to which the file must be read. Specify null to use - default settings. - An instance of the wrapped around the . - - Stream must be readable, seekable and be able to provide its position and length via - and properties. - - is null. - - One of the following errors occurred: - - - doesn't support reading. - - - is already read. - - - - An I/O error occurred while reading the file. - is disposed. - - One of the following errors occurred: - - - This operation is not supported on the current platform. - - - The caller does not have the required permission. - - - - - - - Writes current to the stream. - - Stream to write file's data to. - Format of the file to be written. - Settings according to which the file must be written. Specify null to use - default settings. - is null. - doesn't support writing. - specified an invalid value. - Time division is null. - An I/O error occurred while writing to the stream. - is disposed. - Count of track chunks presented in the file - exceeds maximum value allowed for MIDI file. - - - - Creates an instance of the allowing to write data to the - specified stream sequentially token by token keeping low memory consumption. See - Lazy reading/writing article to learn more. - - Stream to write file's data to. - Format of the file to be written. - Settings according to which the file must be written. Specify null to use - default settings. - The time division to write to a file. Specify null - (default value) to use the default one - - ticks per quarter note. - An instance of the wrapped around the . - doesn't support writing. - specified an invalid value. - Time division is null. - An I/O error occurred while writing to the stream. - is disposed. - Count of track chunks presented in the file - exceeds maximum value allowed for MIDI file. - - One of the following errors occurred: - - - doesn't support writing ( is false). - - - doesn't support seeking ( is false). - - - - - - - Clones the current creating a copy of it. - - Copy of the current . - - - - Determines whether two specified objects have the same content. - - The first file to compare, or null. - The second file to compare, or null. - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content. - - The first file to compare, or null. - The second file to compare, or null. - Message containing information about what exactly is different in - and . - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content. - - The first file to compare, or null. - The second file to compare, or null. - Settings according to which files should be compared. - true if the is equal to the ; - otherwise, false. - - - - Determines whether two specified objects have the same content using - the specified comparison settings. - - The first file to compare, or null. - The second file to compare, or null. - Settings according to which files should be compared. - Message containing information about what exactly is different in - and . - true if the is equal to the ; - otherwise, false. - - - - Format of a Standard MIDI file which specifies overall structure of the file. - - - - - The file contains a single multi-channel track. - - - File of this format has a header chunk followed by one track chunk. It is the most - interchangeable representation of data. - - - - - The file contains one or more simultaneous tracks (or MIDI outputs) of a sequence. - - - File of this format has a header chunk followed by one or more track chunks. First track - chunk is usually reserved for tempo information (it can contain events like - , , ). - - - - - The file contains one or more sequentially independent single-track patterns. - - - - - Reader of the MIDI data types. - - - - - Initializes a new instance of the with the specified stream. - - Stream to read MIDI file from. - Settings according to which MIDI data should be read. - - One of the following errors occurred: - - - is null. - - - is null. - - - - of - is null in case of set to - . - - - - Gets or sets the position within the underlying stream. - - An I/O error occurred on the underlying stream. - Property was called after the reader was disposed. - - - - Gets length of the underlying stream. - - - - - Gets a value indicating whether end of the underlying stream is reached. - - An I/O error occurred on the underlying stream. - Property was called after the reader was disposed. - - - - Reads a byte from the underlying stream and advances the current position by one byte. - - The next byte read from the underlying stream. - The end of the underlying stream is reached. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - - - - Reads a signed byte from the underlying stream and advances the current position by one byte. - - A signed byte read from the underlying stream. - The end of the underlying stream is reached. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - - - - Reads the specified number of bytes from the underlying stream into a byte array - and advances the current position by that number of bytes. - - The number of bytes to read. This value must be 0 or a - non-negative number or an exception will occur. - A byte array containing data read from the underlying stream. This might be less - than the number of bytes requested if the end of the stream is reached. - is negative. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - - - - Reads a WORD value (16-bit unsigned integer) from the underlying stream and - advances the current position by two bytes. - - A 16-bit unsigned integer read from the underlying stream. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - Not enough bytes in the stream to read a WORD. - - - - Reads a DWORD value (32-bit unsigned integer) from the underlying stream and - advances the current position by four bytes. - - A 32-bit unsigned integer read from the underlying stream. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - Not enough bytes in the stream to read a DWORD. - - - - Reads an INT16 value (16-bit signed integer) from the underlying stream and - advances the current position by two bytes. - - A 16-bit signed integer read from the underlying stream. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - Not enough bytes in the stream to read a INT16. - - - - Reads the specified number of characters from the underlying stream, returns the - data as string, and advances the current position by that number of characters. - - The length of string to read. - The string being read. - is negative. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - - - - Reads a 32-bit signed integer presented in compressed format called variable-length quantity (VLQ) - to the underlying stream. - - - Numbers in VLQ format are represented 7 bits per byte, most significant bits first. - All bytes except the last have bit 7 set, and the last byte has bit 7 clear. If the - number is between 0 and 127, it is thus represented exactly as one byte. - - A 32-bit signed integer read from the underlying stream. - Not enough bytes in the stream to read a variable-length quantity - number. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - - - - Reads a 64-bit signed integer presented in compressed format called variable-length quantity (VLQ) - to the underlying stream. - - - Numbers in VLQ format are represented 7 bits per byte, most significant bits first. - All bytes except the last have bit 7 set, and the last byte has bit 7 clear. If the - number is between 0 and 127, it is thus represented exactly as one byte. - - A 64-bit signed integer read from the underlying stream. - Not enough bytes in the stream to read a variable-length quantity - number. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - - - - Reads a DWORD value (32-bit unsigned integer) presented by 3 bytes from the underlying - stream and advances the current position by three bytes. - - A 32-bit unsigned integer read from the underlying stream. - Method was called after the reader was disposed. - An I/O error occurred on the underlying stream. - Not enough bytes in the stream to read a 3-byte DWORD. - - - - Releases all resources used by the current instance of the class. - - - - - Writer of the MIDI data types. - - - - - Initializes a new instance of the with the specified stream. - - Stream to write MIDI file to. - Settings according to which MIDI data should be written. - - One of the following errors occurred: - - - is null. - - - is null. - - - - does not support writing, - or is already closed. - - - - Gets the current count of written bytes. - - - - - Writes an unsigned byte to the underlying stream and advances the stream position - by one byte. - - The unsigned byte to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a byte array to the underlying stream. - - A byte array containing the data to write. - is null. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a signed byte to the underlying stream and advances the stream position by one byte. - - The signed byte to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a WORD value (16-bit unsigned integer) to the underlying stream and - advances the current position by two bytes. - - WORD value to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a DWORD value (32-bit unsigned integer) to the underlying stream and - advances the current position by four bytes. - - DWORD value to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a INT16 value (16-bit signed integer) to the underlying stream and - advances the current position by two bytes. - - INT16 value to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a string to the underlying stream as set of ASCII bytes. - - The string to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a 32-bit signed integer to the underlying stream in compressed format called - variable-length quantity (VLQ). - - The value to write. - - Numbers in VLQ format are represented 7 bits per byte, most significant bits first. - All bytes except the last have bit 7 set, and the last byte has bit 7 clear. If the - number is between 0 and 127, it is thus represented exactly as one byte. - - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a 64-bit signed integer to the underlying stream in compressed format called - variable-length quantity (VLQ). - - The value to write. - - Numbers in VLQ format are represented 7 bits per byte, most significant bits first. - All bytes except the last have bit 7 set, and the last byte has bit 7 clear. If the - number is between 0 and 127, it is thus represented exactly as one byte. - - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Writes a DWORD value (32-bit unsigned integer) to the underlying stream as three bytes - and advances the current position by three bytes. - - DWORD value to write. - Method was called after the writer was disposed. - An I/O error occurred on the underlying stream. - - - - Releases all resources used by the current instance of the class. - - - - - Specifies how reading engine should buffer incoming MIDI data before reading it. - The default is . - - - - - Use buffer of fixed size specified by . - - - - - Don't buffer data and read it from stream as is. - - - - - Use buffer specified by . - - - - - Put entire MIDI data to buffer in memory and read it from here. - - - - - Callback used to decode a string from the specified bytes during reading a text-based - meta event's text. - - Bytes to decode a string from. - Settings used to read MIDI data. - A string decoded from given bytes. - - All meta events types derived from have - property. Value of this property will be read using this callback if - is set. - - - - - Specifies how reading engine should react on End Of Track event encountered. - The default is . - - - - - Omit an event and don't store it to the . - - - - - Store an event to the . - - - - - Specifies how reading engine should react on new track chunk if already read chunks - count greater or equals the one declared at the file header. The default is . - - - - - Read a track chunk anyway. - - - - - Skip chunk and go to the next one. - - - - - Specifies how reading engine should react on invalid value of a channel event's - parameter value. Valid values are 0-127 so, for example, 128 is the invalid one - and will be processed according to this policy. The default is . - - - - - Abort reading and throw an . - - - - - Read byte and take its lower (rightmost) seven bits as the final value. - - - - - Read value and snap it to limits of the allowable range if it is out of them. - - - - - Specifies how reading engine should react on difference between actual - chunk's size and the one declared in its header. The default is . - - - - - Abort reading and throw an . - - - - - Ignore difference between actual chunk's size and the declared one. - - - - - Specifies how reading engine should react on invalid value of a meta event's - parameter value. For example, 255 is the invalid value for the - and will be processed according with this policy. The default is . - - - - - Abort reading and throw an . - - - - - Read value and snap it to limits of the allowable range if it is out of them. - - - - - Specifies how reading engine should react on invalid value of a system common event's - parameter value. For example, 255 is the invalid value for the - and will be processed according with this policy. The default is . - - - - - Abort reading and throw an . - - - - - Read value and snap it to limits of the allowable range if it is out of them. - - - - - Specifies how reading engine should react on missed End Of Track event. - The default is . - - - Although the End Of Track event is not optional and therefore missing of it - should be treated as error, you can try to read a track chunk relying on the chunk's size only. - - - - - Ignore missing of the End Of Track event and try to read a track chunk relying on - the chunk's size. - - - - - Abort reading and throw an . - - - - - Specifies how reading engine should react on missing of the header chunk - in the MIDI file. The default is . - - - - - Abort reading and throw an . - - - - - Ignore missing of the header chunk. You'll be able specify time division manually - after reading via property. - - - - - Specifies how reading engine should react on lack of bytes in the underlying stream - that are needed to read MIDI data (for example, DWORD requires 4 bytes available). - The default is . - - - - - Abort reading and throw an . - - - - - Ignore lack of bytes in the reader's underlying stream and just finish reading. - - - - - Settings according to which should read MIDI data. - - - - - Gets or sets internal buffer for reading MIDI data from non-seekable stream. - - Value is zero or negative. - - During reading MIDI data there are cases when reader should move current stream's position back. - If stream doesn't support seeking, it will fail. So for non-seekable stream reading engine - should maintain buffer of last N bytes to have ability to jump back. That N value is controlled by - this property. - - - - - Gets or sets minimum count of bytes to read them from non-seekable stream incrementally instead of - reading them all at once. - - Value is zero or negative. - - If count of bytes to read is greater than or equal to the value of this property, reading engine - will read data by chunks of N bytes where N is a value of - property. This property applies for non-seekable streams only. Since there is no way to determine available count - of bytes within such streams, incremental reading can prevent . - - - - - Gets or sets size of chunk for incremental reading of MIDI data from non-seekable stream. - - Value is zero or negative. - - This property works in conjunction with . - - - - - Gets or sets a rule according to which MIDI data should be buffered before reading. - The default is . - - specified an invalid value. - - - - Gets or sets the size of a buffer that will be used by in case of - policy used for . - - is zero or negative. - - - - Gets or sets the buffer that will be used by in case of - policy used for . - - - - - Gets or sets the maximum length of a bytes packet that will be used by . - - is zero or negative. - - - - Settings according to which MIDI data should be read. - - - - - Gets or sets a value indicating whether the reading engine should stop or not when - the count of read chunks is equal to the value defined in a file's header. The - default value is false which means all chunks will be read. - - - - - - Gets or sets reaction of the reading engine on unexpected track chunks count. The default is - . - - - This policy will be taken into account if actual track chunks count is less or greater than - tracks number specified in the file's header chunk. If - is used, an instance of the will be thrown if - track chunks count is unexpected. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on new track chunk if already read - track chunks count is greater or equals the one declared in the file's header chunk. - The default is . - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on chunk with unknown ID. The default - is . - - - If is used, an instance of the - will be thrown if a chunk to be read has unknown ID. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on missed End Of Track event. - The default is . - - - If is used, an instance of the - will be thrown if track chunk - doesn't end with End Of Track event. Although this event is not optional and - therefore missing of it must be treated as error, you can try to read a track chunk - relying only on the chunk's size declared in its header. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on Note On events with velocity of zero. - The default is . - - - Although it is recommended to treat silent Note On event as Note Off you can turn - this behavior off to get original event stored in a MIDI file. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on difference between actual chunk's size and - the one declared in its header. The default is . - - - If is used, an instance of the - will be thrown if actual chunk's size differs from - the one declared in chunk's header. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on unknown file format stored in a header chunk. - The default is . - - - If is used, an instance of the - will be thrown if file format stored in a header - chunk doesn't belong to values defined by the enumeration. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on unknown channel event. The default is - . - - - If is used, an instance of the - will be thrown if channel event has unknown status byte. - - specified an invalid value. - - - - Gets or sets a callback used to read unknown channel event if - set to . - - - - - Gets or sets reaction of the reading engine on invalid value of a channel event's - parameter value. The default is . - - - Valid values are 0-127 so, for example, 128 is the invalid one - and will be processed according with this policy. If - is used, an instance of the will be thrown if - event's parameter value just read is invalid. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on invalid value of a meta event's - parameter value. The default is . - - - For example, 255 is the invalid value for the - and will be processed according with this policy. If - is used, an instance of the will be thrown if event's - parameter value just read is invalid. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on invalid value of a system common event's - parameter value. The default is . - - - For example, 255 is the invalid value for the - and will be processed according with this policy. If - is used, an instance of the will be thrown if event's - parameter value just read is invalid. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on lack of bytes in the underlying stream - that are needed to read MIDI data (for example, DWORD requires 4 bytes available). - The default is . - - - If is used, an instance of the - will be thrown if the reader's underlying stream doesn't - have enough bytes to read MIDI data. - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on missing of the header chunk in the MIDI file. - The default is . - - - If is used, an instance of the - will be thrown if the MIDI file doesn't contain the header chunk. - - specified an invalid value. - - - - Gets or sets collection of custom chunks types. - - - Types within this collection must be derived from the - class and have parameterless constructor. No exception will be thrown if some types don't meet - these requirements. - - - - - Gets or sets collection of custom meta events types. - - - Types within this collection must be derived from the - class and have parameterless constructor. No exception will be thrown - if some types don't meet these requirements. - - - - - Gets or sets an that will be used to read the text of a - text-based meta events. The default is . - - - Value of this property will be used only if is not set. - - - - - Gets or sets a callback used to decode a string from the specified bytes during reading a text-based - meta event's text. The default is null. - - - If callback is not set, will be used. - - - - - Gets or sets reaction of the reading engine on zero-length objects such as strings or arrays. - The default is . - - specified an invalid value. - - - - Gets or sets reaction of the reading engine on End Of Track event encountered. - The default is . - - specified an invalid value. - - - - Gets or sets settings according to which should read MIDI data. - - - These settings specify reading binary data without knowledge about MIDI data structures. - - - - - Specifies how reading engine should react on Note On events with velocity of zero. - The default is . - - - - - Read an event as . - - - - - Read an event as . - - - - - Specifies how reading engine should react on unexpected track chunks count. The default is - . - - - - - Ignore unexpected track chunks count. - - - - - Abort reading and throw an . - - - - - An action that should be done in case of unknown channel event. - - - - - Abort reading of MIDI data and throw . - - - - - Gets instruction for reading engine to react on unknown channel event. - - - - - Gets count of data bytes to skip be reading engine. Data bytes are event bytes without status byte. - - - - - Creates an instance of the to skip data bytes of - unknown channel event. - - Count of data bytes to skip be reading engine. - Data bytes are event bytes without status byte. - an instance of the to skip data bytes of - unknown channel event. - is negative. - - - - Callback used to read unknown channel event if - set to . - - Status byte of channel event. - Channel of event. - An instance of the representing an action to perform. - - - - Instruction for reading engine which tells how unknown channel event should be handled. - - - - - Abort reading and throw . - - - - - Skip data bytes. - - - - - Specifies how reading engine should react on unknown channel event. The default is - . - - - - - Abort reading and throw an . - - - - - Skip only invalid status byte and start next MIDI event reading. - - - - - Skip invalid status byte and one data byte, and start next MIDI event reading. - - - - - Skip invalid status byte and two data bytes, and start next MIDI event reading. - - - - - Use callback to manually decide how reading engine should handle invalid unknown - channel event. - - - - - Specifies how reading engine should react on chunk with unknown ID. The default - is . - - - - - Read the chunk as . - - - - - Skip this chunk and go to the next one. - - - - - Abort reading and throw an . - - - - - Specifies how reading engine should react on file format which doesn't belong to - the . - - - - - Ignore unknown file format and try to read chunks. - - - - - Abort reading and throw an . - - - - - Specifies how reading engine should read zero-length objects such as strings or arrays. - The default is . - - - - - Read as an object with length of zero. - - - - - Read as null. - - - - - Time division that represents subdivisions of a second, in a way consistent with - SMPTE and MIDI time code. - - - - - Initializes a new instance of the with the - specified format (frame rate) and resolution. - - SMPTE format representing the number of frames per second. - Resolution within a frame. - specified an invalid value. - - - - Gets SMPTE format (frame rate). - - - - - Gets resolution within a frame. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the time divisions are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the time divisions are equal, true otherwise. - - - - Clones time division by creating a copy of it. - - Copy of the time division. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Time division that represents number of delta-time "ticks" which make up a quarter-note. - - - - - Default number of ticks which make up a quarter-note. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with - the specified ticks number per a quarter-note. - - Number of ticks which make up a quarter-note. - is negative. - - - - Gets or sets number of ticks which make up a quarter-note. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the time divisions are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the time divisions are equal, true otherwise. - - - - Clones time division by creating a copy of it. - - Copy of the time division. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - MIDI file time division. - - - Time division specifies the meaning of the delta-times of events. There are two types of - the time division: ticks per quarter note and SMPTE. Time division of the first type has bit 15 set - to 0. In this case bits 14 thru 0 represent the number of ticks which make up a quarter-note. - Division of the second type has bit 15 set to 1. In this case bits 14 thru 8 contain one of the four - values: -24, -25, -29, or -30, corresponding to the four standard SMPTE and MIDI Time Code formats - (-29 corresponds to 30 drop frame), and represents the number of frames per second. Bits 7 thru 0 - (which represent a byte stored positive) is the resolution within a frame: typical values may be 4 - (MIDI Time Code resolution), 8, 10, 80 (bit resolution), or 100. - - - - - Converts this time division into 16-bit signed integer number that will be written to a file. - - 16-bit signed integer number representing this time division. - - - - Clones time division by creating a copy of it. - - Copy of the time division. - - - - Set of extension methods for event. - - - - - Gets name of the controller presented by an instance of . - - Control Change event to get controller name of. - Controller name of the event. - is null. - - - - Converts to the corresponding value of the type. - - to convert to . - representing the . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified controller. - - to get an event for. - Controller value to set to event. - Channel an event should be created for. - An instance of the corresponding to the . - specified an invalid value. - - - - Gets name of the controller presented by control number. - - Control number to get controller name of. - Name of the controller presented by . - - - - Provides useful methods to manipulate an instance of the . - - - - - Gets all channel numbers presented in the specified . - - to get channels of. - Collection of channel numbers presented in the . - is null. - - - - Set of extension methods for and events. - - - - - Gets name of the note presented by the specified . - - Note event to get note name of. - Note name of the . - is null. - - - - Gets octave of the note presented by the specified . - - Note event to get note octave of. - Note octave of the . - - Octave number will be returned in scientific pitch notation which means - that 4 will be returned for 60 note number. - - is null. - - - - Sets the note number of the with the specified note name and octave. - - Note event to set the note number of. - Name of the note. - Number of the octave. - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to get the number of the middle C. - - is null. - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Checks if the specified corresponds to the specified - . - - - Note On event corresponds to Note Off one if it has the same note's number and channel, - i.e. those events make up a note. - - to check for. - to check for. - true if corresponds to . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Constants related to Standard MIDI Files. - - - - - Gets the default used by Standard MIDI File to encode/decode - text data. - - - - - Provides extension methods for . - - - - - Gets all track chunks of a MIDI file. - - MIDI file to get track chunks of. - Collection of track chunks contained in the . - is null. - - - - Merges multiple track chunks into one that corresponds to . - - Track chunks to merge into one. - Track chunk that contains all events from the . - - Note that events will be cloned so events in the result track chunk will not be equal - by reference to events in the . - - is null. - is an empty collection. - - - - Splits a track chunk into multiple ones that correspond to . - - Track chunk to split into multiple ones. - Multiple track chunks that represent . - - Note that events will be cloned so events in the result track chunks will not be equal - by reference to events in the . - - is null. - - - - Gets all channel numbers presented in the specified . - - to get channels of. - Collection of channel numbers presented in the . - is null. - - - - Gets all channel numbers presented in the specified collection of . - - Collection of to get channels of. - Collection of channel numbers presented in the . - is null. - - - - Settings according to which should write MIDI data. - - - - - Gets or sets a value indicating whether should use buffer to - write MIDI data or not. The default value is true. - - - - - Gets or sets the size of a buffer that will be used by in case of - set to true. - - is zero or negative. - - - - Settings according to which MIDI data should be written. - - - - - Gets or sets a value indicating whether 'running status' (to turn off writing of the status - bytes of consecutive events of the same type) should be used or not. The default value is false. - - - - - Gets or sets a value indicating whether Note Off events should be written as Note On ones - with velocity of zero, or not. In conjunction with set to true - can give some compression of MIDI data. The default value is false. - - - - - Gets or sets a value indicating whether Time Signature events with default data should be deleted - if there are no non-default ones before them, or not. The default value is false. - - - - - Gets or sets a value indicating whether Key Signature events with default data should be deleted - if there are no non-default ones before them, or not. The default value is false. - - - - - Gets or sets a value indicating whether Set Tempo events with default data should be deleted - if there are no non-default ones before them, or not. The default value is false. - - - - - Gets or sets a value indicating whether events of type should be - deleted or not. The default value is false. - - - - - Gets or sets a value indicating whether chunks of type should be - deleted or not. The default value is false. - - - - - Gets or sets a value indicating whether header chunk should be written to a MIDI file or not. - The default value is true. - - - Note that missed header chunk violates SMF specification and thus applications may not read - such files. - - - - - Gets or sets collection of custom meta events types. - - - Types within this collection must be derived from the - class and have parameterless constructor. No exception will be thrown - while writing a MIDI file if some types don't meet these requirements. - - - - - Gets or sets an that will be used to write the text of a - text-based meta event. The default is . - - - - - Gets or sets settings according to which should write MIDI data. - - - These settings specify reading binary data without knowledge about MIDI data structures. - - - - - Represents a musical chord. - - - - - Occurs when notes collection changes. - - - - - Occurs when the time of an object has been changed. - - - - - Occurs when the length of an object has been changed. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - collection of notes. - - Notes to combine into a chord. - is null. - - - - Initializes a new instance of the with the specified - collection of notes. - - Notes to combine into a chord. - is null. - - - - Initializes a new instance of the with the specified - collection of notes and chord time. - - Notes to combine into a chord. - Time of the chord which is time of the earliest note of the . - is null. - is negative. - - - - Gets a that contains notes of this chord. - - - - - Gets or sets absolute time of the chord in units defined by the time division of a MIDI file. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the time in different representations. - - is negative. - - - - Gets or sets the length of the chord in units defined by the time division of a MIDI file. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the length in different representations. - - is negative. - - - - Gets the end time of an object. - - - - - Gets or sets channel to play the chord on. - - - One of the following errors occurred: - - - Unable to get channel since a chord doesn't contain notes. - - - Unable to get channel since chord's notes have different . - - - - - - - Gets or sets velocity of the underlying events of a chord's notes. - - - One of the following errors occurred: - - - Unable to get velocity since a chord doesn't contain notes. - - - Unable to get velocity since chord's notes have different . - - - - - - - Gets or sets velocity of the underlying events of a chord's notes. - - - One of the following errors occurred: - - - Unable to get off velocity since a chord doesn't contain notes. - - - Unable to get off velocity since chord's notes have different . - - - - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Holds the data for a construction. - - - - - - - Gets notes collection to build a chord. - - - - - Settings which define how chords should be detected and built. More info in the - Getting objects: GetChords: Settings article. - - - - - - - Gets or sets custom construction method for . If null, - default method will be used (via one of the 's constructors). - - - - - Gets or sets a minimum count of notes a chord can contain. So if count of simultaneously sounding - notes is less than this value, they won't make up a chord. The default value is 1. More info in the - Getting objects: GetChords: Settings: NotesMinCount - article. - - is zero or negative. - - - - Gets or sets maximum distance of notes from the start of the first note of a chord. - Notes within this tolerance will be included in a chord. The default value is 0. More info in the - Getting objects: GetChords: Settings: NotesTolerance - article. - - is negative. - - - - Defines a hint which tells the chord processing algorithm how it can optimize its performance. - - - If you want to get the maximum performance of a chord processing (for example, - ), - choose a hint carefully. Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - - - - or of a chord can be changed. - - - - - can be changed, i.e. a note can be added to or removed from - a chord. - - - - - or can be changed on a note within - a chord's notes (). - - - - - The processing algorithm will consider that only properties that don't affect underlying MIDI - events positions will be changed. This hint means maximum performance, i.e. the processing will - take less time and consume less memory. - - - - - Default hint. Equals to . - - - - - The processing algorithm will consider that everything related to a chord can be changed. - This hint means minimum performance, i.e. the processing will take more time and consume more memory. - For maximum performance see option. - - - - - Extension methods for chords managing. - - - - - Creates an instance of the initializing it with the - specified events collection. More info in the Objects managers article. - - that holds chords to manage. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Comparer that will be used to order objects on enumerating and saving objects - back to the via - or . - An instance of the that can be used to manage chords - represented by the . - is null. - - - - Creates an instance of the initializing it with the - events collection of the specified track chunk. More info in the - Objects managers article. - - that holds chords to manage. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Comparer that will be used to order objects on enumerating and saving objects - back to the via - or . - An instance of the that can be used to manage - chords represented by the . - is null. - - - - Gets chords contained in the specified collection of . More info in the - Getting objects: GetChords article. - - Collection of to search for chords. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Collection of chords contained in ordered by time. - is null. - - - - Gets chords contained in the specified . More info in the - Getting objects: GetChords article. - - to search for chords. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Collection of chords contained in ordered by time. - is null. - - - - - - - - - Gets chords contained in the specified . More info in the - Getting objects: GetChords article. - - to search for chords. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Collection of chords contained in ordered by time. - is null. - - - - - - - - - Gets chords contained in the specified collection of . More info in the - Getting objects: GetChords article. - - Track chunks to search for chords. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Collection of chords contained in ordered by time. - is null. - - - - - - - - - Gets chords contained in the specified . More info in the - Getting objects: GetChords article. - - to search for chords. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Collection of chords contained in ordered by time. - is null. - - - - - - - - - Creates chords from notes. - - Notes to create chords from. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Collection of chords made up from . - is null. - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessChords article. - - to search for chords to process. - The action to perform on each contained in the - . - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessChords article. - - to search for chords to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessChords article. - - to search for chords to process. - The action to perform on each contained in the - . - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessChords article. - - to search for chords to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the collection of - . More info in the - Processing objects: ProcessChords article. - - Collection of to search for chords to process. - The action to perform on each contained in the - . - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the collection of - . More info in the - Processing objects: ProcessChords article. - - Collection of to search for chords to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessChords article. - - to search for chords to process. - The action to perform on each contained in the - . - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessChords article. - - to search for chords to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with chords but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Removes all chords from the . More info in the - Removing objects: RemoveChords article. - - to search for chords to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - is null. - - - - - Removes chords that match the specified conditions from the . - More info in the Removing objects: RemoveChords article. - - to search for chords to remove. - The predicate that defines the conditions of the to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all chords from the . More info in the - Removing objects: RemoveChords article. - - to search for chords to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - is null. - - - - - Removes chords that match the specified conditions from the . - More info in the Removing objects: RemoveChords article. - - to search for chords to remove. - The predicate that defines the conditions of the to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all chords from the collection of . More info in the - Removing objects: RemoveChords article. - - Collection of to search for chords to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - is null. - - - - - Removes chords that match the specified conditions from the collection of . - More info in the Removing objects: RemoveChords article. - - Collection of to search for chords to remove. - The predicate that defines the conditions of the to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all chords from the . More info in the - Removing objects: RemoveChords article. - - to search for chords to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - is null. - - - - - Removes chords that match the specified conditions from the . - More info in the Removing objects: RemoveChords article. - - to search for chords to remove. - The predicate that defines the conditions of the to remove. - Settings according to which chords should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Settings according to which timed events should be detected - and built to construct notes for chords. - Count of removed chords. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Returns containing notes of the specified . - - to get music theory chord from. - containing notes of the . - is null. - - - - Provides utilities to extract objects of different types at once. More info in the - Getting objects: GetObjects article. - - - - - Extracts objects of the specified types from a collection of . - - Collection of to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - Collection of objects of the specified types extracted from . - Objects are ordered by time. - is null. - - - - Extracts objects of the specified types from a collection of - returning them as a lazy collection. - - Collection of to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - A lazy collection of objects built on top of . - is null. - - - - Extracts objects of the specified types from a . - - to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - Collection of objects of the specified types extracted from . - Objects are ordered by time. - is null. - - - - Extracts objects of the specified types from a . - - to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - Collection of objects of the specified types extracted from . - Objects are ordered by time. - is null. - - - - Extracts objects of the specified types from a collection of . - - Collection of to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - Collection of objects of the specified types extracted from . - Objects are ordered by time. - is null. - - - - Extracts objects of the specified types from a . - - to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - Collection of objects of the specified types extracted from . - Objects are ordered by time. - is null. - - - - Extracts objects of the specified types from a collection of . - - Collection of to extract objects from. - Combination of desired objects types. - Settings according to which objects should be detected and built. - Collection of objects of the specified types extracted from . - Objects are ordered by time. - is null. - - - - Settings which define how objects should be detected and built. - - - - - Gets or sets settings which define how timed events should be detected and built. - - - - - Gets or sets settings which define how notes should be detected and built. - - - - - Gets or sets settings which define how chords should be detected and built. - - - - - The type of objects to get with methods of . - - - - - Represents a timed event (see ). - - - - - Represents a note (see ). - - - - - Represents a chord (see ). - - - - - Grid where points in time are distributed arbitrarily according to provided collection - of times. - - - - - Initializes a new instance of the with the specified - collection of times. - - Grid's times. - is null. - contains null. - - - - Initializes a new instance of the with the specified - collection of times. - - Grid's times. - is null. - contains null. - - - - Times of the current grid. - - - - - Gets points in time of the current grid. - - Tempo map used to get grid's times. - Collection of points in time of the current grid. - is null. - - - - Represents a time grid which is the set of points in time. - - - - - Gets times produced by the current grid. - - Tempo map used to get grid's times. - Collection of times (in MIDI ticks) of the current grid. - is null. - - - - Grid where points in time are distributed with the specified step or - collection of steps. - - - - - Initializes a new instance of the with the specified - step so all grid's times will be distributed with equal distance between adjacent ones - starting from zero. - - Distance between adjacent times. - is null. - - - - Initializes a new instance of the with the specified - start time and step so all grid's times will be distributed with equal distance - between adjacent ones starting from the specified start time. - - Start time of the grid. - Distance between adjacent times. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Initializes a new instance of the with the specified - steps so all grid's times will be stepped according to those steps. - - - Grid's times will be distributed according to provided steps. So distance between first - adjacent times will be equal to first step, distance between second adjacent times will - be equal to second step and so on. When last step reached, steps will go from the first one. - - Collection of grid's steps. - is null. - contains null. - - - - Initializes a new instance of the with the specified - start time and steps so all grid's times will be stepped according to those steps. - - - Grid's times will be distributed according to provided steps. So distance between first - adjacent times will be equal to first step, distance between second adjacent times will - be equal to second step and so on. When last step reached steps will go from the first one. - - Start time of the grid. - Collection of grid's steps. - - One of the following errors occurred: - - - is null. - - - is null. - - - - contains null. - - - - Start time of the current grid. - - - - - Steps of the current grid. - - - - - Gets points in time of the current grid. - - Tempo map used to get grid's times. - Collection of points in time of the current grid. - is null. - - - - Musical objects that can be played. - - - - - Gets the channel which should be used to play an object. - - - - - Represents an object that has length. - - - - - Gets the length of an object. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the length in different representations. - - is negative. - - - - Gets the end time of an object. - - - - - Splits the current object by the specified time. - - - - If is less than or equal to time of the object, the left part will - be null. If is greater than or equal to end time of the object, - the right part will be null. - - - Let's see a simple example. Suppose we have an object with time of 10 and length of 50. - The table below shows what left and right parts will be in case of different values of - : - - - - Time to split at - Left part - Right part - - - 5 - null - Copy of the object - - - 10 - null - Copy of the object - - - 30 - Copy of the object with time of 10 and length of 20 - Copy of the object with time of 30 and length of 30 - - - 60 - Copy of the object - null - - - 70 - Copy of the object - null - - - - To learn about other ways to split an object please read - Objects splitting article. - - - Time to split the object at. - An object containing left and right parts of the split object. - Both parts have the same type as the original object. - is negative. - - - - Provides the event which fired when the length of an object has been changed. - - - - - Occurs when the length of an object has been changed. - - - - - Contains arguments for the event. - - - - - Gets the old length of an object. - - - - - Gets the new length of an object. - - - - - Part of an . - - - - - Start of an object. - - - - - End of an object. - - - - - Entire object from its start to its end. - - - - - Extension methods for objects that implement the interface. - - - - - Gets length of an as an instance of type that - implements the interface. - - Type that will represent the length of the . - Object to get length of. - Tempo map to calculate length of the . - Length of the specified object as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Gets length of an as an instance of type defined by the - specified time span type. - - Object to get length of. - The type of time span to convert the length of to. - Tempo map to calculate length of the . - Time of the specified object as an instance of time span defined by the - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Gets end time of an as an instance of type that implements the - interface. - - Type that will represent the end time of the . - Object to get end time of. - Tempo map to calculate end time of the . - End time of the specified object as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Gets end time of an as an instance of time span defined by the - specified time span type. - - Object to get end time of. - The type of time span to convert the end time of to. - Tempo map to calculate end time of the . - End time of the specified object as an instance of time span defined by the - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Filters collection of to return objects that start at the specified time. - - The type of the elements of . - A collection to filter. - Start time to filter objects by. - A collection that contains objects from the input sequence that start at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of lengthed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - One of the objects is null. - - - - is negative. - - - - Filters collection of to return objects that end at the specified time. - - The type of the elements of . - A collection to filter. - End time to filter objects by. - A collection that contains objects from the input sequence that end at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of lengthed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - One of the objects is null. - - - - is negative. - - - - Filters collection of to return objects that start at the specified time. - - The type of the elements of . - A collection to filter. - Start time to filter objects by. - Tempo map to filter by . - A collection that contains objects from the input sequence that start at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of lengthed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - One of the objects is null. - - - - - - - Filters collection of to return objects that end at the specified time. - - The type of the elements of . - A collection to filter. - End time to filter objects by. - Tempo map to filter by . - A collection that contains objects from the input sequence that end at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of lengthed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - One of the objects is null. - - - - - - - Filters collection of to return objects at the specified time. - - The type of the elements of . - A collection to filter. - Time to filter objects by. - Part of an object which have to be at . - A collection that contains objects from the input sequence that are at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of lengthed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - One of the objects is null. - - - - is negative. - specified an invalid value. - - - - Filters collection of to return objects at the specified time. - - The type of the elements of . - A collection to filter. - Time to filter objects by. - Tempo map to filter by . - Part of an object which have to be at . - A collection that contains objects from the input sequence that are at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of lengthed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - One of the objects is null. - - - - specified an invalid value. - - - - Sets length of the specified object in terms of . - - The type of the . - Object to set length of. - New length of the . - used to calculate new length in ticks. - The same object the method was called on. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - One of the objects is null. - - - - - - - Checks if an is at the specified time. - - Type of an object. - to check. - Time to check the . - Part of the which have to be at . - true if is at ; false - otherwise. - is null. - - - - Container for left and right parts of split lengthed object. - - - - - The left part of a split object. - - - - - The right part of a split object. - - - - - Represents a musical note. - - - - - Default velocity (velocity of underlying event). - - - - - Default off velocity (velocity of underlying event). - - - - - Occurs when the time of an object has been changed. - - - - - Occurs when the length of an object has been changed. - - - - - Initializes a new instance of the with the specified - note name and octave. - - Name of the note. - Number of the octave in scientific pitch notation. - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to to get the middle C. - - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Initializes a new instance of the with the specified - note name, octave and length. - - Name of the note. - Number of the octave in scientific pitch notation. - Length of the note in units defined by time division of a MIDI file. - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to to get the middle C. - - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Initializes a new instance of the with the specified - note name, octave, length and absolute time. - - Name of the note. - Number of the octave in scientific pitch notation. - Length of the note in units defined by time division of a MIDI file. - Absolute time of the note in units defined by the time division of a MIDI file. - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to to get the middle C. - - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Initializes a new instance of the with the specified note number. - - Number of the note (60 is middle C). - - - - Initializes a new instance of the with the specified - note number and length. - - Number of the note (60 is middle C). - Length of the note in units defined by time division of a MIDI file. - - - - Initializes a new instance of the with the specified - note number, length and absolute time. - - Number of the note (60 is middle C). - Length of the note in units defined by time division of a MIDI file. - Absolute time of the note in units defined by the time division of a MIDI file. - - - - Initializes a new instance of the with the specified pair of - timed events holding corresponding and events. - - holding event of a note. - holding event of a note. - - One of the following errors occurred: - - - Underlying event of the is not . - - - Underlying event of the is not . - - - goes before . - - - - - - - Gets or sets absolute time of the note in units defined by the time division of a MIDI file. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the time in different representations. - - is negative. - - - - Gets or sets the length of the note in units defined by the time division of a MIDI file. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the length in different representations. - - is negative. - - - - Gets the end time of an object. - - - - - Gets or sets number of the note (60 is middle C). - - - - - Gets or sets velocity of the underlying . - - - - - Gets or sets velocity of the underlying . - - - - - Gets or sets channel to play the note on. - - - - - Gets name of the note. - - - - - Gets octave of the note. - - - - - Gets Note On timed event of the note. - - - - - Gets Note Off timed event of the note. - - - - - Gets the 'Note On' timed event of the current note. - - The 'Note On' timed event of the current note. - - - - Gets the 'Note Off' timed event of the current note. - - The 'Note Off' timed event of the current note. - - - - Sets note name and octave for current . - - Name of the note. - Number of the octave in scientific pitch notation. - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to to get the number of the middle C. - - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Holds the data for a construction. - - - - - - - Gets holding of the note. - - - - - Gets holding of the note. - - - - - Settings which define how notes should be detected and built. More info in the - Getting objects: GetNotes: Settings article. - - - - - - - Gets or sets custom construction method for . If null, - default method will be used (via one of the 's constructors). - - - - - Gets or sets how start event of a note should be found in case of overlapping notes with - the same note number and channel. The default value is . - More info in the - Getting objects: GetNotes: Settings: NoteStartDetectionPolicy - article. - - specified an invalid value. - - - - Defines a hint which tells the note processing algorithm how it can optimize its performance. - - - If you want to get the maximum performance of a note processing (for example, - ), - choose a hint carefully. Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - - - - or of a note can be changed. - - - - - The processing algorithm will consider that only properties that don't affect underlying MIDI - events positions will be changed. This hint means maximum performance, i.e. the processing will - take less time and consume less memory. - - - - - Default hint. Equals to . - - - - - Extension methods for notes managing. - - - - - Creates an instance of the initializing it with the - specified events collection. More info in the Objects managers article. - - that holds notes to manage. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Comparer that will be used to order objects on enumerating and saving objects - back to the via - or . - An instance of the that can be used to manage - notes represented by the . - is null. - - - - Creates an instance of the initializing it with the - events collection of the specified track chunk. More info in the - Objects managers article. - - that holds notes to manage. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Comparer that will be used to order objects on enumerating and saving objects - back to the via - or . - An instance of the that can be used to manage - notes represented by the . - is null. - - - - Gets notes contained in the specified collection of . More info in the - Getting objects: GetNotes article. - - Collection of to search for notes. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Collection of notes contained in ordered by time. - is null. - - - - - Gets notes contained in the specified . More info in the - Getting objects: GetNotes article. - - to search for notes. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Collection of notes contained in ordered by time. - is null. - - - - - - - - - Gets notes contained in the specified . More info in the - Getting objects: GetNotes article. - - to search for notes. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Collection of notes contained in ordered by time. - is null. - - - - - - - - - Gets notes contained in the specified collection of . More info in the - Getting objects: GetNotes article. - - Track chunks to search for notes. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Collection of notes contained in ordered by time. - is null. - - - - - - - - - Gets notes contained in the specified . More info in the - Getting objects: GetNotes article. - - to search for notes. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Collection of notes contained in ordered by time. - is null. - - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessNotes article. - - to search for notes to process. - The action to perform on each contained in the - . - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessNotes article. - - to search for notes to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessNotes article. - - to search for notes to process. - The action to perform on each contained in the - . - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessNotes article. - - to search for notes to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the collection of - . More info in the - Processing objects: ProcessNotes article. - - Collection of to search for notes to process. - The action to perform on each contained in the - . - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the collection of - . More info in the - Processing objects: ProcessNotes article. - - Collection of to search for notes to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessNotes article. - - to search for notes to process. - The action to perform on each contained in the - . - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessNotes article. - - to search for notes to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with notes but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Removes all notes from the . - More info in the Removing objects: RemoveNotes article. - - to search for notes to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - is null. - - - - - Removes notes that match the specified conditions from the . - More info in the Removing objects: RemoveNotes article. - - to search for notes to remove. - The predicate that defines the conditions of the to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all notes from the . - More info in the Removing objects: RemoveNotes article. - - to search for notes to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - is null. - - - - - Removes notes that match the specified conditions from the . - More info in the Removing objects: RemoveNotes article. - - to search for notes to remove. - The predicate that defines the conditions of the to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all notes from the collection of . - More info in the Removing objects: RemoveNotes article. - - Collection of to search for notes to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - is null. - - - - - Removes notes that match the specified conditions from the collection of . - More info in the Removing objects: RemoveNotes article. - - Collection of to search for notes to remove. - The predicate that defines the conditions of the to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all notes from the . - More info in the Removing objects: RemoveNotes article. - - to search for notes to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - is null. - - - - - Removes notes that match the specified conditions from the . - More info in the Removing objects: RemoveNotes article. - - to search for notes to remove. - The predicate that defines the conditions of the to remove. - Settings according to which notes should be detected and built. - Settings according to which timed events should be detected - and built to construct notes. - Count of removed notes. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Returns corresponding to the specified . - - to get music theory note from. - corresponding to the . - is null. - - - - Defines how start event of a note should be found in case of overlapping notes with - the same note number and channel. The default value is . More info in the - Getting objects: GetNotes: Settings: NoteStartDetectionPolicy - article. - - - - - - - First Note On event with corresponding note number and channel should be taken. - - - - - Last Note On event with corresponding note number and channel should be taken. - - - - - Represents parameter (RPN or NRPN) encoded as series of Control Change events. - - - - - Occurs when the time of an object has been changed. - - - - - Gets or sets the channel of the current parameter. This channel is in fact - the channel of Control Change events that represent the parameter. - - - - - Gets or sets the type of the current parameter's value. - - specified an invalid value. - - - - Gets or sets absolute time of the parameter data in units defined by the time division of a MIDI file. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the time in different representations. - - is negative. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - Returns the collection of objects that represent the current - parameter. In fact, each object will contain event. - - Collection of objects that represent the current - parameter. - - - - The type of a parameter's value. - - - - - Parameter's value represents exact value of the parameter. - - - - - Parameter's value represents a value which should be added to the current - value of the parameter. - - - - - Parameter's value represents a value which should be subtracted from the current - value of the parameter. - - - - - Channel Coarse Tuning registered parameter. - - - - - Represents the smallest possible number of half-steps to tune by. - - - - - Represents the largest possible number of half-steps to tune by. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - exact number of half-steps. - - The number of half-steps to tune by. - is out of - [; ] range. - - - - Initializes a new instance of the with the specified - number of half-steps and type of this number. - - Number of half-steps to tune by. - The type of parameter's data which defines whether it - represents exact value, increment or decrement. - specified an invalid value. - is out of - [; ] range. - - - - Gets or sets the number of half-steps to tune by. - - is out of - [; ] range. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - - - - - - - Channel Fine Tuning registered parameter. - - - - - Represents the smallest possible number of cents to tune by. - - - - - Represents the largest possible number of cents to tune by. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - exact number of cents. - - The number of cents to tune by. - is out of - [; ] range. - - - - Initializes a new instance of the with the specified - number of cents and type of this number. - - The number of cents to tune by. - The type of parameter's data which defines whether it - represents exact value, increment or decrement. - specified an invalid value. - is out of - [; ] range. - - - - Gets or sets the number of cents to tune by. - - is out of - [; ] range. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - - - - - - - Modulation Depth Range (Vibrato Depth Range) registered parameter. - - - - - Represents the default number of half-steps to tune by. - - - - - Represents the default number of cents to tune by. - - - - - Represents the smallest possible number of cents to tune by. - - - - - Represents the largest possible number of cents to tune by. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - exact number of half-steps and cents. - - The number of half-steps to tune by. - The number of cents to tune by. - is out of - [; ] range. - - - - Initializes a new instance of the with the specified - number of half-steps and cents and type of the data. - - The number of half-steps to tune by. - the number of cents to tune by. - The type of parameter's data which defines whether it - represents exact value, increment or decrement. - specified an invalid value. - is out of - [; ] range. - - - - Gets or sets the number of half-steps to tune by. - - - - - Gets or sets the number of cents to tune by. - - is out of - [; ] range. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - - - - - - - Pitch Bend Sensitivity registered parameter. - - - - - Represents the default number of half-steps of the sensitivity range. - - - - - Represents the default number of cents of the sensitivity range. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - exact number of half-steps and cents. - - The number of half-steps of the sensitivity range. - The number of cents of the sensitivity range. - - - - Initializes a new instance of the with the specified - number of half-steps and cents and type of the data. - - The number of half-steps of the sensitivity range. - the number of cents of the sensitivity range. - The type of parameter's data which defines whether it - represents exact value, increment or decrement. - specified an invalid value. - - - - Gets or sets the number of half-steps of the sensitivity range. - - - - - Gets or sets the number of cents of the sensitivity range. - - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - - - - - - - Represents MIDI registered parameter (RPN). - - - - - Initializes a new instance of the with the specified - type of a parameter. - - The type of parameter. - - - - Gets the type of the current parameter. - - - - - Returns MSB and LSB that represent data of the current parameter. - - MSB of parameter's data. - LSB of parameter's data. - - - - Returns the number of increment/decrement steps based on the value of the - current parameter. - - The number of increment/decrement steps based on the value of the - current parameter. - - - - Returns the collection of objects that represent the current - parameter. In fact, each object will contain event. - - Collection of objects that represent the current - parameter. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - the type of a registered parameter. - - - - - Pitch Bend Sensitivity registered parameter. - - - - - Channel Fine Tuning registered parameter. - - - - - Channel Coarse Tuning registered parameter. - - - - - Tuning Program Change registered parameter. - - - - - Tuning Bank Select registered parameter. - - - - - Modulation Depth Range (Vibrato Depth Range) registered parameter. - - - - - Tuning Bank Select registered parameter. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - exact bank number. - - The bank number. - - - - Initializes a new instance of the with the specified - bank number and type of this number. - - The bank number. - The type of parameter's data which defines whether it - represents exact value, increment or decrement. - - - - Gets or sets the bank number. - - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - - - - - - - Tuning Program Change registered parameter. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - exact program number. - - The program number. - - - - Initializes a new instance of the with the specified - program number and type of this number. - - The program number. - The type of parameter's data which defines whether it - represents exact value, increment or decrement. - - - - Gets or sets the program number. - - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - - - - - - - Represents a musical rest. More info in the Getting objects: Rests article. - - - - - - - Occurs when the time of an object has been changed. - - - - - Occurs when the length of an object has been changed. - - - - - - - - - - - - - - Gets the key of objects the current rest has been built for. Please read - Getting objects: Rests article to - understand the key concept. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the rests are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the rests are equal, true otherwise. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Settings which define how rests should be detected and built. More info in the - Getting objects: Rests article. - - - - - - Rests will be built only at spaces without notes at all. - - - - - Rests will be built between notes separately for each channel. - - - - - Rests will be built between notes separately for each note number. - - - - - Rests will be built between notes separately for each channel and note number. - - - - - Rests will be built only at spaces without chords at all. - - - - - Rests will be built between chords separately for each channel. - - - - - Gets or sets a function that returns the key of an object. Please read - Getting objects: Rests article to - understand the key concept. The default key selector is - obj => obj is Note ? "Note" : null which means rests will be built - between notes where there are no notes at all. - - - - - Provides methods to get rests between different objects. - - - - - Returns a collection of the specified objects and rests between them according to - the provided settings. Objects (including rests) in the result collection are - ordered by time. - - The input objects collection. - Settings according to which rests should be detected and built. - Collection with objects from and rests - between them. - is null. - - - - Returns rests between objects within the specified collection according to - the provided settings. Rests in the result collection are ordered by time. - - The input objects collection. - Settings according to which rests should be detected and built. - Collection of rests between objects within . - is null. - - - - Represents tempo expressed in microseconds per quarter note or beats per minute. - - - - - - Default tempo which is 500,000 microseconds per quarter note or 120 beats per minute. - - - - - Initializes a new instance of the with the specified number of - microseconds per quarter note. - - Number of microseconds per quarter note. - - is zero or negative. - - - - Gets number of microseconds per quarter note. - - - - - Gets the number of beats per minute. - - - - - Creates an instance of the with the specified number of - milliseconds per quarter note. - - Number of milliseconds per quarter note. - An instance of the which represents tempo as specified - number of milliseconds per quarter note. - - is zero or negative. - - - - Creates an instance of the with the specified number of - beats per minute. - - Number of beats per minute. - An instance of the which represents tempo as specified - number of beats per minute. - - is zero or negative. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the tempos are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the tempos are equal, true otherwise. - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Represents a tempo map of a MIDI file. More info in the Tempo map article. - - - - - The default tempo map which uses 4/4 time signature and tempo of 500,000 microseconds per quarter note. - - - - - Initializes a new instance of the with the specified time division - of a MIDI file. - - MIDI file time division which specifies the meaning of the time - used by events of the file. - is null. - - - - Gets the time division used by a tempo map. - - - - - Returns the collection of tempo changes. - - Collection of tempo changes. - - - - Returns tempo at the specified time. - - Time to get tempo at. - Tempo at the time of . - is null. - - - - Returns the collection of time signature changes. - - Collection of time signature changes. - - - - Returns time signature at the specified time. - - Time signature to get tempo at. - Time signature at the time of . - is null. - - - - Clones the current . - - An instance of the which is a clone of the current one. - - - - Creates an instance of the with the specified tempo and - time signature using default time division (96 ticks per quarter note). - - Tempo of the tempo map. - Time signature of the tempo map. - with the specified tempo and time signature. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Creates an instance of the with the specified tempo using - default time division (96 ticks per quarter note). - - Tempo of the tempo map. - with the specified tempo. - is null. - - - - Creates an instance of the with the specified time signature using - default time division (96 ticks per quarter note). - - Time signature of the tempo map. - with the specified time signature. - is null. - - - - Creates an instance of the with the specified time division using - default tempo (120 BPM) and default time signature (4/4). - - Time division of the tempo map. - with the specified time division. - is null. - - - - Creates an instance of the with the specified time division and - tempo using default time signature (4/4). - - Time division of the tempo map. - Tempo of the tempo map. - with the specified time division and tempo. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Creates an instance of the with the specified time division and - time signature using default tempo (120 BPM). - - Time division of the tempo map. - Time signature of the tempo map. - with the specified time division and time signature. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Creates an instance of the with the specified time division, - tempo and time signature. - - Time division of the tempo map. - Tempo of the tempo map. - Time signature of the tempo map. - with the specified time division, tempo and time signature. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Provides a way to manage tempo map of a MIDI file. More info in the Tempo map article. - - - - - - Initializes a new instance of the that can be used - to manage new tempo map with the default time division (96 ticks per quarter note). - - - - - Initializes a new instance of the with the - specified time division. - - Time division of a new tempo that will be managed by this manager. - is null. - - - - Initializes a new instance of the with the specified time division - and events collections. - - MIDI file time division which specifies the meaning of the time - used by events of the file. - Collection of which hold events that - represent tempo map of a MIDI file. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is empty. - - - - Gets current tempo map built by the . - - - - - Sets new time signature that will last from the specified time until next change of - time signature. - - Time to set the new time signature at. - New time signature that will last from the specified - time until next change of time signature. - is negative. - is null. - - - - Sets new time signature that will last from the specified time until next change of - time signature. - - Time to set the new time signature at. - New time signature that will last from the specified - time until next change of time signature. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Removes all changes of time signature that occurred since the specified time. - - Time to remove changes of time signature since. - is negative. - - - - Removes all changes of time signature that occurred since the specified time. - - Time to remove changes of time signature since. - is null. - - - - Removes all changes of time signature that occurred between the specified times. - - Start of time range to remove changes of time signature in. - End of time range to remove changes of time signature in. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - - - - - Removes all changes of time signature that occurred between the specified times. - - Start of time range to remove changes of time signature in. - End of time range to remove changes of time signature in. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Sets new tempo that will last from the specified time until next change of tempo. - - Time to set the new tempo at. - New tempo that will last from the specified time until next change - of tempo. - is negative. - is null. - - - - Sets new tempo that will last from the specified time until next change of tempo. - - Time to set the new tempo at. - New tempo that will last from the specified time until next change - of tempo. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Removes all changes of tempo that occurred since the specified time. - - Time to remove changes of tempo since. - is negative. - - - - Removes all changes of tempo that occurred since the specified time. - - Time to remove changes of tempo since. - is null. - - - - Removes all changes of tempo that occurred between the specified times. - - Start of time range to remove changes of tempo in. - End of time range to remove changes of tempo in. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - - - - - Removes all changes of tempo that occurred between the specified times. - - Start of time range to remove changes of tempo in. - End of time range to remove changes of tempo in. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Clears current tempo map removing all changes of tempo and time signature. - - - - - Replaces current tempo map with the specified one. - - Tempo map to replace the current one. - is null. - - - - Saves tempo map changes that were made with the updating - underlying events collections. - - - This method will rewrite content of all events collections were used to construct the current - with events were managed by underlying - objects of this manager. Also all delta-times of wrapped events will be recalculated according to - the of event wrappers. - - - - - Performs application-defined tasks associated with freeing, releasing, or resetting - unmanaged resources. - - - - - Extension methods for managing tempo map. More info in the Tempo map article. - - - - - Creates an instance of the initializing it with the - specified events collections and time division. More info in the Tempo map article. - - Collection of which hold events - that represent tempo map of a MIDI file. - MIDI file time division which specifies the meaning of the time - used by events of the file. - An instance of the that can be used to manage - tempo map represented by the and . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is an empty collection. - - - - Creates an instance of the initializing it with the - specified time division and events collections of the specified track chunks. More info in the - Tempo map article. - - Collection of which hold events - that represent tempo map of a MIDI file. - MIDI file time division which specifies the meaning of the time - used by events of the file. - An instance of the that can be used to manage - tempo map represented by the and . - - If is an empty collection and implements , - a new will be added to it. Tempo map events will be added to this new track chunk. - - - One of the following errors occurred: - - - is null. - - - is null. - - - - is an empty collection. - - - - Creates an instance of the initializing it with the - events collections of the specified MIDI file. More info in the Tempo map article. - - MIDI file to manage tempo map of. - An instance of the that can be used to manage - tempo map of the . - - If doesn't contain any track chunks, a new one will be added to it. - Tempo map events will be added to this new track chunk. - - is null. - - - - Gets tempo map represented by the specified time division and events collections of - the specified track chunks. - - Collection of which hold events - that represent tempo map of a MIDI file. - MIDI file time division which specifies the meaning of the time - used by events of the file. - Tempo map represented by the and . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets tempo map of the specified MIDI file. - - MIDI file to get tempo map of. - Tempo map of the . - is null. - - - - Replaces tempo map contained in the specified collection of the with - another one. - - Collection of the holding a tempo map to replace. - Tempo map to replace the one contained in the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Replaces tempo map contained in the specified collection of the with - another one. - - Collection of the holding a tempo map to replace. - Tempo map to replace the one contained in the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Replaces tempo map contained in the specified with another one. - - holding a tempo map to replace. - Tempo map to replace the one contained in the . - - If doesn't contain any track chunks, a new one will be added to it. This - track chunk will contain all tempo map events from the . - - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Represents time signature which is number of beats of specified length. - - - - - - Default time signature which is 4/4. - - - - - Initializes a new instance of the with the specified - numerator and denominator. - - Numerator of the time signature which defines number of beats. - Denominator of the time signature which defines beat length. - - One of the following errors occurred: - - - is zero or negative. - - - is zero or negative. - - - is not a power of two. - - - - - - - Gets numerator of the time signature which defines number of beats. - - - - - Gets denominator of the time signature which defines beat length. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the time signatures are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the time signatures are equal, true otherwise. - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Represents wrapper for the that provides absolute time of an event. - - - - - Occurs when the time of an object has been changed. - - - - - Initializes a new instance of the with the - specified MIDI event. - - An event to wrap into . - - - - Initializes a new instance of the with the - specified MIDI event and absolute time. - - An event to wrap into . - Absolute time of an event in units defined by the time division of a MIDI file. - - - - Gets wrapped MIDI event. - - - - - Gets or sets absolute time of the event in units defined by the time division of a MIDI file. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the time in different representations. - - is negative. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Holds the data for a construction. - - - - - - - Gets a raw MIDI event. - - - - - Gets the absolute time of the . - - - - - Gets the index of events collection where is placed. - - - Events collection means either or - (which can be obtained via ). Note that index is from 0 - to events collections count minus 1. Thus if, for example, a MIDI file has following - chunks: - - track chunk - custom chunk - track chunk - - an event from the last chunk will have set to 1, because - custom chunk is not treated as events collection and therefore doesn't take part in indexing. - - - - - Gets the index of the within an events collection. - - - - - Settings which define how timed events should be detected and built. - - - - - - - Gets or sets custom construction method for . If null, - default method will be used (via one of the 's constructors). - - - - - Defines a hint which tells the timed event processing algorithm how it can optimize its performance. - - - If you want to get the maximum performance of a timed event processing (for example, - ), - choose a hint carefully. Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - - - - of a timed event can be changed. - - - - - The processing algorithm will consider that only properties that don't affect underlying MIDI - events positions will be changed. This hint means maximum performance, i.e. the processing will - take less time and consume less memory. - - - - - Default hint. Equals to . - - - - - Extension methods for managing MIDI events by their absolute time. - - - - - Creates an instance of the initializing it with the - specified events collection. More info in the Objects managers article. - - that holds events to manage. - Settings according to which timed events should be detected and built. - Comparer that will be used to order objects on enumerating and saving objects - back to the via - or . - An instance of the that can be used to manage - events represented by the . - is null. - - - - Creates an instance of the initializing it with the - events collection of the specified track chunk. More info in the - Objects managers article. - - that holds events to manage. - Settings according to which timed events should be detected and built. - Comparer that will be used to order objects on enumerating and saving objects - back to the via - or . - An instance of the that can be used to manage - events represented by the . - is null. - - - - Gets timed events contained in the specified . More info in the - Getting objects: GetTimedEvents article. - - to search for events. - Settings according to which timed events should be detected and built. - Collection of timed events contained in ordered by time. - is null. - - - - - - - - - Gets timed events contained in the specified . More info in the - Getting objects: GetTimedEvents article. - - to search for events. - Settings according to which timed events should be detected and built. - Collection of timed events contained in ordered by time. - is null. - - - - - - - - - Gets timed events contained in the specified collection of . More info in the - Getting objects: GetTimedEvents article. - - Track chunks to search for events. - Settings according to which timed events should be detected and built. - Collection of timed events contained in ordered by time. - is null. - - - - - - - - - Gets timed events contained in the specified . More info in the - Getting objects: GetTimedEvents article. - - to search for events. - Settings according to which timed events should be detected and built. - Collection of timed events contained in ordered by time. - is null. - - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessTimedEvents article. - - to search for events to process. - The action to perform on each contained in the - . - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessTimedEvents article. - - to search for events to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessTimedEvents article. - - to search for events to process. - The action to perform on each contained in the - . - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessTimedEvents article. - - to search for events to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the collection of - . More info in the - Processing objects: ProcessTimedEvents article. - - Collection of to search for events to process. - The action to perform on each contained in the - . - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the collection of - . More info in the - Processing objects: ProcessTimedEvents article. - - Collection of to search for events to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessTimedEvents article. - - to search for events to process. - The action to perform on each contained in the - . - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Performs the specified action on each contained in the . - More info in the Processing objects: ProcessTimedEvents article. - - to search for events to process. - The action to perform on each contained in the - . - The predicate that defines the conditions of the to process. - Settings according to which timed events should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with timed events but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - - Removes all timed events from the . - More info in the Removing objects: RemoveTimedEvents article. - - to search for events to remove. - Count of removed timed events. - is null. - - - - - Removes timed events that match the specified conditions from the . - More info in the Removing objects: RemoveTimedEvents article. - - to search for events to remove. - The predicate that defines the conditions of the to remove. - Settings according to which timed events should be detected and built. - Count of removed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all timed events from the . - More info in the Removing objects: RemoveTimedEvents article. - - to search for events to remove. - Count of removed timed events. - is null. - - - - - Removes timed events that match the specified conditions from the . - More info in the Removing objects: RemoveTimedEvents article. - - to search for events to remove. - The predicate that defines the conditions of the to remove. - Settings according to which timed events should be detected and built. - Count of removed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all timed events from the collection of . - More info in the Removing objects: RemoveTimedEvents article. - - Collection of to search for events to remove. - Count of removed timed events. - is null. - - - - - Removes timed events that match the specified conditions from the collection of . - More info in the Removing objects: RemoveTimedEvents article. - - Collection of to search for events to remove. - The predicate that defines the conditions of the to remove. - Settings according to which timed events should be detected and built. - Count of removed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Removes all timed events from the . - More info in the Removing objects: RemoveTimedEvents article. - - to search for events to remove. - Count of removed timed events. - is null. - - - - - Removes timed events that match the specified conditions from the . - More info in the Removing objects: RemoveTimedEvents article. - - to search for events to remove. - The predicate that defines the conditions of the to remove. - Settings according to which timed events should be detected and built. - Count of removed timed events. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - - Holds information about an object that has been changed within . - - - - - - - Initializes a new instance of the with the specified object and - its time before changing. - - The object that has been changed. - The time (in ticks) of the before changing. - - - - Gets the changed object. - - - - - Gets the time (in ticks) of the before changing. - - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Provides the event which fired when the time of an object has been changed. - - - - - Occurs when the time of an object has been changed. - - - - - Represents a collection which can be observed for changes via event. - - - - - Occurs when collection changed (objects have been added, removed or changed). - - - - - Represents an object that has time. - - - - - Gets the start time of an object. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the time in different representations. - - is negative. - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - Defines a hint which tells the objects processing algorithm how it can optimize its performance. - - - If you want to get the maximum performance of an object processing (for example, - ), - choose a hint carefully. Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - - - - The processing algorithm will consider that properties that don't affect underlying MIDI - events positions will be changed only. This hint means maximum performance, i.e. the processing will - take less time and consume less memory. If you're going to change, for example, objects times, or - notes collections of chords, your changes won't be saved with this option. - - - - - or of an object can be changed. - - - - - can be changed, i.e. a note can be added to or removed from a chord. - - - - - or can be changed on a note within - a chord's notes (). - - - - - Default hint. Equals to . - - - - - The processing algorithm will consider that everything on an object can be changed. - This hint means minimum performance, i.e. the processing will take more time and consume more memory. - For maximum performance see option. - - - - - Provides a collection which can be observed for changes via event. - - - - - - Occurs when collection changed (objects have been added, removed or changed). - - - - - Initializes an empty instance of the . - - - - - Initializes a new instance of the with - the specified objects. - - Objects to add to the collection. - - - - Gets the number of objects currently contained in the collection. - - - - - Executes a specified action that modifies the collection. - - If the collection is already undergoing a batch operation, the - event will not be raised until the outermost operation completes. This ensures that multiple changes can be - grouped together and processed as a single batch. - An that performs the modifications to the collection. - is null. - - - - Executes an action that modifies the specified object. - - If the method is executed within the , - the event will be fired when you're done with - the method. - The object to be modified. - An that performs the modifications to the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Adds the specified objects to the current collection. - - If the method is executed within the , - the event will be fired when you're done with - the method. - Objects to add to the collection. - is null. - - - - Adds the specified objects to the current collection. - - If the method is executed within the , - the event will be fired when you're done with - the method. - Objects to add to the collection. - is null. - - - - Removes the specified objects from the current collection. - - If the method is executed within the , - the event will be fired when you're done with - the method. - Objects to remove from the collection. - is null. - - - - Removes the specified objects from the current collection. - - If the method is executed within the , - the event will be fired when you're done with - the method. - Objects to remove from the collection. - is null. - - - - Removes all objects from the current collection. - - If the method is executed within the , - the event will be fired when you're done with - the method. - - - - Returns an enumerator that iterates through the collection. - - An enumerator that can be used to iterate through the collection. - - - - Returns an enumerator that iterates through the collection. - - An enumerator that can be used to iterate through the collection. - - - - Holds information about changes within a collection for event. - - - - - Gets or sets a collection of added objects. - - - - - Gets or sets a collection of removed objects. - - - - - Gets or sets a collection of changed objects. - - - - - Contains arguments for the event. - - - - - Gets the old time of an object. - - - - - Gets the new time of an object. - - - - - Represents a basic collection of the . - - The type of elements in the collection. - - - - Occurs when objects collection changes (an object added or removed). - - - - - Gets the number of objects contained in the . - - - - - Adds objects to this collection. - - Objects to add to the collection. - is null. - - - - Adds objects to this collection. - - Objects to add to the collection. - is null. - - - - Removes objects from this collection. - - Objects to remove from the collection. - true if objects were successfully removed from the collection; - otherwise, false. - is null. - - - - Removes objects from this collection. - - Objects to remove from the collection. - true if objects were successfully removed from the collection; - otherwise, false. - is null. - - - - Removes all the objects that match the conditions defined by the specified predicate. - - The delegate that defines the conditions of - the objects to remove. - is null. - - - - Removes all objects from this collection. - - - - - Returns an enumerator that iterates through the collection. - - An enumerator that can be used to iterate through the collection. - - - - Returns an enumerator that iterates through the collection. - - An enumerator that can be used to iterate through the collection. - - - - Provides data for the event. - - - - - Gets objects that were added to a . - - - - - Gets objects that were removed from a . - - - - - Represents the method that will handle the event. - - The type of objects within . - that has fired the event. - A that contains the event data. - - - - Defines a method that a type implements to compare two objects. - - - - - Compares two objects and returns a value indicating whether one is less than, - equal to, or greater than the other. - - The first object to compare. - The second object to compare. - A signed integer that indicates the relative values of and - , as shown in the following table. - - - Value - Meaning - - - Less than zero - is less than - - - Zero - equals - - - Greater than zero - is greater than - - - - - - - Provides a way to manage timed objects of different types within an - (which can be obtained via for example). More info in the - Objects managers article. - - - - To start manage objects you need to get an instance of the . - - - To finish managing you need to call the or - method. - - - Since the manager implements it is recommended to manage objects within - the using block. - - - - - - Initializes a new instance of the with the specified - events collection and object type. Optionally object detection settings and comparer can be provided. - - to manage objects within. - The type of objects to manage. - Settings according to which objects should be - detected and built. - Comparer that will be used to order objects on enumerating - or saving objects back to the - via or . - is null. - - - - Provides a way to manage timed objects of the specified type within an - (which can be obtained via for example). More info in the - Objects managers article. - - - - To start manage objects you need to get an instance of the . - Also ManageX methods within specific object type utilities class (for example, - - or ) - can be used. - - - To finish managing you need to call the or method. - - - Since the manager implements it is recommended to manage objects within - the using block. - - - - - - - - - Initializes a new instance of the with the specified - events collection. Optionally object detection settings and comparer can be provided. - - to manage objects within. - Settings according to which objects should be - detected and built. - Comparer that will be used to order objects on enumerating - or saving objects back to the - via or . - is null. - - - - Gets the with all objects managed by the current - . - - - - - Saves all objects that were managed with the current - updating underlying events collection. - - - This method will rewrite content of the events collection was used to construct the current - with events were managed by this manager. - - - - - Performs application-defined tasks associated with freeing, releasing, or resetting - unmanaged resources. - - - - - Provides a wrapper around to write objects to it keeping - low memory consumption. See - Lazy reading/writing article to learn more. - - - - - Initializes a new instance of the with the specified - instance of . - - that will be used to write objects. - is null. - - - - Writes the specified object with the underlying . - - - Objects passed to each next call of the method must be ordered in non-descending - order by their times. - - Object to write. - Object's time is less than the current - time of the underlying writer. - An I/O error occurred while writing the object. - A track chunk is not started - (see ). - - - - Writes the specified objects with the underlying . - - - Objects passed to each next call of the method must be ordered in non-descending - order by their times. - - Objects to write. - An object's time is less than the current - time of the underlying writer. - An I/O error occurred while writing the object. - A track chunk is not started - (see ). - - - - Releases all resources used by the current - and also flushes all remaining data to the underlying stream. - - - - - Extension methods for objects that implement the interface. - - - - - Gets time of an as an instance of type that implements the - interface. - - Type that will represent the time of the . - Object to get time of. - Tempo map to calculate time of the . - Time of the specified object as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Gets time of an as an instance of time span defined by the - specified time span type. - - Object to get time of. - The type of time span to convert the time of to. - Tempo map to calculate time of the . - Time of the specified object as an instance of time span defined by the - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Filters collection of to return objects at the specified time. - - The type of the elements of . - A collection to filter. - Time to filter objects by. - A collection that contains objects from the input sequence that are at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of timed objects and - save them you need to use a manager appropriate for an object's type. - - is null. - is negative. - - - - Filters collection of to return objects at the specified time. - - The type of the elements of . - A collection to filter. - Time to filter objects by. - Tempo map to filter by . - A collection that contains objects from the input sequence that are at the specified time. - - Note that changes made on the objects returned by this method will not be saved to an underlying - data source (events collection, track chunk, file). To change properties of timed objects and - save them you need to use a manager appropriate for an object's type. - - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Creates a track chunk with the specified objects. - - - Note that only MIDI events allowed by SMF specification will be added to result track chunk. - So instances of containing or - won't be added. - - Collection of objects to create a track chunk from. - containing the . - is null. - - - - Creates a MIDI file with the specified timed objects. - - - Note that only MIDI events allowed by SMF specification will be added to result MIDI file. - So instances of containing or - won't be added. - - Collection of objects to create a MIDI file from. - containing the . - is null. - - - - Adds the specified collection of objects to . - - to add objects to. - Objects to add to . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Adds the specified collection of objects to . - - to add objects to. - Objects to add to . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Sets time of the specified object in terms of . - - The type of the . - Object to set time of. - New time of the . - used to calculate new time in ticks. - The same object the method was called on. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - One of the objects is null. - - - - - - - Performs the specified action on each object contained in the . Objects - for processing will be selected by the specified object type. More info in the - Processing objects: ProcessObjects article. - - to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Performs the specified action on objects contained in the . Objects - for processing will be selected by the specified object type and matching predicate. More info in the - Processing objects: ProcessObjects article. - - to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - The predicate that defines the conditions of an object to process. Predicate - should return true for an object to process. - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Performs the specified action on each object contained in the . Objects - for processing will be selected by the specified object type. More info in the - Processing objects: ProcessObjects article. - - to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Performs the specified action on objects contained in the . Objects - for processing will be selected by the specified object type and matching predicate. More info in the - Processing objects: ProcessObjects article. - - to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - The predicate that defines the conditions of an object to process. Predicate - should return true for an object to process. - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Performs the specified action on each object contained in the collection of . Objects - for processing will be selected by the specified object type. More info in the - Processing objects: ProcessObjects article. - - The collection of to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Performs the specified action on objects contained in the collection of . Objects - for processing will be selected by the specified object type and matching predicate. More info in the - Processing objects: ProcessObjects article. - - The collection of to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - The predicate that defines the conditions of an object to process. Predicate - should return true for an object to process. - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Performs the specified action on each object contained in . Objects - for processing will be selected by the specified object type. More info in the - Processing objects: ProcessObjects article. - - to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Performs the specified action on objects contained in . Objects - for processing will be selected by the specified object type and matching predicate. More info in the - Processing objects: ProcessObjects article. - - to search for objects to process. - Types of objects to process (for example, ObjectType.Chord | ObjectType.TimedEvent). - The action to perform on each object contained in the - . - The predicate that defines the conditions of an object to process. Predicate - should return true for an object to process. - Settings according to which objects should be detected and built. - Hint which tells the processing algorithm how it can optimize its performance. - The default value is . - - Note that you can always use an object manager to - perform any manipulations with objects but dedicated methods of the will - always be faster and will consume less memory. - - Count of processed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Removes all objects of the specified type from . More info in the - Removing objects: RemoveObjects article. - - to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - Settings according to which objects should be detected and built. - Count of removed objects. - is null. - - - - Removes objects from . Objects for removing will be selected by the specified - object type and matching predicate. More info in the - Removing objects: RemoveObjects article. - - to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - The predicate that defines the conditions of an object to remove. Predicate - should return true for an object that must be removed. - Settings according to which objects should be detected and built. - Count of removed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Removes all objects of the specified type from . More info in the - Removing objects: RemoveObjects article. - - to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - Settings according to which objects should be detected and built. - Count of removed objects. - is null. - - - - Removes objects from . Objects for removing will be selected by the specified - object type and matching predicate. More info in the - Removing objects: RemoveObjects article. - - to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - The predicate that defines the conditions of an object to remove. Predicate - should return true for an object that must be removed. - Settings according to which objects should be detected and built. - Count of removed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Removes all objects of the specified type from the collection of . More info in the - Removing objects: RemoveObjects article. - - The collection of to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - Settings according to which objects should be detected and built. - Count of removed objects. - is null. - - - - Removes objects from the collection of . Objects for removing will be selected - by the specified object type and matching predicate. More info in the - Removing objects: RemoveObjects article. - - The collection of to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - The predicate that defines the conditions of an object to remove. Predicate - should return true for an object that must be removed. - Settings according to which objects should be detected and built. - Count of removed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Removes all objects of the specified type from the . More info in the - Removing objects: RemoveObjects article. - - to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - Settings according to which objects should be detected and built. - Count of removed objects. - is null. - - - - Removes objects from . Objects for removing will be selected - by the specified object type and matching predicate. More info in the - Removing objects: RemoveObjects article. - - to search for objects to remove. - Types of objects to remove (for example, ObjectType.Chord | ObjectType.Note). - The predicate that defines the conditions of an object to remove. Predicate - should return true for an object that must be removed. - Settings according to which objects should be detected and built. - Count of removed objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Provides a way to convert the length of an object from one representation to another. - More info in the Time and length article. - - - - - Converts length from to the specified length type. - - Type that will represent the length of an object. - Length to convert. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of . - - One of the following errors occurred: - - - is negative. - - - is negative. - - - - is null. - is not supported. - - - - Converts length from to the specified length type. - - Length to convert. - Type that will represent the length of an object. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of time span defined by . - - One of the following errors occurred: - - - is negative. - - - is negative. - - - - is null. - specified an invalid value. - - - - Converts length from to the specified length type. - - Type that will represent the length of an object. - Length to convert. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of . - is negative. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Converts length from to the specified length type. - - Length to convert. - Type that will represent the length of an object. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of time span defined by . - is negative. - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Converts length from one length type to another one. - - Type that will represent the length of an object. - Length to convert. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of . - is negative. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Converts length from one length type to another one. - - Length to convert. - Type that will represent the length of an object. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of time span defined by . - is negative. - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Converts length from one length type to another one. - - Type that will represent the length of an object. - Length to convert. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - is not supported. - - - - Converts length from one length type to another one. - - Length to convert. - Type that will represent the length of an object. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of time span defined by . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - - - - Converts length from one length type to another one. - - Length to convert. - Type to convert to. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - is negative. - is not supported. - - - - Converts length from one length type to another one. - - Length to convert. - Type to convert to. - Start time of an object to convert length of. - Tempo map used to convert . - Length as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - is null. - - - - is not supported. - - - - Converts length from the specified length type to . - - Length to convert. - Start time of an object to convert length of. - Tempo map used to convert . - Length as . - is negative. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Converts length from the specified length type to . - - Length to convert. - Start time of an object to convert length of. - Tempo map used to convert . - Length as . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Provides a way to convert the time of an object from one representation to another. - More info in the Time and length article. - - - - - Converts time from to the specified time type. - - Type that will represent the time of an object. - Time to convert. - Tempo map used to convert . - Time as an instance of . - is negative. - is null. - is not supported. - - - - Converts time from to the specified time type. - - Time to convert. - Type that will represent the time of an object. - Tempo map used to convert . - Time as an instance of time span defined by . - is negative. - is null. - specified an invalid value. - - - - Converts time from one time type to another one. - - Type that will represent the time of an object. - Time to convert. - Tempo map used to convert . - Time as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Converts time from one time type to another one. - - Time to convert. - Type that will represent the time of an object. - Tempo map used to convert . - Time as an instance of time span defined by . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Converts time from one time type to another one. - - Time to convert. - Type to convert time to. - Tempo map used to convert . - Time as an instance of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - is not supported. - - - - Converts time from the specified time type to . - - Time to convert. - Tempo map used to convert . - Time as . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Time span that represents time or length. Please read Time and length - article to learn more. - - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Represents a simple math operation used by the . - The default is . - - - - - Addition. - - - - - Subtraction. - - - - - Represents bar/beat time span which represents bars and fractional beats. More info in the - Time and length: Representations: Bars, beats and fraction article. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - number of bars. - - The number of bars. - is negative. - - - - Initializes a new instance of the with the specified - number of bars and beats. - - The number of bars. - The number of beats. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - - - - - Gets the bars component of the time represented by the current . - - - - - Gets the beats component of the time represented by the current . - - - - - Converts the string representation of a bar/beat time span to its - equivalent. A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a bar/beat time span to its - equivalent. - - A string containing a time span to convert. - A equivalent to the time span contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if time spans are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if time spans are equal, true otherwise. - - - - Adds two specified instances. - - The first to add. - The second to add. - An object whose value is the sum of the values of and - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Subtracts a specified from another one. - - The minuend. - The subtrahend. - An object whose value is the result of the value of minus - the value of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is less than . - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Represents bar/beat time span which represents bars, beats and ticks. More info in the - Time and length: Representations: Bars, beats and ticks article. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - number of bars. - - The number of bars. - is negative. - - - - Initializes a new instance of the with the specified - number of bars and beats. - - The number of bars. - The number of beats. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - - - - - Initializes a new instance of the with the specified - number of bars, beats and ticks. - - The number of bars. - The number of beats. - The number of ticks. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - is negative. - - - - - - - Gets the bars component of the time represented by the current . - - - - - Gets the beats component of the time represented by the current . - - - - - Gets the ticks component of the time represented by the current . - - - - - Converts the string representation of a bar/beat time span to its - equivalent. A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a bar/beat time span to its - equivalent. - - A string containing a time span to convert. - A equivalent to the time span contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if time spans are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if time spans are equal, true otherwise. - - - - Adds two specified instances. - - The first to add. - The second to add. - An object whose value is the sum of the values of and - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Subtracts a specified from another one. - - The minuend. - The subtrahend. - An object whose value is the result of the value of minus - the value of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is less than . - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Settings which control the process of conversion a double number to an instance - of the . - - - - - - Represents the default maximum count of iterations the rationalization process - should take before stop (see ). - - - - - Represents the default maximum fractional part value to consider a number as integer during the - rationalization process (see ). - - - - - Represents the default maximum difference between an input double number and the calculated - (see ). - - - - - Gets or sets the maximum count of iterations the rationalization process - should take before stop. The default value is 20. - - The value is zero or negative. - - - - Gets or sets a maximum fractional part value to consider a number as integer during the - rationalization process. For example, 1.001 will be considered as just 1.0 if - is 0.001 or greater. - - The value is zero or negative. - - - - Gets or sets the maximum difference between an input double number and the calculated - . For example, 3/2 will be returned as the result for - the input number of 1.5001 if is 0.0001 or greater. - - The value is zero or negative. - - - - Represents a result of summation or subtraction of two . - - - - - Gets the first . - - - - - Gets the second . - - - - - Gets the mathematical operation between and . - - - - - Get the mode of the mathematical operation represented by the current . - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if time spans are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if time spans are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Represents metric time span which represents hours, minutes and seconds. More info in the - Time and length: Representations: Metric article. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - number of microseconds. - - Number of microseconds which represents metric time span. - is negative. - - - - Initializes a new instance of the with the specified - object. - - Time interval to initialize the . - - - - Initializes a new instance of the with the specified - numbers of hours, minutes and seconds. - - Number of hours. - Number of minutes. - Number of seconds. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - is negative. - - - - - - - Initializes a new instance of the with the specified - numbers of hours, minutes, seconds and milliseconds. - - Number of hours. - Number of minutes. - Number of seconds. - Number of milliseconds. - - One of the following errors occurred: - - - is negative. - - - is negative. - - - is negative. - - - is negative. - - - - - - - Gets the value of the current expressed in microseconds. - - - - - Gets the value of the current expressed in whole and fractional milliseconds. - - - - - Gets the value of the current expressed in whole and fractional seconds. - - - - - Gets the value of the current expressed in whole and fractional minutes. - - - - - Gets the value of the current expressed in whole and fractional hours. - - - - - Gets the value of the current expressed in whole and fractional days. - - - - - Gets the hours component of the time represented by the current . - - - - - Gets the minutes component of the time represented by the current . - - - - - Gets the seconds component of the time represented by the current . - - - - - Gets the milliseconds component of the time represented by the current . - - - - - Divides the current time span by the specified returning ration - between them. - - to divide the current time span by. - Ratio of the current and . - is null. - represents a time span of zero length. - - - - Converts the string representation of a metric time span to its - equivalent. A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a metric time span to its - equivalent. - - A string containing a time span to convert. - A equivalent to the time span contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Converts to . - - to convert to . - represented as . - - - - Converts to . - - to convert to . - represented as . - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if time spans are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if time spans are equal, true otherwise. - - - - Adds two specified instances. - - The first to add. - The second to add. - An object whose value is the sum of the values of and - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Subtracts a specified from another one. - - The minuend. - The subtrahend. - An object whose value is the result of the value of minus - the value of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is less than . - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Represents a time span as an amount of time measured in units of the time division - of a MIDI file. More info in the - Time and length: Representations: MIDI article. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the specified - time span. - - is negative. - - - - Gets the time span of the current . - - - - - Divides the current time span by the specified returning ration - between them. - - to divide the current time span by. - Ratio of the current and . - is null. - represents a time span of zero length. - - - - Converts the string representation of a MIDI time span to its - equivalent. A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a MIDI time span to its - equivalent. - - A string containing a time span to convert. - A equivalent to the time span contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Converts to . - - to convert to . - represented as . - is negative. - - - - Converts to . - - to convert to . - represented as . - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if time spans are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if time spans are equal, true otherwise. - - - - Adds two specified instances. - - The first to add. - The second to add. - An object whose value is the sum of the values of and - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Subtracts a specified from another one. - - The minuend. - The subtrahend. - An object whose value is the result of the value of minus - the value of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is less than . - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Represents a time span as a fraction of the whole note's length. More info in the - Time and length: Representations: Musical article. - - - - - that corresponds to the whole length. - - - - - that corresponds to the half length. - - - - - that corresponds to the quarter length. - - - - - that corresponds to the eighth length. - - - - - that corresponds to the sixteenth length. - - - - - that corresponds to the thirty-second length. - - - - - that corresponds to the sixty-fourth length. - - - - - Initializes a new instance of the . The time span - will be of zero size (0/1). - - - - - Initializes a new instance of the with the specified - fraction of the whole note's length. The time span will be 1/ - (for example, 1/4 if is 4). - - The fraction of the whole note's length. - is zero or negative. - - - - Initializes a new instance of the with the specified - numerator and denominator of the fraction of the whole note's length. - - The numerator of fraction of the whole note's length. - The denominator of fraction of the whole note's length. - true if the time span should be simplified (in math terms), - false otherwise. So if true, passing, for example, 4 as - and 8 as , the time span will be 1/2 instead of 4/8. - - One of the following errors occurred: - - - is negative. - - - is zero or negative. - - - - - - - Gets the numerator of the current . - - - - - Gets the denominator of the current . - - - - - Returns the current modified by the specified number - of dots. - - The number of dots to modify the current . - The dotted version of the current . - is negative. - - - - Returns the current modified by one dot. - - The single dotted version of the current . - - - - Returns the current modified by two dots. - - The double dotted version of the current . - - - - Returns a tuplet based on the current . - - Notes count of a tuplet to construct. - Space of a tuplet to construct. - A tuplet based on the current . - - One of the following errors occurred: - - - is zero or negative. - - - is zero or negative. - - - - - - - Returns a triplet based on the current . - - A triplet based on the current . - - - - Returns a duplet based on the current . - - A duplet based on the current . - - - - Divides the current time span by the specified returning ration - between them. - - to divide the current time span by. - Ratio of the current and . - is null. - represents a time span of zero length. - - - - Changes denominator of the current . - - New denominator. - An instance of the which represents the same time span as - the original one but with the specified denominator. - is zero or negative. - - - - Converts the string representation of a whole note's fraction to its - equivalent. A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a whole note's fraction to its - equivalent. - - A string containing a time span to convert. - A equivalent to the time span contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Creates an instance of the from the specified double number. - For example, 0.5 will be converted to the time span of 1/2, and 3/2 - will be returned for the input number 1.5. - - A number to convert to . - Settings which controls the process of conversion - to . - - The method tries to build a stream of rationalizations of the and returns - the best one according to the . - - An instance of the which represents the . - is negative. - Failed to find rationalization for the specified number. - Try to refine settings. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if time spans are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if time spans are equal, true otherwise. - - - - Multiplies the specified by a number. - - The to multiply by . - The multiplier. - An object whose value is the result of multiplication of by - . - is null. - is negative. - - - - Multiplies the specified by a number. - - The multiplier. - The to multiply by . - An object whose value is the result of multiplication of by - . - is null. - is negative. - - - - Divides the specified by a number. - - The to divide by . - The multiplier. - An object whose value is the result of division of by - . - is null. - is negative. - - - - Adds two specified instances. - - The first to add. - The second to add. - An object whose value is the sum of the values of and - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Subtracts a specified from another one. - - The minuend. - The subtrahend. - An object whose value is the result of the value of minus - the value of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is less than . - - - - Indicates whether a specified is less than another one. - - The first to compare. - The second to compare. - true if the value of is less than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than another one. - - The first to compare. - The second to compare. - true if the value of is greater than the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is less than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is less than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Indicates whether a specified is greater than or equal to - another one. - - The first to compare. - The second to compare. - true if the value of is greater than or equal to the value of - ; otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Adds a time span to the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to add to the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a sum of the and the - current time span. - is invalid. - specified an invalid value. - - - - Subtracts a time span from the current one. - - - If and the current time span have the same type, - the result time span will be of this type too; otherwise - of the . - - Time span to subtract from the current one. - Mode of the operation that defines meaning of time spans the - operation will be performed on. - Time span that is a difference between the and the - current time span. - is invalid. - specified an invalid value. - - - - Stretches the current time span by multiplying its length by the specified multiplier. - - Multiplier to stretch the time span by. - Time span that is the current time span stretched by the . - is negative. - - - - Shrinks the current time span by dividing its length by the specified divisor. - - Divisor to shrink the time span by. - Time span that is the current time span shrinked by the . - is zero or negative. - - - - Clones the current time span. - - Copy of the current time span. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Indicates whether the current object is equal to another object of the same type. - - An object to compare with this object. - true if the current object is equal to the other parameter; otherwise, false. - - - - Compares two time spans determining relation between them. - - - - - Compares two objects and returns a value indicating whether one is less than, - equal to, or greater than the other. - - The first object to compare. - The second object to compare. - A signed integer that indicates the relative values of and - , as shown in the following table. - - - Value - Meaning - - - Less than zero - is less than - - - Zero - equals - - - Greater than zero - is greater than - - - - - - - Mode of the arithmetic operation between two . - - - - - Both time spans represent time. - - - - - First time span represents time and second one represents length. - - - - - Both time spans represent length. - - - - - Specifies how a time span should be rounded. - - - - The default value of the enum is . Let's see how remaining options work. - Please note that rounding step should be specified (see - ). - - - used to round a time span to the smallest one that is greater than or equal - to the time span. Following table shows how time span 0:0:10 will be - rounded using different steps: - - - - - Step - Result - - - 0:0:15 - 0:0:15 - - - 0:0:10 - 0:0:10 - - - 0:0:3 - 0:0:12 - - - - - used to round a time span to the largest one that is less than or equal - to the time span. Following table shows how time span 0:0:10 will be - rounded using different steps: - - - - - Step - Result - - - 0:0:3 - 0:0:9 - - - 0:0:10 - 0:0:10 - - - 0:0:6 - 0:0:6 - - - 0:0:15 - 0:0:0 - - - - - - - - Don't round time span. - - - - - Round time span up (like, for example, ). - - - - - Round time span down (like, for example, ). - - - - - The type of a time span. - - - - - Metric time span which represents hours, minutes and seconds. More info in the - Time and length: Representations: Metric article. - - - - - Musical time span which represents a fraction of the whole note's length. More info in the - Time and length: Representations: Musical article. - - - - - Bar/beat time span which represents bars, beats and ticks. More info in the - Time and length: Representations: Bars, beats and ticks article. - - - - - Bar/beat time span which represents bars and fractional beats (for example, 1.5 beats). More info in the - Time and length: Representations: Bars, beats and fraction article. - - - - - MIDI time span which represents an amount of time measured in units of the time division - of a MIDI file. More info in the - Time and length: Representations: MIDI article. - - - - - Provides useful utilities for working with . - - - - - Rounds a time span using the specified step and rounding policy. - - Time span to round. - Policy according to which the should be rounded. - Time os the . - Step to round the by. - Tempo map used to calculate new time span. - A new time span which is the rounded using the passed parameters. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - is negative. - - - - Converts the string representation of a time span to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a time span to its equivalent using - the specified type of time span. A return value indicates whether the conversion succeeded. - - A string containing a time span to convert. - the type of time span to convert to. - When this method returns, contains the - equivalent of the time span contained in , if the conversion succeeded, or - null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a time span to its equivalent. - - A string containing a time span to convert. - A equivalent to the time span contained in . - is null or contains white-spaces only. - has invalid format. - - - - Gets an object that represents maximum value of time span defined by the specified - time span type. - - The type of time span to get maximum value. - An object that represents maximum value of time span defined by . - specified an - invalid value. - - - - Gets an object that represents zero value of time span defined by the specified - time span type. - - The type of time span to get zero value. - An object that represents zero value of time span defined by . - specified an - invalid value. - - - - Gets an object that represents zero value of time span defined by the specified - time span type. - - The type of time span to get zero value. - An object that represents zero value of time span defined by . - - - - Gets a value indicating whether the specified time span is zero or not. - - Time span to check. - true if the represents zero time span; - otherwise, false. - is null. - - - - Utilities for working with bars and beats. - - - - - Gets the length of a bar (in ticks) that is started at distance of the specified bars. - - Distance in bars where the bar is started. - Tempo map used for calculations. - Length of a bar in ticks. - is negative. - is null. - - - - Gets the length of a beat (in ticks) of the bar that is started at distance of the specified bars. - - Distance in bars where the bar is started. - Tempo map used for calculations. - Length of a beat in ticks. - is negative. - is null. - - - - Utility methods for . - - - - - Gets the duration of the specified . Duration is - defined by the time of last MIDI event of the track chunk. - - The type of time span representing the duration of . - to get duration of. - Tempo map to calculate duration. - An instance of representing - duration of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Gets the duration of the specified . Duration is - defined by the time of last MIDI event of the track chunk. - - to get duration of. - The type of time span representing the duration of . - Tempo map to calculate duration. - An implementation of representing - duration of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Gets the duration of the specified collection of . Duration is - defined by the time of last MIDI event of the track chunks. - - The type of time span representing the duration of . - Collection of to get duration of. - Tempo map to calculate duration. - An instance of representing - duration of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is not supported. - - - - Gets the duration of the specified collection of . Duration is - defined by the time of last MIDI event of the track chunks. - - Collection to get duration of. - The type of time span representing the duration of . - Tempo map to calculate duration. - An implementation of representing - duration of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Gets the duration of the specified . Duration is - defined by the time of last MIDI event of the file. - - The type of time span representing the duration of . - to get duration of. - An instance of representing - duration of . - is null. - is not supported. - - - - Gets the duration of the specified . Duration is - defined by the time of last MIDI event of the file. - - to get duration of. - The type of time span representing the duration of . - An implementation of representing - duration of . - is null. - specified an invalid value. - - - - Checks whether the specified is empty or not. - is empty when it doesn't contain MIDI events. - - to check emptiness of. - A value indicating whether is empty or not. - is null. - - - - Shifts events forward inside by the specified distance. - - containing events to shift. - Distance to shift events by. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Utility methods for . - - - - - Shifts events forward inside by the specified distance. - - containing events to shift. - Distance to shift events by. - Tempo map used for internal distance conversions. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Shifts events forward inside collection of by the specified distance. - - Collection of containing events to shift. - Distance to shift events by. - Tempo map used for internal distance conversions. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Represents a change of a parameter's value at some time. - - Type of value. - - - - Initializes a new instance of the with the specified - time of change and new value. - - MIDI time when value is changed. - New value that will last until next value change. - is negative. - is null. - - - - Gets the MIDI time when value is changed. - - - Note that the returned value will be in ticks (not seconds, not milliseconds and so on). - Please read Time and length article to learn how you can - get the time in different representations. - - Setting time of value change object is not allowed. - - - - Gets the new value that will last until next value change. - - - - - Clones object by creating a copy of it. - - Copy of the object. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the value changes are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the value changes are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Returns the hash code for this instance. - - A 32-bit signed integer hash code. - - - - Returns an enumerator that iterates through the collection. - - An enumerator that can be used to iterate through the collection. - - - - Returns an enumerator that iterates through a collection. - - An object that can be used to iterate through - the collection. - - - - Represents an object driven by clock (timer). - - - - - Advances current object's clock time. - - - - - MIDI clock used to drive playback or any timer-based object. - - - - - Occurs when new tick generated. - - - - - Initializes a new instance of the with the specified - value indicating whether first tick should be generated immediately after clock started, and - tick generator. - - A value indicating whether first tick should be generated - immediately after clock started. - Tick generator used as timer firing at the specified interval. Null for - no tick generator. - Interval of clock's ticking. - - - - Finalizes the current instance of the . - - - - - Gets the interval of the current clock's ticking. - - - - - Gets a value indicating whether MIDI clock is currently running or not. - - - - - Gets the current time of clock as . - - - - - Gets or sets the speed of clock, i.e. the speed of current time changing. - - is negative. - The current is disposed. - - - - Starts/resumes the clock. - - The current is disposed. - - - - Stops the clock.Current time will not be changed. - - The current is disposed. - - - - Stops, sets current time to zero and starts the clock. - - The current is disposed. - - - - Resets the current time of the clock setting it to zero. - - The current is disposed. - - - - Sets the current time of the clock. - - New current time of the clock. - The current is disposed. - - - - Generates new clock's tick manually without pulse from tick generator. - - - - - Releases all resources used by the current . - - - - - Holds settings for used by a clock driven object. - - - - - Gets or sets a callback used to create tick generator for MIDI clock. - - is null. - - - - Tick generator providing most accurate ticking, allowing firing intervals of 1 ms which - is the smallest possible one. - - - - - The smallest possible interval. - - - - - The largest possible interval. - - - - - Finalizes the current instance of the . - - - - - Starts a tick generator. - - Interval between ticks. - is out of - [; ] range. - - - - Stops a tick generator. - - - - - Releases all resources used by the current tick generator. - - - - - Releases all resources used by the current tick generator. - - - - - Tick generator which uses for ticking. - - - - - The smallest possible interval. - - - - - The largest possible interval. - - - - - Starts a tick generator. - - Interval between ticks. - is out of - [; ] range. - - - - Stops a tick generator. - - - - - Releases all resources used by the current tick generator. - - - - - Tick generator which provides ticking with the specified interval. - - - - - Occurs on tick generator's tick. - - - - - Gets a value indicating whether the current tick generator is currently running or not. - - - - - Generates a tick firing the event. - - - - - Starts a tick generator. - - Interval between ticks. - - - - Stops a tick generator. - - - - - Releases all resources used by the current tick generator. - - - - - Releases all resources used by the current tick generator. - - - - - The exception that is thrown when an error occurred on . - - - - - Initializes a new instance of the class with the - specified error message and an error code. - - The error message that explains the reason for the exception. - The error code. - - - - Gets the code of an error represented by the current . - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - Provides a way to connect an input MIDI device to an output MIDI devices to redirect all - incoming events from the input device to the output ones. More info in the - Devices connector article. - - - - - Initializes a new instance of the with the specified - input and output MIDI devices. - - - will not be actually connected to after - an instance of is created. You must call method - to establish connection between devices. - - Input MIDI device to connect to . - Output MIDI devices to connect to. - - One of the following errors occurred: - - - is null. - - - is null. - - - - contains null. - - - - Gets an input MIDI device to connect to . - - - - - Gets output MIDI devices to connect to. - - - - - Gets or sets a value indicating whether currently connected - to or not (i.e. method has been called). - - - - - Gets or sets a callback to process events coming from before - they will be sent to . The default value is null which - means no processing will be applied. - - - - - Connects to so all events coming from - the input device will be redirected to the output ones. - - - - - Disconnects from so events coming from - the input device will not be redirected to the output ones. - - - - - Callback used to process events coming from before - they will be sent to . - - A MIDI event to process. - New event (or the input one) which is the processed original one. - - - - Provides methods to connect MIDI devices. More info in the - Devices connector article. - - - - - Connects an input device to the specified output devices. - - Input MIDI device to connect to . - Output MIDI devices to connect to. - - One of the following errors occurred: - - - is null. - - - is null. - - - - contains null. - - - - Provides data for and - events. - - - - - Gets a device that has been added or removed. - - - - - Provides a way to watch devices adding/removing in the system. More info in the - Devices watcher article. - - - - - Occurs when a MIDI device has been added to the system. - - - - - Occurs when a MIDI device has been removed from the system. - - - - - Gets the instance of . - - - - - Provides data for an event indicating an error occurred on a device. - - - - - Gets the exception caused an error. - - - - - Represents an abstract input MIDI device. More info in the - Devices and - Input device articles. - - - - - Occurs when a MIDI event is received. - - - - - Gets a value that indicates whether the current input device is currently listening for - incoming MIDI events. - - - - - Starts listening for incoming MIDI events on the current input device. - - - - - Stops listening for incoming MIDI events on the current input device. - - - - - Represents an input MIDI device. More info in the - Devices and - Input device articles. - - - - - Occurs when a MIDI event is received. - - - - - Occurs when MIDI time code received, i.e. all MIDI events to complete MIDI time code are received. - - - This event will be raised only if is set to true. - - - - - Gets the name of the current MIDI device. - - - - - Gets or sets a value indicating if event should be raised or not. - Default value is true. - - - - - Gets or sets a value indicating whether system exclusive event is treated as received only - when it's completed or not. Default value is true. - - - - Some MIDI devices and MIDI subsystems of operating systems can split a system exclusive - event into several parts on sending the event. If is - set to true (default value), DryWetMIDI will wait until last part received, then the library - will combine all event's parts into single MIDI event and fire the event. - - - For example, considering following separate events are received (here bytes in hex format): - - - F0 7F 60 - - - 40 F7 - - - With set to true, the - will be fired only once providing the single event: - - - F0 7F 60 40 F7 - - - (F7 is a marker of a completed system exclusive event). - - - With the property set to false you'll be notified with event - two times, so every part will be considered as a MIDI event. - - - - - - Gets a value that indicates whether is currently listening for - incoming MIDI events. - - - - - Gets or sets reaction of the input device on Note On events with velocity of zero. - The default is . - - specified an invalid value. - - - - Starts listening for incoming MIDI events on the current input device. - - The current is disposed. - An error occurred on device. - The current instance is created by - event and thus considered as removed so you cannot interact with it. - - - - Stops listening for incoming MIDI events on the current input device. - - The current is disposed. - An error occurred on device. - The current instance is created by - event and thus considered as removed so you cannot interact with it. - - - - Returns current value of the specified property attached to the current input device. - - - - To get the list of properties applicable to input devices on the current operating system use - method. - - - Following table shows the type of value returned by the method for each property: - - - - - Property - Type - - - - - - - - - - - - - - - - - - - - - - - - - The property to get value of. - The current value of the . - specified an invalid value. - is not in the list of the properties - supported for the current operating system. - The current is disposed. - An error occurred on the device. One of the cases when this exception can be thrown - is device is not in the system anymore (for example, unplugged). - The current instance is created by - event and thus considered as removed so you cannot interact with it. - - - - Returns the list of the properties supported by input devices on the current - operating system. - - The list of the properties supported by input devices on the current - operating system. - - - - Retrieves the number of input MIDI devices presented in the system. - - Number of input MIDI devices presented in the system. - - - - Retrieves all input MIDI devices presented in the system. - - All input MIDI devices presented in the system. - - - - Retrieves an input MIDI device by the specified index. - - Index of an input device to retrieve. - Input MIDI device at the specified index. - Index is less than zero or greater than devices count minus 1. - An error occurred on the device. - - - - Retrieves a first input MIDI device with the specified name. - - The name of an input MIDI device to retrieve. - Input MIDI device with the specified name. - - One of the following errors occurred: - - - is null or contains white-spaces only. - - - specifies an input MIDI device which is not presented in the system. - - - - An error occurred on the device. - - - - Determines if two objects are equal. - - - On Windows the operator will just compare objects references. "True" equality check available - on macOS only. - - The first to compare. - The second to compare. - true if the devices are equal, false otherwise. - - - - Determines if two objects are not equal. - - - On Windows the operator will just compare objects references. "True" inequality check available - on macOS only. - - The first to compare. - The second to compare. - false if the devices are equal, true otherwise. - - - - Determines whether the specified object is equal to the current object. - - - On Windows the method will just compare objects references. "True" equality check available - on macOS only. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Releases the unmanaged resources used by the MIDI device class and optionally releases - the managed resources. - - true to release both managed and unmanaged resources; false to - release only unmanaged resources. - - - - Additional property attached to an instance of the . - - - - - - Product/model name (see wPid field - description in - MIDIINCAPS on Windows; see - kMIDIPropertyModel on macOS). - - - - - Manufacturer of an input device (see wMid field - description in - MIDIINCAPS on Windows; see - kMIDIPropertyManufacturer on macOS). - - - - - Version of an input device driver (see vDriverVersion field - description in - MIDIINCAPS on Windows; see - kMIDIPropertyDriverVersion on macOS). - - - - - Unique identifier of an input device on macOS (see - - kMIDIPropertyUniqueID). - - - - - Owner of an input device driver on macOS (see - - kMIDIPropertyDriverOwner). - - - - - Provides data for the event. - - - - - Initializes a new instance of the with - the specified MIDI event. - - MIDI event received by . - is null. - - - - Gets MIDI event received by . - - - - - Provides data for the event. - - - - - Gets format of MIDI time code. - - - - - Gets the hours component of MIDI time code. - - - - - Gets the minutes component of MIDI time code. - - - - - Gets the seconds component of MIDI time code. - - - - - Gets the frames component of MIDI time code. - - - - - Represents a MIDI device. - - - - - Occurs when an error occurred on device (for example, during MIDI events parsing). - - - - - Flag to detect redundant disposing. - - - - - Finalizes the current instance of the MIDI device class. - - - - - Gets or sets a value indicating whether a device is enabled (i.e. operable) or not. - - - - - Gets the name of the current MIDI device. - - - - - Checks that current instance of MIDI device class is not disposed and throws - if it is. - - Current instance of MIDI device class is disposed. - - - - Checks that current instance of MIDI device class is not created via 'Device removed' notification - and throws if it is. - - Current instance of MIDI device class is created via - 'Device removed' notification. - - - - Raises event. - - An exception that represents error occurred. - - - - Ensures MIDI devices session is created. - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Releases all resources used by the MIDI device class instance. - - - - - Releases the unmanaged resources used by the MIDI device class and optionally releases - the managed resources. - - true to release both managed and unmanaged resources; false to - release only unmanaged resources. - - - - The exception that is thrown when an error occurred on a MIDI device. - - - - - Initializes a new instance of the . - - - - - Initializes a new instance of the with the - specified error message. - - The error message that explains the reason for the exception. - - - - Initializes a new instance of the class with the - specified error message and a reference to the inner exception that is the - cause of this exception. - - The error message that explains the reason for the exception. - The exception that is the cause of the current exception, - or a null reference if no inner exception is specified. - - - - Initializes a new instance of the class with the - specified error message and an error code. - - The error message that explains the reason for the exception. - The error code. - - - - Gets the code of an error represented by the current . - - - - - Sets the with information about the exception. - - The that holds the serialized object data - about the exception being thrown. - The that contains contextual information - about the source or destination. - is null. - - - - Represents an abstract output MIDI device. More info in the - Devices and - Output device articles. - - - - - Occurs when a MIDI event is sent. - - - - - Prepares output MIDI device for sending events to it allocating necessary - resources. - - - It is not needed to call this method before actual MIDI data - sending since first call of will prepare - the device automatically. But it can take some time so you may decide - to call before working with device. - - - - - Sends a MIDI event to the current output device. - - MIDI event to send. - - - - Provides data for the event. - - - - - Initializes a new instance of the with - the specified MIDI event. - - MIDI event sent by . - is null. - - - - Gets MIDI event sent to . - - - - - Represents an output MIDI device. More info in the - Devices and - Output device articles. - - - - - Occurs when a MIDI event is sent. - - - - - Gets the name of the current MIDI device. - - - - - Sends a MIDI event to the current output device. - - MIDI event to send. - The current is disposed. - is null. - An error occurred on device. - - - - Turns off all notes that were turned on by sending Note On events, and which haven't - yet been turned off by respective Note Off events. - - The current is disposed. - An error occurred on device. - - - - Prepares output MIDI device for sending events to it allocating necessary - resources. - - It is not needed to call this method before actual MIDI data - sending since first call of will prepare - the device automatically. But it can take some time so you may decide - to call before working with device. - An error occurred on device. - - - - Retrieves the number of output MIDI devices presented in the system. - - Number of output MIDI devices presented in the system. - - - - Returns current value of the specified property attached to the current output device. - - - - To get the list of properties applicable to output devices on the current operating system use - method. - - - Following table shows the type of value returned by the method for each property: - - - - - Property - Type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] - - - - - - - - - The property to get value of. - The current value of the . - specified an invalid value. - is not in the list of the properties - supported for the current operating system. - The current is disposed. - An error occurred on the device. One of the cases when this exception can be thrown - is device is not in the system anymore (for example, unplugged). - The current instance is created by - event and thus considered as removed so you cannot interact with it. - - - - Returns the list of the properties supported by output devices on the current - operating system. - - The list of the properties supported by output devices on the current - operating system. - - - - Retrieves all output MIDI devices presented in the system. - - All output MIDI devices presented in the system. - - - - Retrieves an output MIDI device by the specified index. - - Index of an output device to retrieve. - Output MIDI device at the specified index. - Index is less than zero or greater than devices count minus 1. - An error occurred on the device. - - - - Retrieves a first output MIDI device with the specified name. - - The name of an output MIDI device to retrieve. - Output MIDI device with the specified name. - - One of the following errors occurred: - - - is null or contains white-spaces only. - - - specifies an output MIDI device which is not presented in the system. - - - - An error occurred on the device. - - - - Determines if two objects are equal. - - - On Windows the operator will just compare objects references. "True" equality check available - on macOS only. - - The first to compare. - The second to compare. - true if the devices are equal, false otherwise. - - - - Determines if two objects are not equal. - - - On Windows the operator will just compare objects references. "True" inequality check available - on macOS only. - - The first to compare. - The second to compare. - false if the devices are equal, true otherwise. - - - - Determines whether the specified object is equal to the current object. - - - On Windows the method will just compare objects references. "True" equality check available - on macOS only. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Releases the unmanaged resources used by the MIDI device class and optionally releases - the managed resources. - - true to release both managed and unmanaged resources; false to - release only unmanaged resources. - - - - Optional functionality supported by an output device on Windows (see dwSupport field - description in - MIDIOUTCAPS). - - - - - Unknown option. - - - - - Supports patch caching. - - - - - Supports separate left and right volume control. - - - - - Provides direct support for the midiStreamOut function. - - - - - Supports volume control. - - - - - Additional property attached to an instance of the . - - - - - - - - Product/model name (see wPid field - description in - MIDIOUTCAPS on Windows; see - kMIDIPropertyModel on macOS). - - - - - Manufacturer of an output device (see wMid field - description in - MIDIOUTCAPS on Windows; see - kMIDIPropertyManufacturer on macOS). - - - - - Version of an output device driver (see vDriverVersion field - description in - MIDIOUTCAPS on Windows; see - kMIDIPropertyDriverVersion on macOS). - - - - - Type of an output device on Windows (see wTechnology field - description in - MIDIOUTCAPS). - - - - - Unique identifier of an output device on macOS (see - - kMIDIPropertyUniqueID). - - - - - Number of voices supported by an internal synthesizer device on Windows (see wVoices field - description in - MIDIOUTCAPS). - - - - - Maximum number of simultaneous notes that can be played by an internal synthesizer device - on Windows (see wNotes field description in - MIDIOUTCAPS). - - - - - Channels that an internal synthesizer device responds to on Windows (see wChannelMask field - description in - MIDIOUTCAPS). - - - - - Optional functionality supported by the device on Windows (see dwSupport field - description in - MIDIOUTCAPS). - - - - - Owner of an output device driver on macOS (see - - kMIDIPropertyDriverOwner). - - - - - Type of a MIDI output device on Windows (see wTechnology field - description in - MIDIOUTCAPS). - - - - - Unknown type. - - - - - MIDI hardware port. - - - - - Synthesizer. - - - - - Square wave synthesizer. - - - - - FM synthesizer. - - - - - Microsoft MIDI mapper. - - - - - Hardware wavetable synthesizer. - - - - - Software synthesizer. - - - - - Callback used to process MIDI event to be played by . - - MIDI event to process. - Absolute time of . - Current time of the playback. - New MIDI event which is processed by the callback; - or null if event should be ignored. - - - - - - Callback used to process note to be played by . - - Data of the note to process. - Absolute time of note to process. - Length of note to process. - Current time of the playback. - Data of the new note which is processed by the callback; - or null if note should be ignored. - - - - - - Data related to MIDI note. - - - - - - Data which instructs playback to skip note. - - - - - Initializes a new instance of the with the specified - note number, velocity, off velocity and channel. - - Note number. - Velocity of Note On event of the note. - Velocity of Note Off event of the note. - Note channel. - - - - Gets the note number. - - - - - Gets the velocity of Note On event of the note. - - - - - Gets the velocity of Note Off event of the note. - - - - - Gets the note channel. - - - - - Holds the current time of a playback. - - - - - Gets the playback which current holds - current time for. - - - - - Gets the current time of a playback. - - - - - Holds current times of playbacks for . - - - - - Gets collection of current times of playbacks. - - - - - Provides notifications about playback's current time changed. - - - - - Occurs when current times of playbacks are changed. - - - - - Initializes a new instance of the . - - Settings for playbacks watching. - - - - Gets the default instance of . - - - - - Gets or sets the interval of playbacks current times polling. - - - - - Gets playbacks the watcher polls current time of. - - - - - Gets a value indicating whether the watcher polls playbacks current times or not. - - - - - Gets or sets the type of a playback's time to convert to in case of playback - was added in the watcher via method (without - specifying desired time type). The default value is . - - - The current time of a playback will be converted to this time type only if the playback - was added in the watcher via method. If - method was used, its second parameter - overrides the global type defined by the property. - - specified an invalid value. - - - - Starts current times watching. - - The current - is disposed. - - - - Stops current times watching. - - The current - is disposed. - - - - Adds a playback to the list of ones to watch current times of. The time will be reported - in the specified type. - - Playback to watch current time of. - Type of current time to convert to. - is null. - specified an invalid value. - The current - is disposed. - - - - Adds a playback to the list of ones to watch current times of. The time will be reported - in the type defined by property. - - Playback to watch current time of. - is null. - The current - is disposed. - - - - Sets the type the current time of the specified playback should be converted to. - - Playback to set time type for. - Type to convert current time of the to. - /// is null. - specified an invalid value. - The current - is disposed. - is not added to the current watcher. - - - - Removes a playback from the list of ones to watch current times of. - - Playback to exclude current time watching of. - is null. - The current - is disposed. - - - - Removes all playbacks from the list of ones to watch current times of. - - The current - is disposed. - - - - Ticks internal clock. - - The current - is disposed. - - - - Releases all resources used by the current . - - - - - Settings for . - - - - - Gets or sets settings for internal used to watch - playbacks by . - - - - - Gets or sets a value indicating whether current time should be reported for only - running playbacks ( is true) or not. The - default value is false which means all playbacks will be watched. - - - - - Holds an instance of for event. - - - - - Gets a MIDI event played. - - - - - Gets a metadata associated with the . - - - - - Holds notes collection for and - . - - - - - Gets the actual notes that started or finished to play by . - They can differ from the original ones, for example, due to - is used. To get original notes use the property. - - - Count of notes within this collection will be equal to the count of original notes - (see ). - - - - - Gets the original notes that started or finished to play by . - - - Count of notes within this collection will be equal to the count of processed notes - (see ). - - - - - Provides a way to play MIDI data through the specified output MIDI device. More info in the - Playback article. - - - You can derive from the class to create your own playback logic. - Please see Custom playback article to learn more. - - - - - Gets or sets a value indicating whether program must be tracked or not. If true, any jump - in time will force playback send corresponding to the program at new time, - if needed. The default value is true. More info in the - Data tracking: MIDI parameters values tracking - article. - - - - - Gets or sets a value indicating whether pitch value must be tracked or not. If true, any jump - in time will force playback send corresponding to the pitch value at new time, - if needed. The default value is true. More info in the - Data tracking: MIDI parameters values tracking - article. - - - - - Gets or sets a value indicating whether controller values must be tracked or not. If true, any jump - in time will force playback send corresponding to the controller value at new time, - if needed. The default value is true. More info in the - Data tracking: MIDI parameters values tracking - article. - - - - - Occurs when playback started via the method. - - - - - Occurs when playback stopped via the method. - - - - - Occurs when playback finished, i.e. last event has been played and no - need to restart playback due to value of the . - - - - - Occurs when playback started new cycle of the data playing in case of set to true. - - - - - Occurs when notes started to play. It will raised if playback's cursor - gets in to notes. - - - - - Occurs when notes finished to play. It will raised if playback's cursor - gets out from notes. - - - - - Occurs when MIDI event played. - - - - - Occurs when an error got from output device. - - - - - Initializes a new instance of the with the specified - collection of timed objects and tempo map. - - Collection of timed objects to play. - Tempo map used to calculate events times. - Settings according to which a playback should be created. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Initializes a new instance of the with the specified - collection of timed objects, tempo map and output MIDI device to play events through. - - Collection of timed objects to play. - Tempo map used to calculate events times. - Output MIDI device to play through. - Settings according to which a playback should be created. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Finalizes the current instance of the . - - - - - Gets the tempo map used to calculate events times. You should use this property - when the current playback has been created from a - (more info in the Dynamic changes article). - - - - - Gets or sets the output MIDI device to play MIDI data through. - - - - - Gets a value indicating whether playing is currently running or not. - - - - - Gets or sets a value indicating whether playing should automatically start - from the first event after the last one played. - - - - - Gets or sets a value indicating whether currently playing notes must be stopped - on playback stop or not. The default value is true. - - - - - Gets or sets a value indicating whether notes must be tracked or not. If false, notes - will be treated as just Note On/Note Off events. The default value is true. More info in the - Data tracking: Notes tracking article. - - - - - Gets or sets a value indicating whether to send Note Off events for non-active - notes (which look redundant) or not. The default value is false. - - - If there is a Note Off event and we are in the point (for example, by jumping with the - ) where there is no currently playing note with the - same note number and channel, the event won't be played when this property set to false - (which is the default value). To send Note Off event anyway, set this property to true. - - - - - Gets or sets a value indicating whether to send Note On events for active - notes (which look redundant) or not. The default value is false. - - - If there is a Note On event and we are in the point (for example, by jumping with the - ) where there is currently playing note with the - same note number and channel, the event won't be played when this property set to false - (which is the default value). To send Note On event anyway, set this property to true. - - - - - Gets or sets the speed of events playing. 1 means normal speed. For example, to play - events twice slower this property should be set to 0.5. Value of 2 will make playback - twice faster. - - is zero or negative. - The current is disposed. - - - Example below shows how you can use Speed property to set new BPM (if original data doesn't - have tempo changes): - - - var tempoMap = midiFile.GetTempoMap(); - var originalBpm = tempoMap.GetTempoAtTime((MidiTimeSpan)0).BeatsPerMinute; - - var newBpm = 240; - playback.Speed = newBpm / originalBpm; - - - We want to have BPM of 240 here so we just divide it by original BPM value. If - original BPM was 120, we'll get 2 which is exactly what we want - double the speed. - If original value is 480, we'll get 0.5 which means speed will be slowed down - by two times. - - - - - - Gets or sets callback used to process note to be played. - - - - In the following example every note to be played will be transposed by 10 half-steps up: - - - var playback = midiFile.GetPlayback(outputDevice); - playback.NoteCallback = (rawNoteData, rawTime, rawLength, playbackTime) => - new NotePlaybackData( - (SevenBitNumber)(rawNoteData.NoteNumber + 10), - rawNoteData.Velocity, // leave velocity as is - rawNoteData.OffVelocity, // leave off velocity as is - rawNoteData.Channel); // leave channel as is - - playback.Start(); - - - Next example shows how you can filter out notes with velocity below 100: - - - playback.NoteCallback = (rawNoteData, rawTime, rawLength, playbackTime) => - rawNoteData.Velocity < 100 - ? null - : rawNoteData; - - - - - - Gets or sets callback used to process MIDI event to be played. - - - Note that and won't be passed - to . Since processing of a note requires syncing between pairs - of corresponding events, such pairs are handled by to be sure - that a note's integrity is not broken. - - - - The following example filters out all Program Change events: - - - playback.EventCallback = (midiEvent, rawTime, playbackTime) => - midiEvent.EventType == MidiEventType.ProgramChange - ? null - : midiEvent; - - - Next example shows how to replace program 1 in all Program Change events to program 2: - - - playback.EventCallback = (midiEvent, rawTime, playbackTime) => - ((midiEvent is ProgramChangeEvent programChangeEvent) && programChangeEvent.ProgramNumber == 1) - ? new ProgramChangeEvent((SevenBitNumber)2) { Channel = programChangeEvent.Channel } - : midiEvent; - - - - - - Gets or sets the start time of the current playback. It defines start time of - the region to play back. - - - In conjunction with you can define a region within the - current playback which will be played. If you set the property to null the - start of playback (zero) will be used. - - - - - Gets or sets the end time of the current playback. It defines end time of - the region to play back. - - - In conjunction with you can define a region within the - current playback which will be played. If you set the property to null the - end of playback will be used. - - - - - Retrieves the duration of the playback in the specified format. - - Type that will represent the duration. - The duration of the playback as an instance of time span defined by - . - - specified an invalid value. - - - - Retrieves the duration of the playback in the specified format. - - Type that will represent the duration. - The duration of the playback as an instance of - . - - - - Retrieves the current time of the playback in the specified format. - - Type that will represent the current time. - The current time of the playback as an instance of time span defined by - . - specified an invalid value. - - - - Retrieves the current time of the playback in the specified format. - - Type that will represent the current time. - The current time of the playback as an instance of - . - - - - Starts playing of the MIDI data. This method is non-blocking. - - The current is disposed. - An error occurred on device. - - - - Stops playing of the MIDI data. Note that this method doesn't reset playback position. If you - call , playing will be resumed from the point where was called. - - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of the specified snap point. - - Snap point to move to. - true if playback position successfully changed to the time of ; - otherwise, false. - is null. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of first snap point. - - true if playback position successfully changed to the time of first snap point; - otherwise, false. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of first snap point holding the specified data. - - Data of a snap point to move to. - true if playback position successfully changed to the time of first snap point - with the specified data; otherwise, false. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of the previous snap point (relative to the current - time of playback) that belongs to the specified . - - that defines snap points to - select the one from. - true if playback position successfully changed to the time of a previous snap point - within ; otherwise, false. - is null. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of previous snap point (relative to the current - time of playback). - - true if playback position successfully changed to the time of a previous snap point; - otherwise, false. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of previous snap point (relative to the current - time of playback) holding the specified data. - - Data of a snap point to move to. - true if playback position successfully changed to the time of a previous snap point - with the specified data; otherwise, false. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of next snap point (relative to the current - time of playback) that belongs to the specified . - - that defines snap points to - select the one from. - true if playback position successfully changed to the time of a next snap point - within ; otherwise, false. - is null. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of next snap point (relative to the current - time of playback). - - true if playback position successfully changed to the time of a next snap point; - otherwise, false. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the time of next snap point (relative to the current - time of playback) holding the specified data. - - true if playback position successfully changed to the time of a next snap point - with the specified data; otherwise, false. - The current is disposed. - An error occurred on device. - - - - Sets playback position to the beginning of the MIDI data. - - The current is disposed. - An error occurred on device. - - - - Sets playback position to the specified time from the beginning of the MIDI data. - - Time from the beginning of the MIDI data to set playback position to. - is null. - The current is disposed. - An error occurred on device. - - - - Shifts playback position forward by the specified step. - - Amount of time to shift playback position by. - is null. - The current is disposed. - An error occurred on device. - - - - Shifts playback position back by the specified step. - - Amount of time to shift playback position by. - is null. - The current is disposed. - An error occurred on device. - - - - Tries to play the specified MIDI event. By default just sends the event to output device - returning true. - - - Please see Custom playback article to learn more - about how to use parameter. - - MIDI event to try to play. - Metadata attached to . - true if was played; otherwise, false. - - - - Returns collection of representing the specified timed object. - - - The method can be useful in case of custom playback and - custom input object. - - Timed object to get collection of from. - Collection of representing the . - - - - Ticks internal clock. - - The current is disposed. - - - - Releases all resources used by the current . - - - - - Gets or sets a value indicating whether playback snapping is enabled or not. The property - lets turn on or off all snap points at once. - - - - - Adds a snap point with the specified data at given time. - - Type of data that will be attached to a snap point. - Time to add snap point at. - Data to attach to snap point. - An instance of the representing a snap point - with at . - is null. - - - - Adds a snap point at the specified time. - - Time to add snap point at. - An instance of the representing a snap point - at . - is null. - - - - Removes a snap point. - - Snap point to remove. - is null. - - - - Removes the specified from the list of snap points groups - of the current . - - to remove. - is null. - - - - Removes all snap points that match the conditions defined by the specified predicate. - - Type of data attached to snap points to remove. - The delegate that defines the conditions - of snap points to remove. - is null. - - - - Removes all snap points. - - - - - Creates a new that holds the specified predicate to select MIDI events - which times will be used as snap points. For example, to get snap points at the markers points, you - can use this predicate: e => e.EventType == MidiEventType.Marker. - - - After the group is created, it will be enabled by default. You can disable it using the - property setting it to false. - - Predicate to select MIDI events. - holding information on how to select events. - is null. - - - - Callback used to modify MIDI event before playing. - - MIDI event to modify. - Absolute metric time of the event. - Absolute time of the event in MIDI ticks. - MIDI event that should be played. It can be modified original event or a new one. - - - - Settings according to which an instance of the should be created. - - - - - Gets or sets settings of the internal playback's clock. - - - - - Gets or sets settings which define how timed events should be detected and built internally - by the . - - - - - Gets or sets settings which define how notes should be detected and built internally - by the . - - - - - Gets or sets a value indicating whether to calculate tempo map for a playback - on data initializing. It means to process Set Tempo and Time Signature events - iterating through the objects passed to the 's constructor. - will reflect these changes. The default value is false - which requires to pass correct tempo map to the 's constructor. - - - The property can be useful when the is created with a collection of objects - and you don't want to create a tempo map manually. In this case you can just set the property - to true and pass , and playback will construct the tempo map - for you. - - - - - Contains methods to play MIDI data and retrieving an instance of the - which provides advanced features for MIDI data playing. More info in the - Playback article. - - - - - Retrieves an instance of the for playing MIDI events collection. - Events will be scheduled for playback according to their delta-times. - - MIDI events to play. - Tempo map used to calculate events times. - Output MIDI device to play events through. - Settings according to which a playback should be created. - An instance of the for playing . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events collection. - Events will be scheduled for playback according to their delta-times. - - MIDI events to play. - Tempo map used to calculate events times. - Settings according to which a playback should be created. - An instance of the for playing . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events contained in - the specified . - - containing events to play. - Tempo map used to calculate events times. - Output MIDI device to play events through. - Settings according to which a playback should be created. - An instance of the for playing MIDI events contained in - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events contained in - the specified . - - containing events to play. - Tempo map used to calculate events times. - Settings according to which a playback should be created. - An instance of the for playing MIDI events contained in - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events contained in - the specified collection of . - - Collection of containing events to play. - Tempo map used to calculate events times. - Output MIDI device to play events through. - Settings according to which a playback should be created. - An instance of the for playing MIDI events contained in - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events contained in - the specified collection of . - - Collection of containing events to play. - Tempo map used to calculate events times. - Settings according to which a playback should be created. - An instance of the for playing MIDI events contained in - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events contained in - the specified . - - containing events to play. - Output MIDI device to play events through. - Settings according to which a playback should be created. - An instance of the for playing MIDI events contained in - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events contained in - the specified . - - containing events to play. - Settings according to which a playback should be created. - An instance of the for playing MIDI events contained in - the . - is null. - - - - Retrieves an instance of the for playing MIDI events that will be - produced by specified . - - producing events to play. - Tempo map used to calculate events times. - MIDI channel to play channel events on. - Output MIDI device to play events through. - Settings according to which a playback should be created. - An instance of the for playing MIDI events that will be - produced by the . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing MIDI events that will be - produced by specified . - - producing events to play. - Tempo map used to calculate events times. - MIDI channel to play channel events on. - Settings according to which a playback should be created. - An instance of the for playing MIDI events that will be - produced by the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing musical objects using - the specified program. - - The type of objects to play. - Objects to play. - Tempo map used to calculate events times. - Output MIDI device to play through. - Program that should be used to play . - Settings according to which a playback should be created. - An instance of the for playing . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Retrieves an instance of the for playing musical objects using - the specified General MIDI 1 program. - - The type of objects to play. - Objects to play. - Tempo map used to calculate events times. - Output MIDI device to play through. - Program that should be used to play . - Settings according to which a playback should be created. - An instance of the for playing . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - - - - Retrieves an instance of the for playing musical objects using - the specified General MIDI 2 program. - - The type of objects to play. - Objects to play. - Tempo map used to calculate events times. - Output MIDI device to play through. - Program that should be used to play . - Settings according to which a playback should be created. - An instance of the for playing . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - - - - Snap point for . - - - - - Gets or sets a value indicating whether the current - is enabled or not. - - - - - Snap point for with attached data. - - The type of data attached to snap point. - - - - Gets the data attached to the current . - - - - - Represents a group of snap points selected by a predicate - (see ). - - - - - Gets or sets a value indicating whether the current is enabled or not. - If false, the group won't take part in the snap points selection process - (for example, during the method). - - - - - Holds an instance of for event. - - - - - Gets the recorded MIDI event. - - - - - Provides a way to record MIDI data received by an input MIDI device. More info in the - Recording article. - - - - - Occurs when recording started via method. - - - - - Occurs when recording stopped via method. - - - - - Occurs when a MIDI event is captured by the current recording. - - - - - Initializes a new instance of the with the specified - tempo map and input MIDI device to capture MIDI data from. - - Tempo map used to calculate events times. - Input MIDI device to capture MIDI data from. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets the tempo map used to calculate recorded events times. - - - - - Gets the input MIDI device to record MIDI data from. - - - - - Gets a value indicating whether recording is currently running or not. - - - - - Retrieves the duration of the recording in the specified format. - - Type that will represent the duration. - The duration of the recording as an instance of time span defined by - . - - specified an invalid value. - - - - Retrieves the duration of the recording in the specified format. - - Type that will represent the duration. - The duration of the recording as an instance of - . - - - - Gets MIDI events recorded by the current . - - MIDI events recorded by the current . - - - - Starts MIDI data recording. - - Input device is not listening for MIDI events. - - - - Stops MIDI data recording. Note that this method doesn't reset the recording time. If you - call , recording will be resumed from the point where was called. - - - - - Releases all resources used by the current . - - - - - Contains methods to manipulate by recording of MIDI data. More info in the - Recording article. - - - - - - Creates an instance of the and places recorded events to it. - - to place events to from. - with events recorded with . - is null. - is in progress. - - - - Creates an instance of the and places recorded events to it. - - to place events to from. - with events recorded with . - is null. - is in progress. - - - - Represents a virtual loopback MIDI device (MIDI cable). More info in the - Virtual device article. - - - - - Gets the name of the current MIDI device. - - - - - Gets the input subdevice of the current . - - - - - Gets the output subdevice of the current . - - - - - Creates an instance of the with the specified name. - - The name of a virtual device to create. - An instance of the with name of . - is null or contains white-spaces only. - Virtual device creation is not supported on the current operating system. - An error occurred on device creation. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Releases the unmanaged resources used by the MIDI device class and optionally releases - the managed resources. - - true to release both managed and unmanaged resources; false to - release only unmanaged resources. - - - - Represents a chord progression as a set of chords. - - - - - Initializes a new instance of the with the specified chords. - - Chords of the chord progression. - is null. - contains null. - - - - Initializes a new instance of the with the specified chords. - - Chords of the chord progression. - is null. - contains null. - - - - Gets the chords of the chord progression. - - - - - Converts the string representation of a chord progression to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing a chord progression to convert. - Scale to resolve chords. - When this method returns, contains the - equivalent of the chord progression contained in , if the conversion succeeded, - or null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a chord progression to its equivalent. - - A string containing a chord progression to convert. - Scale to resolve chords. - A equivalent to the chord progression contained in - . - is null or contains white-spaces only. - has invalid format. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the chord progressions are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the chord progressions are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Represents a chord as a set of notes names. - - - - - Initializes a new instance of the with the specified notes names (for example, C E G). - - The set of notes names. - is null. - contains an invalid value. - is empty collection. - - - - Initializes a new instance of the with the specified root note name and - names of the notes above root one (for example, C and E G). - - The root note's name. - The set of names of the notes above root one. - - One of the following errors occurred: - - - specified an invalid value. - - - contains an invalid value. - - - - - - - Initializes a new instance of the with the specified root note name and - intervals from root one. - - The root note's name. - Intervals from root note. - specified an invalid value. - is null. - - - - Initializes a new instance of the with the specified root note name and - intervals from root one. - - The root note's name. - Intervals from root note. - specified an invalid value. - is null. - - - - Gets the chord's notes names. - - - - - Gets the root note's name of the chord. - - - - - Returns collection of names of the current . - - Collection of names of the current . - - - - Converts the string representation of a musical chord to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing a chord to convert. - When this method returns, contains the - equivalent of the musical chord contained in , if the conversion succeeded, - or null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a musical chord to its equivalent. - - A string containing a chord to convert. - A equivalent to the musical chord contained in . - is null or contains white-spaces only. - has invalid format. - - - - Creates an instance of the as triad with possible addition of another notes by intervals - from the root one. - - The root note's name. - Chord's quality. - Intervals from root note. - Chord created by triad with addition of notes defined by . - - One of the following errors occurred: - - - specified an invalid value. - - - specified an invalid value. - - - - is null. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the chords are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the chords are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Represents a chord's quality. - - - - - Major chord. - - - - - Minor chord. - - - - - Augmented chord. - - - - - Diminished chord. - - - - - Utilities for working with . - - - - - Gets intervals from the root note of the specified chord. For example, +4 and +7 for C major - (+4 for C and E, +7 for C and G). - - Chord to get intervals from root note. - Intervals from the root note of the . - is null. - Some intervals are greater than . - - - - Gets intervals between notes of the specified chord. For example, +4 and +3 for C major - (+4 for C and E, +3 for E and G). - - Chord to get intervals between notes. - Intervals between notes of the . - is null. - - - - Resolves root note of the specified chord. - - Chord to resolve root note. - Octave to resolve root note of the . - Root note of the chord regarding to . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Resolves notes of the specified chord. - - Chord to resolve notes. - Octave to resolve notes of the . - Notes of the chord regarding to . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets the collection of chord's inversions. - - Collection of chord's inversions. - - - - Represents a musical interval in terms of half steps number. - - - - - Interval of zero half steps up. - - - - - Interval of one half step up. - - - - - Interval of two half steps up. - - - - - Interval of three half steps up. - - - - - Interval of four half steps up. - - - - - Interval of five half steps up. - - - - - Interval of six half steps up. - - - - - Interval of seven half steps up. - - - - - Interval of eight half steps up. - - - - - Interval of nine half steps up. - - - - - Interval of ten half steps up. - - - - - Interval of eleven half steps up. - - - - - Interval of twelve half steps up (one octave up). - - - - - Initializes a new instance of the with the - specified interval and its direction. - - The size of interval as a number of half steps away. - The direction of an interval (up or down). - - - - Gets the size of interval represented by the current as a - number of half steps away. - - - - - Gets the direction of the interval represented by the current . - - - - - Gets signed half steps number which represents an interval of the current . - - - - - Returns upward version of the current . - - An upward version of the current . - - - - Returns downward version of the current . - - A downward version of the current . - - - - Returns collection of definitions of the current . - - Collection of definitions of the current . - - - - Gets a value indicating whether the specified interval number (1 and greater) is perfect or not. - - Interval number to determine whether it's perfect or not. - true if is perfect; otherwise, false. - is less than 1. - - - - Gets a value indicating whether quality is applicable to the specified interval number (1 and greater) or not. - - Interval quality to check whether it's applicable to - or not. - Interval number to check whether is - applicable to it or not. - true if is applicable to ; - otherwise, false. - specified an - invalid value. - is less than 1. - - - - Gets an instance of the by the specified interval quality and number. - - Interval quality. - Interval number. - An instance of the which represents - along with . - specified an - invalid value. - is less than 1. - is not applicable to - . - - - - Returns an by the specified half steps number and - interval's direction. - - The size of an interval as a number of half steps away. - The direction of an interval (up or down). - An with the specified interval and direction. - specified an - invalid value. - - - - Returns an upward by the specified half steps number. - - The size of an interval as a number of half steps away. - An upward with the specified interval. - - - - Returns a downward by the specified half steps number. - - The size of an interval as a number of half steps away. - A downward with the specified interval. - - - - Returns an by the specified signed number of - half steps where negative one means downward interval. - - The number of half steps. - An represented by the . - is out of range - (result interval is out of the [-127,127] range). - - - - Creates an instance of the from . - - Interval definition to create interval from. - created from . - is null. - - - - Converts the string representation of a musical interval to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing an interval to convert. - When this method returns, contains the - equivalent of the musical interval contained in , if the conversion succeeded, - or null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a musical interval to its equivalent. - - A string containing an interval to convert. - A equivalent to the musical interval contained in . - is null or contains white-spaces only. - has invalid format. - - - - Converts the value of a to a . - - object to convert to an . - represented as . - - - - Converts the value of a to a . - - object to convert to an . - represented as . - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the intervals are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the intervals are equal, true otherwise. - - - - Adds the specified number of half steps to an . - - The interval to add half steps to. - The number of half steps to add to the . - The which is the - shifted by the . - is null. - is out of range - (result interval is out of the [-127,127] range). - - - - Subtracts the specified number of half steps from an . - - The interval to subtract half steps from. - The number of half steps to subtract from the . - The which is the - shifted by the . - is null. - is out of range - (result interval is out of the [-127,127] range). - - - - Stretches the specified by multiplying it by an integer number. - - The interval to stretch. - The number to multiply the by. - The which is the - stretched by the . - is null. - is out of range - (result interval is out of the [-127,127] range). - - - - Shrinks the specified by dividing it by an integer number. - - The interval to shrink. - The number to divide the by. - The which is the - shrunk by the . - is null. - is zero. - - - - Returns upward version of the specified . - - The to get upward version of. - An upward version of the . - - This operator produces the same result as the method. - - is null. - - - - Returns downward version of the specified . - - The to get downward version of. - A downward version of the . - - This operator produces the same result as the method. - - is null. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Definition of a musical interval which is number and quality. - - - - - Initializes a new instance of the with the specified - interval number and quality. - - Interval number. - Interval quality. - is less than 1. - specified an invalid value. - - - - Gets the interval number. - - - - - Gets the interval quality. - - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the interval definitions are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the interval definitions are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Direction of a musical interval represented by the . - The default is . - - - - - Upward interval (for example, 5 half steps up). - - - - - Downward interval (for example, 5 half steps down). - - - - - Represents an interval's quality. - - - - - Perfect interval. - - - - - Major interval. - - - - - Minor interval. - - - - - Augmented interval. - - - - - Diminished interval. - - - - - Contains all available MIDI notes. - - - - - C-1 note. - - - - - C#-1 note. - - - - - D-1 note. - - - - - D#-1 note. - - - - - E-1 note. - - - - - F-1 note. - - - - - F#-1 note. - - - - - G-1 note. - - - - - G#-1 note. - - - - - A-1 note. - - - - - A#-1 note. - - - - - B-1 note. - - - - - C0 note. - - - - - C#0 note. - - - - - D0 note. - - - - - D#0 note. - - - - - E0 note. - - - - - F0 note. - - - - - F#0 note. - - - - - G0 note. - - - - - G#0 note. - - - - - A0 note. - - - - - A#0 note. - - - - - B0 note. - - - - - C1 note. - - - - - C#1 note. - - - - - D1 note. - - - - - D#1 note. - - - - - E1 note. - - - - - F1 note. - - - - - F#1 note. - - - - - G1 note. - - - - - G#1 note. - - - - - A1 note. - - - - - A#1 note. - - - - - B1 note. - - - - - C2 note. - - - - - C#2 note. - - - - - D2 note. - - - - - D#2 note. - - - - - E2 note. - - - - - F2 note. - - - - - F#2 note. - - - - - G2 note. - - - - - G#2 note. - - - - - A2 note. - - - - - A#2 note. - - - - - B2 note. - - - - - C3 note. - - - - - C#3 note. - - - - - D3 note. - - - - - D#3 note. - - - - - E3 note. - - - - - F3 note. - - - - - F#3 note. - - - - - G3 note. - - - - - G#3 note. - - - - - A3 note. - - - - - A#3 note. - - - - - B3 note. - - - - - C4 note. - - - - - C#4 note. - - - - - D4 note. - - - - - D#4 note. - - - - - E4 note. - - - - - F4 note. - - - - - F#4 note. - - - - - G4 note. - - - - - G#4 note. - - - - - A4 note. - - - - - A#4 note. - - - - - B4 note. - - - - - C5 note. - - - - - C#5 note. - - - - - D5 note. - - - - - D#5 note. - - - - - E5 note. - - - - - F5 note. - - - - - F#5 note. - - - - - G5 note. - - - - - G#5 note. - - - - - A5 note. - - - - - A#5 note. - - - - - B5 note. - - - - - C6 note. - - - - - C#6 note. - - - - - D6 note. - - - - - D#6 note. - - - - - E6 note. - - - - - F6 note. - - - - - F#6 note. - - - - - G6 note. - - - - - G#6 note. - - - - - A6 note. - - - - - A#6 note. - - - - - B6 note. - - - - - C7 note. - - - - - C#7 note. - - - - - D7 note. - - - - - D#7 note. - - - - - E7 note. - - - - - F7 note. - - - - - F#7 note. - - - - - G7 note. - - - - - G#7 note. - - - - - A7 note. - - - - - A#7 note. - - - - - B7 note. - - - - - C8 note. - - - - - C#8 note. - - - - - D8 note. - - - - - D#8 note. - - - - - E8 note. - - - - - F8 note. - - - - - F#8 note. - - - - - G8 note. - - - - - G#8 note. - - - - - A8 note. - - - - - A#8 note. - - - - - B8 note. - - - - - C9 note. - - - - - C#9 note. - - - - - D9 note. - - - - - D#9 note. - - - - - E9 note. - - - - - F9 note. - - - - - F#9 note. - - - - - G9 note. - - - - - Represents a note, i.e. note name and octave. - - - - - Initializes a new instance of the with the - specified note number. - - The number of a note (60 is middle C). - - - - Gets the note number. - - - - - Gets the note name. - - - - - Gets the octave number of a note. - - - - - Returns the current transposed by the specified - . - - The to transpose the current - by. - The current transposed by the . - Result note's number is out of valid range. - - - - Returns a for the specified note number. - - The number of a note (60 is middle C). - A for the . - - - - Returns a for the specified note name and octave number. - - The name of a note. - The octave number. - A for the and . - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to to get the middle C. - - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Converts the string representation of a musical note to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing a note to convert. - When this method returns, contains the - equivalent of the musical note contained in , if the conversion succeeded, - or null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a musical note to its equivalent. - - A string containing a note to convert. - A equivalent to the musical note contained in . - is null or contains white-spaces only. - has invalid format. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the notes are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the notes are equal, true otherwise. - - - - Transposes the specified . - - The to transpose. - The number of half steps to transpose the by. - The which is the - transposed by the . - is null. - Result note's number is out of valid range. - - - - Transposes the specified . - - The to transpose. - The number of half steps to transpose the by. - The which is the - transposed by the . - is null. - Result note's number is out of valid range. - - - - Compares the current instance with another object of the same type and returns - an integer that indicates whether the current instance precedes, follows, or - occurs in the same position in the sort order as the other object. - - An object to compare with this instance. - A value that indicates the relative order of the objects being compared. The - return value has these meanings: - - - Value - Meaning - - - Less than zero - This instance precedes in the sort order. - - - Zero - This instance occurs in the same position in the sort order as . - - - Greater than zero - This instance follows in the sort order. - - - - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Name of a note of the 12-tone chromatic scale. - - - - - C (Do) note. - - - - - Half-stepped C (Do) note. - - - - - D (Re) note. - - - - - Half-stepped D (Re) note. - - - - - E (Mi) note. - - - - - F (Fa) note. - - - - - Half-stepped F (Fa) note. - - - - - G (Sol) note. - - - - - Half-stepped G (Sol) note. - - - - - A (La) note. - - - - - Half-stepped A (La) note. - - - - - B (Si) note. - - - - - Provides utilities for working with the . - - - - - Transposes note name by the specified interval. - - to transpose. - Interval to transpose by. - Note name which is transposed by . - specified an invalid value. - is null. - - - - Gets name of the note presented by note number. - - Note number to get note name of. - Name of the note presented by . - - - - Gets octave number of the note presented by note number in scientific pitch notation. - - Note number to get octave of. - Octave of the note presented by . - - Octave number will be returned in scientific pitch notation which means - that 4 will be returned for 60 note number. - - - - - Gets the note number for the specified note name and octave. - - Name of the note. - Number of the octave in scientific pitch notation. - Number of the note represented by specified name and octave. - - Octave number is specified in scientific pitch notation which means that 4 must be - passed to to get the number of the middle C. - - specified an - invalid value. - Note number is out of range for the specified note - name and octave. - - - - Represents an octave defined by its number. - - - - - The size of an octave, i.e. number of notes within an octave. - - - - - The smallest possible value of an octave's number. - - - - - The largest possible value of an octave's number. - - - - - The octave which contains the middle C note (C4). - - - - - Initializes a new instance of the with the - specified octave number. - - The number of an octave. - is out of valid range. - - - - Gets the number of an octave represented by the current . - - - - - Gets the C note of an octave defined by the current . - - Unable to get a note. - - - - Gets the C# note of an octave defined by the current . - - Unable to get a note. - - - - Gets the D note of an octave defined by the current . - - Unable to get a note. - - - - Gets the D# note of an octave defined by the current . - - Unable to get a note. - - - - Gets the E note of an octave defined by the current . - - Unable to get a note. - - - - Gets the F note of an octave defined by the current . - - Unable to get a note. - - - - Gets the F# note of an octave defined by the current . - - Unable to get a note. - - - - Gets the G note of an octave defined by the current . - - Unable to get a note. - - - - Gets the G# note of an octave defined by the current . - - Unable to get a note. - - - - Gets the A note of an octave defined by the current . - - Unable to get a note. - - - - Gets the A# note of an octave defined by the current . - - Unable to get a note. - - - - Gets the B note of an octave defined by the current . - - Unable to get a note. - - - - Gets a note by the specified note name using current octave. - - The name of a note. - Note with the specified note name and current octave. - specified an invalid value. - Unable to get a note for the . - - - - Gets an octave by the specified octave number. - - The number of an octave. - An octave with the specified number. - is out of valid range. - - - - Converts the string representation of a musical octave to its equivalent. - A return value indicates whether the conversion succeeded. - - A string containing an octave to convert. - When this method returns, contains the - equivalent of the musical octave contained in , if the conversion succeeded, - or null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a musical octave to its equivalent. - - A string containing an octave to convert. - A equivalent to the musical note contained in . - is null or contains white-spaces only. - has invalid format. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the octaves are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the octaves are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Represents a musical scale. - - - - - Initializes a new instance of the with the - specified intervals and root note. - - Intervals between adjacent notes of the scale. - Root note (tonic) of the scale. - is null. - specified an - invalid value. - - - - Gets intervals between adjacent notes of the current . - - - - - Gets root note (tonic) of the current . - - - - - Converts the string representation of a musical scale to its - equivalent. A return value indicates whether the conversion succeeded. - - A string containing a scale to convert. - When this method returns, contains the - equivalent of the musical scale contained in , if the conversion succeeded, - or null if the conversion failed. The conversion fails if the is null or - , or is not of the correct format. This parameter is passed uninitialized; - any value originally supplied in result will be overwritten. - true if was converted successfully; otherwise, false. - - - - Converts the string representation of a musical scale to its equivalent. - - A string containing a scale to convert. - A equivalent to the musical scale contained in . - is null or contains white-spaces only. - has invalid format. - - - - Determines if two objects are equal. - - The first to compare. - The second to compare. - true if the scales are equal, false otherwise. - - - - Determines if two objects are not equal. - - The first to compare. - The second to compare. - false if the scales are equal, true otherwise. - - - - Returns a string that represents the current object. - - A string that represents the current object. - - - - Determines whether the specified object is equal to the current object. - - The object to compare with the current object. - true if the specified object is equal to the current object; otherwise, false. - - - - Serves as the default hash function. - - A hash code for the current object. - - - - Represents specific note (degree) of a musical scale. - - - - - Tonic of a musical scale (1st degree). - - - - - Supertonic of a musical scale (2nd degree). - - - - - Mediant of a musical scale (3rd degree). - - - - - Subdominant of a musical scale (4th degree). - - - - - Dominant of a musical scale (5th degree). - - - - - Submediant of a musical scale (6th degree). - - - - - Leading tone of a musical scale (7th degree). - - - - - Provides intervals sequences for known musical scales. - - - - - 'Aeolian' scale's intervals sequence. - - - - - 'Altered' scale's intervals sequence. - - - - - 'Arabian' scale's intervals sequence. - - - - - 'Augmented' scale's intervals sequence. - - - - - 'Augmented Heptatonic' scale's intervals sequence. - - - - - 'Balinese' scale's intervals sequence. - - - - - 'Bebop' scale's intervals sequence. - - - - - 'Bebop Dominant' scale's intervals sequence. - - - - - 'Bebop Locrian' scale's intervals sequence. - - - - - 'Bebop Major' scale's intervals sequence. - - - - - 'Bebop Minor' scale's intervals sequence. - - - - - 'Blues' scale's intervals sequence. - - - - - 'Chinese' scale's intervals sequence. - - - - - 'Chromatic' scale's intervals sequence. - - - - - 'Composite Blues' scale's intervals sequence. - - - - - 'Diminished' scale's intervals sequence. - - - - - 'Diminished Whole Tone' scale's intervals sequence. - - - - - 'Dominant' scale's intervals sequence. - - - - - 'Dorian' scale's intervals sequence. - - - - - 'Dorian #4' scale's intervals sequence. - - - - - 'Dorian b2' scale's intervals sequence. - - - - - 'Double Harmonic Lydian' scale's intervals sequence. - - - - - 'Double Harmonic Major' scale's intervals sequence. - - - - - 'Egyptian' scale's intervals sequence. - - - - - 'Enigmatic' scale's intervals sequence. - - - - - 'Flamenco' scale's intervals sequence. - - - - - 'Flat Six Pentatonic' scale's intervals sequence. - - - - - 'Flat Three Pentatonic' scale's intervals sequence. - - - - - 'Gypsy' scale's intervals sequence. - - - - - 'Harmonic Major' scale's intervals sequence. - - - - - 'Harmonic Minor' scale's intervals sequence. - - - - - 'Hindu' scale's intervals sequence. - - - - - 'Hirajoshi' scale's intervals sequence. - - - - - 'Hungarian Major' scale's intervals sequence. - - - - - 'Hungarian Minor' scale's intervals sequence. - - - - - 'Ichikosucho' scale's intervals sequence. - - - - - 'In-Sen' scale's intervals sequence. - - - - - 'Indian' scale's intervals sequence. - - - - - 'Ionian' scale's intervals sequence. - - - - - 'Ionian Augmented' scale's intervals sequence. - - - - - 'Ionian Pentatonic' scale's intervals sequence. - - - - - 'Iwato' scale's intervals sequence. - - - - - 'Kafi Raga' scale's intervals sequence. - - - - - 'Kumoi' scale's intervals sequence. - - - - - 'Kumoijoshi' scale's intervals sequence. - - - - - 'Leading Whole Tone' scale's intervals sequence. - - - - - 'Locrian' scale's intervals sequence. - - - - - 'Locrian #2' scale's intervals sequence. - - - - - 'Locrian Major' scale's intervals sequence. - - - - - 'Locrian Pentatonic' scale's intervals sequence. - - - - - 'Lydian' scale's intervals sequence. - - - - - 'Lydian #5P Pentatonic' scale's intervals sequence. - - - - - 'Lydian #9' scale's intervals sequence. - - - - - 'Lydian Augmented' scale's intervals sequence. - - - - - 'Lydian b7' scale's intervals sequence. - - - - - 'Lydian Diminished' scale's intervals sequence. - - - - - 'Lydian Dominant' scale's intervals sequence. - - - - - 'Lydian Dominant Pentatonic' scale's intervals sequence. - - - - - 'Lydian Minor' scale's intervals sequence. - - - - - 'Lydian Pentatonic' scale's intervals sequence. - - - - - 'Major' scale's intervals sequence. - - - - - 'Major Blues' scale's intervals sequence. - - - - - 'Major Flat Two Pentatonic' scale's intervals sequence. - - - - - 'Major Pentatonic' scale's intervals sequence. - - - - - 'Malkos Raga' scale's intervals sequence. - - - - - 'Melodic Minor' scale's intervals sequence. - - - - - 'Melodic Minor Fifth Mode' scale's intervals sequence. - - - - - 'Melodic Minor Second Mode' scale's intervals sequence. - - - - - 'Minor' scale's intervals sequence. - - - - - 'Minor #7M Pentatonic' scale's intervals sequence. - - - - - 'Minor Bebop' scale's intervals sequence. - - - - - 'Minor Blues' scale's intervals sequence. - - - - - 'Minor Hexatonic' scale's intervals sequence. - - - - - 'Minor Pentatonic' scale's intervals sequence. - - - - - 'Minor Seven Flat Five Pentatonic' scale's intervals sequence. - - - - - 'Minor Six Diminished' scale's intervals sequence. - - - - - 'Minor Six Pentatonic' scale's intervals sequence. - - - - - 'Mixolydian' scale's intervals sequence. - - - - - 'Mixolydian b6M' scale's intervals sequence. - - - - - 'Mixolydian Pentatonic' scale's intervals sequence. - - - - - 'Mystery #1' scale's intervals sequence. - - - - - 'Neopolitan' scale's intervals sequence. - - - - - 'Neopolitan Major' scale's intervals sequence. - - - - - 'Neopolitan Major Pentatonic' scale's intervals sequence. - - - - - 'Neopolitan Minor' scale's intervals sequence. - - - - - 'Oriental' scale's intervals sequence. - - - - - 'Pelog' scale's intervals sequence. - - - - - 'Pentatonic' scale's intervals sequence. - - - - - 'Persian' scale's intervals sequence. - - - - - 'Phrygian' scale's intervals sequence. - - - - - 'Phrygian Major' scale's intervals sequence. - - - - - 'Piongio' scale's intervals sequence. - - - - - 'Pomeroy' scale's intervals sequence. - - - - - 'Prometheus' scale's intervals sequence. - - - - - 'Prometheus Neopolitan' scale's intervals sequence. - - - - - 'Purvi Raga' scale's intervals sequence. - - - - - 'Ritusen' scale's intervals sequence. - - - - - 'Romanian Minor' scale's intervals sequence. - - - - - 'Scriabin' scale's intervals sequence. - - - - - 'Six Tone Symmetric' scale's intervals sequence. - - - - - 'Spanish' scale's intervals sequence. - - - - - 'Spanish Heptatonic' scale's intervals sequence. - - - - - 'Super Locrian' scale's intervals sequence. - - - - - 'Super Locrian Pentatonic' scale's intervals sequence. - - - - - 'Todi Raga' scale's intervals sequence. - - - - - 'Vietnamese 1' scale's intervals sequence. - - - - - 'Vietnamese 2' scale's intervals sequence. - - - - - 'Whole Tone' scale's intervals sequence. - - - - - 'Whole Tone Pentatonic' scale's intervals sequence. - - - - - Gets musical scale's intervals sequence by the scale's name. - - The name of a scale. - Intervals sequence for the scale with the name ; or null if - there is no a scale with this name. - is null or contains white-spaces only. - - - - Provides useful utilities for working with . - - - - - Gets corresponding to the specified degree of a musical scale. - - to get degree of. - representing a degree of the - . - which is the degree of the scale. - is null. - specified an - invalid value. - is out of - range for the . - - - - Gets corresponding to the specified step of a musical scale. - - to get step of. - Step of the scale. - which is the step of the scale. - is null. - is negative. - - - - Gets all MIDI notes that belong to the specified scale. - - to get notes of. - Notes that belong to the . - is null. - - - - Returns infinite collection of note names that belong to the specified scale. - - to get note names of. - Note names that belong to the . - is null. - - - - Gets notes that belong to a musical scale in ascending order starting with the specified - root note. - - to get notes of. - to start a sequence of scale's notes with. - Notes that belong to the in ascending order starting with - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets notes that belong to a musical scale in descending order starting with the specified - root note. - - to get notes of. - to start a sequence of scale's notes with. - Notes that belong to the in descending order starting with - the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Checks if the specified note belongs to a scale or not. - - to check the note. - to check if it belongs to the - or not. - true if belongs to the ; - otherwise, false. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets a note that belongs to a musical scale next to the specified note. - - to get the next note of. - to get a note next to. - A note next to the that belongs to the - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets a note that belongs to a musical scale previous to the specified note. - - to get the previous note of. - to get a note previous to. - A note previous to the that belongs to the - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - General MIDI Level 2 percussion set. - - - - - 'Standard' percussion set. - - - - - 'Room' percussion set. - - - - - 'Power' percussion set. - - - - - 'Electronic' percussion set. - - - - - 'Analog' percussion set. - - - - - 'Jazz' percussion set. - - - - - 'Brush' percussion set. - - - - - 'Orchestra' percussion set. - - - - - 'SFX' percussion set. - - - - - General MIDI Level 2 program (patch). - - - - - 'Acoustic Grand Piano' General MIDI 2 program. - - - - - 'Acoustic Grand Piano (wide)' General MIDI 2 program. - - - - - 'Acoustic Grand Piano (dark)' General MIDI 2 program. - - - - - 'Bright Acoustic Piano' General MIDI 2 program. - - - - - 'Bright Acoustic Piano (wide)' General MIDI 2 program. - - - - - 'Electric Grand Piano' General MIDI 2 program. - - - - - 'Electric Grand Piano (wide)' General MIDI 2 program. - - - - - 'Honky Tonk Piano' General MIDI 2 program. - - - - - 'Honky Tonk Piano (wide)' General MIDI 2 program. - - - - - 'Electric Piano1' General MIDI 2 program. - - - - - 'Detuned Electric Piano1' General MIDI 2 program. - - - - - 'Electric Piano1 (velocity mix)' General MIDI 2 program. - - - - - 'Sixties Electric Piano' General MIDI 2 program. - - - - - 'Electric Piano2' General MIDI 2 program. - - - - - 'Detuned Electric Piano2' General MIDI 2 program. - - - - - 'Electric Piano2 (velocity mix)' General MIDI 2 program. - - - - - 'Ep Legend' General MIDI 2 program. - - - - - 'Ep Phase' General MIDI 2 program. - - - - - 'Harpsichord' General MIDI 2 program. - - - - - 'Harpsichord (octave mix)' General MIDI 2 program. - - - - - 'Harpsichord (wide)' General MIDI 2 program. - - - - - 'Harpsichord (with key off)' General MIDI 2 program. - - - - - 'Clavi' General MIDI 2 program. - - - - - 'Pulse Clavi' General MIDI 2 program. - - - - - 'Celesta' General MIDI 2 program. - - - - - 'Glockenspiel' General MIDI 2 program. - - - - - 'Music Box' General MIDI 2 program. - - - - - 'Vibraphone' General MIDI 2 program. - - - - - 'Vibraphone (wide)' General MIDI 2 program. - - - - - 'Marimba' General MIDI 2 program. - - - - - 'Marimba (wide)' General MIDI 2 program. - - - - - 'Xylophone' General MIDI 2 program. - - - - - 'Tubular Bells' General MIDI 2 program. - - - - - 'Church Bell' General MIDI 2 program. - - - - - 'Carillon' General MIDI 2 program. - - - - - 'Dulcimer' General MIDI 2 program. - - - - - 'Drawbar Organ' General MIDI 2 program. - - - - - 'Detuned Drawbar Organ' General MIDI 2 program. - - - - - 'Italian Sixties Organ' General MIDI 2 program. - - - - - 'Drawbar Organ2' General MIDI 2 program. - - - - - 'Percussive Organ' General MIDI 2 program. - - - - - 'Detuned Percussive Organ' General MIDI 2 program. - - - - - 'Percussive Organ2' General MIDI 2 program. - - - - - 'Rock Organ' General MIDI 2 program. - - - - - 'Church Organ' General MIDI 2 program. - - - - - 'Church Organ (octave mix)' General MIDI 2 program. - - - - - 'Detuned Church Organ' General MIDI 2 program. - - - - - 'Reed Organ' General MIDI 2 program. - - - - - 'Puff Organ' General MIDI 2 program. - - - - - 'Accordion' General MIDI 2 program. - - - - - 'Accordion2' General MIDI 2 program. - - - - - 'Harmonica' General MIDI 2 program. - - - - - 'Tango Accordion' General MIDI 2 program. - - - - - 'Acoustic Guitar (nylon)' General MIDI 2 program. - - - - - 'Ukulele' General MIDI 2 program. - - - - - 'Acoustic Guitar (nylon key off)' General MIDI 2 program. - - - - - 'Acoustic Guitar (nylon2)' General MIDI 2 program. - - - - - 'Acoustic Guitar (steel)' General MIDI 2 program. - - - - - 'Twelve Strings Guitar' General MIDI 2 program. - - - - - 'Mandolin' General MIDI 2 program. - - - - - 'Steel Guitar With Body Sound' General MIDI 2 program. - - - - - 'Electric Guitar (jazz)' General MIDI 2 program. - - - - - 'Electric Guitar (pedal steel)' General MIDI 2 program. - - - - - 'Electric Guitar (clean)' General MIDI 2 program. - - - - - 'Electric Guitar (detuned clean)' General MIDI 2 program. - - - - - 'Mid Tone Guitar' General MIDI 2 program. - - - - - 'Electric Guitar (muted)' General MIDI 2 program. - - - - - 'Electric Guitar (funky cutting)' General MIDI 2 program. - - - - - 'Electric Guitar (muted velo sw)' General MIDI 2 program. - - - - - 'Jazz Man' General MIDI 2 program. - - - - - 'Overdriven Guitar' General MIDI 2 program. - - - - - 'Guitar Pinch' General MIDI 2 program. - - - - - 'Distortion Guitar' General MIDI 2 program. - - - - - 'Distortion Guitar (with feedback)' General MIDI 2 program. - - - - - 'Distorted Rhythm Guitar' General MIDI 2 program. - - - - - 'Guitar Harmonics' General MIDI 2 program. - - - - - 'Guitar Feedback' General MIDI 2 program. - - - - - 'Acoustic Bass' General MIDI 2 program. - - - - - 'Electric Bass (finger)' General MIDI 2 program. - - - - - 'Finger Slap Bass' General MIDI 2 program. - - - - - 'Electric Bass (pick)' General MIDI 2 program. - - - - - 'Fretless Bass' General MIDI 2 program. - - - - - 'Slap Bass1' General MIDI 2 program. - - - - - 'Slap Bass2' General MIDI 2 program. - - - - - 'Synth Bass1' General MIDI 2 program. - - - - - 'Synth Bass (warm)' General MIDI 2 program. - - - - - 'Synth Bass3 (resonance)' General MIDI 2 program. - - - - - 'Clavi Bass' General MIDI 2 program. - - - - - 'Hammer' General MIDI 2 program. - - - - - 'Synth Bass2' General MIDI 2 program. - - - - - 'Synth Bass4 (attack)' General MIDI 2 program. - - - - - 'Synth Bass (rubber)' General MIDI 2 program. - - - - - 'Attack Pulse' General MIDI 2 program. - - - - - 'Violin' General MIDI 2 program. - - - - - 'Violin (slow attack)' General MIDI 2 program. - - - - - 'Viola' General MIDI 2 program. - - - - - 'Cello' General MIDI 2 program. - - - - - 'Contrabass' General MIDI 2 program. - - - - - 'Tremolo Strings' General MIDI 2 program. - - - - - 'Pizzicato Strings' General MIDI 2 program. - - - - - 'Orchestral Harp' General MIDI 2 program. - - - - - 'Yang Chin' General MIDI 2 program. - - - - - 'Timpani' General MIDI 2 program. - - - - - 'String Ensembles1' General MIDI 2 program. - - - - - 'Strings And Brass' General MIDI 2 program. - - - - - 'Sixties Strings' General MIDI 2 program. - - - - - 'String Ensembles2' General MIDI 2 program. - - - - - 'Synth Strings1' General MIDI 2 program. - - - - - 'Synth Strings3' General MIDI 2 program. - - - - - 'Synth Strings2' General MIDI 2 program. - - - - - 'Choir Aahs' General MIDI 2 program. - - - - - 'Choir Aahs2' General MIDI 2 program. - - - - - 'Voice Oohs' General MIDI 2 program. - - - - - 'Humming' General MIDI 2 program. - - - - - 'Synth Voice' General MIDI 2 program. - - - - - 'Analog Voice' General MIDI 2 program. - - - - - 'Orchestra Hit' General MIDI 2 program. - - - - - 'Bass Hit Plus' General MIDI 2 program. - - - - - 'Sixth Hit' General MIDI 2 program. - - - - - 'Euro Hit' General MIDI 2 program. - - - - - 'Trumpet' General MIDI 2 program. - - - - - 'Dark Trumpet Soft' General MIDI 2 program. - - - - - 'Trombone' General MIDI 2 program. - - - - - 'Trombone2' General MIDI 2 program. - - - - - 'Bright Trombone' General MIDI 2 program. - - - - - 'Tuba' General MIDI 2 program. - - - - - 'Muted Trumpet' General MIDI 2 program. - - - - - 'Muted Trumpet2' General MIDI 2 program. - - - - - 'French Horn' General MIDI 2 program. - - - - - 'French Horn2 (warm)' General MIDI 2 program. - - - - - 'Brass Section' General MIDI 2 program. - - - - - 'Brass Section2 (octave mix)' General MIDI 2 program. - - - - - 'Synth Brass1' General MIDI 2 program. - - - - - 'Synth Brass3' General MIDI 2 program. - - - - - 'Analog Synth Brass1' General MIDI 2 program. - - - - - 'Jump Brass' General MIDI 2 program. - - - - - 'Synth Brass2' General MIDI 2 program. - - - - - 'Synth Brass4' General MIDI 2 program. - - - - - 'Analog Synth Brass2' General MIDI 2 program. - - - - - 'Soprano Sax' General MIDI 2 program. - - - - - 'Alto Sax' General MIDI 2 program. - - - - - 'Tenor Sax' General MIDI 2 program. - - - - - 'Baritone Sax' General MIDI 2 program. - - - - - 'Oboe' General MIDI 2 program. - - - - - 'English Horn' General MIDI 2 program. - - - - - 'Bassoon' General MIDI 2 program. - - - - - 'Clarinet' General MIDI 2 program. - - - - - 'Piccolo' General MIDI 2 program. - - - - - 'Flute' General MIDI 2 program. - - - - - 'Recorder' General MIDI 2 program. - - - - - 'Pan Flute' General MIDI 2 program. - - - - - 'Blown Bottle' General MIDI 2 program. - - - - - 'Shakuhachi' General MIDI 2 program. - - - - - 'Whistle' General MIDI 2 program. - - - - - 'Ocarina' General MIDI 2 program. - - - - - 'Lead1 (square)' General MIDI 2 program. - - - - - 'Lead1 A (square2)' General MIDI 2 program. - - - - - 'Lead1 B (sine)' General MIDI 2 program. - - - - - 'Lead2 (sawtooth)' General MIDI 2 program. - - - - - 'Lead2 A (sawtooth2)' General MIDI 2 program. - - - - - 'Lead2 B (saw pulse)' General MIDI 2 program. - - - - - 'Lead2 C (double sawtooth)' General MIDI 2 program. - - - - - 'Lead2 D (sequenced analog)' General MIDI 2 program. - - - - - 'Lead3 (calliope)' General MIDI 2 program. - - - - - 'Lead4 (chiff)' General MIDI 2 program. - - - - - 'Lead5 (charang)' General MIDI 2 program. - - - - - 'Lead5 A (wire lead)' General MIDI 2 program. - - - - - 'Lead6 (voice)' General MIDI 2 program. - - - - - 'Lead7 (fifths)' General MIDI 2 program. - - - - - 'Lead8 (bass lead)' General MIDI 2 program. - - - - - 'Lead8 A (soft wrl)' General MIDI 2 program. - - - - - 'Pad1 (new age)' General MIDI 2 program. - - - - - 'Pad2 (warm)' General MIDI 2 program. - - - - - 'Pad2 A (sine pad)' General MIDI 2 program. - - - - - 'Pad3 (polysynth)' General MIDI 2 program. - - - - - 'Pad4 (choir)' General MIDI 2 program. - - - - - 'Pad4 A (itopia)' General MIDI 2 program. - - - - - 'Pad5 (bowed)' General MIDI 2 program. - - - - - 'Pad6 (metallic)' General MIDI 2 program. - - - - - 'Pad7 (halo)' General MIDI 2 program. - - - - - 'Pad8 (sweep)' General MIDI 2 program. - - - - - 'Fx1 (rain)' General MIDI 2 program. - - - - - 'Fx2 (soundtrack)' General MIDI 2 program. - - - - - 'Fx3 (crystal)' General MIDI 2 program. - - - - - 'Fx3 A (synth mallet)' General MIDI 2 program. - - - - - 'Fx4 (atmosphere)' General MIDI 2 program. - - - - - 'Fx5 (brightness)' General MIDI 2 program. - - - - - 'Fx6 (goblins)' General MIDI 2 program. - - - - - 'Fx7 (echoes)' General MIDI 2 program. - - - - - 'Fx7 A (echo bell)' General MIDI 2 program. - - - - - 'Fx7 B (echo pan)' General MIDI 2 program. - - - - - 'Fx8 (sci fi)' General MIDI 2 program. - - - - - 'Sitar' General MIDI 2 program. - - - - - 'Sitar2 (bend)' General MIDI 2 program. - - - - - 'Banjo' General MIDI 2 program. - - - - - 'Shamisen' General MIDI 2 program. - - - - - 'Koto' General MIDI 2 program. - - - - - 'Taisho Koto' General MIDI 2 program. - - - - - 'Kalimba' General MIDI 2 program. - - - - - 'Bag Pipe' General MIDI 2 program. - - - - - 'Fiddle' General MIDI 2 program. - - - - - 'Shanai' General MIDI 2 program. - - - - - 'Tinkle Bell' General MIDI 2 program. - - - - - 'Agogo' General MIDI 2 program. - - - - - 'Steel Drums' General MIDI 2 program. - - - - - 'Woodblock' General MIDI 2 program. - - - - - 'Castanets' General MIDI 2 program. - - - - - 'Taiko Drum' General MIDI 2 program. - - - - - 'Concert Bass Drum' General MIDI 2 program. - - - - - 'Melodic Tom' General MIDI 2 program. - - - - - 'Melodic Tom2 (power)' General MIDI 2 program. - - - - - 'Synth Drum' General MIDI 2 program. - - - - - 'Rhythm Box Tom' General MIDI 2 program. - - - - - 'Electric Drum' General MIDI 2 program. - - - - - 'Reverse Cymbal' General MIDI 2 program. - - - - - 'Guitar Fret Noise' General MIDI 2 program. - - - - - 'Guitar Cutting Noise' General MIDI 2 program. - - - - - 'Acoustic Bass String Slap' General MIDI 2 program. - - - - - 'Breath Noise' General MIDI 2 program. - - - - - 'Flute Key Click' General MIDI 2 program. - - - - - 'Seashore' General MIDI 2 program. - - - - - 'Rain' General MIDI 2 program. - - - - - 'Thunder' General MIDI 2 program. - - - - - 'Wind' General MIDI 2 program. - - - - - 'Stream' General MIDI 2 program. - - - - - 'Bubble' General MIDI 2 program. - - - - - 'Bird Tweet' General MIDI 2 program. - - - - - 'Dog' General MIDI 2 program. - - - - - 'Horse Gallop' General MIDI 2 program. - - - - - 'Bird Tweet2' General MIDI 2 program. - - - - - 'Telephone Ring' General MIDI 2 program. - - - - - 'Telephone Ring2' General MIDI 2 program. - - - - - 'Door Creaking' General MIDI 2 program. - - - - - 'Door' General MIDI 2 program. - - - - - 'Scratch' General MIDI 2 program. - - - - - 'Wind Chime' General MIDI 2 program. - - - - - 'Helicopter' General MIDI 2 program. - - - - - 'Car Engine' General MIDI 2 program. - - - - - 'Car Stop' General MIDI 2 program. - - - - - 'Car Pass' General MIDI 2 program. - - - - - 'Car Crash' General MIDI 2 program. - - - - - 'Siren' General MIDI 2 program. - - - - - 'Train' General MIDI 2 program. - - - - - 'Jetplane' General MIDI 2 program. - - - - - 'Starship' General MIDI 2 program. - - - - - 'Burst Noise' General MIDI 2 program. - - - - - 'Applause' General MIDI 2 program. - - - - - 'Laughing' General MIDI 2 program. - - - - - 'Screaming' General MIDI 2 program. - - - - - 'Punch' General MIDI 2 program. - - - - - 'Heart Beat' General MIDI 2 program. - - - - - 'Footsteps' General MIDI 2 program. - - - - - 'Gunshot' General MIDI 2 program. - - - - - 'Machine Gun' General MIDI 2 program. - - - - - 'Lasergun' General MIDI 2 program. - - - - - 'Explosion' General MIDI 2 program. - - - - - Provides utilities for General MIDI Level 2. - - - - - Gets MIDI events sequence to switch to the specified General MIDI Level 2 program. - - to get events for. - Channel events should be created for. - MIDI events sequence to switch to the . - specified an invalid value. - - - - Gets MIDI events sequence to switch to the specified General MIDI Level 2 percussion set. - - to get events for. - Channel events should be created for. - MIDI events sequence to switch to the . - specified an invalid value. - - - - Gets Program Change event corresponding to the specified General MIDI Level 2 percussion set. - - to get event for. - Channel event should be created for. - Program Change event corresponding to the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Analog' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Brush' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Electronic' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Jazz' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Orchestra' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Power' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Room' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'SFX' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Standard' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Analog' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Brush' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Electronic' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Jazz' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Orchestra' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Power' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Room' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'SFX' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 2 'Standard' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - General MIDI Level 2 'Analog' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Acoustic Bass Drum' General MIDI 2 percussion note. - - - - - 'Analog Bass Drum' General MIDI 2 percussion note. - - - - - 'Analog Rim Shot' General MIDI 2 percussion note. - - - - - 'Analog Snare 1' General MIDI 2 percussion note. - - - - - 'Hand Clap' General MIDI 2 percussion note. - - - - - 'Electric Snare' General MIDI 2 percussion note. - - - - - 'Analog Low Tom 2' General MIDI 2 percussion note. - - - - - 'Analog Closed Hi-Hat 1' General MIDI 2 percussion note. - - - - - 'Analog Low Tom 1' General MIDI 2 percussion note. - - - - - 'Analog Closed Hi-Hat 2' General MIDI 2 percussion note. - - - - - 'Analog Mid Tom 2' General MIDI 2 percussion note. - - - - - 'Analog Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Analog Mid Tom 1' General MIDI 2 percussion note. - - - - - 'Analog Hi Tom 2' General MIDI 2 percussion note. - - - - - 'Analog Cymbal' General MIDI 2 percussion note. - - - - - 'Analog Hi Tom 1' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Chinese Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Analog Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Analog High Conga' General MIDI 2 percussion note. - - - - - 'Analog Mid Conga' General MIDI 2 percussion note. - - - - - 'Analog Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Analog Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Analog Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Brush' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Jazz Kick 2' General MIDI 2 percussion note. - - - - - 'Jazz Kick 1' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Brush Tap' General MIDI 2 percussion note. - - - - - 'Brush Slap' General MIDI 2 percussion note. - - - - - 'Brush Swirl' General MIDI 2 percussion note. - - - - - 'Low Floor Tom' General MIDI 2 percussion note. - - - - - 'Closed Hi-Hat' General MIDI 2 percussion note. - - - - - 'High Floor Tom' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Low Tom' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Low Mid Tom' General MIDI 2 percussion note. - - - - - 'Hi Mid Tom' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 1' General MIDI 2 percussion note. - - - - - 'High Tom' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Chinese Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Electronic' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Acoustic Bass Drum' General MIDI 2 percussion note. - - - - - 'Electric Bass Drum' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Electric Snare 1' General MIDI 2 percussion note. - - - - - 'Hand Clap' General MIDI 2 percussion note. - - - - - 'Electric Snare 2' General MIDI 2 percussion note. - - - - - 'Electric Low Tom 2' General MIDI 2 percussion note. - - - - - 'Closed Hi-Hat' General MIDI 2 percussion note. - - - - - 'Electric Low Tom 1' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Electric Mid Tom 2' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Electric Mid Tom 1' General MIDI 2 percussion note. - - - - - 'Electric Hi Tom 2' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 1' General MIDI 2 percussion note. - - - - - 'Electric Hi Tom 1' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Reverse Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Jazz' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Jazz Kick 2' General MIDI 2 percussion note. - - - - - 'Jazz Kick 1' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Acoustic Snare' General MIDI 2 percussion note. - - - - - 'Hand Clap' General MIDI 2 percussion note. - - - - - 'Electric Snare' General MIDI 2 percussion note. - - - - - 'Low Floor Tom' General MIDI 2 percussion note. - - - - - 'Closed Hi-Hat' General MIDI 2 percussion note. - - - - - 'High Floor Tom' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Low Tom' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Low Mid Tom' General MIDI 2 percussion note. - - - - - 'Hi Mid Tom' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 1' General MIDI 2 percussion note. - - - - - 'High Tom' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Chinese Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Orchestra' percussion. - - - - - 'Closed Hi-Hat 2' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat 2' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Concert Bass Drum 2' General MIDI 2 percussion note. - - - - - 'Concert Bass Drum 1' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Concert Snare Drum' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Concert Snare Drum 2' General MIDI 2 percussion note. - - - - - 'Timpani F' General MIDI 2 percussion note. - - - - - 'Timpani F#' General MIDI 2 percussion note. - - - - - 'Timpani G' General MIDI 2 percussion note. - - - - - 'Timpani G#' General MIDI 2 percussion note. - - - - - 'Timpani A' General MIDI 2 percussion note. - - - - - 'Timpani A#' General MIDI 2 percussion note. - - - - - 'Timpani B' General MIDI 2 percussion note. - - - - - 'Timpani C' General MIDI 2 percussion note. - - - - - 'Timpani C#' General MIDI 2 percussion note. - - - - - 'Timpani D' General MIDI 2 percussion note. - - - - - 'Timpani D#' General MIDI 2 percussion note. - - - - - 'Timpani E' General MIDI 2 percussion note. - - - - - 'Timpani F 2' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Concert Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Concert Cymbal 1' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets 2' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - 'Applause' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Power' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Acoustic Bass Drum' General MIDI 2 percussion note. - - - - - 'Power Kick Drum' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Power Snare Drum' General MIDI 2 percussion note. - - - - - 'Hand Clap' General MIDI 2 percussion note. - - - - - 'Electric Snare' General MIDI 2 percussion note. - - - - - 'Power Low Tom 2' General MIDI 2 percussion note. - - - - - 'Closed Hi-Hat' General MIDI 2 percussion note. - - - - - 'Power Low Tom 1' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Power Mid Tom 2' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Power Mid Tom 1' General MIDI 2 percussion note. - - - - - 'Power Hi Tom 2' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 1' General MIDI 2 percussion note. - - - - - 'Power Hi Tom 1' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Chinese Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Room' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Acoustic Bass Drum' General MIDI 2 percussion note. - - - - - 'Bass Drum 1' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Acoustic Snare' General MIDI 2 percussion note. - - - - - 'Hand Clap' General MIDI 2 percussion note. - - - - - 'Electric Snare' General MIDI 2 percussion note. - - - - - 'Room Low Tom 2' General MIDI 2 percussion note. - - - - - 'Closed Hi-Hat' General MIDI 2 percussion note. - - - - - 'Room Low Tom 1' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Room Mid Tom 2' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Room Mid Tom 1' General MIDI 2 percussion note. - - - - - 'Room Hi Tom 2' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 1' General MIDI 2 percussion note. - - - - - 'Room Hi Tom 1' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Chinese Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'SFX' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Guitar Fret Noise' General MIDI 2 percussion note. - - - - - 'Guitar Cutting Noise Up' General MIDI 2 percussion note. - - - - - 'Guitar Cutting Noise Down' General MIDI 2 percussion note. - - - - - 'String Slap Of Double Bass' General MIDI 2 percussion note. - - - - - 'Fl Key Click' General MIDI 2 percussion note. - - - - - 'Laughing' General MIDI 2 percussion note. - - - - - 'Scream' General MIDI 2 percussion note. - - - - - 'Punch' General MIDI 2 percussion note. - - - - - 'Heart Beat' General MIDI 2 percussion note. - - - - - 'Footsteps 1' General MIDI 2 percussion note. - - - - - 'Footsteps 2' General MIDI 2 percussion note. - - - - - 'Applause' General MIDI 2 percussion note. - - - - - 'Door Creaking' General MIDI 2 percussion note. - - - - - 'Door' General MIDI 2 percussion note. - - - - - 'Scratch' General MIDI 2 percussion note. - - - - - 'Wind Chimes' General MIDI 2 percussion note. - - - - - 'Car-Engine' General MIDI 2 percussion note. - - - - - 'Car-Stop' General MIDI 2 percussion note. - - - - - 'Car-Pass' General MIDI 2 percussion note. - - - - - 'Car-Crash' General MIDI 2 percussion note. - - - - - 'Siren' General MIDI 2 percussion note. - - - - - 'Train' General MIDI 2 percussion note. - - - - - 'Jetplane' General MIDI 2 percussion note. - - - - - 'Helicopter' General MIDI 2 percussion note. - - - - - 'Starship' General MIDI 2 percussion note. - - - - - 'Gun Shot' General MIDI 2 percussion note. - - - - - 'Machine Gun' General MIDI 2 percussion note. - - - - - 'Lasergun' General MIDI 2 percussion note. - - - - - 'Explosion' General MIDI 2 percussion note. - - - - - 'Dog' General MIDI 2 percussion note. - - - - - 'Horse Gallop' General MIDI 2 percussion note. - - - - - 'Birds' General MIDI 2 percussion note. - - - - - 'Rain' General MIDI 2 percussion note. - - - - - 'Thunder' General MIDI 2 percussion note. - - - - - 'Wind' General MIDI 2 percussion note. - - - - - 'Seashore' General MIDI 2 percussion note. - - - - - 'Stream' General MIDI 2 percussion note. - - - - - 'Bubble' General MIDI 2 percussion note. - - - - - General MIDI Level 2 'Standard' percussion. - - - - - 'High Q' General MIDI 2 percussion note. - - - - - 'Slap' General MIDI 2 percussion note. - - - - - 'Scratch Push' General MIDI 2 percussion note. - - - - - 'Scratch Pull' General MIDI 2 percussion note. - - - - - 'Sticks' General MIDI 2 percussion note. - - - - - 'Square Click' General MIDI 2 percussion note. - - - - - 'Metronome Click' General MIDI 2 percussion note. - - - - - 'Metronome Bell' General MIDI 2 percussion note. - - - - - 'Acoustic Bass Drum' General MIDI 2 percussion note. - - - - - 'Bass Drum 1' General MIDI 2 percussion note. - - - - - 'Side Stick' General MIDI 2 percussion note. - - - - - 'Acoustic Snare' General MIDI 2 percussion note. - - - - - 'Hand Clap' General MIDI 2 percussion note. - - - - - 'Electric Snare' General MIDI 2 percussion note. - - - - - 'Low Floor Tom' General MIDI 2 percussion note. - - - - - 'Closed Hi-Hat' General MIDI 2 percussion note. - - - - - 'High Floor Tom' General MIDI 2 percussion note. - - - - - 'Pedal Hi-Hat' General MIDI 2 percussion note. - - - - - 'Low Tom' General MIDI 2 percussion note. - - - - - 'Open Hi-Hat' General MIDI 2 percussion note. - - - - - 'Low Mid Tom' General MIDI 2 percussion note. - - - - - 'Hi Mid Tom' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 1' General MIDI 2 percussion note. - - - - - 'High Tom' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 1' General MIDI 2 percussion note. - - - - - 'Chinese Cymbal' General MIDI 2 percussion note. - - - - - 'Ride Bell' General MIDI 2 percussion note. - - - - - 'Tambourine' General MIDI 2 percussion note. - - - - - 'Splash Cymbal' General MIDI 2 percussion note. - - - - - 'Cowbell' General MIDI 2 percussion note. - - - - - 'Crash Cymbal 2' General MIDI 2 percussion note. - - - - - 'Vibraslap' General MIDI 2 percussion note. - - - - - 'Ride Cymbal 2' General MIDI 2 percussion note. - - - - - 'Hi Bongo' General MIDI 2 percussion note. - - - - - 'Low Bongo' General MIDI 2 percussion note. - - - - - 'Mute Hi Conga' General MIDI 2 percussion note. - - - - - 'Open Hi Conga' General MIDI 2 percussion note. - - - - - 'Low Conga' General MIDI 2 percussion note. - - - - - 'High Timbale' General MIDI 2 percussion note. - - - - - 'Low Timbale' General MIDI 2 percussion note. - - - - - 'High Agogo' General MIDI 2 percussion note. - - - - - 'Low Agogo' General MIDI 2 percussion note. - - - - - 'Cabasa' General MIDI 2 percussion note. - - - - - 'Maracas' General MIDI 2 percussion note. - - - - - 'Short Whistle' General MIDI 2 percussion note. - - - - - 'Long Whistle' General MIDI 2 percussion note. - - - - - 'Short Guiro' General MIDI 2 percussion note. - - - - - 'Long Guiro' General MIDI 2 percussion note. - - - - - 'Claves' General MIDI 2 percussion note. - - - - - 'Hi Wood Block' General MIDI 2 percussion note. - - - - - 'Low Wood Block' General MIDI 2 percussion note. - - - - - 'Mute Cuica' General MIDI 2 percussion note. - - - - - 'Open Cuica' General MIDI 2 percussion note. - - - - - 'Mute Triangle' General MIDI 2 percussion note. - - - - - 'Open Triangle' General MIDI 2 percussion note. - - - - - 'Shaker' General MIDI 2 percussion note. - - - - - 'Jingle Bell' General MIDI 2 percussion note. - - - - - 'Belltree' General MIDI 2 percussion note. - - - - - 'Castanets' General MIDI 2 percussion note. - - - - - 'Mute Surdo' General MIDI 2 percussion note. - - - - - 'Open Surdo' General MIDI 2 percussion note. - - - - - The class which provides information about the General MIDI Level 1 standard. - - - - - Channel reserved for percussion according to the General MIDI Level 1 standard. - - - - - General MIDI Level 1 percussion notes. - - - - - 'Acoustic Bass Drum' General MIDI percussion note. - - - - - 'Bass Drum 1' General MIDI percussion note. - - - - - 'Side Stick' General MIDI percussion note. - - - - - 'Acoustic Snare' General MIDI percussion note. - - - - - 'Hand Clap' General MIDI percussion note. - - - - - 'Electric Snare' General MIDI percussion note. - - - - - 'Low Floor Tom' General MIDI percussion note. - - - - - 'Closed Hi-Hat' General MIDI percussion note. - - - - - 'High Floor Tom' General MIDI percussion note. - - - - - 'Pedal Hi-Hat' General MIDI percussion note. - - - - - 'Low Tom' General MIDI percussion note. - - - - - 'Open Hi-Hat' General MIDI percussion note. - - - - - 'Low-Mid Tom' General MIDI percussion note. - - - - - 'Hi-Mid Tom' General MIDI percussion note. - - - - - 'Crash Cymbal 1' General MIDI percussion note. - - - - - 'High Tom' General MIDI percussion note. - - - - - 'Ride Cymbal 1' General MIDI percussion note. - - - - - 'Chinese Cymbal' General MIDI percussion note. - - - - - 'Ride Bell' General MIDI percussion note. - - - - - 'Tambourine' General MIDI percussion note. - - - - - 'Splash Cymbal' General MIDI percussion note. - - - - - 'Cowbell' General MIDI percussion note. - - - - - 'Crash Cymbal 2' General MIDI percussion note. - - - - - 'Vibraslap' General MIDI percussion note. - - - - - 'Ride Cymbal 2' General MIDI percussion note. - - - - - 'Hi Bongo' General MIDI percussion note. - - - - - 'Low Bongo' General MIDI percussion note. - - - - - 'Mute Hi Conga' General MIDI percussion note. - - - - - 'Open Hi Conga' General MIDI percussion note. - - - - - 'Low Conga' General MIDI percussion note. - - - - - 'High Timbale' General MIDI percussion note. - - - - - 'Low Timbale' General MIDI percussion note. - - - - - 'High Agogo' General MIDI percussion note. - - - - - 'Low Agogo' General MIDI percussion note. - - - - - 'Cabasa' General MIDI percussion note. - - - - - 'Maracas' General MIDI percussion note. - - - - - 'Short Whistle' General MIDI percussion note. - - - - - 'Long Whistle' General MIDI percussion note. - - - - - 'Short Guiro' General MIDI percussion note. - - - - - 'Long Guiro' General MIDI percussion note. - - - - - 'Claves' General MIDI percussion note. - - - - - 'Hi Wood Block' General MIDI percussion note. - - - - - 'Low Wood Block' General MIDI percussion note. - - - - - 'Mute Cuica' General MIDI percussion note. - - - - - 'Open Cuica' General MIDI percussion note. - - - - - 'Mute Triangle' General MIDI percussion note. - - - - - 'Open Triangle' General MIDI percussion note. - - - - - General MIDI Level 1 program (patch). - - - - - 'Acoustic Grand Piano' General MIDI program. - - - - - 'Bright Acoustic Piano' General MIDI program. - - - - - 'Electric Grand Piano' General MIDI program. - - - - - 'Honky-tonk Piano' General MIDI program. - - - - - 'Electric Piano 1' General MIDI program. - - - - - 'Electric Piano 2' General MIDI program. - - - - - 'Harpsichord' General MIDI program. - - - - - 'Clavi' General MIDI program. - - - - - 'Celesta' General MIDI program. - - - - - 'Glockenspiel' General MIDI program. - - - - - 'Music Box' General MIDI program. - - - - - 'Vibraphone' General MIDI program. - - - - - 'Marimba' General MIDI program. - - - - - 'Xylophone' General MIDI program. - - - - - 'Tubular Bells' General MIDI program. - - - - - 'Dulcimer' General MIDI program. - - - - - 'Drawbar Organ' General MIDI program. - - - - - 'Percussive Organ' General MIDI program. - - - - - 'Rock Organ' General MIDI program. - - - - - 'Church Organ' General MIDI program. - - - - - 'Reed Organ' General MIDI program. - - - - - 'Accordion' General MIDI program. - - - - - 'Harmonica' General MIDI program. - - - - - 'Tango Accordion' General MIDI program. - - - - - 'Acoustic Guitar (nylon)' General MIDI program. - - - - - 'Acoustic Guitar (steel)' General MIDI program. - - - - - 'Electric Guitar (jazz)' General MIDI program. - - - - - 'Electric Guitar (clean)' General MIDI program. - - - - - 'Electric Guitar (muted)' General MIDI program. - - - - - 'Overdriven Guitar' General MIDI program. - - - - - 'Distortion Guitar' General MIDI program. - - - - - 'Guitar harmonics' General MIDI program. - - - - - 'Acoustic Bass' General MIDI program. - - - - - 'Electric Bass (finger)' General MIDI program. - - - - - 'Electric Bass (pick)' General MIDI program. - - - - - 'Fretless Bass' General MIDI program. - - - - - 'Slap Bass 1' General MIDI program. - - - - - 'Slap Bass 2' General MIDI program. - - - - - 'Synth Bass 1' General MIDI program. - - - - - 'Synth Bass 2' General MIDI program. - - - - - 'Violin' General MIDI program. - - - - - 'Viola' General MIDI program. - - - - - 'Cello' General MIDI program. - - - - - 'Contrabass' General MIDI program. - - - - - 'Tremolo Strings' General MIDI program. - - - - - 'Pizzicato Strings' General MIDI program. - - - - - 'Orchestral Harp' General MIDI program. - - - - - 'Timpani' General MIDI program. - - - - - 'String Ensemble 1' General MIDI program. - - - - - 'String Ensemble 2' General MIDI program. - - - - - 'SynthStrings 1' General MIDI program. - - - - - 'SynthStrings 2' General MIDI program. - - - - - 'Choir Aahs' General MIDI program. - - - - - 'Voice Oohs' General MIDI program. - - - - - 'Synth Voice' General MIDI program. - - - - - 'Orchestra Hit' General MIDI program. - - - - - 'Trumpet' General MIDI program. - - - - - 'Trombone' General MIDI program. - - - - - 'Tuba' General MIDI program. - - - - - 'Muted Trumpet' General MIDI program. - - - - - 'French Horn' General MIDI program. - - - - - 'Brass Section' General MIDI program. - - - - - 'SynthBrass 1' General MIDI program. - - - - - 'SynthBrass 2' General MIDI program. - - - - - 'Soprano Sax' General MIDI program. - - - - - 'Alto Sax' General MIDI program. - - - - - 'Tenor Sax' General MIDI program. - - - - - 'Baritone Sax' General MIDI program. - - - - - 'Oboe' General MIDI program. - - - - - 'English Horn' General MIDI program. - - - - - 'Bassoon' General MIDI program. - - - - - 'Clarinet' General MIDI program. - - - - - 'Piccolo' General MIDI program. - - - - - 'Flute' General MIDI program. - - - - - 'Recorder' General MIDI program. - - - - - 'Pan Flute' General MIDI program. - - - - - 'Blown Bottle' General MIDI program. - - - - - 'Shakuhachi' General MIDI program. - - - - - 'Whistle' General MIDI program. - - - - - 'Ocarina' General MIDI program. - - - - - 'Lead 1 (square)' General MIDI program. - - - - - 'Lead 2 (sawtooth)' General MIDI program. - - - - - 'Lead 3 (calliope)' General MIDI program. - - - - - 'Lead 4 (chiff)' General MIDI program. - - - - - 'Lead 5 (charang)' General MIDI program. - - - - - 'Lead 6 (voice)' General MIDI program. - - - - - 'Lead 7 (fifths)' General MIDI program. - - - - - 'Lead 8 (bass + lead)' General MIDI program. - - - - - 'Pad 1 (new age)' General MIDI program. - - - - - 'Pad 2 (warm)' General MIDI program. - - - - - 'Pad 3 (polysynth)' General MIDI program. - - - - - 'Pad 4 (choir)' General MIDI program. - - - - - 'Pad 5 (bowed)' General MIDI program. - - - - - 'Pad 6 (metallic)' General MIDI program. - - - - - 'Pad 7 (halo)' General MIDI program. - - - - - 'Pad 8 (sweep)' General MIDI program. - - - - - 'FX 1 (rain)' General MIDI program. - - - - - 'FX 2 (soundtrack)' General MIDI program. - - - - - 'FX 3 (crystal)' General MIDI program. - - - - - 'FX 4 (atmosphere)' General MIDI program. - - - - - 'FX 5 (brightness)' General MIDI program. - - - - - 'FX 6 (goblins)' General MIDI program. - - - - - 'FX 7 (echoes)' General MIDI program. - - - - - 'FX 8 (sci-fi)' General MIDI program. - - - - - 'Sitar' General MIDI program. - - - - - 'Banjo' General MIDI program. - - - - - 'Shamisen' General MIDI program. - - - - - 'Koto' General MIDI program. - - - - - 'Kalimba' General MIDI program. - - - - - 'Bag pipe' General MIDI program. - - - - - 'Fiddle' General MIDI program. - - - - - 'Shanai' General MIDI program. - - - - - 'Tinkle Bell' General MIDI program. - - - - - 'Agogo' General MIDI program. - - - - - 'Steel Drums' General MIDI program. - - - - - 'Woodblock' General MIDI program. - - - - - 'Taiko Drum' General MIDI program. - - - - - 'Melodic Tom' General MIDI program. - - - - - 'Synth Drum' General MIDI program. - - - - - 'Reverse Cymbal' General MIDI program. - - - - - 'Guitar Fret Noise' General MIDI program. - - - - - 'Breath Noise' General MIDI program. - - - - - 'Seashore' General MIDI program. - - - - - 'Bird Tweet' General MIDI program. - - - - - 'Telephone Ring' General MIDI program. - - - - - 'Helicopter' General MIDI program. - - - - - 'Applause' General MIDI program. - - - - - 'Gunshot' General MIDI program. - - - - - Provides utilities for General MIDI Level 1. - - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 1 program. - - to get an event for. - Channel an event should be created for. - An instance of the corresponding to the . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 1 percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General MIDI Level 1 percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - General Sound percussion set. - - - - - 'Standard' percussion set. - - - - - 'Room' percussion set. - - - - - 'Power' percussion set. - - - - - 'Electronic' percussion set. - - - - - 'TR-808' percussion set. - - - - - 'Jazz' percussion set. - - - - - 'Brush' percussion set. - - - - - 'Orchestra' percussion set. - - - - - 'SFX' percussion set. - - - - - 'CM-64/CM-32L' percussion set. - - - - - Provides utilities for General Sound. - - - - - Gets MIDI events sequence to switch to the specified General Sound percussion set. - - to get events for. - Channel events should be created for. - MIDI events sequence to switch to the . - specified an invalid value. - - - - Gets Program Change event corresponding to the specified General Sound percussion set. - - to get event for. - Channel event should be created for. - Program Change event corresponding to the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Converts to the corresponding value of the - type. - - to convert to . - representing the . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'TR-808' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'CM-64/CM-32L' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Brush' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Electronic' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Jazz' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Orchestra' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Power' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Room' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'SFX' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Standard' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'TR-808' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'CM-64/CM-32L' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Brush' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Electronic' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Jazz' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Orchestra' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Power' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Room' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'SFX' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - Gets an instance of the corresponding to the specified - General Sound 'Standard' percussion. - - to get an event for. - Velocity of the . - Channel an event should be created for. - An instance of the corresponding to the specified - . - specified an invalid value. - - - - General Sound 'Brush' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Jazz Kick 2' General Sound percussion note. - - - - - 'Jazz Kick 1' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Brush Tap' General Sound percussion note. - - - - - 'Brush Slap' General Sound percussion note. - - - - - 'Brush Swirl' General Sound percussion note. - - - - - 'Low Floor Tom' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'High Floor Tom' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Low Tom' General Sound percussion note. - - - - - 'Open Hi-Hat' General Sound percussion note. - - - - - 'Low Mid Tom' General Sound percussion note. - - - - - 'Hi Mid Tom' General Sound percussion note. - - - - - 'Crash Cymbal 1' General Sound percussion note. - - - - - 'High Tom' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Chinese Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - General Sound 'CM-64/CM-32L' percussion. - - - - - 'Acoustic Bass Drum 1' General Sound percussion note. - - - - - 'Acoustic Bass Drum 2' General Sound percussion note. - - - - - 'Rim Shot' General Sound percussion note. - - - - - 'Acoustic Snare Drum' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electronic Snare Drum' General Sound percussion note. - - - - - 'Acoustic Low Tom 1' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'Acoustic Low Tom 2' General Sound percussion note. - - - - - 'Open Hi-Hat 1' General Sound percussion note. - - - - - 'Acoustic Mid Tom 1' General Sound percussion note. - - - - - 'Open Hi-Hat 2' General Sound percussion note. - - - - - 'Acoustic Mid Tom 2' General Sound percussion note. - - - - - 'Acoustic Hi Tom 1' General Sound percussion note. - - - - - 'Crash Cymbal' General Sound percussion note. - - - - - 'Acoustic Hi Tom 2' General Sound percussion note. - - - - - 'Ride Cymbal' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'High Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'High Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Quijada' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Laughing' General Sound percussion note. - - - - - 'Screaming' General Sound percussion note. - - - - - 'Punch' General Sound percussion note. - - - - - 'Heartbeat' General Sound percussion note. - - - - - 'Footsteps1' General Sound percussion note. - - - - - 'Footsteps2' General Sound percussion note. - - - - - 'Applause' General Sound percussion note. - - - - - 'Door Creaking' General Sound percussion note. - - - - - 'Door Closing' General Sound percussion note. - - - - - 'Scratch' General Sound percussion note. - - - - - 'Wind Chimes' General Sound percussion note. - - - - - 'Car Engine' General Sound percussion note. - - - - - 'Car Brakes' General Sound percussion note. - - - - - 'Car Passing' General Sound percussion note. - - - - - 'Car Crash' General Sound percussion note. - - - - - 'Siren' General Sound percussion note. - - - - - 'Train' General Sound percussion note. - - - - - 'Jet Plane' General Sound percussion note. - - - - - 'Helicopter' General Sound percussion note. - - - - - 'Starship' General Sound percussion note. - - - - - 'Gun Shot' General Sound percussion note. - - - - - 'Machine Gun' General Sound percussion note. - - - - - 'Laser Gun' General Sound percussion note. - - - - - 'Explosion' General Sound percussion note. - - - - - 'Dog Bark' General Sound percussion note. - - - - - 'Horse Gallop' General Sound percussion note. - - - - - 'Birds Tweet' General Sound percussion note. - - - - - 'Rain' General Sound percussion note. - - - - - 'Thunder' General Sound percussion note. - - - - - 'Wind' General Sound percussion note. - - - - - 'Seashore' General Sound percussion note. - - - - - 'Stream' General Sound percussion note. - - - - - 'Bubble' General Sound percussion note. - - - - - General Sound 'Electronic' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Acoustic Bass Drum' General Sound percussion note. - - - - - 'Electric Bass Drum' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Electric Snare 1' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electric Snare 2' General Sound percussion note. - - - - - 'Electric Low Tom 2' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'Electric Low Tom 1' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Electric Mid Tom 2' General Sound percussion note. - - - - - 'Open Hi-Hat' General Sound percussion note. - - - - - 'Electric Mid Tom 1' General Sound percussion note. - - - - - 'Electric Hi Tom 2' General Sound percussion note. - - - - - 'Crash Cymbal 1' General Sound percussion note. - - - - - 'Electric Hi Tom 1' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Reverse Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - General Sound 'Jazz' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Jazz Kick 2' General Sound percussion note. - - - - - 'Jazz Kick 1' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Acoustic Snare' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electric Snare' General Sound percussion note. - - - - - 'Low Floor Tom' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'High Floor Tom' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Low Tom' General Sound percussion note. - - - - - 'Open Hi-Hat' General Sound percussion note. - - - - - 'Low Mid Tom' General Sound percussion note. - - - - - 'Hi Mid Tom' General Sound percussion note. - - - - - 'Crash Cymbal 1' General Sound percussion note. - - - - - 'High Tom' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Chinese Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - General Sound 'Orchestra' percussion. - - - - - 'Closed Hi-Hat 2' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Open Hi-Hat 2' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Concert Bass Drum 2' General Sound percussion note. - - - - - 'Concert Bass Drum 1' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Concert Snare Drum' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Concert Snare Drum 2' General Sound percussion note. - - - - - 'Timpani F' General Sound percussion note. - - - - - 'Timpani F#' General Sound percussion note. - - - - - 'Timpani G' General Sound percussion note. - - - - - 'Timpani G#' General Sound percussion note. - - - - - 'Timpani A' General Sound percussion note. - - - - - 'Timpani A#' General Sound percussion note. - - - - - 'Timpani B' General Sound percussion note. - - - - - 'Timpani C' General Sound percussion note. - - - - - 'Timpani C#' General Sound percussion note. - - - - - 'Timpani D' General Sound percussion note. - - - - - 'Timpani D#' General Sound percussion note. - - - - - 'Timpani E' General Sound percussion note. - - - - - 'Timpani F 2' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Concert Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Concert Cymbal 1' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets 2' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - 'Applause' General Sound percussion note. - - - - - General Sound 'Power' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Acoustic Bass Drum' General Sound percussion note. - - - - - 'Power Kick Drum' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Power Snare Drum' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electric Snare' General Sound percussion note. - - - - - 'Power Low Tom 2' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'Power Low Tom 1' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Power Mid Tom 2' General Sound percussion note. - - - - - 'Open Hi-Hat' General Sound percussion note. - - - - - 'Power Mid Tom 1' General Sound percussion note. - - - - - 'Power Hi Tom 2' General Sound percussion note. - - - - - 'Crash Cymbal 1' General Sound percussion note. - - - - - 'Power Hi Tom 1' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Chinese Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - General Sound 'Room' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Acoustic Bass Drum' General Sound percussion note. - - - - - 'Bass Drum 1' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Acoustic Snare' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electric Snare' General Sound percussion note. - - - - - 'Room Low Tom 2' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'Room Low Tom 1' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Room Mid Tom 2' General Sound percussion note. - - - - - 'Open Hi-Hat' General Sound percussion note. - - - - - 'Room Mid Tom 1' General Sound percussion note. - - - - - 'Room Hi Tom 2' General Sound percussion note. - - - - - 'Crash Cymbal 1' General Sound percussion note. - - - - - 'Room Hi Tom 1' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Chinese Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - General Sound 'SFX' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Guitar Fret Noise' General Sound percussion note. - - - - - 'Guitar Cutting Noise Up' General Sound percussion note. - - - - - 'Guitar Cutting Noise Down' General Sound percussion note. - - - - - 'String Slap Of Double Bass' General Sound percussion note. - - - - - 'Fl Key Click' General Sound percussion note. - - - - - 'Laughing' General Sound percussion note. - - - - - 'Scream' General Sound percussion note. - - - - - 'Punch' General Sound percussion note. - - - - - 'Heart Beat' General Sound percussion note. - - - - - 'Footsteps 1' General Sound percussion note. - - - - - 'Footsteps 2' General Sound percussion note. - - - - - 'Applause' General Sound percussion note. - - - - - 'Door Creaking' General Sound percussion note. - - - - - 'Door' General Sound percussion note. - - - - - 'Scratch' General Sound percussion note. - - - - - 'Wind Chimes' General Sound percussion note. - - - - - 'Car-Engine' General Sound percussion note. - - - - - 'Car-Stop' General Sound percussion note. - - - - - 'Car-Pass' General Sound percussion note. - - - - - 'Car-Crash' General Sound percussion note. - - - - - 'Siren' General Sound percussion note. - - - - - 'Train' General Sound percussion note. - - - - - 'Jetplane' General Sound percussion note. - - - - - 'Helicopter' General Sound percussion note. - - - - - 'Starship' General Sound percussion note. - - - - - 'Gun Shot' General Sound percussion note. - - - - - 'Machine Gun' General Sound percussion note. - - - - - 'Lasergun' General Sound percussion note. - - - - - 'Explosion' General Sound percussion note. - - - - - 'Dog' General Sound percussion note. - - - - - 'Horse Gallop' General Sound percussion note. - - - - - 'Birds' General Sound percussion note. - - - - - 'Rain' General Sound percussion note. - - - - - 'Thunder' General Sound percussion note. - - - - - 'Wind' General Sound percussion note. - - - - - 'Seashore' General Sound percussion note. - - - - - 'Stream' General Sound percussion note. - - - - - 'Bubble' General Sound percussion note. - - - - - General Sound 'Standard' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Acoustic Bass Drum' General Sound percussion note. - - - - - 'Bass Drum 1' General Sound percussion note. - - - - - 'Side Stick' General Sound percussion note. - - - - - 'Acoustic Snare' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electric Snare' General Sound percussion note. - - - - - 'Low Floor Tom' General Sound percussion note. - - - - - 'Closed Hi-Hat' General Sound percussion note. - - - - - 'High Floor Tom' General Sound percussion note. - - - - - 'Pedal Hi-Hat' General Sound percussion note. - - - - - 'Low Tom' General Sound percussion note. - - - - - 'Open Hi-Hat' General Sound percussion note. - - - - - 'Low Mid Tom' General Sound percussion note. - - - - - 'Hi Mid Tom' General Sound percussion note. - - - - - 'Crash Cymbal 1' General Sound percussion note. - - - - - 'High Tom' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Chinese Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'Mute Hi Conga' General Sound percussion note. - - - - - 'Open Hi Conga' General Sound percussion note. - - - - - 'Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - General Sound 'TR-808' percussion. - - - - - 'High Q' General Sound percussion note. - - - - - 'Slap' General Sound percussion note. - - - - - 'Scratch Push' General Sound percussion note. - - - - - 'Scratch Pull' General Sound percussion note. - - - - - 'Sticks' General Sound percussion note. - - - - - 'Square Click' General Sound percussion note. - - - - - 'Metronome Click' General Sound percussion note. - - - - - 'Metronome Bell' General Sound percussion note. - - - - - 'Acoustic Bass Drum' General Sound percussion note. - - - - - 'TR-808 Bass Drum' General Sound percussion note. - - - - - 'TR-808 Rim Shot' General Sound percussion note. - - - - - 'TR-808 Snare Drum' General Sound percussion note. - - - - - 'Hand Clap' General Sound percussion note. - - - - - 'Electric Snare 2' General Sound percussion note. - - - - - 'TR-808 Low Tom 2' General Sound percussion note. - - - - - 'TR-808 Closed Hi-Hat' General Sound percussion note. - - - - - 'TR-808 Low Tom 1' General Sound percussion note. - - - - - 'TR-808 Pedal Hi-Hat' General Sound percussion note. - - - - - 'TR-808 Mid Tom 2' General Sound percussion note. - - - - - 'TR-808 Open Hi-Hat' General Sound percussion note. - - - - - 'TR-808 Mid Tom 1' General Sound percussion note. - - - - - 'TR-808 Hi Tom 2' General Sound percussion note. - - - - - 'TR-808 Cymbal' General Sound percussion note. - - - - - 'TR-808 Hi Tom 1' General Sound percussion note. - - - - - 'Ride Cymbal 1' General Sound percussion note. - - - - - 'Reverse Cymbal' General Sound percussion note. - - - - - 'Ride Bell' General Sound percussion note. - - - - - 'Tambourine' General Sound percussion note. - - - - - 'Splash Cymbal' General Sound percussion note. - - - - - 'TR-808 Cowbell' General Sound percussion note. - - - - - 'Crash Cymbal 2' General Sound percussion note. - - - - - 'Vibraslap' General Sound percussion note. - - - - - 'Ride Cymbal 2' General Sound percussion note. - - - - - 'Hi Bongo' General Sound percussion note. - - - - - 'Low Bongo' General Sound percussion note. - - - - - 'TR-808 Hi Conga' General Sound percussion note. - - - - - 'TR-808 Mid Conga' General Sound percussion note. - - - - - 'TR-808 Low Conga' General Sound percussion note. - - - - - 'High Timbale' General Sound percussion note. - - - - - 'Low Timbale' General Sound percussion note. - - - - - 'High Agogo' General Sound percussion note. - - - - - 'Low Agogo' General Sound percussion note. - - - - - 'Cabasa' General Sound percussion note. - - - - - 'TR-808 Maracas' General Sound percussion note. - - - - - 'Short Whistle' General Sound percussion note. - - - - - 'Long Whistle' General Sound percussion note. - - - - - 'Short Guiro' General Sound percussion note. - - - - - 'Long Guiro' General Sound percussion note. - - - - - 'TR-808 Claves' General Sound percussion note. - - - - - 'Hi Wood Block' General Sound percussion note. - - - - - 'Low Wood Block' General Sound percussion note. - - - - - 'Mute Cuica' General Sound percussion note. - - - - - 'Open Cuica' General Sound percussion note. - - - - - 'Mute Triangle' General Sound percussion note. - - - - - 'Open Triangle' General Sound percussion note. - - - - - 'Shaker' General Sound percussion note. - - - - - 'Jingle Bell' General Sound percussion note. - - - - - 'Belltree' General Sound percussion note. - - - - - 'Castanets' General Sound percussion note. - - - - - 'Mute Surdo' General Sound percussion note. - - - - - 'Open Surdo' General Sound percussion note. - - - - - Target of an object that should be processed by a tool. - - - - - Start time of a lengthed object. - - - - - End time of a lengthed object. - - - - - Indicates whether an object is being processed should be skipped or not. - The default value is . - - - - - Set new time to an object. - - - - - Skip an object and leave its time untouched. - - - - - Holds the new time that will be set to an object is being processed and action - indicating whether quantization should be cancelled or not. - - - - - Indicates that object should be skipped and new time shouldn't be set. - - - - - Initializes a new instance of the with the - specified time. This time will be set to an object is being processed. - - The new time of an object. - is negative. - - - - Gets an action indicating whether processing should be cancelled or not. - - - - - Gets the new time of an object. - - - - - Represents an exception that occurs during CSV deserialization. - - - - - Gets the number of a line in source CSV where an error occurred. - If the error is not related to a specific line, this property will return null. - - - - - Privides settings that control the process of CSV deserialization. - - - - - - Gets or sets a value that defines how the time of objects is presented in CSV. - The default value is null which means time format will be resolved automatically. - More info on the supported formats in the Time and length article. - - specified an invalid value. - - - - Gets or sets a value that defines how length of notes is presented in CSV. - The default value is null which means length format will be resolved automatically. - More info on the supported formats in the Time and length article. - - specified an invalid value. - - - - Gets or sets a value that defines how note numbers (for example, ) - are presented in CSV. The default value is null which means note format will be resolved automatically. - - specified an invalid value. - - - - Gets or sets a value that defines how bytes arrays (for example, ) - are presented in CSV. The default value is . - - specified an invalid value. - - - - Gets or sets a value indicating how unknown records should be handled. - The default value is which means - the process will be aborted with an exception. - - specified an invalid value. - - - - Gets or sets the character used to delimit elements in a byte array when represented as a string - (for example, when of a sysex event is being deserialized). - The default value is space (' '). - - - - - Gets or sets the character used as the values delimiter in CSV records. The default value - is comma (','). - - - - - Gets or sets the size in bytes of the internal buffer for reading data within - the process of CSV deserialization. The default value is 1024. - - is zero or negative. - - - - Provides methods to serialize MIDI data to CSV and deserialize it back. More info in the - CSV serializer article. - - - - - - Reads a represented as CSV from the specified stream. - - to read the file from. - Settings according to which should be deserialized. - An instance of the read from CSV representation from - . - doesn't support reading. - is null. - Invalid CSV representation. - - - - Reads a represented as CSV from the specified file. - - Path to the file to read the file from. - Settings according to which should be deserialized. - An instance of the read from CSV representation from - . - is null, a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - Invalid CSV representation. - - - - Reads a collection of represented as CSV from the specified stream. - - to read chunks from. - to use for time/length conversions. - Settings according to which collection of should - be deserialized. - Collection of read from CSV representation from - . - doesn't support reading. - - One of the following errors occurred: - - - is null. - - - is null. - - - - Invalid CSV representation. - - - - Reads a collection of represented as CSV from the specified file. - - Path to the file to read chunks from. - to use for time/length conversions. - Settings according to which collection of should - be deserialized. - Collection of read from CSV representation from - . - is null, a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - Invalid CSV representation. - - - - Reads a represented as CSV from the specified stream. - - to read a chunk from. - to use for time/length conversions. - Settings according to which should - be deserialized. - An instance of the read from CSV representation from - . - doesn't support reading. - - One of the following errors occurred: - - - is null. - - - is null. - - - - Invalid CSV representation. - - - - Reads a represented as CSV from the specified file. - - Path to the file to read a chunk from. - to use for time/length conversions. - Settings according to which should - be deserialized. - An instance of the read from CSV representation from - . - is null, a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - Invalid CSV representation. - - - - Reads collection of represented as CSV from the specified stream. - - to read objects from. - to use for time/length conversions. - Settings according to which collection of should - be deserialized. - Collection of read from CSV representation from - . - doesn't support reading. - - One of the following errors occurred: - - - is null. - - - is null. - - - - Invalid CSV representation. - - - - Reads collection of represented as CSV from the specified file. - - Path to the file to read objects from. - to use for time/length conversions. - Settings according to which collection of should - be deserialized. - Collection of read from CSV representation from - . - is null, a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - Invalid CSV representation. - - - - Writes the specified to a stream in CSV format. - - to serialize to CSV representation. - to write the to. - Settings according to which should be serialized. - Types of objects within track chunks of the - to serialize (see Remarks section). - Settings according to which objects within track chunks should be - detected and built. - - defines what kind of objects to put to the - as CSV. For example, if you specify , all events within track chunks - of the will be written to the stream. If you specify , - only notes will be written. If you specify | , - events and notes will be written. Please see Getting objects: GetObjects - article to learn more. - - doesn't support writing. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Writes the specified to a file in CSV format. - - to serialize to CSV representation. - Path to the file to write the to. - If true and file specified by already - exists it will be overwritten; if false and the file exists exception will be thrown. - Settings according to which should be serialized. - Types of objects within track chunks of the - to serialize (see Remarks section). - Settings according to which objects within track chunks should be - detected and built. - - defines what kind of objects to put to the - as CSV. For example, if you specify , all events within track chunks - of the will be written to the stream. If you specify , - only notes will be written. If you specify | , - events and notes will be written. Please see Getting objects: GetObjects - article to learn more. - - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - is null. - - - - Writes the specified collection of to a stream in CSV format. - - Collection of to serialize to CSV representation. - to write the to. - to use for time/length conversions. - Settings according to which should be serialized. - Types of objects within track chunks of the - to serialize (see Remarks section). - Settings according to which objects within track chunks should be - detected and built. - - defines what kind of objects to put to the - as CSV. For example, if you specify , all events within track chunks - of the will be written to the stream. If you specify , - only notes will be written. If you specify | , - events and notes will be written. Please see Getting objects: GetObjects - article to learn more. - - doesn't support writing. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Writes the specified collection of to a file in CSV format. - - Collection of to serialize to CSV representation. - Path to the file to write the to. - If true and file specified by already - exists it will be overwritten; if false and the file exists exception will be thrown. - to use for time/length conversions. - Settings according to which should be serialized. - Types of objects within track chunks of the - to serialize (see Remarks section). - Settings according to which objects within track chunks should be - detected and built. - - defines what kind of objects to put to the - as CSV. For example, if you specify , all events within track chunks - of the will be written to the stream. If you specify , - only notes will be written. If you specify | , - events and notes will be written. Please see Getting objects: GetObjects - article to learn more. - - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Writes the specified to a stream in CSV format. - - to serialize to CSV representation. - to write the to. - to use for time/length conversions. - Settings according to which should be serialized. - Types of objects within to serialize - if it's a track chunk (see Remarks section). - Settings according to which objects within a track chunk should be - detected and built. - - defines what kind of objects to put to the - as CSV. For example, if you specify , all events within - will be written to the stream if it's a track chunk. If you specify , - only notes will be written. If you specify | , - events and notes will be written. Please see Getting objects: GetObjects - article to learn more. - - doesn't support writing. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Writes the specified to a file in CSV format. - - to serialize to CSV representation. - Path to the file to write the to. - If true and file specified by already - exists it will be overwritten; if false and the file exists exception will be thrown. - to use for time/length conversions. - Settings according to which should be serialized. - Types of objects within to serialize - if it's a track chunk (see Remarks section). - Settings according to which objects within a track chunk should be - detected and built. - - defines what kind of objects to put to the - as CSV. For example, if you specify , all events within - will be written to the stream if it's a track chunk. If you specify , - only notes will be written. If you specify | , - events and notes will be written. Please see Getting objects: GetObjects - article to learn more. - - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Writes the specified objects to a stream in CSV format. - - Collection of to serialize to CSV representation. - to write the to. - to use for time/length conversions. - Settings according to which should be serialized. - doesn't support writing. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Writes the specified objects to a file in CSV format. - - Collection of to serialize to CSV representation. - Path to the file to write the to. - If true and file specified by already - exists it will be overwritten; if false and the file exists exception will be thrown. - to use for time/length conversions. - Settings according to which should be serialized. - is a zero-length string, - contains only white space, or contains one or more invalid characters as defined by - . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Defines how bytes arrays (for example, ) should be - presented in CSV. The default value is . - - - - - Bytes should be presented in decimal format. For example, "10 0 123 5". - - - - - Bytes should be presented in hexadecimal format. For example, "0A 00 7B 05". - Note that each value will be in upper case and will have two digits. - - - - - Defines how note numbers (for example, ) should be - presented in CSV. The default value is . - - - - - A note number should be presented as just a number. For example, 60. - - - - - A note number should be presented as a letter including accidental and octave number. - For example, C4. - - - - - Specifies how CSV deserialization engine should react on an unknown record. - The default value is . - - - - - Abort the deserialization process and throw an exception. - - - - - Ignore the record and continue deserialization process. - - - - - Privides settings that control the process of CSV serialization. - - - - - - Gets or sets a value that defines how the time of objects should be presented in CSV. - The default value is . More info on the supported - formats in the Time and length article. - - specified an invalid value. - - - - Gets or sets a value that defines how length of notes should be presented in CSV. - The default value is . More info on the supported - formats in the Time and length article. - - specified an invalid value. - - - - Gets or sets a value that defines how note numbers (for example, ) - should be presented in CSV. The default value is . - - specified an invalid value. - - - - Gets or sets a value that defines how bytes arrays (for example, ) - should be presented in CSV. The default value is . - - specified an invalid value. - - - - Gets or sets the character used to delimit elements in a byte array for string representation - (for example, when of a sysex event is being serialized). - The default value is space (' '). - - - - - Gets or sets the character used as the values delimiter in CSV records. The default value - is comma (','). - - - - - Gets or sets the size in bytes of the internal buffer for writing data within - the process of CSV serialization. The default value is 1024. - - is zero or negative. - - - - Provides methods to merge nearby objects. More info in the Merger article. - - - - - Merges the specified MIDI files sequentially so they are placed one after other in the result file. - More info in the MIDI files merging: MergeSequentially article. - - MIDI files to merge. - Settings that control how should be merged. - An instance of the which represents - that are merged sequentially. - is null. - - One of the following errors occurred: - - - collection contains null. - - - is an empty collection. - - - - - One of the following errors occurred: - - - Time division of one of the is not an instance - of the . - - - Failed to provide common time division since its value exceeds . - - - - - - - Merges the specified MIDI files "simultaneously" so they are placed "one below other" in the result file. - More info in the MIDI files merging: MergeSimultaneously article. - - MIDI files to merge. - Settings that control how should be merged. - - The method has a limitation: it can process only the files which have the same tempo maps, i.e. - the same changes of tempo and time signature,and the same time divisions. You can disable the - exception throwing by setting of - the to true, but proper structure (in terms of correct playing for example) - of the result MIDI file is not guaranteed in this case. - - An instance of the which represents - that are merged sequentially. - is null. - - One of the following errors occurred: - - - collection contains null. - - - is an empty collection. - - - - - One of the following errors occurred: - - - Time division of one of the is not an instance - of the . - - - Failed to provide common time division since its value exceeds . - - - MIDI files have different tempo maps and - of the is set to false. - - - - - - - Merges nearby objects within the specified . - - to merge objects within. - Combination of desired types of objects to merge. - Tempo map used to calculate distances between objects. - Settings according to which merging process should be done. - Settings according to which objects should be detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Merges nearby objects within the specified collection of . - - Collection of to merge objects within. - Combination of desired types of objects to merge. - Tempo map used to calculate distances between objects. - Settings according to which merging process should be done. - Settings according to which objects should be detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Merges nearby objects within the specified . - - to merge objects within. - Combination of desired types of objects to merge. - Settings according to which merging process should be done. - Settings according to which objects should be detected and built. - is null. - - - - Merges nearby objects. - - Objects that should be merged. - Tempo map used to calculate distances between objects. - Settings according to which merging process should be done. - Collection of new objects that are result of merging of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Provides merging logic for group of objects. More info in the Merger article. - - - - - Collection of objects that should be merged. - - - - - The type of objects in the current group. - - - - - Initializes a new instance of the with the specified first object. - - First object of the current group of objects that should be merged. - - - - Gets the end time of the last object in the current group. - - - - - Adds the specified object to the current group. - - Object to add to the current group - - - - Returns a value indicating whether the specified object can be added to the current group or not. - In other words, the method determines if the object should be merged with the group. - - Object to check. - Tempo map used for merging. - Settings according to which merging process should be done. - true if the should be added to the current group; - otherwise, false. - - - - Merges objects within the current group into single object. - - Settings according to which merging process should be done. - A new object that is result of merging objects within the current group. - - - - Settings according to which merging should be performed by the . - More info in the Merger article. - - - - - - Gets or sets a policy which determines how of notes should be merged. - The default value is . - - specified an invalid value. - - - - Gets or sets a policy which determines how of notes should be merged. - The default value is . - - specified an invalid value. - - - - Gets or sets maximum distance between two objects to consider them as nearby. The default value - is time span of zero length. - - is null. - - - - Gets or sets a predicate to filter objects out. If predicate returns true, - an object will be processed; if false - it won't. If the property set to null, - (default value) all objects will be processed. - - - - - Gets or sets a factory method to create objects merger (see ) to - implement custom merging logic. - - - - - Defines a strategy for result track chunks creation when merging MIDI files sequentially. The - default value is . - - - - Let's see how option works. For example, we have three files with - following track chunks: - - - - A, B and C; - - - D and E; - - - F, G, H, I and J. - - - - Merging these files will lead to following result track chunks creation and usage: - - - - Three track chunks (1, 2, 3) are created with the contents of A, B, C; - - - Content of D is written to the chunk 1; content of E is written to the chunk 2; - - - Content of F is written to the chunk 1; content of G is written to the chunk 2; - content of H is written to the chunk 3; two new track chunks (4, 5) are created with the contents of I and J. - - - - - - - - - Each track chunk of every file is being merged will lead to separate track chunk - creation in the result file. - - - - - Track chunks will be reused. - - - - - Specifies settings which control how MIDI files should be merged in sequence. - - - - - - Gets or sets a delay which should be added between files. The default value is - null which means no delay will be added. - - - - - Gets or sets a step which should be used to round an input file duration. Calculated - duration affects an offset that will be applied to the data of a next file. The default - value is null which means no rounding should be applied. Note that only rounding - up is supported. See for more info. - - - - - Gets or sets a value indicating whether non-track chunks (like instances - or custom ones) should be copied to the result file - or not. The default value is true. - - - - - Gets or sets a factory method to create event that will be placed at the start - of an input MIDI file within the result one. - - - - - Gets or sets a factory method to create event that will be placed at the end - of an input MIDI file within the result one. - - - - - Gets or sets a strategy for result track chunks creation when merging MIDI files sequentially. The - default value is . - - specified an invalid value. - - - - Specifies settings which control how MIDI files should be merged "simultaneously". - - - - - - Gets or sets a value indicating whether non-track chunks (like instances - or custom ones) should be copied to the result file - or not. The default value is true. - - - - - Gets or sets a value indicating whether to ignore different tempo maps of the input files - or not. The default value is false which means an exception will be thrown if - tempo maps are not the same. - - - - - Determines how velocities should be merged during notes merging. The default value is . - - - - - Take velocity of first note. - - - - - Take velocity of last note. - - - - - Take minimum velocity. - - - - - Take maximum velocity. - - - - - Take average velocity. - - - - - Time range which is constant for each object to be processed. - - - - - Initializes a new instance of the with the specified size - so time range will span for equal length to the left and to the right from time - to calculate bounds relative to. - - Size of the time range. The length of time range will be 2 * . - is null. - - - - Initializes a new instance of the with the specified size of left - and right parts so time range will span for different length to the left and to the right from time - to calculate bounds relative to. - - Left part's size of the time range. - Right part's size of the time range. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Gets the size of left part of the time range represented by the current . - - - - - Gets the size of right part of the time range represented by the current . - - - - - Gets minimum and maximum times in MIDI ticks for the current time range. - - Time bounds should be calculated relative to. - Tempo map used to calculate bounds. - Pair where first item is minimum time and the second one is maximum time. - - - - Represents time range used in time processing tools. - - - - - Gets minimum and maximum times in MIDI ticks for the current time range. - - Time bounds should be calculated relative to. - Tempo map used to calculate bounds. - Pair where first item is minimum time and the second one is maximum time. - - - - Holds information about new time for an object that was calculated during quantization. - - - - - Gets the new time of an object. - - - - - Gets a grid time that was selected for an object as the nearest one. - - - - - Gets the distance an object is going to be moved toward the new time. - - - - - Gets the distance between an object's current time and the nearest grid time. - - - - - Gets the distance between an object's current time and the nearest grid time as time span - of the type specified by . - - - - - Performs quantization of objects. The process can be adjusted in many ways by . - More info in the Quantizer article. - - - - - Quantizes objects using the specified grid. - - Objects to quantize. - Grid to use for quantization. - Tempo map used to perform time and length conversions. - Settings according to which should be quantized. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Performs additional actions before the new time will be set to an object after search for - nearest grid time. - - Object to set new time for. - Holds information about new time for . - Grid to quantize by. - Target time (start or end) to update. - Tempo map used to quantize . - Settings according to which quantization performed. - An object indicating whether the new time should be set to the object - or not. Also returned object contains that new time. - - - - Performs additional actions before the new time will be set to an object after search for - random time within bounds defined by . - - Object to set new time for. - New time for . - Target time (start or end) to update. - Tempo map used to quantize . - Settings according to which quantization performed. - An object indicating whether the new time should be set to the object - or not. Also returned object contains that new time. - - - - Provides utilities to quantize objects of different types. More info in the - Quantizer article. - - - - - - Quantizes objects within a using the specified grid and default quantizer. - - to quantize objects within. - The type of objects to quantize. - Grid to use for quantization. - Tempo map used to perform time and length conversions. - Settings according to which objects should be quantized. - Settings according to which objects should be - detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Quantizes objects within a using the specified grid and custom quantizer - (see Quantizer: Custom quantizing article). - - to quantize objects within. - Quantizer to quantize objects with. - The type of objects to quantize. - Grid to use for quantization. - Tempo map used to perform time and length conversions. - Settings according to which objects should be quantized. - Settings according to which objects should be - detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - is null. - - - - - - - Quantizes objects within a collection of using the specified grid and default quantizer. - - Collection of to quantize objects within. - The type of objects to quantize. - Grid to use for quantization. - Tempo map used to perform time and length conversions. - Settings according to which objects should be quantized. - Settings according to which objects should be - detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Quantizes objects within a collection of using the specified grid and custom quantizer - (see Quantizer: Custom quantizing article). - - Collection of to quantize objects within. - Quantizer to quantize objects with. - The type of objects to quantize. - Grid to use for quantization. - Tempo map used to perform time and length conversions. - Settings according to which objects should be quantized. - Settings according to which objects should be - detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - is null. - - - - - - - Quantizes objects within a using the specified grid and default quantizer. - - to quantize objects within. - The type of objects to quantize. - Grid to use for quantization. - Settings according to which objects should be quantized. - Settings according to which objects should be - detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Quantizes objects within a using the specified grid and custom quantizer - (see Quantizer: Custom quantizing article). - - to quantize objects within. - Quantizer to quantize objects with. - The type of objects to quantize. - Grid to use for quantization. - Settings according to which objects should be quantized. - Settings according to which objects should be - detected and built. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - An object's target (start, end, both ends) to quantize. - - - - - Start time of an object. - - - - - End time of an object. - - - - - Policy which defines how a quantizer should act in case of object's side - is going to be moved beyond an opposite one that is fixed. The default value is - . - - - - - Object will be collapsed and fixed at fixed end's time. - - - - - Object will be collapsed and moved to the new time calculated by a quantizer. - - - - - Ends of an object will be swapped. - - - - - Object will be skipped so quantization will not be applied to it. - - - - - Throw an exception aborting quantization. - - - - - Policy which defines how a quantizer should act in case of an object is going - to be moved beyond zero. The default value is . - - - - - Object will be shrunk due to end time quantization and fixed at zero. - - - - - Object will be skipped so quantization will not be applied to it. - - - - - Throw an exception aborting quantization. - - - - - Settings according to which quantization should be performed by the . - More info in the Quantizer article. - - - - - Gets or sets settings according to which randomizing should be performed. - - - - - Gets or sets the type of distance calculation used to find a time to snap an object to. - The default value is . - - - - - Gets or sets the level of quantization from 0.0 (no quantization) to 1.0 (full quantization). - - - This setting specifies how close an object should be moved to nearest grid time. For example, - 0.5 will lead to an object will be moved half the distance between its time and the nearest - grid time. - - is out of valid range. - - - - Gets or sets a predicate to filter objects that should be quantized. Use null if - all objects should be processed. - - - - - Gets or sets the type of an object's length that should be kept in case the opposite - side is not fixed. The default value is . - - specified an invalid value. - - - - Gets or sets the side of an object that should be quantized. - The default value is . - - specified an invalid value. - - - - Gets or sets policy according to which a quantizer should act in case of an object is going - to be moved beyond zero. The default value is . - - - When the start time of an object is not fixed, there is a chance that the object's end time - will be quantized in a such way that the start time will be negative due to the object is - moved to the left. Negative time is invalid so this policy provides options to prevent this - situation. - - specified an invalid value. - - - - Gets or sets policy according to which a quantizer should act in case of object's side - is going to be moved beyond an opposite one that is fixed. The default value is - . - - - When one end of an object is fixed, there is a chance that the object's opposite end - will be quantized in a such way that the object will be reversed resulting to negative length. - This policy provides options to prevent this situation. - - specified an invalid value. - - - - Gets or sets a value indicating whether an opposite side of an object should be fixed or not. - The default value is false. - - - When an object's side is fixed the length can be changed during quantization. - - - - - Settings according to which randomizing should be performed by the . - - - - - Gets or sets bounds to randomize an object's time within. - - - - - Gets or sets a predicate to filter objects that should be randomized. Use null if - all objects should be processed. - - - - - Holds all the required data to process a part by the . More info in the - Repeater: Custom repeater article. - - - - - Gets source objects that should be repeated. - - - - - Gets the objects of a new part that should be appended to the previous ones. - - - - - Gets the index of a part (zero means first new part). - - - - - Gets calculated shift value to apply to a part. - - - - - Gets the source tempo map. - - - - - Gets the settings used to perform the process. - - - - - Provides a way to repeat MIDI data using different options. More info in the - Repeater article. - - - - - Repeats a MIDI file specified number of times. - - The file to repeat. - Number of times the should be repeated. - Settings according to which the operation should be done. - A new instance of the which is the - repeated times using . - is null. - is negative. - of the - is null for fixed-value shift. - - - - Repeats a collection of specified number of times. - - The collection of to repeat. - Number of times the should be repeated. - Tempo map used to perform time spans calculations. - Settings according to which the operation should be done. - A collection of new instances which are the - repeated times using . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - of the - is null for fixed-value shift. - - - - Repeats a specified number of times. - - The to repeat. - Number of times the should be repeated. - Tempo map used to perform time spans calculations. - Settings according to which the operation should be done. - A new instance of the which is the - repeated times using . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - of the - is null for fixed-value shift. - - - - Repeats a collection of timed objects specified number of times. - - The collection of timed objects to repeat. - Number of times the should be repeated. - Tempo map used to perform time spans calculations. - Settings according to which the operation should be done. - A collection of new instances which are the - repeated times using . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - of the - is null for fixed-value shift. - - - - Processes a new part that will be appended to the previous ones. - - An object holding all the required data to process a part. - - By default the method shifts the data and inserts tempo map events if - set to true in settings used for the processing. - - - - - Provides methods to repeat MIDI data using different options. More info in the - Repeater article. - - - - - Repeats a MIDI file specified number of times. More info in the - Repeater article. - - The file to repeat. - Number of times the should be repeated. - Settings according to which the operation should be done. - A new instance of the which is the - repeated times using . - is null. - is negative. - of the - is null for fixed-value shift. - - - - Repeats a specified number of times. More info in the - Repeater article. - - The to repeat. - Number of times the should be repeated. - Tempo map used to perform time spans calculations. - Settings according to which the operation should be done. - A new instance of the which is the - repeated times using . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - of the - is null for fixed-value shift. - - - - Repeats a collection of specified number of times. More info in the - Repeater article. - - The collection of to repeat. - Number of times the should be repeated. - Tempo map used to perform time spans calculations. - Settings according to which the operation should be done. - A collection of new instances which are the - repeated times using . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - of the - is null for fixed-value shift. - - - - Repeats a collection of timed objects specified number of times. More info in the - Repeater article. - - The collection of timed objects to repeat. - Number of times the should be repeated. - Tempo map used to perform time spans calculations. - Settings according to which the operation should be done. - A collection of new instances which are the - repeated times using . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - of the - is null for fixed-value shift. - - - - Provides settings for tool. More info in the - Repeater article. - - - - - Gets or sets a value indicating how shift should be calculated. The default value - is . - - specified an invalid value. - - - - Gets or sets fixed shift that will be used in case of set - to . - - - - - Gets or sets a way of rounding final shift value. The default value is - . - - specified an invalid value. - - - - Gets or sets a step that should be used to round final shift in case of - set to a value other than . - - - - - Gets or sets a value indicating whether original tempo map should be preserved or not. - The default value is true. - - - - - Specifies how shift for should be calculated. More info in the - Repeater article. - - - - - Find max time within an input data and use it to shift each next part. - - - - - Use fixed shift value from . - - - - - Don't shift each next part (can be useful for custom processing). - - - - - Defines how an objects group should be resized. More info in the - Resizer article. - - - - - - Gets or sets the type of distance calculations. The default value is . - - specified an invalid value. - - - - Provides methods to resize MIDI data in many different ways. More info in the - Resizer article. - - - - - Resizes to the specified length. More info in the - Resizer article. - - to resize. - New length of the . - Tempo map used to calculate length. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Resizes by the specified ratio. More info in the - Resizer article. - - to resize. - Ratio to resize by. - is null. - is negative. - - - - Resizes collection of to the specified length. More info in the - Resizer article. - - Collection of to resize. - New length of the . - Tempo map used to calculate length. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Resizes collection of by the specified ratio. More info in the - Resizer article. - - Collection of to resize. - Ratio to resize by. - is null. - is negative. - - - - Resizes to the specified length. More info in the - Resizer article. - - to resize. - New length of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Resizes by the specified ratio. More info in the - Resizer article. - - to resize. - Ratio to resize by. - is null. - is negative. - - - - Resizes group of objects to the specified length treating all objects as a single one. More info in the - Resizer article. - - Objects to resize. - New length of the objects collection. - Tempo map used to calculate length. - Settings according to which objects should be resized. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - or - is used for of the - which is unsupported. - - - - Resizes group of objects by the specified ratio treating all objects as a single object. More info in the - Resizer article. - - Objects to resize. - Ratio to resize objects by. - Tempo map used to calculate length. - Settings according to which objects should be resized. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is negative. - or - is used for of the - which is unsupported. - - - - Specifies how sanitizing engine should react on Note On (see ) events without - corresponding Note Off ones. The default value is . More info in the - Sanitizer: OrphanedNoteOnEventsPolicy article. - - - - - Remove orphaned Note On events. - - - - - Don't touch orphaned Note On events. - - - - - Try to complete a note which starts from an orphaned Note On event. - - - - - - Provides a way to sanitize a MIDI file applying different options. More info in the - Sanitizer article. - - - - - Sanitizes a MIDI file according to the specified settings. Note that the input file will be - transformed instead of returning a new one so be sure you've cloned it if needed. - - to process. - Settings which control how the - should be sanitized. - is null. - - is null while is set to - . - - - - Settings which control how a MIDI file should be sanitized with the tool. - More info in the Sanitizer: Settings article. - - - - - Gets or sets a minimum length for notes within an input file. All notes that are shorter - than this value will be removed. The default value is null which means notes can - have any length. property affects how notes are detected. - More info in the Sanitizer: NoteMinLength article. - - - - - Gets or sets a minimum velocity for notes within an input file. All notes with velocity below this - value will be removed. The default value is zero which means notes can have any velocity. - property affects how notes are detected. - More info in the Sanitizer: NoteMinVelocity article. - - - - - Gets or sets a value indicating whether duplicated notes should be removed or not. - The default value is true. More info in the - Sanitizer: RemoveDuplicatedNotes article. - - - - - Gets or sets settings which define how notes should be detected and built. More info in the - Getting objects: GetNotes: Settings article. - - - - - Gets or sets a value indicating whether empty track chunks should be removed or not. - The default value is true. More info in the - Sanitizer: RemoveEmptyTrackChunks article. - - - - - Gets or sets a value indicating how Note On (see ) events without - corresponding Note Off ones should be handled. The default value is . - property affects how notes (and thus orphaned Note On events) - are detected. More info in the - Sanitizer: OrphanedNoteOnEventsPolicy article. - - - - - Gets or sets a maximum length for a new note restored by an orphaned Note On event. - This property is used only when is set to - . The default value is 1/4 (). - More info in the Sanitizer: OrphanedNoteOnEventsPolicy - article. - - - - - Gets or sets a value indicating whether Note Off (see ) events without - corresponding Note On ones should be removed or not. The default value is true. - property affects how notes (and thus orphaned Note Off events) - are detected. More info in the - Sanitizer: RemoveOrphanedNoteOffEvents article. - - - - - Gets or sets a value indicating whether duplicated Set Tempo (see ) events - should be removed or not. The default value is true. More info in the - Sanitizer: RemoveDuplicatedSetTempoEvents article. - - - - - Gets or sets a value indicating whether duplicated Time Signature (see ) - events should be removed or not. The default value is true. More info in the - Sanitizer: RemoveDuplicatedTimeSignatureEvents article. - - - - - Gets or sets a value indicating whether duplicated Pitch Bend (see ) - events should be removed or not. The default value is true. More info in the - Sanitizer: RemoveDuplicatedPitchBendEvents article. - - - - - Gets or sets a value indicating whether duplicated Sequence/Track Name (see ) - events should be removed or not. The default value is true. More info in the - Sanitizer: RemoveDuplicatedSequenceTrackNameEvents article. - - - - - Gets or sets a value indicating whether duplicated Control Change (see ) - events should be removed or not. The default value is true. More info in the - Sanitizer: RemoveDuplicatedControlChangeEvents article. - - - - - Gets or sets a value indicating whether events on unused channels should be removed or not. - Unused channel means there are no notes on this channel. The default value is true. - More info in the Sanitizer: RemoveEventsOnUnusedChannels article. - - - - - Gets or sets a value indicating whether a silence at the start of a MIDI file should be - removed or not. The default value is false. More info in the - Sanitizer: Trim article. - - - - - Settings according to which a should be split by vertical split methods. - - - - - - Gets or sets a value indicating whether notes should be split in points of - grid intersection or not. The default value is true. More info in the - MIDI file splitting: SplitNotes article. - - - - - Gets or sets a value indicating whether original times of events should be saved or not. - The default value is false. More info in the - MIDI file splitting: PreserveTimes article. - - - - - Gets or sets a value indicating whether track chunks in new files should correspond - to those in the input file or not, so empty track chunks can be presented in new files. - The default value is false. - - - - - Gets or sets that holds factory methods to create events - to mark parts of split file. - - - - - Gets or sets settings which define how notes should be detected and built. You can set it to - null to use default settings. - - - - - Defines how a MIDI file should be split by objects using - method. - More info in the - MIDI file splitting: SplitByObjects article. - - - - - - Gets or sets a method to get the ID (key) of an object. The default value - is null which means the default key selector will be used. - - - - - Gets or sets a predicate to determine whether an object should be copied - to each new file or not. The default value is null which means no - one object will be copied to each file. - - - - - Gets or sets a predicate to filter objects out. The default value is null - which means no filter applied. - - - - - Gets or sets a predicate to filter out objects that should be copied to each new - file (i.e. for those objects returns true for). - The default value is null which means no filter applied. - - - - - Defines how a MIDI file should be split by channel using - method. - - - - - - Gets or sets a value indicating whether to copy all meta and system exclusive events - to all the new files or throw them away. The default value is true>. - - - - - Gets or sets a predicate to filter events out before processing. If predicate returns true, - an event will be processed; if false - it won't. If the property set to null - (default value), all MIDI events will be processed. - - - - - Defines how a MIDI file should be split by chunks using - method. - - - - - - Gets or sets a predicate to filter chunks out before processing. If predicate returns true, - a chunk will be processed; if false - it won't. If the property set to null (default - value), all MIDI chunks will be processed. - - - - - Gets or sets a value indicating whether a tempo map should be preserved or not in new files. - The default value is true. - - - - - Provides factory methods to create events to mark parts of split file. - - - - - Gets or sets a factory method to create event that will be placed at the start - of a split MIDI file part. - - - - - Gets or sets a factory method to create event that will be placed at the end - of a split MIDI file part. - - - - - Gets or sets a factory method to create event that will be placed in a split MIDI - file part if it's empty. - - - - - Provides methods to split MIDI data in many different ways. More info in the - Splitter article. - - - - - Cuts a part of the specified length from a MIDI file (starting at the specified time within the file) - and returns a new instance of which is the original one without the part. More info - in the MIDI file splitting: CutPart article. - - to cut part from. - The start time of part to cut. - The length of part to cut. - Settings according to which - should be split. - which is the without a part defined by - and . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Skips part of the specified length of MIDI file and returns remaining part as - an instance of . More info in the - MIDI file splitting: SkipPart article. - - to skip part of. - The length of part to skip. - Settings according to which - should be split. - which is result of skipping a part of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Splits by channel. More info in the - MIDI file splitting: SplitByChannel article. - - - All channel events () will be grouped by channel and then events for each - channel will be placed to separate files. So each new file will contain channel events for single channel. - If of - set to true (default value), each new file will also contain all non-channel events from the original file. - If an input file doesn't contain channel events, result file will be just a copy of the input one. - - Settings according to which MIDI file should be split. - to split. - Collection of where each file contains events for single channel - and meta and sysex ones as defined by . - is null. - - - - Splits by chunks within it. - - Settings according to which MIDI file should be split. - to split. - Collection of where each file contains single chunk from - the original file. - is null. - - - - Splits by the specified grid. More info in the - MIDI file splitting: SplitByGrid article. - - - Non-track chunks will not be copied to any of the new files. - - to split. - Grid to split by. - Settings according to which file should be split. - Collection of produced during splitting the input file by grid. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Splits by objects. More info in the - MIDI file splitting: SplitByObjects article. - - to split. - Combination of desired types of objects to split by. - Settings according to which notes should be detected and built. - Settings according to which objects should be detected and built. - Collection of where each file contains objects as defined by - . - is null. - - - - Splits objects within a at the specified distance from an object's start or end. - More info in the Objects splitting: SplitObjectsAtDistance - article. - - to split objects within. - The type of objects to split. - Distance to split objects at. - Point of an object should be measured from. - Tempo map used for distances calculations. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - - - - Splits objects within a collection of at the specified distance from an - object's start or end. More info in the - Objects splitting: SplitObjectsAtDistance - article. - - A collection of to split objects within. - The type of objects to split. - Distance to split objects at. - Point of an object should be measured from. - Tempo map used for distances calculations. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - - - - Splits objects within a at the specified distance from an object's start or end. - More info in the Objects splitting: SplitObjectsAtDistance - article. - - to split objects within. - The type of objects to split. - Distance to split objects at. - Point of an object should be measured from. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - specified an invalid value. - - - - Splits objects within a by the specified ratio of an object's length measuring - it from the object's start or end. For example, 0.5 means splitting at the center of an object. More info - in the Objects splitting: SplitObjectsAtDistance - article. - - to split objects within. - The type of objects to split. - Ratio of an object's length to split by. Valid values are from 0 to 1. - The type an object's length should be processed according to. - Point of an object distance should be measured from. - Tempo map used for distances calculations. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is out of valid range. - - One of the following errors occurred: - - - specified an invalid value. - - - specified an invalid value. - - - - - - - Splits objects within a collection of by the specified ratio of an object's - length measuring it from the object's start or end. For example, 0.5 means splitting at the center of an object. - More info in the Objects splitting: SplitObjectsAtDistance - article. - - A collection of to split objects within. - The type of objects to split. - Ratio of an object's length to split by. Valid values are from 0 to 1. - The type an object's length should be processed according to. - Point of an object distance should be measured from. - Tempo map used for distances calculations. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is out of valid range. - - One of the following errors occurred: - - - specified an invalid value. - - - specified an invalid value. - - - - - - - Splits objects within a by the specified ratio of an object's length measuring - it from the object's start or end. For example, 0.5 means splitting at the center of an object. More info - in the Objects splitting: SplitObjectsAtDistance - article. - - to split objects within. - The type of objects to split. - Ratio of an object's length to split by. Valid values are from 0 to 1. - The type an object's length should be processed according to. - Point of an object distance should be measured from. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - is null. - is out of valid range. - - One of the following errors occurred: - - - specified an invalid value. - - - specified an invalid value. - - - - - - - Splits objects at the specified distance from an object's start or end. More info in the - Objects splitting: SplitObjectsAtDistance - article. - - Objects to split. - Distance to split objects at. - Point of an object should be measured from. - Tempo map used for distances calculations. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - Objects that are result of splitting going in the same - order as elements of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - specified an invalid value. - - - - Splits objects by the specified ratio of an object's length measuring it from - the object's start or end. For example, 0.5 means splitting at the center of an object. More info in the - Objects splitting: SplitObjectsAtDistance - article. - - Objects to split. - Ratio of an object's length to split by. Valid values are from 0 to 1. - The type an object's length should be processed according to. - Point of an object distance should be measured from. - Tempo map used for distances calculations. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - Objects that are result of splitting going in the same - order as elements of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is out of valid range. - - One of the following errors occurred: - - - specified an invalid value. - - - specified an invalid value. - - - - - - - Splits objects within a by the specified grid. More info in the - Objects splitting: SplitObjectsByGrid article. - - - Nulls will not be split and will be returned as nulls. - - to split objects within. - The type of objects to split. - Grid to split objects by. - Tempo map used to calculate times to split by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Splits objects within a collection of by the specified grid. More info in the - Objects splitting: SplitObjectsByGrid article. - - - Nulls will not be split and will be returned as nulls. - - A collection of to split objects within. - The type of objects to split. - Grid to split objects by. - Tempo map used to calculate times to split by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Splits objects within a by the specified grid. More info in the - Objects splitting: SplitObjectsByGrid article. - - - Nulls will not be split and will be returned as nulls. - - to split objects within. - The type of objects to split. - Grid to split objects by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Splits objects by the specified grid. More info in the - Objects splitting: SplitObjectsByGrid article. - - - Nulls will not be split and will be returned as nulls. - - Objects to split. - Grid to split objects by. - Tempo map used to calculate times to split by. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - Objects that are result of splitting going in the same - order as elements of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Splits objects within a into the specified number of parts of the equal length. - More info in the Objects splitting: SplitObjectsByPartsNumber - article. - - - Nulls will not be split and will be returned as nulls. If an object has zero length, - it will be split into the specified number of parts of zero length. - - to split objects within. - The type of objects to split. - The number of parts to split objects into. - Type of a part's length. - Tempo map used to calculate times to split by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is zero or negative. - specified an invalid value. - - - - Splits objects within a collection of into the specified number of parts of - the equal length. More info in the - Objects splitting: SplitObjectsByPartsNumber - article. - - - Nulls will not be split and will be returned as nulls. If an object has zero length, - it will be split into the specified number of parts of zero length. - - A collection of to split objects within. - The type of objects to split. - The number of parts to split objects into. - Type of a part's length. - Tempo map used to calculate times to split by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - is zero or negative. - specified an invalid value. - - - - Splits objects within a into the specified number of parts of the equal length. - More info in the Objects splitting: SplitObjectsByPartsNumber - article. - - - Nulls will not be split and will be returned as nulls. If an object has zero length, - it will be split into the specified number of parts of zero length. - - to split objects within. - The type of objects to split. - The number of parts to split objects into. - Type of a part's length. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - is null. - is zero or negative. - specified an invalid value. - - - - Splits objects into the specified number of parts of the equal length. More info in the - Objects splitting: SplitObjectsByPartsNumber - article. - - - Nulls will not be split and will be returned as nulls. If an object has zero length, - it will be split into the specified number of parts of zero length. - - Objects to split. - The number of parts to split objects into. - Type of a part's length. - Tempo map used to calculate times to split by. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - Objects that are result of splitting going in the same - order as elements of . - - One of the following errors occurred: - - - is null. - - - is null. - - - - is zero or negative. - specified an invalid value. - - - - Splits objects within a by the specified step so every object will be split - at points equally distanced from each other starting from the object's start time. More info in the - Objects splitting: SplitObjectsByStep article. - - - Nulls, objects with zero length and objects with length smaller than - will not be split and will be returned as clones of the input objects. - - to split objects within. - The type of objects to split. - Step to split objects by. - Tempo map used to calculate times to split by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Splits objects within a collection of by the specified step so every object - will be split at points equally distanced from each other starting from the object's start time. More info - in the Objects splitting: SplitObjectsByStep article. - - - Nulls, objects with zero length and objects with length smaller than - will not be split and will be returned as clones of the input objects. - - A collection of to split objects within. - The type of objects to split. - Step to split objects by. - Tempo map used to calculate times to split by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Splits objects within a by the specified step so every object will be split - at points equally distanced from each other starting from the object's start time. More info in the - Objects splitting: SplitObjectsByStep article. - - - Nulls, objects with zero length and objects with length smaller than - will not be split and will be returned as clones of the input objects. - - to split objects within. - The type of objects to split. - Step to split objects by. - Settings according to which objects should be - detected and built. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Splits objects by the specified step so every object will be split at points - equally distanced from each other starting from the object's start time. More info in the - Objects splitting: SplitObjectsByStep article. - - - Nulls, objects with zero length and objects with length smaller than - will not be split and will be returned as clones of the input objects. - - Objects to split. - Step to split objects by. - Tempo map used to calculate times to split by. - Predicate used to determine whether an object should be split or not. - true as a return value of the predicate means an object should be split; false - means don't split it. null (the default value) can be passed to the parameter - to process all objects. - Objects that are result of splitting going in the same - order as elements of . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - - Takes part of the specified length of a MIDI file (starting at the beginning of the file) - and returns it as an instance of . More info in the - MIDI file splitting: TakePart article. - - to take part of. - The length of part to take. - Settings according to which - should be split. - which is part of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - - - - - Takes a part of the specified length of a MIDI file (starting at the specified time within the file) - and returns it as an instance of . More info in the - MIDI file splitting: TakePart article. - - to take part of. - The start time of part to take. - The length of part to take. - Settings according to which - should be split. - which is part of the . - - One of the following errors occurred: - - - is null. - - - is null. - - - is null. - - - - - - diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml.meta deleted file mode 100644 index 9d1e52d..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: d80c593eb2bdf15428f06fd16c598702 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Melanchall.DryWetMidi.xml - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll deleted file mode 100644 index 9081f39..0000000 Binary files a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll and /dev/null differ diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll.meta deleted file mode 100644 index 5a37d42..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll.meta +++ /dev/null @@ -1,34 +0,0 @@ -fileFormatVersion: 2 -guid: 190954023a41ef240b5e13e6f84829a4 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native32.dll - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll deleted file mode 100644 index 271fa68..0000000 Binary files a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll and /dev/null differ diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll.meta deleted file mode 100644 index 107309e..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll.meta +++ /dev/null @@ -1,34 +0,0 @@ -fileFormatVersion: 2 -guid: 0cc4c49b6f4e58145badf186870fce0e -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dll - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib deleted file mode 100644 index 41bedb3..0000000 Binary files a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib and /dev/null differ diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib.meta deleted file mode 100644 index ffcc551..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib.meta +++ /dev/null @@ -1,40 +0,0 @@ -fileFormatVersion: 2 -guid: 46a8c97e6756d194aa37f904d63028f8 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 0 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - DefaultValueInitialized: true - - first: - Standalone: OSXUniversal - second: - enabled: 1 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/Melanchall_DryWetMidi_Native64.dylib - uploadId: 776551 diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/README.txt b/Assets/Dependencies/Melanchall/DryWetMIDI/README.txt deleted file mode 100644 index ad48b07..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/README.txt +++ /dev/null @@ -1,25 +0,0 @@ ------------------------------- - -DryWetMIDI 8.0.2 by Melanchall - ------------------------------- - -DryWetMIDI is the .NET library to work with MIDI data and MIDI devices. It allows: - -- Read, write and create Standard MIDI Files (SMF). It is also possible to read RMID files where SMF wrapped to RIFF chunk. You can easily catch specific error when reading or writing MIDI file since all possible errors in a MIDI file are presented as separate exception classes. -- Send MIDI events to/receive them from MIDI devices, play MIDI data and record it. This APIs support Windows and macOS. -- Finely adjust process of reading and writing. It allows, for example, to read corrupted files and repair them, or build MIDI file validators. -- Implement custom meta events and custom chunks that can be written to and read from MIDI files. -- Manage content of a MIDI file either with low-level objects, like event, or high-level ones, like note (read the High-level data managing section of the library docs). -- Build musical compositions (see Pattern page of the library docs) and use music theory API (see Music Theory - Overview article). -- Perform complex tasks like quantizing, notes splitting or converting MIDI file to CSV representation (see Tools page of the library docs). - ------------------------------- - -Project GitHub: https://github.com/melanchall/drywetmidi -Full changelog: https://github.com/melanchall/drywetmidi/releases/tag/v8.0.2 -Project documentation: https://melanchall.github.io/drywetmidi - ------------------------------- - -Please take a look at Demo folder of the package where demo scene placed along with sample script using the package. \ No newline at end of file diff --git a/Assets/Dependencies/Melanchall/DryWetMIDI/README.txt.meta b/Assets/Dependencies/Melanchall/DryWetMIDI/README.txt.meta deleted file mode 100644 index 7581e01..0000000 --- a/Assets/Dependencies/Melanchall/DryWetMIDI/README.txt.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: cd174fb561b629f4795dde95848ce1e4 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 222171 - packageName: DryWetMIDI - packageVersion: 8.0.2 - assetPath: Assets/Melanchall/DryWetMIDI/README.txt - uploadId: 776551 diff --git a/Assets/MidiUtil.cs b/Assets/MidiUtil.cs new file mode 100644 index 0000000..d5a2b66 --- /dev/null +++ b/Assets/MidiUtil.cs @@ -0,0 +1,198 @@ +using System; +using System.Collections.Generic; +using RtMidi; + +namespace HNode.Util.Midi +{ + public enum MidiCode : int + { + // https://midi.org/summary-of-midi-1-0-messages + // Channel Voice Messages [nnnn = 0-15 (MIDI Channel Number 1-16)] + NoteOff = 128, + NoteOn = 144, + PolyphonicKeyPressure = 160, + ControlChange = 176, + ProgramChange = 192, + ChannelPressureAfterTouch = 208, + PitchBendChange = 224, + + // Channel Mode Messages (See also Control Change, above) + // ChannelModeMessages = 176, + + // System Common Messages + SystemExclusive = 240, + TimeCodeQuarterFrame = 241, + SongPositionPointer = 242, + SongSelect = 243, + // Undefined = 244, + // Undefined = 245, + TuneRequest = 246, + EndOfExclusive = 247, + + + // System Real-Time Messages + TimingClock = 248, + // Undefined = 249, + Start = 250, + Continue = 251, + Stop = 252, + // Undefined = 253, + ActiveSensing = 254, + Reset = 255 + } + + public enum MidiTimeCodePiece : int + { + FrameLeastSignificant = 0x0, + FrameMostSignificant = 0x1, + + SecondLeastSignificant = 0x2, + SecondMostSignificant = 0x3, + + MinuteLeastSignificant = 0x4, + MinuteMostSignificant = 0x5, + + HourLeastSignificant = 0x6, + RateHourMostSignificant = 0x7 + } + + public static class MidiUtil + { + /// + /// Serialize a Midi packet and send it (without checks) + /// + /// + /// Midi Message Code https://midi.org/summary-of-midi-1-0-messages + /// (0-15) + /// (0-127) + /// (0-127) + public static void SendMidiUnsafe(MidiOut midiOutput, MidiCode midiCode, int channel, int noteNumber, int value) + { + midiOutput.SendMessage(SerializeMidi(midiCode, channel, noteNumber, value)); + } + + /// + /// Serialize a Midi packet and send it (with checks) + /// + /// + /// Midi Message Code https://midi.org/summary-of-midi-1-0-messages + /// (0-15) + /// (0-127) + /// (0-127) + public static void SendMidi(MidiOut midiOutput, MidiCode midiCode, int channel, int noteNumber, int value) + { + if (midiOutput == null) + return; + + if (midiOutput.IsInvalid || midiOutput.IsClosed) + return; + + if (midiOutput.IsOk) + SendMidiUnsafe(midiOutput, midiCode, channel, noteNumber, value); + } + + /// + /// Serialize a Midi packet and send it (with checks) + /// + /// + /// + public static void SendMidi(MidiOut midiOutput, MidiEvent midiEvent) + { + SendMidi(midiOutput, midiEvent.midiCode, midiEvent.channel, midiEvent.noteNumber, midiEvent.value); + } + + /// + /// Serialize a Midi message packet into 3 bytes + /// + /// Midi Message Code https://midi.org/summary-of-midi-1-0-messages + /// (0-15) + /// (0-127) + /// (0-127) + /// 3 bytes + public static byte[] SerializeMidi(MidiCode midiCode, int channel, int noteNumber, int value) + { + byte[] serializedMidi = new byte[3]; + + // RTFM, https://midi.org/summary-of-midi-1-0-messages + serializedMidi[0] = (byte)(((int)midiCode & 0xF0) | (channel & 0xF)); // 4 bits midi code followed by 4 bits channel + serializedMidi[1] = (byte)(noteNumber & 0x7F); // NoteNumber + serializedMidi[2] = (byte)(value & 0x7F); // Value + + return serializedMidi; + } + + /// + /// Deserialize 1-3 bytes into a Midi message packet. + /// + /// 1-3 bytes + /// + public static MidiEvent DeserializeMidi(ReadOnlySpan midiPacket) + { + int midiControlByte = midiPacket[0] & 0xF0; + bool systemMessage = midiControlByte == 0xF0; + + MidiCode midiCode = (MidiCode)(systemMessage ? midiPacket[0] : midiControlByte); + + int channel = systemMessage ? 0 : midiPacket[0]; + int noteNumber = midiPacket.Length > 1 ? midiPacket[1] : 0; + int value = midiPacket.Length > 2 ? midiPacket[2] : 0; + + return new MidiEvent(midiCode, channel, noteNumber, value); + } + + /// + /// Gets a list of available Midi ports + /// + /// + /// Available Midi ports of the opposite type + public static List GetMidiDevices(MidiBase midiPort) + { + List midiDevices = new List { "(none)" }; + + for (int indx = 0; indx < midiPort.PortCount; indx++) + midiDevices.Add(midiPort.GetPortName(indx)); + + return midiDevices; + } + + /// + /// Gets the port number for a device name + /// + /// + /// Full or partial name of the device + /// Port number of the device, or -1 if none + public static int GetMidiPort(MidiBase midiPort, string deviceName) + { + List midiDevices = GetMidiDevices(midiPort); + + for (int indx = 0; indx < midiDevices.Count; indx++) + if (midiDevices[indx].Contains(deviceName)) + return indx - 1; + + return -1; + } + } + + public class MidiEvent + { + public readonly MidiCode midiCode; + public readonly int channel; + public readonly int noteNumber; + public readonly int value; + + /// + /// Create a MidiEvent + /// + /// + /// (0-15) + /// (0-127) + /// (0-127) + public MidiEvent(MidiCode _midiCode = MidiCode.Reset, int _channel = 0, int _noteNumber = 0, int _value = 0) + { + midiCode = _midiCode; + channel = _channel & 0xF; + noteNumber = _noteNumber & 0x7F; + value = _value & 0x7F; + } + } +} \ No newline at end of file diff --git a/Assets/MidiUtil.cs.meta b/Assets/MidiUtil.cs.meta new file mode 100644 index 0000000..31d94d0 --- /dev/null +++ b/Assets/MidiUtil.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 531961d47792d96e791be09cbdeb6c84 \ No newline at end of file diff --git a/Assets/Plugin/Exporters/MIDIDMX.cs b/Assets/Plugin/Exporters/MIDIDMX.cs index 1a9a5ae..b1f52e9 100644 --- a/Assets/Plugin/Exporters/MIDIDMX.cs +++ b/Assets/Plugin/Exporters/MIDIDMX.cs @@ -5,12 +5,8 @@ using System.Linq; using System.Threading.Tasks; using Cysharp.Threading.Tasks; -using Melanchall.DryWetMidi.Common; -using Melanchall.DryWetMidi.Composing; -using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; -using Melanchall.DryWetMidi.Standards; +using RtMidi; +using HNode.Util.Midi; using TMPro; using UnityEngine; using UnityEngine.UI; @@ -26,7 +22,11 @@ public class MIDIDMX : IExporter { public bool useEditorLog = false; //public EquationNumber channelLimit = 2048; //Limits the number of channels we scan through for MIDIDMX, so full range scans are kept to a minimum. +#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN public string midiDevice = "loopMIDI Port"; //Default to no device selected +#elif UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX + public string midiDevice = "WINE ALSA Input"; // Default to Wine (possibility of connecting to a different MIDI program under Wine first) +#endif public enum Status : int { @@ -61,27 +61,13 @@ public enum ControlCode : int private int[] midiData = new int[maxChannels]; private int bankStatus = 0; - private OutputDevice midiOutput; + private MidiOut midiOutput; private FileStream logStream; private int midiUpdates = 0; private int midiCatchup = 0; private int midiScanPosition = 0; private long midiLastUpdate = 0; - /// - /// Gets list of MIDI devices - /// - /// String List of devices - public List GetMidiDevices() - { - List tDevices = new List { "(none)" }; - ICollection devices = OutputDevice.GetAll(); - - tDevices.AddRange(devices.Select(device => device.Name)); - - return tDevices; - } - /// /// Sets active midi device, connects immediately. /// @@ -94,6 +80,9 @@ public void MidiConnectDevice(string device) if (midiOutput != null) { UnityEngine.Debug.Log("Dispose"); + if (!midiOutput.IsClosed) + midiOutput.ClosePort(); + midiOutput.Dispose(); midiOutput = null; //force GC call @@ -103,8 +92,8 @@ public void MidiConnectDevice(string device) //commented out to let exceptions through try { - midiOutput = OutputDevice.GetByName(device); - midiOutput.PrepareForEventsSending(); + midiOutput = MidiOut.Create(); + midiOutput.OpenPort(MidiUtil.GetMidiPort(midiOutput, device), "HNode"); } catch { @@ -211,6 +200,9 @@ public void Construct() /// public void Deconstruct() { + if (!(midiOutput?.IsClosed ?? true)) + midiOutput?.ClosePort(); + midiOutput?.Dispose(); logStream?.Close(); } @@ -252,25 +244,20 @@ private void SendMidi(int channel, byte value) if (channel < 1024) { - Send18BitMessage(channel, value, 0); + Send18BitMessage(MidiCode.NoteOn, channel, value, 0); } else { - Send18BitMessage(channel, value, 1024); + Send18BitMessage(MidiCode.NoteOff, channel, value, 1024); } midiUpdates++; } - private void Send18BitMessage(int channel, byte channelvalue, int channeloffset) where T : NoteEvent, new() + private void Send18BitMessage(MidiCode noteState, int channel, byte channelvalue, int channeloffset) { int t = channel - channeloffset; - T noteOff = new() - { - Channel = (FourBitNumber)((t >> 6) & 0xF), - NoteNumber = (SevenBitNumber)(((t << 1) & 0x7F) + ((channelvalue >> 7) & 0x1)), - Velocity = (SevenBitNumber)(channelvalue & 0x7F) - }; - midiOutput.SendEvent(noteOff); + + MidiUtil.SendMidiUnsafe(midiOutput, noteState, t >> 6, ((t << 1) & 0x7F) + ((channelvalue >> 7) & 0x1), channelvalue); } /// @@ -279,14 +266,7 @@ private void SendMidi(int channel, byte value) /// Channel, usually 15 for MIDIDMX private void SendMidiControl(int channel, ControlCode code) { - if (midiOutput == null) return; - - ControlChangeEvent midiWD = new ControlChangeEvent(); - midiWD.Channel = (FourBitNumber)channel; - midiWD.ControlNumber = (SevenBitNumber)127; //constant magic number for control codes - midiWD.ControlValue = (SevenBitNumber)(int)code; - - midiOutput.SendEvent(midiWD); + MidiUtil.SendMidi(midiOutput, MidiCode.ControlChange, channel, 127, (int)code); } /// diff --git a/Assets/Plugin/Exporters/TimeCodeExporter.cs b/Assets/Plugin/Exporters/TimeCodeExporter.cs index 41d9e85..0b0ddd6 100644 --- a/Assets/Plugin/Exporters/TimeCodeExporter.cs +++ b/Assets/Plugin/Exporters/TimeCodeExporter.cs @@ -1,11 +1,7 @@ using System.Collections.Generic; using UnityEngine; -using Melanchall.DryWetMidi.Common; -using Melanchall.DryWetMidi.Composing; -using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; -using Melanchall.DryWetMidi.Standards; +using RtMidi; +using HNode.Util.Midi; using System; using System.Net.Sockets; using System.Net; @@ -13,9 +9,13 @@ public class TimeCodeExporter : IExporter { +#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN public string midiDevice = "loopMIDI Port"; //Default to no device selected +#elif UNITY_STANDALONE_LINUX || UNITY_EDITOR_LINUX + public string midiDevice = "Virtual RawMIDI"; //Default to Reaper on Linux +#endif - private InputDevice midiInput; + private MidiIn midiInput; private List udpClients = new List(); private int[] ports = new int[] { 7001, 7002, 7003, 7004, 7005 }; @@ -26,6 +26,7 @@ public void MidiConnectDevice(string device) if (midiInput != null) { UnityEngine.Debug.Log("Dispose"); + midiInput.ClosePort(); midiInput.Dispose(); midiInput = null; //force GC call @@ -35,11 +36,27 @@ public void MidiConnectDevice(string device) //commented out to let exceptions through try { - midiInput = InputDevice.GetByName(device); - midiInput.RaiseMidiTimeCodeReceived = true; - midiInput.MidiTimeCodeReceived += OnEventReceived; - midiInput.EventReceived += OnFullFrame; - midiInput.StartEventsListening(); + midiInput = MidiIn.Create(); + midiInput.OpenPort(MidiUtil.GetMidiPort(midiInput, device), "HNode"); + midiInput.IgnoreTypes(false, false, false); + + midiInput.MessageReceived = (someRandomDoubleIdontUnderstand, midiPacket) => { + MidiEvent midiEvent = MidiUtil.DeserializeMidi(midiPacket); + + switch (midiEvent.midiCode) + { + case MidiCode.TimeCodeQuarterFrame: + OnTimeQuarterFrame(midiEvent); + break; + + case MidiCode.SystemExclusive: + OnFullFrame(midiPacket); + break; + + default: + break; + } + }; } catch (Exception ex) { @@ -51,62 +68,59 @@ public void MidiConnectDevice(string device) //maybe concurrentdictionary with key as port I guess? private static TimeSpan timeCode = TimeSpan.Zero; private static byte frames = 0; + private static Dictionary timeSegments = new(); - private static void OnEventReceived(object sender, MidiTimeCodeReceivedEventArgs e) + // Inspired from: https://github.com/melanchall/drywetmidi/blob/46b2ac61b2f9c0efb9a6a43f0542d7a64bf7ef73/DryWetMidi/Multimedia/InputEndpoint/InputEndpoint.cs#L714 + private void OnTimeQuarterFrame(MidiEvent midiEvent) { - //try to convert the sender to ourself - var exporter = sender as TimeCodeExporter; + MidiTimeCodePiece timeCodePiece = (MidiTimeCodePiece)(midiEvent.noteNumber >> 4); - var framerate = e.Format switch - { - MidiTimeCodeType.Thirty => 30f, - MidiTimeCodeType.ThirtyDrop => 29.97f, - MidiTimeCodeType.TwentyFive => 25f, - MidiTimeCodeType.TwentyFour => 24f, - _ => 30f,//assume 30 I guess, this should never happen - }; - //convert the timecode to a TimeSpan - timeCode = new TimeSpan(0, e.Hours, e.Minutes, e.Seconds); - frames = (byte)e.Frames; - } + timeSegments[timeCodePiece] = midiEvent.noteNumber & 0xF; - private static void OnFullFrame(object? sender, MidiEventReceivedEventArgs e) - { - //check type - if (e.Event.EventType != MidiEventType.NormalSysEx) + if (timeSegments.Count == 8) { - return; + int midiFrames = (timeSegments[MidiTimeCodePiece.FrameMostSignificant] << 4) | timeSegments[MidiTimeCodePiece.FrameLeastSignificant]; + int midiSeconds = (timeSegments[MidiTimeCodePiece.SecondMostSignificant] << 4) | timeSegments[MidiTimeCodePiece.SecondLeastSignificant]; + int midiMinutes = (timeSegments[MidiTimeCodePiece.MinuteMostSignificant] << 4) | timeSegments[MidiTimeCodePiece.MinuteLeastSignificant]; + int midiHours = (timeSegments[MidiTimeCodePiece.RateHourMostSignificant] << 4) | timeSegments[MidiTimeCodePiece.HourLeastSignificant]; + + float framerate = (midiHours & 0x60) switch + { + 0x00 => 24f, + 0x20 => 25f, + 0x40 => 29.97f, + 0x60 => 30f, + _ => 30f, //assume 30 I guess, this should never happen + }; + + //convert the timecode to a TimeSpan + timeCode = new TimeSpan(0, midiHours & 0x1F, midiMinutes, midiSeconds); + frames = (byte)midiFrames; + + timeSegments.Clear(); } + } - var sysExEvent = e.Event as SysExEvent; - var data = sysExEvent.Data; - - //convert the data to hex string - string hexString = BitConverter.ToString(data); - // Debug.Log(hexString); - - //length should be 9 - if (data.Length != 9) - return; + private void OnFullFrame(ReadOnlySpan midiPacket) + { + //length should be 10 + if (midiPacket.Length != 10) return; //first two bytes should be 7F 7F - if (data[0] != 0x7F) return; - if (data[1] != 0x7F) return; - //third byte should be 01 - if (data[2] != 0x01) return; - //fourth byte should be 01 - if (data[3] != 0x01) return; + if (midiPacket[1] != 0x7F) return; + if (midiPacket[2] != 0x7F) return; + //third & fourth bytes should be 01 01 + if (midiPacket[3] != 0x01) return; + if (midiPacket[4] != 0x01) return; //top 3 bits of hours contain framerate info //split out the hours byte - var hours = data[4] & 0x1F; // Mask out the top 3 bits - var minutes = data[5]; - var seconds = data[6]; - var framesData = data[7]; - - // Debug.Log($"Full Frame Timecode Received: {hours}:{minutes}:{seconds}:{frames}"); + int midiHours = midiPacket[5] & 0x1F; // Mask out the top 3 bits + int midiMinutes = midiPacket[6] & 0x7F; + int midiSeconds = midiPacket[7] & 0x7F; + int midiFrames = midiPacket[8] & 0x7F; - float framerate = (hours & 0x60) switch + float framerate = (midiHours & 0x60) switch { 0x00 => 24f, 0x20 => 25f, @@ -114,9 +128,10 @@ private static void OnFullFrame(object? sender, MidiEventReceivedEventArgs e) 0x60 => 30f, _ => 30f,//assume 30 I guess, this should never happen }; + //convert the timecode to a TimeSpan - timeCode = new TimeSpan(0, hours, minutes, seconds); - frames = (byte)framesData; + timeCode = new TimeSpan(0, midiHours, midiMinutes, midiSeconds); + frames = (byte)midiFrames; } public void CompleteFrame(ref List channelValues) @@ -134,7 +149,11 @@ public void Construct() UnityEngine.Debug.Log("Connecting to UDP port: " + port); var udpClient = new UdpClient(); - udpClient.Connect(IPAddress.Loopback, port); + + try { + udpClient.Connect(IPAddress.Loopback, port); + } catch {} + udpClients.Add(udpClient); } } @@ -156,6 +175,7 @@ public void ConstructUserInterface(RectTransform rect) public void Deconstruct() { + midiInput?.ClosePort(); midiInput?.Dispose(); foreach (var udpClient in udpClients) @@ -218,7 +238,9 @@ public void InitFrame(ref List channelValues) //try to send foreach (var udpClient in udpClients) { - udpClient.Send(data.ToArray(), data.Count); + try { + udpClient.Send(data.ToArray(), data.Count); + } catch {} } } diff --git a/Packages/manifest.json b/Packages/manifest.json index e20a2f4..3a84f2b 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -26,6 +26,7 @@ "com.unity.toolchain.linux-x86_64": "2.0.11", "com.unity.ugui": "2.0.0", "com.unity.visualscripting": "1.9.7", + "jp.keijiro.rtmidi": "2.2.0", "net.naoyakohda.artnet-unity": "https://github.com/nasshu2916/ArtNet-Unity.git?path=/Assets/ArtNet#master", "com.unity.modules.accessibility": "1.0.0", "com.unity.modules.ai": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index e5eabdf..4a3c81e 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -292,6 +292,13 @@ "com.unity.modules.screencapture": "1.0.0" } }, + "jp.keijiro.rtmidi": { + "version": "2.2.0", + "depth": 0, + "source": "registry", + "dependencies": {}, + "url": "https://registry.npmjs.com" + }, "net.naoyakohda.artnet-unity": { "version": "file:net.naoyakohda.artnet-unity@12078a5f801e", "depth": 0,