From 7dc6323f121a6ffe83ac7a4f18d981ae57000c4b Mon Sep 17 00:00:00 2001 From: "Maxim K. Dobroselsky" Date: Sat, 11 Jun 2022 15:40:21 +0300 Subject: [PATCH] [Docs] Improved docs on time spans --- .../BarBeatFractionTimeSpan.md | 22 --- .../BarBeatTicksTimeSpan.md | 22 --- .../high-level-managing/MetricTimeSpan.md | 55 ------ .../high-level-managing/MidiTimeSpan.md | 19 -- .../high-level-managing/MusicalTimeSpan.md | 31 ---- .../high-level-managing/Objects-managers.md | 2 +- ...-length-overview.md => Time-and-length.md} | 162 +++++++++++++++++- Docs/articles/toc.md | 8 +- Docs/articles/tools/Resizer.md | 2 +- .../TimeSpan/Converters/LengthConverter.cs | 1 + .../TimeSpan/Converters/TimeConverter.cs | 1 + .../BarBeatFractionTimeSpan.cs | 3 +- .../Representations/BarBeatTicksTimeSpan.cs | 3 +- .../Representations/MetricTimeSpan.cs | 3 +- .../TimeSpan/Representations/MidiTimeSpan.cs | 3 +- .../Representations/MusicalTimeSpan.cs | 3 +- .../TimeSpan/TimeSpanRoundingPolicy.cs | 4 +- .../Interaction/TimeSpan/TimeSpanType.cs | 15 +- 18 files changed, 182 insertions(+), 177 deletions(-) delete mode 100644 Docs/articles/high-level-managing/BarBeatFractionTimeSpan.md delete mode 100644 Docs/articles/high-level-managing/BarBeatTicksTimeSpan.md delete mode 100644 Docs/articles/high-level-managing/MetricTimeSpan.md delete mode 100644 Docs/articles/high-level-managing/MidiTimeSpan.md delete mode 100644 Docs/articles/high-level-managing/MusicalTimeSpan.md rename Docs/articles/high-level-managing/{Time-and-length-overview.md => Time-and-length.md} (58%) diff --git a/Docs/articles/high-level-managing/BarBeatFractionTimeSpan.md b/Docs/articles/high-level-managing/BarBeatFractionTimeSpan.md deleted file mode 100644 index a58e5fb64..000000000 --- a/Docs/articles/high-level-managing/BarBeatFractionTimeSpan.md +++ /dev/null @@ -1,22 +0,0 @@ -# BarBeatFractionTimeSpan - -[BarBeatFractionTimeSpan](xref:Melanchall.DryWetMidi.Interaction.BarBeatFractionTimeSpan) represents a time span as a number of bars and fractional beats (for example, `0.5` beats). - -## Parsing - -Following strings can be parsed to `BarBeatFractionTimeSpan`: - -`Bars_BeatsIntegerPart.BeatsFractionalPart` - -where - -* **Bars** is a number of bars. -* **BeatsIntegerPart** is an integer part of fractional beats number. -* **BeatsFractionalPart** is a fractional part of fractional beats number. - -Examples: - -`0_0.0` – zero time span -`1_0.0` – 1 bar -`0_10.5` – 10.5 beats -`100_20.2` – 100 bars and 20.2 beats \ No newline at end of file diff --git a/Docs/articles/high-level-managing/BarBeatTicksTimeSpan.md b/Docs/articles/high-level-managing/BarBeatTicksTimeSpan.md deleted file mode 100644 index 9f4016c5c..000000000 --- a/Docs/articles/high-level-managing/BarBeatTicksTimeSpan.md +++ /dev/null @@ -1,22 +0,0 @@ -# BarBeatTicksTimeSpan - -[BarBeatTicksTimeSpan](xref:Melanchall.DryWetMidi.Interaction.BarBeatTicksTimeSpan) represents a time span as a number of bars, beats and MIDI ticks. - -## Parsing - -Following strings can be parsed to `BarBeatTicksTimeSpan`: - -`Bars.Beats.Ticks` - -where - -* **Bars** is a number of bars. -* **Beats** is a number of beats. -* **Ticks** is a number of MIDI ticks. - -Examples: - -`0.0.0` – zero time span -`1.0.0` – 1 bar -`0.10.5` – 10 beats and 5 ticks -`100.20.0` – 100 bars and 20 ticks \ No newline at end of file diff --git a/Docs/articles/high-level-managing/MetricTimeSpan.md b/Docs/articles/high-level-managing/MetricTimeSpan.md deleted file mode 100644 index 6650d1a95..000000000 --- a/Docs/articles/high-level-managing/MetricTimeSpan.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -uid: a_ts_metric ---- - -# MetricTimeSpan - -[MetricTimeSpan](xref:Melanchall.DryWetMidi.Interaction.MetricTimeSpan) represents time span as a number of microseconds. - -## Parsing - -Following strings can be parsed to `MetricTimeSpan`: - -`Hours : Minutes : Seconds : Milliseconds` -`HoursGroup : Minutes : Seconds` -`Minutes : Seconds` -`Hours h Minutes m Seconds s Milliseconds ms` -`Hours h Minutes m Seconds s` -`Hours h Minutes m Milliseconds ms` -`Hours h Seconds s Milliseconds ms` -`Minutes m Seconds s Milliseconds ms` -`Hours h Minutes m` -`Hours h Seconds s` -`Hours h Milliseconds ms` -`Minutes m Seconds s` -`Hours h Milliseconds ms` -`Seconds s Milliseconds ms` -`Hours h` -`Minutes m` -`Seconds s` -`Milliseconds ms` - -where - -* **Hours** is a number of hours. -* **Minutes** is a number of minutes. -* **Seconds** is a number of seconds. -* **Milliseconds** is a number of milliseconds. - -Examples: - -`0:0:0:0` – zero time span -`0:0:0:156` – 156 milliseconds -`2:0:156` – 2 hours and 156 seconds -`1:156` – 1 minute and 156 seconds -`1h2m3s4ms` – 1 hour 2 minutes 3 seconds 4 milliseconds -`1h 2m3s` – 1 hour 2 minutes 3 seconds -`1h2M 4ms` – 1 hour 2 minutes 4 milliseconds -`1 h3s4ms` – 1 hour 3 seconds 4 milliseconds -`2M3 S 4 MS` – 2 minutes 3 seconds 4 milliseconds -`1h2m` – 1 hour 2 minutes -`1h 3s` – 1 hour 3 seconds -`1h4MS` – 1 hour 4 milliseconds -`2M3s` – 2 minutes 3 seconds -`2 m 4 Ms` – 2 minutes 4 milliseconds -`3 s 4 mS` – 2 seconds 4 milliseconds \ No newline at end of file diff --git a/Docs/articles/high-level-managing/MidiTimeSpan.md b/Docs/articles/high-level-managing/MidiTimeSpan.md deleted file mode 100644 index fc994b5f4..000000000 --- a/Docs/articles/high-level-managing/MidiTimeSpan.md +++ /dev/null @@ -1,19 +0,0 @@ -# MidiTimeSpan - -[MidiTimeSpan](xref:Melanchall.DryWetMidi.Interaction.MidiTimeSpan) exists for unification purposes and simply holds long value in units defined by the time division of a MIDI file. - -## Parsing - -Following strings can be parsed to `MidiTimeSpan`: - -`Value` - -where - -* **Value** is a number of MIDI ticks. - -Examples: - -`0` – zero time span -`100` – 100 ticks -`123456` – 123456 ticks \ No newline at end of file diff --git a/Docs/articles/high-level-managing/MusicalTimeSpan.md b/Docs/articles/high-level-managing/MusicalTimeSpan.md deleted file mode 100644 index f6e3a3fc2..000000000 --- a/Docs/articles/high-level-managing/MusicalTimeSpan.md +++ /dev/null @@ -1,31 +0,0 @@ -# MusicalTimeSpan - -[MusicalTimeSpan](xref:Melanchall.DryWetMidi.Interaction.MusicalTimeSpan) represents a time span as a fraction of the whole note, for example, 1/4 (quarter note length). - -## Parsing - -Following strings can be parsed to `MusicalTimeSpan`: - -`Fraction Tuplet Dots` - -where - -* **Fraction** defines note length which is one of the following terms: - * `Numerator/Denominator` where **Numerator** and **Denominator** are nonnegative integer numbers; **Numerator** can be omitted assuming it's `1`; - * `w`, `h`, `q`, `e` or `s` which mean whole, half, quarter, eighth or sixteenth note length respectively. -* **Tuplet** represents tuplet definition which is one of the following terms: - * `[NotesCount : SpaceSize]` where **NotesCount** is positive integer count of notes with length defined by **Fraction** part; **SpaceSize** is the count of notes of normal length. - * `t` or `d` which mean triplet and duplet respectively. -* **Dots** is any number of dots. - -`Tuplet` and `Dots` parts can be omitted. - -Examples: - -`0/1` – zero time span -`q` – quarter note length -`1/4.` – dotted quarter note length -`/8..` – double dotted eighth note length -`wt.` – dotted whole triplet note length -`w[3:10]` – length of 3 whole notes in space of 10 notes of normal length -`s[3:10]...` – length of 3 sixteenth triple dotted notes in space of 10 notes of normal length \ No newline at end of file diff --git a/Docs/articles/high-level-managing/Objects-managers.md b/Docs/articles/high-level-managing/Objects-managers.md index 1598e4028..cd9210286 100644 --- a/Docs/articles/high-level-managing/Objects-managers.md +++ b/Docs/articles/high-level-managing/Objects-managers.md @@ -74,7 +74,7 @@ will cause changes made with the `notesManager` will be lost because `SaveChange ## Tempo map -Tempo map is a set of changes of time signature and tempo. You need to have a tempo map to convert [time and length](Time-and-length-overview.md) between different representations. Instead of messing with [Time Signature](xref:Melanchall.DryWetMidi.Core.TimeSignatureEvent) and [Set Tempo](xref:Melanchall.DryWetMidi.Core.SetTempoEvent) events DryWetMIDI provides [TempoMapManager](xref:Melanchall.DryWetMidi.Interaction.TempoMapManager) which helps to manage tempo map of a MIDI file: +Tempo map is a set of changes of time signature and tempo. You need to have a tempo map to convert [time and length](Time-and-length.md) between different representations. Instead of messing with [Time Signature](xref:Melanchall.DryWetMidi.Core.TimeSignatureEvent) and [Set Tempo](xref:Melanchall.DryWetMidi.Core.SetTempoEvent) events DryWetMIDI provides [TempoMapManager](xref:Melanchall.DryWetMidi.Interaction.TempoMapManager) which helps to manage tempo map of a MIDI file: ```csharp using (var tempoMapManager = new TempoMapManager(midiFile.TimeDivision, diff --git a/Docs/articles/high-level-managing/Time-and-length-overview.md b/Docs/articles/high-level-managing/Time-and-length.md similarity index 58% rename from Docs/articles/high-level-managing/Time-and-length-overview.md rename to Docs/articles/high-level-managing/Time-and-length.md index 08964a3e2..ec9e9ff18 100644 --- a/Docs/articles/high-level-managing/Time-and-length-overview.md +++ b/Docs/articles/high-level-managing/Time-and-length.md @@ -1,12 +1,16 @@ -# Time and length - Overview +--- +uid: a_time_length +--- + +# Time and length All times and lengths in a MIDI file are presented as some long values in units defined by the time division of a MIDI file. In practice it is much more convenient to operate by "human understandable" representations like seconds or bars/beats. In fact there is no difference between time and length since time within a MIDI file is just a length that always starts at zero, so the _time span_ term will be used to describe both time and length. DryWetMIDI provides the following classes to represent time span: -* [MetricTimeSpan](MetricTimeSpan.md) for time span in terms of microseconds; -* [BarBeatTicksTimeSpan](BarBeatTicksTimeSpan.md) for time span in terms of number of bars, beats and ticks; -* [BarBeatFractionTimeSpan](BarBeatFractionTimeSpan.md) for time span in terms of number of bars and fractional beats (for example, `0.5` beats); -* [MusicalTimeSpan](MusicalTimeSpan.md) for time span in terms of a fraction of the whole note length; -* [MidiTimeSpan](MidiTimeSpan.md) exists for unification purposes and simply holds long value in units defined by the time division of a file. +* [MetricTimeSpan](#metric) for time span in terms of microseconds; +* [BarBeatTicksTimeSpan](#bars-beats-and-ticks) for time span in terms of number of bars, beats and ticks; +* [BarBeatFractionTimeSpan](#bars-beats-and-fraction) for time span in terms of number of bars and fractional beats (for example, `0.5` beats); +* [MusicalTimeSpan](#musical) for time span in terms of a fraction of the whole note length; +* [MidiTimeSpan](#midi) exists for unification purposes and simply holds long value in units defined by the time division of a file. All time span classes implement [ITimeSpan](xref:Melanchall.DryWetMidi.Interaction.ITimeSpan) interface. @@ -121,4 +125,148 @@ ITimeSpan stretchedTimeSpan = new MetricTimeSpan(0, 0, 10).Multiply(2.5); ITimeSpan shrinkedTimeSpan = new BarBeatTicksTimeSpan(0, 2).Divide(2); ``` -There are some useful methods in the [TimeSpanUtilities](xref:Melanchall.DryWetMidi.Interaction.TimeSpanUtilities) class. These methods include `Parse` and `TryParse` ones that allows to parse a string to appropriate time span. Please read article corresponding to desired time span type to learn formats of strings that can be parsed to this type (use links at the start of this article). \ No newline at end of file +There are some useful methods in the [TimeSpanUtilities](xref:Melanchall.DryWetMidi.Interaction.TimeSpanUtilities) class. These methods include `Parse` and `TryParse` ones that allows to parse a string to appropriate time span. Please read article corresponding to desired time span type to learn formats of strings that can be parsed to this type (use links at the start of this article). + +## Representations + +DryWetMIDI provides several representations of time spans. + +### Metric + +[MetricTimeSpan](xref:Melanchall.DryWetMidi.Interaction.MetricTimeSpan) represents time span as a number of microseconds. + +Following strings can be parsed to `MetricTimeSpan`: + +`Hours : Minutes : Seconds : Milliseconds` +`HoursGroup : Minutes : Seconds` +`Minutes : Seconds` +`Hours h Minutes m Seconds s Milliseconds ms` +`Hours h Minutes m Seconds s` +`Hours h Minutes m Milliseconds ms` +`Hours h Seconds s Milliseconds ms` +`Minutes m Seconds s Milliseconds ms` +`Hours h Minutes m` +`Hours h Seconds s` +`Hours h Milliseconds ms` +`Minutes m Seconds s` +`Hours h Milliseconds ms` +`Seconds s Milliseconds ms` +`Hours h` +`Minutes m` +`Seconds s` +`Milliseconds ms` + +where + +* **Hours** is a number of hours. +* **Minutes** is a number of minutes. +* **Seconds** is a number of seconds. +* **Milliseconds** is a number of milliseconds. + +Examples: + +`0:0:0:0` – zero time span +`0:0:0:156` – 156 milliseconds +`2:0:156` – 2 hours and 156 seconds +`1:156` – 1 minute and 156 seconds +`1h2m3s4ms` – 1 hour 2 minutes 3 seconds 4 milliseconds +`1h 2m3s` – 1 hour 2 minutes 3 seconds +`1h2M 4ms` – 1 hour 2 minutes 4 milliseconds +`1 h3s4ms` – 1 hour 3 seconds 4 milliseconds +`2M3 S 4 MS` – 2 minutes 3 seconds 4 milliseconds +`1h2m` – 1 hour 2 minutes +`1h 3s` – 1 hour 3 seconds +`1h4MS` – 1 hour 4 milliseconds +`2M3s` – 2 minutes 3 seconds +`2 m 4 Ms` – 2 minutes 4 milliseconds +`3 s 4 mS` – 2 seconds 4 milliseconds + +### Bars, beats and ticks + +[BarBeatTicksTimeSpan](xref:Melanchall.DryWetMidi.Interaction.BarBeatTicksTimeSpan) represents a time span as a number of bars, beats and MIDI ticks. + +Following strings can be parsed to `BarBeatTicksTimeSpan`: + +`Bars.Beats.Ticks` + +where + +* **Bars** is a number of bars. +* **Beats** is a number of beats. +* **Ticks** is a number of MIDI ticks. + +Examples: + +`0.0.0` – zero time span +`1.0.0` – 1 bar +`0.10.5` – 10 beats and 5 ticks +`100.20.0` – 100 bars and 20 ticks + +### Bars, beats and fraction + +[BarBeatFractionTimeSpan](xref:Melanchall.DryWetMidi.Interaction.BarBeatFractionTimeSpan) represents a time span as a number of bars and fractional beats (for example, `0.5` beats). + +Following strings can be parsed to `BarBeatFractionTimeSpan`: + +`Bars_BeatsIntegerPart.BeatsFractionalPart` + +where + +* **Bars** is a number of bars. +* **BeatsIntegerPart** is an integer part of fractional beats number. +* **BeatsFractionalPart** is a fractional part of fractional beats number. + +Examples: + +`0_0.0` – zero time span +`1_0.0` – 1 bar +`0_10.5` – 10.5 beats +`100_20.2` – 100 bars and 20.2 beats + +### Musical + +[MusicalTimeSpan](xref:Melanchall.DryWetMidi.Interaction.MusicalTimeSpan) represents a time span as a fraction of the whole note, for example, 1/4 (quarter note length). + +Following strings can be parsed to `MusicalTimeSpan`: + +`Fraction Tuplet Dots` + +where + +* **Fraction** defines note length which is one of the following terms: + * `Numerator/Denominator` where **Numerator** and **Denominator** are nonnegative integer numbers; **Numerator** can be omitted assuming it's `1`; + * `w`, `h`, `q`, `e` or `s` which mean whole, half, quarter, eighth or sixteenth note length respectively. +* **Tuplet** represents tuplet definition which is one of the following terms: + * `[NotesCount : SpaceSize]` where **NotesCount** is positive integer count of notes with length defined by **Fraction** part; **SpaceSize** is the count of notes of normal length. + * `t` or `d` which mean triplet and duplet respectively. +* **Dots** is any number of dots. + +`Tuplet` and `Dots` parts can be omitted. + +Examples: + +`0/1` – zero time span +`q` – quarter note length +`1/4.` – dotted quarter note length +`/8..` – double dotted eighth note length +`wt.` – dotted whole triplet note length +`w[3:10]` – length of 3 whole notes in space of 10 notes of normal length +`s[3:10]...` – length of 3 sixteenth triple dotted notes in space of 10 notes of normal length + +### MIDI + +[MidiTimeSpan](xref:Melanchall.DryWetMidi.Interaction.MidiTimeSpan) exists for unification purposes and simply holds long value in units defined by the time division of a MIDI file. + +Following strings can be parsed to `MidiTimeSpan`: + +`Value` + +where + +* **Value** is a number of MIDI ticks. + +Examples: + +`0` – zero time span +`100` – 100 ticks +`123456` – 123456 ticks \ No newline at end of file diff --git a/Docs/articles/toc.md b/Docs/articles/toc.md index 63a0d2a19..9d215729e 100644 --- a/Docs/articles/toc.md +++ b/Docs/articles/toc.md @@ -13,13 +13,7 @@ # High-level data managing ## [Objects managers](high-level-managing/Objects-managers.md) -## Time and length -### [Overview](high-level-managing/Time-and-length-overview.md) -### [MidiTimeSpan](high-level-managing/MidiTimeSpan.md) -### [MetricTimeSpan](high-level-managing/MetricTimeSpan.md) -### [MusicalTimeSpan](high-level-managing/MusicalTimeSpan.md) -### [BarBeatTicksTimeSpan](high-level-managing/BarBeatTicksTimeSpan.md) -### [BarBeatFractionTimeSpan](high-level-managing/BarBeatFractionTimeSpan.md) +## [Time and length](high-level-managing/Time-and-length.md) ## [Getting objects](high-level-managing/Getting-objects.md) # Tools diff --git a/Docs/articles/tools/Resizer.md b/Docs/articles/tools/Resizer.md index 0748ee63a..12f0a9f0c 100644 --- a/Docs/articles/tools/Resizer.md +++ b/Docs/articles/tools/Resizer.md @@ -16,4 +16,4 @@ You use [ResizeObjectsGroup](xref:Melanchall.DryWetMidi.Tools.Resizer.ResizeObje There also [Resize](xref:Melanchall.DryWetMidi.Tools.Resizer.Resize*) methods to resize [MidiFile](xref:Melanchall.DryWetMidi.Core.MidiFile) or [TrackChunk](xref:Melanchall.DryWetMidi.Core.TrackChunk). -If you're resizing a group or file to the specified length, please take care of the distance calculation type which can be set via [ObjectsGroupResizingSettings.DistanceCalculationType](xref:Melanchall.DryWetMidi.Tools.ObjectsGroupResizingSettings.DistanceCalculationType) property of the settings that you can pass to the tool's methods. For example, if you specify new length as a [metric](xref:a_ts_metric) one - `10` seconds - it worth to set `DistanceCalculationType` to the [TimeSpanType.Metric](xref:Melanchall.DryWetMidi.Interaction.TimeSpanType.Metric) value. \ No newline at end of file +If you're resizing a group or file to the specified length, please take care of the distance calculation type which can be set via [ObjectsGroupResizingSettings.DistanceCalculationType](xref:Melanchall.DryWetMidi.Tools.ObjectsGroupResizingSettings.DistanceCalculationType) property of the settings that you can pass to the tool's methods. For example, if you specify new length as a [metric](xref:a_time_length#metric) one - `10` seconds - it worth to set `DistanceCalculationType` to the [TimeSpanType.Metric](xref:Melanchall.DryWetMidi.Interaction.TimeSpanType.Metric) value. \ No newline at end of file diff --git a/DryWetMidi/Interaction/TimeSpan/Converters/LengthConverter.cs b/DryWetMidi/Interaction/TimeSpan/Converters/LengthConverter.cs index c730c303d..0ce886b3c 100644 --- a/DryWetMidi/Interaction/TimeSpan/Converters/LengthConverter.cs +++ b/DryWetMidi/Interaction/TimeSpan/Converters/LengthConverter.cs @@ -6,6 +6,7 @@ namespace Melanchall.DryWetMidi.Interaction { /// /// Provides a way to convert the length of an object from one representation to another. + /// More info in the Time and length article. /// public static class LengthConverter { diff --git a/DryWetMidi/Interaction/TimeSpan/Converters/TimeConverter.cs b/DryWetMidi/Interaction/TimeSpan/Converters/TimeConverter.cs index a03f78b3c..2ca9de0a0 100644 --- a/DryWetMidi/Interaction/TimeSpan/Converters/TimeConverter.cs +++ b/DryWetMidi/Interaction/TimeSpan/Converters/TimeConverter.cs @@ -6,6 +6,7 @@ namespace Melanchall.DryWetMidi.Interaction { /// /// Provides a way to convert the time of an object from one representation to another. + /// More info in the Time and length article. /// public static class TimeConverter { diff --git a/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatFractionTimeSpan.cs b/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatFractionTimeSpan.cs index 97c2ed717..362cd29de 100644 --- a/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatFractionTimeSpan.cs +++ b/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatFractionTimeSpan.cs @@ -6,7 +6,8 @@ namespace Melanchall.DryWetMidi.Interaction { /// - /// Represents bar/beat time span which represents bars and fractional beats. + /// Represents bar/beat time span which represents bars and fractional beats. More info in the + /// Time and length: Representations: Bars, beats and fraction article. /// public sealed class BarBeatFractionTimeSpan : ITimeSpan, IComparable, IEquatable { diff --git a/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatTicksTimeSpan.cs b/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatTicksTimeSpan.cs index 6d5dbeeac..c7d109063 100644 --- a/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatTicksTimeSpan.cs +++ b/DryWetMidi/Interaction/TimeSpan/Representations/BarBeatTicksTimeSpan.cs @@ -5,7 +5,8 @@ namespace Melanchall.DryWetMidi.Interaction { /// - /// Represents bar/beat time span which represents bars, beats and ticks. + /// Represents bar/beat time span which represents bars, beats and ticks. More info in the + /// Time and length: Representations: Bars, beats and ticks article. /// public sealed class BarBeatTicksTimeSpan : ITimeSpan, IComparable, IEquatable { diff --git a/DryWetMidi/Interaction/TimeSpan/Representations/MetricTimeSpan.cs b/DryWetMidi/Interaction/TimeSpan/Representations/MetricTimeSpan.cs index 7316d7fc1..a83b5c5c4 100644 --- a/DryWetMidi/Interaction/TimeSpan/Representations/MetricTimeSpan.cs +++ b/DryWetMidi/Interaction/TimeSpan/Representations/MetricTimeSpan.cs @@ -5,7 +5,8 @@ namespace Melanchall.DryWetMidi.Interaction { /// - /// Represents metric time span which represents hours, minutes and seconds. + /// Represents metric time span which represents hours, minutes and seconds. More info in the + /// Time and length: Representations: Metric article. /// public sealed class MetricTimeSpan : ITimeSpan, IComparable, IEquatable { diff --git a/DryWetMidi/Interaction/TimeSpan/Representations/MidiTimeSpan.cs b/DryWetMidi/Interaction/TimeSpan/Representations/MidiTimeSpan.cs index 6c2eb4492..86f3ab968 100644 --- a/DryWetMidi/Interaction/TimeSpan/Representations/MidiTimeSpan.cs +++ b/DryWetMidi/Interaction/TimeSpan/Representations/MidiTimeSpan.cs @@ -6,7 +6,8 @@ namespace Melanchall.DryWetMidi.Interaction { /// /// Represents a time span as an amount of time measured in units of the time division - /// of a MIDI file. + /// of a MIDI file. More info in the + /// Time and length: Representations: MIDI article. /// public sealed class MidiTimeSpan : ITimeSpan, IComparable, IEquatable { diff --git a/DryWetMidi/Interaction/TimeSpan/Representations/MusicalTimeSpan.cs b/DryWetMidi/Interaction/TimeSpan/Representations/MusicalTimeSpan.cs index c3f61cef5..3f1cea0cd 100644 --- a/DryWetMidi/Interaction/TimeSpan/Representations/MusicalTimeSpan.cs +++ b/DryWetMidi/Interaction/TimeSpan/Representations/MusicalTimeSpan.cs @@ -5,7 +5,8 @@ namespace Melanchall.DryWetMidi.Interaction { /// - /// Represents a time span as a fraction of the whole note's length. + /// Represents a time span as a fraction of the whole note's length. More info in the + /// Time and length: Representations: Musical article. /// public sealed class MusicalTimeSpan : ITimeSpan, IComparable, IEquatable { diff --git a/DryWetMidi/Interaction/TimeSpan/TimeSpanRoundingPolicy.cs b/DryWetMidi/Interaction/TimeSpan/TimeSpanRoundingPolicy.cs index d8034d427..123bb6c84 100644 --- a/DryWetMidi/Interaction/TimeSpan/TimeSpanRoundingPolicy.cs +++ b/DryWetMidi/Interaction/TimeSpan/TimeSpanRoundingPolicy.cs @@ -13,7 +13,7 @@ namespace Melanchall.DryWetMidi.Interaction /// /// /// 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 + /// to the time span. Following table shows how time span 0:0:10 will be /// rounded using different steps: /// /// @@ -38,7 +38,7 @@ namespace Melanchall.DryWetMidi.Interaction /// /// /// 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 + /// to the time span. Following table shows how time span 0:0:10 will be /// rounded using different steps: /// /// diff --git a/DryWetMidi/Interaction/TimeSpan/TimeSpanType.cs b/DryWetMidi/Interaction/TimeSpan/TimeSpanType.cs index 4b3910adc..86a251fb4 100644 --- a/DryWetMidi/Interaction/TimeSpan/TimeSpanType.cs +++ b/DryWetMidi/Interaction/TimeSpan/TimeSpanType.cs @@ -6,28 +6,33 @@ public enum TimeSpanType { /// - /// Metric time span which represents hours, minutes and seconds. + /// Metric time span which represents hours, minutes and seconds. More info in the + /// Time and length: Representations: Metric article. /// Metric, /// - /// Musical time span which represents a fraction of the whole note's length. + /// Musical time span which represents a fraction of the whole note's length. More info in the + /// Time and length: Representations: Musical article. /// Musical, /// - /// Bar/beat time span which represents bars, beats and ticks. + /// Bar/beat time span which represents bars, beats and ticks. More info in the + /// Time and length: Representations: Bars, beats and ticks article. /// BarBeatTicks, /// - /// Bar/beat time span which represents bars and fractional beats (for example, 1.5 beats). + /// 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. /// BarBeatFraction, /// /// MIDI time span which represnts an amount of time measured in units of the time division - /// of a MIDI file. + /// of a MIDI file. More info in the + /// Time and length: Representations: MIDI article. /// Midi }