Search Results for

    Show / Hide Table of Contents

    Class Note

    Represents a musical note.
    Inheritance
    object
    Note
    Implements
    ILengthedObject
    ITimedObject
    IMusicalObject
    INotifyTimeChanged
    INotifyLengthChanged
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    Namespace: Melanchall.DryWetMidi.Interaction
    Assembly: Melanchall.DryWetMidi.dll
    Syntax
    public class Note : ILengthedObject, ITimedObject, IMusicalObject, INotifyTimeChanged, INotifyLengthChanged

    Constructors

    Note(SevenBitNumber)

    Initializes a new instance of the Note with the specified note number.
    Declaration
    public Note(SevenBitNumber noteNumber)
    Parameters
    Type Name Description
    SevenBitNumber noteNumber Number of the note (60 is middle C).

    Note(SevenBitNumber, long)

    Initializes a new instance of the Note with the specified note number and length.
    Declaration
    public Note(SevenBitNumber noteNumber, long length)
    Parameters
    Type Name Description
    SevenBitNumber noteNumber Number of the note (60 is middle C).
    long length Length of the note in units defined by time division of a MIDI file.

    Note(SevenBitNumber, long, long)

    Initializes a new instance of the Note with the specified note number, length and absolute time.
    Declaration
    public Note(SevenBitNumber noteNumber, long length, long time)
    Parameters
    Type Name Description
    SevenBitNumber noteNumber Number of the note (60 is middle C).
    long length Length of the note in units defined by time division of a MIDI file.
    long time Absolute time of the note in units defined by the time division of a MIDI file.

    Note(TimedEvent, TimedEvent)

    Initializes a new instance of the Note with the specified pair of timed events holding corresponding NoteOnEvent and NoteOffEvent events.
    Declaration
    public Note(TimedEvent timedNoteOnEvent, TimedEvent timedNoteOffEvent)
    Parameters
    Type Name Description
    TimedEvent timedNoteOnEvent TimedEvent holding NoteOnEvent event of a note.
    TimedEvent timedNoteOffEvent TimedEvent holding NoteOffEvent event of a note.
    Exceptions
    Type Condition
    ArgumentOutOfRangeException

    One of the following errors occurred:

    • Underlying event of the timedNoteOnEvent is not NoteOnEvent.
    • Underlying event of the timedNoteOffEvent is not NoteOffEvent.
    • timedNoteOffEvent goes before timedNoteOnEvent.

    Note(NoteName, int)

    Initializes a new instance of the Note with the specified note name and octave.
    Declaration
    public Note(NoteName noteName, int octave)
    Parameters
    Type Name Description
    NoteName noteName Name of the note.
    int octave Number of the octave in scientific pitch notation.
    Remarks
    Octave number is specified in scientific pitch notation which means that 4 must be passed to octave to get the middle C.
    Exceptions
    Type Condition
    InvalidEnumArgumentException noteName specified an invalid value.
    ArgumentException Note number is out of range for the specified note name and octave.

    Note(NoteName, int, long)

    Initializes a new instance of the Note with the specified note name, octave and length.
    Declaration
    public Note(NoteName noteName, int octave, long length)
    Parameters
    Type Name Description
    NoteName noteName Name of the note.
    int octave Number of the octave in scientific pitch notation.
    long length Length of the note in units defined by time division of a MIDI file.
    Remarks
    Octave number is specified in scientific pitch notation which means that 4 must be passed to octave to get the middle C.
    Exceptions
    Type Condition
    InvalidEnumArgumentException noteName specified an invalid value.
    ArgumentException Note number is out of range for the specified note name and octave.

    Note(NoteName, int, long, long)

    Initializes a new instance of the Note with the specified note name, octave, length and absolute time.
    Declaration
    public Note(NoteName noteName, int octave, long length, long time)
    Parameters
    Type Name Description
    NoteName noteName Name of the note.
    int octave Number of the octave in scientific pitch notation.
    long length Length of the note in units defined by time division of a MIDI file.
    long time Absolute time of the note in units defined by the time division of a MIDI file.
    Remarks
    Octave number is specified in scientific pitch notation which means that 4 must be passed to octave to get the middle C.
    Exceptions
    Type Condition
    InvalidEnumArgumentException noteName specified an invalid value.
    ArgumentException Note number is out of range for the specified note name and octave.

    Fields

    DefaultOffVelocity

    Default off velocity (velocity of underlying NoteOffEvent event).
    Declaration
    public static readonly SevenBitNumber DefaultOffVelocity
    Field Value
    Type Description
    SevenBitNumber

    DefaultVelocity

    Default velocity (velocity of underlying NoteOnEvent event).
    Declaration
    public static readonly SevenBitNumber DefaultVelocity
    Field Value
    Type Description
    SevenBitNumber

    Properties

    Channel

    Gets or sets channel to play the note on.
    Declaration
    public FourBitNumber Channel { get; set; }
    Property Value
    Type Description
    FourBitNumber

    EndTime

    Gets the end time of an object.
    Declaration
    public long EndTime { get; }
    Property Value
    Type Description
    long

    Length

    Gets or sets the length of the note in units defined by the time division of a MIDI file.
    Declaration
    public long Length { get; set; }
    Property Value
    Type Description
    long
    Remarks
    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.
    Exceptions
    Type Condition
    ArgumentOutOfRangeException value is negative.

    NoteName

    Gets name of the note.
    Declaration
    public NoteName NoteName { get; }
    Property Value
    Type Description
    NoteName

    NoteNumber

    Gets or sets number of the note (60 is middle C).
    Declaration
    public SevenBitNumber NoteNumber { get; set; }
    Property Value
    Type Description
    SevenBitNumber

    Octave

    Gets octave of the note.
    Declaration
    public int Octave { get; }
    Property Value
    Type Description
    int

    OffVelocity

    Gets or sets velocity of the underlying NoteOffEvent.
    Declaration
    public SevenBitNumber OffVelocity { get; set; }
    Property Value
    Type Description
    SevenBitNumber

    Time

    Gets or sets absolute time of the note in units defined by the time division of a MIDI file.
    Declaration
    public long Time { get; set; }
    Property Value
    Type Description
    long
    Remarks
    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.
    Exceptions
    Type Condition
    ArgumentOutOfRangeException value is negative.

    Velocity

    Gets or sets velocity of the underlying NoteOnEvent.
    Declaration
    public SevenBitNumber Velocity { get; set; }
    Property Value
    Type Description
    SevenBitNumber

    Methods

    Clone()

    Clones object by creating a copy of it.
    Declaration
    public virtual ITimedObject Clone()
    Returns
    Type Description
    ITimedObject Copy of the object.

    GetTimedNoteOffEvent()

    Gets the 'Note Off' timed event of the current note.
    Declaration
    public TimedEvent GetTimedNoteOffEvent()
    Returns
    Type Description
    TimedEvent The 'Note Off' timed event of the current note.

    GetTimedNoteOnEvent()

    Gets the 'Note On' timed event of the current note.
    Declaration
    public TimedEvent GetTimedNoteOnEvent()
    Returns
    Type Description
    TimedEvent The 'Note On' timed event of the current note.

    SetNoteNameAndOctave(NoteName, int)

    Sets note name and octave for current Note.
    Declaration
    public void SetNoteNameAndOctave(NoteName noteName, int octave)
    Parameters
    Type Name Description
    NoteName noteName Name of the note.
    int octave Number of the octave in scientific pitch notation.
    Remarks
    Octave number is specified in scientific pitch notation which means that 4 must be passed to octave to get the number of the middle C.
    Exceptions
    Type Condition
    InvalidEnumArgumentException noteName specified an invalid value.
    ArgumentException Note number is out of range for the specified note name and octave.

    Split(long)

    Splits the current object by the specified time.
    Declaration
    public SplitLengthedObject Split(long time)
    Parameters
    Type Name Description
    long time Time to split the object at.
    Returns
    Type Description
    SplitLengthedObject An object containing left and right parts of the split object. Both parts have the same type as the original object.
    Remarks

    If time is less than or equal to time of the object, the left part will be null. If time 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:

    Time to split atLeft partRight 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 20Copy 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.

    Exceptions
    Type Condition
    ArgumentOutOfRangeException time is negative.

    ToString()

    Returns a string that represents the current object.
    Declaration
    public override string ToString()
    Returns
    Type Description
    string A string that represents the current object.
    Overrides
    object.ToString()

    Events

    LengthChanged

    Occurs when the length of an object has been changed.
    Declaration
    public event EventHandler<LengthChangedEventArgs> LengthChanged
    Event Type
    Type Description
    EventHandler<LengthChangedEventArgs>

    TimeChanged

    Occurs when the time of an object has been changed.
    Declaration
    public event EventHandler<TimeChangedEventArgs> TimeChanged
    Event Type
    Type Description
    EventHandler<TimeChangedEventArgs>

    Implements

    ILengthedObject
    ITimedObject
    IMusicalObject
    INotifyTimeChanged
    INotifyLengthChanged

    Extension Methods

    LengthedObjectUtilities.EndTimeAs(ILengthedObject, TimeSpanType, TempoMap)
    LengthedObjectUtilities.EndTimeAs<TTime>(ILengthedObject, TempoMap)
    LengthedObjectUtilities.LengthAs(ILengthedObject, TimeSpanType, TempoMap)
    LengthedObjectUtilities.LengthAs<TLength>(ILengthedObject, TempoMap)
    TimedObjectUtilities.TimeAs(ITimedObject, TimeSpanType, TempoMap)
    TimedObjectUtilities.TimeAs<TTime>(ITimedObject, TempoMap)
    LengthedObjectUtilities.SetLength<TObject>(TObject, ITimeSpan, TempoMap)
    NotesManagingUtilities.GetMusicTheoryNote(Note)
    TimedObjectUtilities.SetTime<TObject>(TObject, ITimeSpan, TempoMap)
    In this article
    Back to top 2024 / Generated by DocFX