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

The DOM (document object model) for musx files. More...

Namespaces

namespace  details
 Classes in the DetailsPool.
 
namespace  header
 Document header classes are in this namespace.
 
namespace  options
 Classes in the OptionsPool.
 
namespace  others
 Classes in the OthersPool.
 
namespace  texts
 Classes in the TextsPool.
 

Classes

class  Base
 Base class to enforce polymorphism across all DOM classes. More...
 
class  CommonClassBase
 Base class for classes that are commonly used among others, details, entries, and/or texts. They can be constructed in atypical contexts, so their Part and Sharing info is not meaningful. More...
 
class  DetailsBase
 Base class for all "details" types. More...
 
class  DetailsPool
 A pool that manages collections of DetailsBase objects, organized by XML node names and Cmper values. More...
 
class  Document
 Represents a document object that encapsulates the entire EnigmaXML structure. More...
 
class  Entry
 Represents an entry containing metadata and notes. More...
 
class  EntryDetailsBase
 Base class for all "details" types that use entnum rather than cmper and cmper. More...
 
class  EntryFrame
 Represents a vector of EntryInfo instances for a given frame, along with computed information. More...
 
class  EntryInfo
 Information an entry along with the entry. More...
 
class  EntryInfoPtr
 Wraps a frame of shared_ptr<const EntryInfo> and an index for per entry access. This class manages ownership of the frame so that any instance of it keeps the frame alive without the need for circular references. More...
 
class  EntryPool
 Entry pool. More...
 
struct  FontInfo
 Represents the default font settings for a particular element type. More...
 
class  integrity_error
 Exception for integrity errors. (Used when MUSX_THROW_ON_INTEGRITY_CHECK_FAIL is defined.) More...
 
class  KeySignature
 Shared key signature class that is contained in other classes. (See others::Measure) More...
 
class  LyricsSyllableInfo
 Contains the syllable information for a single syllable. (See texts::LyricsTextBase) More...
 
class  Note
 Represents a single note element in an entry. More...
 
class  NoteDetailsBase
 Base class note details. Note details are entry details associated with a note ID. More...
 
class  NoteInfoPtr
 Wraps an EntryInfo instance and a note index. More...
 
class  ObjectPool
 A pool that manages collections of OthersBase objects, organized by XML node names and Cmper values. More...
 
class  OptionsBase
 Base class for all "options" types. More...
 
class  OptionsPool
 A pool that manages collections of OptionsBase objects that have no Cmper value. More...
 
class  OthersArray
 Template pattern for OthersBase items consisting of an array of a single item. More...
 
class  OthersBase
 Base class for all "others" types. More...
 
class  OthersPool
 A pool that manages collections of OthersBase objects. More...
 
class  TextsBase
 Base class for all text blocks. More...
 
class  TextsPool
 Text pool. More...
 
class  TimeSignature
 Shared time signature class that is derived from other classes. (See others::Measure) More...
 

Typedefs

using DocumentPtr = std::shared_ptr< Document >
 Shared Document pointer.
 
using DocumentWeakPtr = std::weak_ptr< Document >
 Shared weak Document pointer.
 
using Cmper = uint16_t
 Enigma "comperator" key type.
 
using Inci = int16_t
 Enigma "incident" key type.
 
using Evpu = int32_t
 EVPU value (288 per inch)
 
using EvpuFloat = double
 EVPU fractional value (288.0 per inch)
 
using Evpu16ths = int32_t
 1/16 of an EVPU.
 
using Efix = int32_t
 EFIX value (64 per EVPU, 64*288=18432 per inch)
 
using Edu = int32_t
 "Enigma Durational Units" value (1024 per quarter note)
 
using EduFloat = double
 "Enigma Durational Units" floating point value (1024.0 per quarter note)
 
using MeasCmper = int16_t
 Enigma meas Cmper (may be negative when not applicable)
 
using InstCmper = int16_t
 Enigma staff (inst) Cmper (may be negative when not applicable)
 
using SystemCmper = int16_t
 Enigma systems Cmper (may be negative when not applicable)
 
using ClefIndex = uint16_t
 Index into options::ClefOptions::clefDefs.
 
using EntryNumber = int32_t
 Entry identifier.
 
using NoteNumber = uint16_t
 Note identifier.
 
using LayerIndex = unsigned int
 Layer index (valid values are 0..3)
 
using BeamNumber = unsigned int
 A number where 1 corresponds to the primary (8th note) beam, 2 the 16th beam, 3 the 32nd beam, etc.
 
using OptionsPoolPtr = std::shared_ptr< OptionsPool >
 Shared OptionsPool pointer.
 
using OthersPoolPtr = std::shared_ptr< OthersPool >
 Shared OthersPool pointer.
 
using DetailsPoolPtr = std::shared_ptr< DetailsPool >
 Shared DetailsPool pointer.
 
using EntryPoolPtr = std::shared_ptr< EntryPool >
 Shared EntryPool pointer.
 
using TextsPoolPtr = std::shared_ptr< TextsPool >
 Shared OthersPool pointer.
 

Enumerations

enum class  NoteType : Edu {
  Maxima = 0x8000 , Longa = 0x4000 , Breve = 0x2000 , Whole = 0x1000 ,
  Half = 0x0800 , Quarter = 0x0400 , Eighth = 0x0200 , Note16th = 0x0100 ,
  Note32nd = 0x0080 , Note64th = 0x0040 , Note128th = 0x0020 , Note256th = 0x0010 ,
  Note512th = 0x0008 , Note1024th = 0x0004 , Note2048th = 0x0002 , Note4096th = 0x0001
}
 Enum class representing note types based on EDU values. More...
 
enum class  ShowClefMode { WhenNeeded , Never , Always }
 Enum representing the clef display mode for a frame. More...
 

Functions

std::pair< NoteType, unsigned > calcNoteInfoFromEdu (Edu duration)
 Calculates the NoteType and number of dots in an Edu value.
 
unsigned calcNumberOfBeamsInEdu (Edu duration)
 Calculates the number of beams or flags in the Edu value.
 

Variables

constexpr Cmper MUSX_GLOBALS_CMPER = 65534
 The prefs cmper for global variables (used sparingly since Finale 26.2)
 
constexpr int MAX_LAYERS = 4
 The maximum number of music layers in a Finale document.
 
constexpr Cmper SCORE_PARTID = 0
 The part id of the score.
 
constexpr Cmper BASE_SYSTEM_ID = 0
 The base system cmper that gives a list of all available staves and their score order (others::InstrumentUsed cmper)
 

Detailed Description

The DOM (document object model) for musx files.

classes representing the musx document

Enumeration Type Documentation

◆ NoteType

enum class musx::dom::NoteType : Edu
strong

Enum class representing note types based on EDU values.

The values are expressed in hexadecimal.

◆ ShowClefMode

enum class musx::dom::ShowClefMode
strong

Enum representing the clef display mode for a frame.

Enumerator
WhenNeeded 

Clef is displayed only when needed (the default).

Never 

Clef is never displayed. (xml value is "hidden")

Always 

Clef is always displayed. (xml value is "forced")

Function Documentation

◆ calcNoteInfoFromEdu()

std::pair< NoteType, unsigned > musx::dom::calcNoteInfoFromEdu ( Edu  duration)

Calculates the NoteType and number of dots in an Edu value.

Parameters
durationThe Edu duration to check.
Returns
A std::pair containing:
  • NoteType: The note type (Whole, Quarter, Eighth, etc.)
  • unsigned: The number of augmentation dots
Exceptions
std::invalid_argumentif the duration is out of valid range (> 1 and < 0x10000).