MUSX Document Model
Loading...
Searching...
No Matches
musx::dom::NoteInfoPtr Class Reference

Wraps an EntryInfo instance and a note index. More...

#include <Entries.h>

Public Member Functions

 NoteInfoPtr ()
 Default constructor.
 
 NoteInfoPtr (const EntryInfoPtr &entryInfo, size_t noteIndex)
 Constructor.
 
 operator bool () const
 Provides a boolean conversion based on whether the EntryInfoPtr is valid and the note index is valid.
 
bool isSameNote (const NoteInfoPtr &src) const
 Returns whether the input and the current instance refer to the same note.
 
NoteInfoPtr findEqualPitch (const EntryInfoPtr &entry) const
 Finds a note with the same pitch in the supplied entry.
 
std::shared_ptr< const Noteoperator-> () const
 Allows -> access to the underlying Note instance.
 
EntryInfoPtr getEntryInfo () const
 Gets the entry info for this note.
 
Note::NoteProperties calcNoteProperties (const std::optional< bool > &enharmonicRespell=std::nullopt) const
 Calculates the note name, octave number, actual alteration, and staff position. This function does not take into account percussion notes and their staff position override. To discover if a note is a percussion note, call calcPercussionNoteInfo. If it returns non-null, use that for staff position instead of this function.
 
Note::NoteProperties calcNotePropertiesConcert () const
 Calculates the note name, octave number, actual alteration, and staff position for the concert pitch of the note. This function does not take into account percussion notes and their staff position override. To discover if a note is a percussion note, call calcPercussionNoteInfo. If it returns non-null, use that for staff position instead of this function.
 
Note::NoteProperties calcNotePropertiesInView () const
 Calculates the note name, octave number, actual alteration, and staff position for the pitch of the note in view. This may be particularly useful with non-floating rests, but it can be used with any note. As with other versions of the function, it does not handle the staff position override of percussion notes.
 
std::shared_ptr< others::PercussionNoteInfocalcPercussionNoteInfo () const
 Calculates the percussion note info for this note, if any.
 
NoteInfoPtr calcTieTo () const
 Calculates the note that this note could tie to. Check the return value's Note::tieEnd to see if there is actually a tie end.
 
NoteInfoPtr calcTieFrom () const
 Calculates the note that this note could tie from. Check the return value's Note::tieStart to see if there is actually a tie.
 
InstCmper calcStaff () const
 Calculates the staff number, taking into account cross staffing.
 
std::unique_ptr< music_theory::TransposercreateTransposer () const
 Creates a transposer for this Note instance.
 
NoteInfoPtr getNext () const
 Gets the next note in a chord on the same entry.
 
NoteInfoPtr getPrevious () const
 Gets the next note in a chord on the same entry.
 
bool calcIsEnharmonicRespell () const
 Returns if this note is enharmonically respelled in the current part view.
 
std::pair< int, int > calcDefaultEnharmonic () const
 Calculates the default enharmonic equivalent of this note. This is the value that Finale uses when details::NoteAlterations::enharmonic is true.
 

Detailed Description

Wraps an EntryInfo instance and a note index.

Constructor & Destructor Documentation

◆ NoteInfoPtr()

musx::dom::NoteInfoPtr::NoteInfoPtr ( const EntryInfoPtr entryInfo,
size_t  noteIndex 
)
inline

Constructor.

Parameters
entryInfoThe entry info containing the note.
noteIndexThe index of this note within Entry::notes.

Member Function Documentation

◆ calcDefaultEnharmonic()

std::pair< int, int > musx::dom::NoteInfoPtr::calcDefaultEnharmonic ( ) const
inline

Calculates the default enharmonic equivalent of this note. This is the value that Finale uses when details::NoteAlterations::enharmonic is true.

Normally you do not have to call this function directly. It is called inside calcNoteProperties. But the function is available if you need it.

Returns
A std::pair containing
  • int: the enharmonic equivalent's displacement value relative to the tonic.
  • int: the enharmonic equivalent's alteration value relative to the key signature.

◆ calcNoteProperties()

Note::NoteProperties musx::dom::NoteInfoPtr::calcNoteProperties ( const std::optional< bool > &  enharmonicRespell = std::nullopt) const

Calculates the note name, octave number, actual alteration, and staff position. This function does not take into account percussion notes and their staff position override. To discover if a note is a percussion note, call calcPercussionNoteInfo. If it returns non-null, use that for staff position instead of this function.

Note
In Finale, the default whole rest staff position is the middle staff line. Other music notation systems frequently expect the standard whole rest staff position to be the second line from the top. You may need to interpolate the staff position returned by calcNoteProperties for whole rests.
Parameters
enharmonicRespellIf supplied, return the default enharmonic respelling based on this value. If omitted, this value is calculated automatically based on the score or part settings. Normally you will omit it.
Returns
Note::NoteProperties

◆ calcNotePropertiesConcert()

Note::NoteProperties musx::dom::NoteInfoPtr::calcNotePropertiesConcert ( ) const

Calculates the note name, octave number, actual alteration, and staff position for the concert pitch of the note. This function does not take into account percussion notes and their staff position override. To discover if a note is a percussion note, call calcPercussionNoteInfo. If it returns non-null, use that for staff position instead of this function.

Returns
Note::NoteProperties

◆ calcNotePropertiesInView()

Note::NoteProperties musx::dom::NoteInfoPtr::calcNotePropertiesInView ( ) const

Calculates the note name, octave number, actual alteration, and staff position for the pitch of the note in view. This may be particularly useful with non-floating rests, but it can be used with any note. As with other versions of the function, it does not handle the staff position override of percussion notes.

Returns
Note::NoteProperties

◆ calcPercussionNoteInfo()

std::shared_ptr< others::PercussionNoteInfo > musx::dom::NoteInfoPtr::calcPercussionNoteInfo ( ) const

Calculates the percussion note info for this note, if any.

Returns
If the note is on a percussion staff and has percussion note info assigned, returns it. Otherwise nullptr.

◆ calcTieFrom()

NoteInfoPtr musx::dom::NoteInfoPtr::calcTieFrom ( ) const

Calculates the note that this note could tie from. Check the return value's Note::tieStart to see if there is actually a tie.

Returns
The candidate note or an empty NoteInfoPtr if no candidate was found.

◆ calcTieTo()

NoteInfoPtr musx::dom::NoteInfoPtr::calcTieTo ( ) const

Calculates the note that this note could tie to. Check the return value's Note::tieEnd to see if there is actually a tie end.

Returns
The candidate note or an empty NoteInfoPtr if no candidate was found.

◆ createTransposer()

std::unique_ptr< music_theory::Transposer > musx::dom::NoteInfoPtr::createTransposer ( ) const

Creates a transposer for this Note instance.

Returns
A unique pointer to a transposer for this Note.

◆ findEqualPitch()

NoteInfoPtr musx::dom::NoteInfoPtr::findEqualPitch ( const EntryInfoPtr entry) const

Finds a note with the same pitch in the supplied entry.

Parameters
entrythe entry to search
Returns
The found note or an null instance of NoteInfoPtr.

◆ getNext()

NoteInfoPtr musx::dom::NoteInfoPtr::getNext ( ) const
inline

Gets the next note in a chord on the same entry.

Returns
The next note or nullptr if none.

◆ getPrevious()

NoteInfoPtr musx::dom::NoteInfoPtr::getPrevious ( ) const
inline

Gets the next note in a chord on the same entry.

Returns
The next note or nullptr if none.