MNX Document Model
Loading...
Searching...
No Matches
mnx::Sequence Class Reference

A sequence of events and other items in this measure for a voice in a part. More...

#include <Sequence.h>

+ Inheritance diagram for mnx::Sequence:

Public Member Functions

 Sequence (const std::shared_ptr< json > &root, json_pointer pointer)
 Constructor for existing Sequence objects.
 
 Sequence (Base &parent, std::string_view key)
 Creates a new Sequence class as a child of a JSON element.
 
 MNX_REQUIRED_CHILD (ContentArray, content)
 
 MNX_OPTIONAL_PROPERTY (int, staff)
 the staff number for this sequence
 
 MNX_OPTIONAL_PROPERTY (std::string, voice)
 the unique (per measure) voice label for this sequence.
 
bool iterateEvents (std::function< bool(sequence::Event event, FractionValue startDuration, FractionValue actualDuration)> iterator) const
 Iterate all the events in this sequence in order as they come.
 
- Public Member Functions inherited from mnx::ArrayElementObject
size_t calcArrayIndex () const
 Calculates the array index of the current instance within the array.
 
template<typename ContainerType >
ContainerType container () const
 Returns the container of the array this element belongs to wrapped as the specified template type.
 
 Object (const std::shared_ptr< json > &root, json_pointer pointer)
 Wraps an Object class around an existing JSON object node.
 
 Object (Base &parent, std::string_view key)
 Creates a new Object class as a child of a JSON node.
 
- Public Member Functions inherited from mnx::Object
 Object (const std::shared_ptr< json > &root, json_pointer pointer)
 Wraps an Object class around an existing JSON object node.
 
 Object (Base &parent, std::string_view key)
 Creates a new Object class as a child of a JSON node.
 
 MNX_OPTIONAL_PROPERTY (std::string, _c)
 An optional comment. This serves a similar function as XML or HTML comments.
 
 MNX_OPTIONAL_CHILD (Object, _x)
 Vendor-defined dictionary.
 
 MNX_OPTIONAL_PROPERTY (std::string, id)
 Uniquely identifies the object.
 
- Public Member Functions inherited from mnx::Base
 Base (const Base &src)
 Copy constructor.
 
 Base (Base &&src) noexcept
 Move constructor.
 
Baseoperator= (const Base &src)
 Copy assignment operator.
 
Baseoperator= (Base &&src)
 Move assignment operator.
 
std::string dump (int indents=-1) const
 Dumps the branch to a string. Useful in debugging.
 
template<typename T >
parent () const
 Returns the parent object for this node.
 
template<typename T >
std::optional< T > getEnclosingElement () const
 Returns the enclosing array element for this instance. If T is a type that can be nested (e.g. ContentObject), the highest level instance is returned. (To get the lowest level immediate container, use ArrayElementObject::container.)
 
json_pointer pointer () const
 Returns the json_pointer for this node.
 
Document document () const
 Returns the document root.
 

Additional Inherited Members

- Protected Member Functions inherited from mnx::Base
jsonref () const
 Convert this node for retrieval.
 
jsonref ()
 Access the JSON node for modification.
 
const std::shared_ptr< json > & root () const
 Returns the root.
 
 Base (const std::shared_ptr< json > &root, json_pointer pointer)
 Wrap a Base instance around a specific JSON reference using a json_pointer.
 
 Base (json &&jsonRef, Base &parent, std::string_view key)
 Construct a Base reference as a child inside a parent node.
 
template<typename T >
getChild (std::string_view key) const
 Retrieves and validates a required child node.
 
template<typename T >
setChild (std::string_view key, const T &value)
 Sets a child node.
 
template<typename T >
std::optional< T > getOptionalChild (std::string_view key) const
 Retrieves an optional child node.
 

Detailed Description

A sequence of events and other items in this measure for a voice in a part.

Constructor & Destructor Documentation

◆ Sequence()

mnx::Sequence::Sequence ( Base parent,
std::string_view  key 
)
inline

Creates a new Sequence class as a child of a JSON element.

Parameters
parentThe parent class instance
keyThe JSON key to use for embedding in parent.

Member Function Documentation

◆ iterateEvents()

bool mnx::Sequence::iterateEvents ( std::function< bool(sequence::Event event, FractionValue startDuration, FractionValue actualDuration)>  iterator) const

Iterate all the events in this sequence in order as they come.

Parameters
iteratorCallback function invoked for each event. The callback must have signature: bool(sequence::Event event, FractionValue elapsedTime, FractionValue actualDuration).
  • event: the current event in the sequence.
  • startDuration: total elapsed metric time before this event.
  • actualDuration: the event’s real performed duration.
  • return true to continue iterating.
Returns
true if iteration completed without interruption; false if it exited early.
Todo:
Multi-note tremolos are currently treated as a span whose outer() value advances time. Inner tremolo notes have zero actual duration until the MNX spec clarifies how their durations should be distributed.
Todo:
: MNX tremolo durations.

◆ MNX_OPTIONAL_PROPERTY()

mnx::Sequence::MNX_OPTIONAL_PROPERTY ( int  ,
staff   
)

the staff number for this sequence

Todo:
orient property

◆ MNX_REQUIRED_CHILD()

mnx::Sequence::MNX_REQUIRED_CHILD ( ContentArray  ,
content   
)

the content of the sequence