MUSX Document Model
|
A single tempo change value entered with Finale's Tempo tool. More...
#include <Others.h>
Public Member Functions | |
TempoChange (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci) | |
Constructor function. | |
int | getAbsoluteTempo (NoteType noteType=NoteType::Quarter) const |
Computes the absolute tempo represented by the TempoChange Instance. | |
![]() | |
Cmper | getCmper () const |
Gets the cmper key value. | |
std::optional< Inci > | getInci () const |
Gets the optional array index (inci ). | |
![]() | |
virtual | ~Base () noexcept(false)=default |
Virtual destructor for polymorphic behavior. | |
DocumentPtr | getDocument () const |
Gets a reference to the Document. | |
Cmper | getPartId () const |
Gets the partId for this instance (or 0 for score) | |
std::shared_ptr< others::PartDefinition > | getPartDefinition () const |
Gets the others::PartDefinition corresponding to getPartId. | |
ShareMode | getShareMode () const |
Gets the sharing mode for this instance. | |
const SharedNodes & | getUnlinkedNodes () const |
Gets the unlinked nodes for this instance. (Only populated for ShareMode::Partial ) | |
void | addUnlinkedNode (const std::string &nodeName) |
Adds a shared node for this instance. | |
virtual void | integrityCheck () |
Allows a class to determine if it has been properly contructed by the factory and fix issues that it can, such as creating default instances of contained classes. | |
virtual bool | requireAllFields () const |
Specifies if the parser should alert (print or throw) when an unknown xml tag is found for this class. | |
Static Public Member Functions | |
static const xml::XmlElementArray< TempoChange > & | xmlMappingArray () |
Required for musx::factory::FieldPopulator. | |
Public Attributes | |
int | ratio {} |
Edu | eduPosition {} |
The position within the measure. (xml node is <eldur> ) | |
int | unit {} |
Hardware ticks/sec. For Macs this is 1000. | |
bool | isRelative |
Static Public Attributes | |
static constexpr std::string_view | XmlNodeName = "tempoDef" |
The XML node name for this type. | |
Additional Inherited Members | |
![]() | |
enum class | ShareMode { All , Partial , None } |
Describes how this instance is shared between part and score. More... | |
using | SharedNodes = std::set< std::string > |
The container type for shared nodes. | |
![]() | |
OthersBase (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, std::optional< Inci > inci=std::nullopt) | |
Constructs an OthersBase object. | |
![]() | |
Base (const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode) | |
Constructs the base class and enforces the static constexpr XmlNodeName. | |
Base & | operator= (const Base &) |
assignment constructor: m_unlinkedNodes is intentionally omitted | |
A single tempo change value entered with Finale's Tempo tool.
Although the Finale UI dropped the Tempo tool around 2010, the notation engine still supported them. It was always possible (even as late as Finale 27.4) to add tempo changes using third-pary plugins.
The most common tool for creating TempoChange instances was the plugin JW Tempo. It only ever used absolute ratios, so the focus of this class is on them.
The cmper is the measure number, and incis should be stored in order by eduPosition.
This class is identified by the XML node name "tempoDef".
int musx::dom::others::TempoChange::getAbsoluteTempo | ( | NoteType | noteType = NoteType::Quarter | ) | const |
Computes the absolute tempo represented by the TempoChange Instance.
noteType | optional note type for which to get the beats per minute. (The default is NoteType::Quarter.) |
std::logic_error | if this instance represents a relative tempo. |
bool musx::dom::others::TempoChange::isRelative |
int musx::dom::others::TempoChange::ratio {} |
Absolute or relative ratio. Relative ratios are are a percent value * 10. 100% would have a value of 1000. See getAbsoluteTempo for how to use absolute ratios. The xml provides one of two nodes for this field: <relativeRatio>
or <absoluteRatio>
.