From 167456531c772a09ae83fb794448cb73d617ffb9 Mon Sep 17 00:00:00 2001 From: Maxim Dobroselsky Date: Mon, 30 Sep 2024 21:45:25 +0300 Subject: [PATCH] Removed PlaybackHint --- .../Playback/PlaybackTests.Asserts.cs | 37 ----- .../PlaybackTests.TrackControlValue.cs | 22 +-- .../Playback/PlaybackTests.TrackNotes.cs | 23 --- .../Playback/PlaybackTests.TrackPitchValue.cs | 22 +-- .../Playback/PlaybackTests.TrackProgram.cs | 22 +-- DryWetMidi/Multimedia/Playback/Playback.cs | 131 +++++------------- .../Playback/PlaybackDataTracker.cs | 26 ++-- .../Multimedia/Playback/PlaybackHint.cs | 52 ------- .../Multimedia/Playback/PlaybackSettings.cs | 6 - 9 files changed, 44 insertions(+), 297 deletions(-) delete mode 100644 DryWetMidi/Multimedia/Playback/PlaybackHint.cs diff --git a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.Asserts.cs b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.Asserts.cs index 818ecd974..c7890d834 100644 --- a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.Asserts.cs +++ b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.Asserts.cs @@ -14,43 +14,6 @@ namespace Melanchall.DryWetMidi.Tests.Multimedia [TestFixture] public sealed partial class PlaybackTests { - private void CheckNoEventsFiredTrackingDisabled( - ICollection objects, - PlaybackHint playbackHint) - { - var tempoMap = TempoMap.Default; - var playedEvents = new List(); - - using (var playback = new Playback(objects, tempoMap, new PlaybackSettings { Hint = playbackHint })) - { - playback.EventPlayed += (_, e) => playedEvents.Add(e.Event); - - playback.Start(); - playback.MoveToTime(new MetricTimeSpan(0, 0, 0, 750)); - playback.MoveToStart(); - playback.Stop(); - } - - CollectionAssert.IsEmpty(playedEvents, "Events are played."); - } - - private void CheckFailOnEnableTracking( - PlaybackHint playbackHint, - Action enableTracking) - { - var objects = new[] - { - new TimedEvent(new NoteOnEvent()), - }; - - using (var playback = new Playback(objects, TempoMap.Default, new PlaybackSettings { Hint = playbackHint })) - { - Assert.Throws( - () => enableTracking(playback), - "No exception thrown."); - } - } - private IEnumerable GetActiveSnapPoints(Playback playback) { return playback.Snapping.GetActiveSnapPoints().ToList(); diff --git a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackControlValue.cs b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackControlValue.cs index 1813e0b30..443fdc018 100644 --- a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackControlValue.cs +++ b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackControlValue.cs @@ -2,36 +2,16 @@ using System.Collections.Generic; using Melanchall.DryWetMidi.Common; using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; using NUnit.Framework; namespace Melanchall.DryWetMidi.Tests.Multimedia { + // TODO: check tracking disabled [TestFixture] public sealed partial class PlaybackTests { #region Test methods - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisableControlValueTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisableControlValueTracking_NoEventsFired(PlaybackHint playbackHint) => CheckNoEventsFiredTrackingDisabled( - objects: new[] - { - new TimedEvent(new NoteOnEvent()).SetTime(new MetricTimeSpan(0, 0, 0, 500), TempoMap.Default), - new TimedEvent(new ControlChangeEvent((SevenBitNumber)70, (SevenBitNumber)10)).SetTime(new MetricTimeSpan(0, 0, 0, 600), TempoMap.Default), - new TimedEvent(new NoteOffEvent()).SetTime(new MetricTimeSpan(0, 0, 1), TempoMap.Default), - }, - playbackHint: playbackHint); - - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisableControlValueTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisableControlValueTracking_FailOnEnableTracking(PlaybackHint playbackHint) => CheckFailOnEnableTracking( - playbackHint: playbackHint, - enableTracking: playback => playback.TrackControlValue = true); - [Retry(RetriesNumber)] [TestCase(true, 0)] [TestCase(true, 100)] diff --git a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackNotes.cs b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackNotes.cs index 74de1df07..ea582ecdb 100644 --- a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackNotes.cs +++ b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackNotes.cs @@ -1,11 +1,6 @@ using System; -using System.Collections.Generic; -using System.Threading; using Melanchall.DryWetMidi.Common; using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; -using Melanchall.DryWetMidi.Tests.Common; using NUnit.Framework; namespace Melanchall.DryWetMidi.Tests.Multimedia @@ -15,24 +10,6 @@ public sealed partial class PlaybackTests { #region Test methods - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisableNotesTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisableNotesTracking_NoEventsFired(PlaybackHint playbackHint) => CheckNoEventsFiredTrackingDisabled( - objects: new[] - { - new TimedEvent(new NoteOnEvent()).SetTime(new MetricTimeSpan(0, 0, 0, 500), TempoMap.Default), - new TimedEvent(new NoteOffEvent()).SetTime(new MetricTimeSpan(0, 0, 1), TempoMap.Default), - }, - playbackHint: playbackHint); - - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisableNotesTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisableNotesTracking_FailOnEnableTracking(PlaybackHint playbackHint) => CheckFailOnEnableTracking( - playbackHint: playbackHint, - enableTracking: playback => playback.TrackNotes = true); - [Retry(RetriesNumber)] [TestCase(true)] [TestCase(false)] diff --git a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackPitchValue.cs b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackPitchValue.cs index 78b7504ae..4d185f6d1 100644 --- a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackPitchValue.cs +++ b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackPitchValue.cs @@ -2,36 +2,16 @@ using System.Collections.Generic; using Melanchall.DryWetMidi.Common; using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; using NUnit.Framework; namespace Melanchall.DryWetMidi.Tests.Multimedia { + // TODO: check tracking disabled [TestFixture] public sealed partial class PlaybackTests { #region Test methods - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisablePitchValueTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisablePitchValueTracking_NoEventsFired(PlaybackHint playbackHint) => CheckNoEventsFiredTrackingDisabled( - objects: new[] - { - new TimedEvent(new NoteOnEvent()).SetTime(new MetricTimeSpan(0, 0, 0, 500), TempoMap.Default), - new TimedEvent(new PitchBendEvent(1200)).SetTime(new MetricTimeSpan(0, 0, 0, 600), TempoMap.Default), - new TimedEvent(new NoteOffEvent()).SetTime(new MetricTimeSpan(0, 0, 1), TempoMap.Default), - }, - playbackHint: playbackHint); - - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisablePitchValueTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisablePitchValueTracking_FailOnEnableTracking(PlaybackHint playbackHint) => CheckFailOnEnableTracking( - playbackHint: playbackHint, - enableTracking: playback => playback.TrackPitchValue = true); - [Retry(RetriesNumber)] [TestCase(true, 0)] [TestCase(true, 100)] diff --git a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackProgram.cs b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackProgram.cs index 39426e8b7..2d0b6fd4e 100644 --- a/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackProgram.cs +++ b/DryWetMidi.Tests/Multimedia/Playback/PlaybackTests.TrackProgram.cs @@ -2,36 +2,16 @@ using System.Collections.Generic; using Melanchall.DryWetMidi.Common; using Melanchall.DryWetMidi.Core; -using Melanchall.DryWetMidi.Interaction; -using Melanchall.DryWetMidi.Multimedia; using NUnit.Framework; namespace Melanchall.DryWetMidi.Tests.Multimedia { + // TODO: check tracking disabled [TestFixture] public sealed partial class PlaybackTests { #region Test methods - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisableProgramTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisableProgramTracking_NoEventsFired(PlaybackHint playbackHint) => CheckNoEventsFiredTrackingDisabled( - objects: new[] - { - new TimedEvent(new NoteOnEvent()).SetTime(new MetricTimeSpan(0, 0, 0, 500), TempoMap.Default), - new TimedEvent(new ProgramChangeEvent((SevenBitNumber)70)).SetTime(new MetricTimeSpan(0, 0, 0, 600), TempoMap.Default), - new TimedEvent(new NoteOffEvent()).SetTime(new MetricTimeSpan(0, 0, 1), TempoMap.Default), - }, - playbackHint: playbackHint); - - [Retry(RetriesNumber)] - [TestCase(PlaybackHint.DisableProgramTracking)] - [TestCase(PlaybackHint.DisableDataTracking)] - public void DisableProgramTracking_FailOnEnableTracking(PlaybackHint playbackHint) => CheckFailOnEnableTracking( - playbackHint: playbackHint, - enableTracking: playback => playback.TrackProgram = true); - [Retry(RetriesNumber)] [TestCase(true, 0)] [TestCase(true, 100)] diff --git a/DryWetMidi/Multimedia/Playback/Playback.cs b/DryWetMidi/Multimedia/Playback/Playback.cs index be6522c96..5b840e841 100644 --- a/DryWetMidi/Multimedia/Playback/Playback.cs +++ b/DryWetMidi/Multimedia/Playback/Playback.cs @@ -93,12 +93,10 @@ public class Playback : IDisposable, IClockDrivenObject private readonly MidiClock _clock; private readonly ConcurrentDictionary _activeNotesMetadata = new ConcurrentDictionary(); + private readonly HashSet _notesMetadataHashSet = new HashSet(); private readonly NotePlaybackEventMetadata[] _notesMetadata; private readonly PlaybackDataTracker _playbackDataTracker; - private readonly PlaybackHint _hint; - - private bool _trackNotes; private bool _disposed = false; @@ -130,20 +128,20 @@ public Playback(IEnumerable timedObjects, TempoMap tempoMap, Playb ThrowIfArgument.IsNull(nameof(tempoMap), tempoMap); playbackSettings = playbackSettings ?? new PlaybackSettings(); - _hint = playbackSettings.Hint; + + TempoMap = tempoMap; var noteDetectionSettings = playbackSettings.NoteDetectionSettings ?? new NoteDetectionSettings(); + _playbackDataTracker = new PlaybackDataTracker(TempoMap); + _playbackEvents = GetPlaybackEvents(timedObjects.GetNotesAndTimedEventsLazy(noteDetectionSettings, true), tempoMap); MoveToNextPlaybackEvent(); - TempoMap = tempoMap; - var lastPlaybackEvent = _playbackEvents.LastOrDefault(); _duration = lastPlaybackEvent?.Time ?? TimeSpan.Zero; _durationInTicks = lastPlaybackEvent?.RawTime ?? 0; - _notesMetadata = BuildNotesMetadata(); - _playbackDataTracker = BuildDataTracker(); + _notesMetadata = _notesMetadataHashSet.ToArray(); var clockSettings = playbackSettings.ClockSettings ?? new MidiClockSettings(); _clock = new MidiClock(false, clockSettings.CreateTickGeneratorCallback(), ClockInterval); @@ -230,19 +228,7 @@ public Playback(IEnumerable timedObjects, TempoMap tempoMap, IOutp /// will be treated as just Note On/Note Off events. The default value is false. More info in the /// Data tracking: Notes tracking article. /// - /// Can't enable notes tracking due to the - /// hint has been specified on the playback creation. - public bool TrackNotes - { - get { return _trackNotes; } - set - { - if (value && _hint.HasFlag(PlaybackHint.DisableNotesTracking)) - throw new InvalidOperationException($"Can't enable notes tracking due to the '{PlaybackHint.DisableNotesTracking}' hint has been specified on the playback creation."); - - _trackNotes = value; - } - } + public bool TrackNotes { get; set; } /// /// Gets or sets a value indicating whether program must be tracked or not. If true, any jump @@ -251,16 +237,11 @@ public bool TrackNotes /// Data tracking: MIDI parameters values tracking /// article. /// - /// Can't enable program tracking due to the - /// hint has been specified on the playback creation. public bool TrackProgram { get { return _playbackDataTracker.TrackProgram; } set { - if (value && _hint.HasFlag(PlaybackHint.DisableProgramTracking)) - throw new InvalidOperationException($"Can't enable program tracking due to the '{PlaybackHint.DisableProgramTracking}' hint has been specified on the playback creation."); - if (_playbackDataTracker.TrackProgram == value) return; @@ -278,16 +259,11 @@ public bool TrackProgram /// Data tracking: MIDI parameters values tracking /// article. /// - /// Can't enable pitch value tracking due to the - /// hint has been specified on the playback creation. public bool TrackPitchValue { get { return _playbackDataTracker.TrackPitchValue; } set { - if (value && _hint.HasFlag(PlaybackHint.DisablePitchValueTracking)) - throw new InvalidOperationException($"Can't enable pitch value tracking due to the '{PlaybackHint.DisablePitchValueTracking}' hint has been specified on the playback creation."); - if (_playbackDataTracker.TrackPitchValue == value) return; @@ -305,16 +281,11 @@ public bool TrackPitchValue /// Data tracking: MIDI parameters values tracking /// article. /// - /// Can't enable control value tracking due to the - /// hint has been specified on the playback creation. public bool TrackControlValue { get { return _playbackDataTracker.TrackControlValue; } set { - if (value && _hint.HasFlag(PlaybackHint.DisableControlValueTracking)) - throw new InvalidOperationException($"Can't enable control value tracking due to the '{PlaybackHint.DisableControlValueTracking}' hint has been specified on the playback creation."); - if (_playbackDataTracker.TrackControlValue == value) return; @@ -860,25 +831,6 @@ private bool TryToMoveToSnapPoint(SnapPoint snapPoint) private void SendTrackedData(PlaybackDataTracker.TrackedParameterType trackedParameterType = PlaybackDataTracker.TrackedParameterType.All) { - if (_hint.HasFlag(PlaybackHint.DisableDataTracking)) - return; - - switch (trackedParameterType) - { - case PlaybackDataTracker.TrackedParameterType.Program: - if (_hint.HasFlag(PlaybackHint.DisableProgramTracking)) - return; - break; - case PlaybackDataTracker.TrackedParameterType.PitchValue: - if (_hint.HasFlag(PlaybackHint.DisablePitchValueTracking)) - return; - break; - case PlaybackDataTracker.TrackedParameterType.ControlValue: - if (_hint.HasFlag(PlaybackHint.DisableControlValueTracking)) - return; - break; - } - foreach (var eventWithMetadata in _playbackDataTracker.GetEventsAtTime(_clock.CurrentTime, trackedParameterType)) { PlayEvent(eventWithMetadata.Event, eventWithMetadata.Metadata); @@ -962,42 +914,6 @@ private ICollection GetNotesMetadataAtCurrentTime() return notesToPlay; } - private NotePlaybackEventMetadata[] BuildNotesMetadata() - { - if (_hint.HasFlag(PlaybackHint.DisableNotesTracking)) - return new NotePlaybackEventMetadata[0]; - - var notesMetadata = new HashSet(); - - foreach (var e in _playbackEvents) - { - var noteMetadata = e.Metadata.Note; - if (noteMetadata != null) - notesMetadata.Add(noteMetadata); - } - - return notesMetadata.ToArray(); - } - - private PlaybackDataTracker BuildDataTracker() - { - var playbackDataTracker = new PlaybackDataTracker(TempoMap); - - if (_hint.HasFlag(PlaybackHint.DisableDataTracking)) - return playbackDataTracker; - - foreach (var playbackEvent in _playbackEvents) - { - playbackDataTracker.InitializeData( - playbackEvent.Event, - playbackEvent.RawTime, - playbackEvent.Metadata.TimedEvent.Metadata, - _hint); - } - - return playbackDataTracker; - } - private void OnStarted() { Started?.Invoke(this, EventArgs.Empty); @@ -1163,7 +1079,7 @@ private void SetStartTime(ITimeSpan time, int firstIndex, int lastIndex) private void PlayEvent(MidiEvent midiEvent, object metadata) { - _playbackDataTracker.UpdateCurrentData(midiEvent, metadata, _hint); + _playbackDataTracker.UpdateCurrentData(midiEvent, metadata); try { @@ -1288,14 +1204,15 @@ private PlaybackEvent[] GetPlaybackEvents(IEnumerable timedObjects return playbackEvents.OrderBy(e => e, new PlaybackEventsComparer()).ToArray(); } - private static PlaybackEvent GetPlaybackEvent(TimedEvent timedEvent, TempoMap tempoMap) + private PlaybackEvent GetPlaybackEvent(TimedEvent timedEvent, TempoMap tempoMap) { - var playbackEvent = new PlaybackEvent(timedEvent.Event, timedEvent.TimeAs(tempoMap), timedEvent.Time); + var playbackEvent = CreatePlaybackEvent(timedEvent, tempoMap); playbackEvent.Metadata.TimedEvent = new TimedEventPlaybackEventMetadata((timedEvent as IMetadata)?.Metadata); + InitializeTrackedData(playbackEvent); return playbackEvent; } - private static IEnumerable GetPlaybackEvents(Chord chord, TempoMap tempoMap) + private IEnumerable GetPlaybackEvents(Chord chord, TempoMap tempoMap) { foreach (var note in chord.Notes) { @@ -1306,7 +1223,7 @@ private static IEnumerable GetPlaybackEvents(Chord chord, TempoMa } } - private static IEnumerable GetPlaybackEvents(Note note, TempoMap tempoMap) + private IEnumerable GetPlaybackEvents(Note note, TempoMap tempoMap) { TimeSpan noteStartTime = note.TimeAs(tempoMap); TimeSpan noteEndTime = TimeConverter.ConvertTo(note.EndTime, tempoMap); @@ -1316,14 +1233,32 @@ private static IEnumerable GetPlaybackEvents(Note note, TempoMap yield return GetPlaybackEventWithNoteMetadata(note.TimedNoteOffEvent, tempoMap, noteMetadata); } - private static PlaybackEvent GetPlaybackEventWithNoteMetadata(TimedEvent timedEvent, TempoMap tempoMap, NotePlaybackEventMetadata noteMetadata) + private PlaybackEvent GetPlaybackEventWithNoteMetadata(TimedEvent timedEvent, TempoMap tempoMap, NotePlaybackEventMetadata noteMetadata) { - var playbackEvent = new PlaybackEvent(timedEvent.Event, timedEvent.TimeAs(tempoMap), timedEvent.Time); + var playbackEvent = CreatePlaybackEvent(timedEvent, tempoMap); playbackEvent.Metadata.Note = noteMetadata; playbackEvent.Metadata.TimedEvent = new TimedEventPlaybackEventMetadata((timedEvent as IMetadata)?.Metadata); + InitializeTrackedData(playbackEvent); return playbackEvent; } + private PlaybackEvent CreatePlaybackEvent(TimedEvent timedEvent, TempoMap tempoMap) + { + return new PlaybackEvent(timedEvent.Event, timedEvent.TimeAs(tempoMap), timedEvent.Time); + } + + private void InitializeTrackedData(PlaybackEvent playbackEvent) + { + _playbackDataTracker.InitializeData( + playbackEvent.Event, + playbackEvent.RawTime, + playbackEvent.Metadata.TimedEvent.Metadata); + + var noteMetadata = playbackEvent.Metadata.Note; + if (noteMetadata != null) + _notesMetadataHashSet.Add(noteMetadata); + } + private void ResetPlaybackEventsPosition() { _playbackEventsPosition = -1; diff --git a/DryWetMidi/Multimedia/Playback/PlaybackDataTracker.cs b/DryWetMidi/Multimedia/Playback/PlaybackDataTracker.cs index 8706f25c0..3344baaed 100644 --- a/DryWetMidi/Multimedia/Playback/PlaybackDataTracker.cs +++ b/DryWetMidi/Multimedia/Playback/PlaybackDataTracker.cs @@ -158,28 +158,18 @@ public PlaybackDataTracker(TempoMap tempoMap) #region Methods - public void InitializeData(MidiEvent midiEvent, long time, object metadata, PlaybackHint playbackHint) + public void InitializeData(MidiEvent midiEvent, long time, object metadata) { - if (!playbackHint.HasFlag(PlaybackHint.DisableProgramTracking)) - InitializeProgramChangeData(midiEvent as ProgramChangeEvent, time, metadata); - - if (!playbackHint.HasFlag(PlaybackHint.DisablePitchValueTracking)) - InitializePitchBendData(midiEvent as PitchBendEvent, time, metadata); - - if (!playbackHint.HasFlag(PlaybackHint.DisableControlValueTracking)) - InitializeControlData(midiEvent as ControlChangeEvent, time, metadata); + InitializeProgramChangeData(midiEvent as ProgramChangeEvent, time, metadata); + InitializePitchBendData(midiEvent as PitchBendEvent, time, metadata); + InitializeControlData(midiEvent as ControlChangeEvent, time, metadata); } - public void UpdateCurrentData(MidiEvent midiEvent, object metadata, PlaybackHint playbackHint) + public void UpdateCurrentData(MidiEvent midiEvent, object metadata) { - if (!playbackHint.HasFlag(PlaybackHint.DisableProgramTracking)) - UpdateCurrentProgramChangeData(midiEvent as ProgramChangeEvent, metadata); - - if (!playbackHint.HasFlag(PlaybackHint.DisablePitchValueTracking)) - UpdateCurrentPitchBendData(midiEvent as PitchBendEvent, metadata); - - if (!playbackHint.HasFlag(PlaybackHint.DisableControlValueTracking)) - UpdateCurrentControlData(midiEvent as ControlChangeEvent, metadata); + UpdateCurrentProgramChangeData(midiEvent as ProgramChangeEvent, metadata); + UpdateCurrentPitchBendData(midiEvent as PitchBendEvent, metadata); + UpdateCurrentControlData(midiEvent as ControlChangeEvent, metadata); } public IEnumerable GetEventsAtTime(TimeSpan time, TrackedParameterType trackedParameterType) diff --git a/DryWetMidi/Multimedia/Playback/PlaybackHint.cs b/DryWetMidi/Multimedia/Playback/PlaybackHint.cs deleted file mode 100644 index dad788caf..000000000 --- a/DryWetMidi/Multimedia/Playback/PlaybackHint.cs +++ /dev/null @@ -1,52 +0,0 @@ -using System; - -namespace Melanchall.DryWetMidi.Multimedia -{ - /// - /// Provide a hint for a playback creation. The hint can improve performance if you don't need - /// some features of the . - /// - [Flags] - public enum PlaybackHint - { - /// - /// Enable usage of all features of the . - /// - Default = 0, - - /// - /// Disable usage of notes tracking. You won't be able to set - /// to true. - /// - DisableNotesTracking = 1, - - /// - /// Disable usage of program tracking. You won't be able to set - /// to true. - /// - DisableProgramTracking = 1 << 1, - - /// - /// Disable usage of pitch value tracking. You won't be able to set - /// to true. - /// - DisablePitchValueTracking = 1 << 2, - - /// - /// Disable usage of control value tracking. You won't be able to set - /// to true. - /// - DisableControlValueTracking = 1 << 3, - - /// - /// Disable usage of data tracking at all. Includes , - /// , and - /// . - /// - DisableDataTracking = - DisableNotesTracking | - DisableProgramTracking | - DisablePitchValueTracking | - DisableControlValueTracking - } -} diff --git a/DryWetMidi/Multimedia/Playback/PlaybackSettings.cs b/DryWetMidi/Multimedia/Playback/PlaybackSettings.cs index 0c5e5c212..f7afb825e 100644 --- a/DryWetMidi/Multimedia/Playback/PlaybackSettings.cs +++ b/DryWetMidi/Multimedia/Playback/PlaybackSettings.cs @@ -26,12 +26,6 @@ public sealed class PlaybackSettings /// public NoteDetectionSettings NoteDetectionSettings { get; set; } - /// - /// Gets or sets a hint for a playback creation. The hint can improve performance if you don't need - /// some features of the . - /// - public PlaybackHint Hint { get; set; } = PlaybackHint.Default; - #endregion } }