MNX Document Model
Loading...
Searching...
No Matches
Sequence.h
1/*
2 * Copyright (C) 2025, Robert Patterson
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22#pragma once
23
24#include "BaseTypes.h"
25#include "CommonClasses.h"
26#include "Enumerations.h"
27#include "EventMarkings.h"
28
29namespace mnx {
30
31class Sequence; // forward declaration
32
37namespace sequence {
38
41{
42public:
43 using mnx::ContentObject::ContentObject;
44};
45
51{
52public:
54 AccidentalEnclosure(const std::shared_ptr<json>& root, json_pointer pointer)
56 {
57 }
58
63 AccidentalEnclosure(Base& parent, std::string_view key, AccidentalEnclosureSymbol inSymbol)
64 : Object(parent, key)
65 {
66 set_symbol(inSymbol);
67 }
68
70};
71
77{
78public:
80 AccidentalDisplay(const std::shared_ptr<json>& root, json_pointer pointer)
82 {
83 }
84
89 AccidentalDisplay(Base& parent, std::string_view key, bool showAcci)
90 : Object(parent, key)
91 {
92 set_show(showAcci);
93 }
94
98};
99
105{
106public:
107 using ArrayElementObject::ArrayElementObject;
108
109 MNX_OPTIONAL_PROPERTY(int, staffPosition);
110};
111
117{
118public:
119 using Object::Object;
120
121 MNX_OPTIONAL_PROPERTY(int, diatonicDelta);
122};
123
128class Pitch : public Object
129{
130public:
132 Pitch(const std::shared_ptr<json>& root, json_pointer pointer)
134 {
135 }
136
143 Pitch(Base& parent, std::string_view key, NoteStep inpStep, int inpOctave, std::optional<int> inpAlter = std::nullopt)
144 : Object(parent, key)
145 {
146 set_step(inpStep);
147 set_octave(inpOctave);
148 if (inpAlter) {
149 set_alter(inpAlter.value());
150 }
151 }
152
156
160 [[nodiscard]] bool isSamePitch(const Pitch& src) const;
161};
162
168{
169public:
171 Slur(const std::shared_ptr<json>& root, json_pointer pointer)
173 {
174 }
175
180 Slur(Base& parent, std::string_view key, const std::string& target)
182 {
183 set_target(target);
184 }
185
186 MNX_OPTIONAL_PROPERTY(std::string, endNote);
190 MNX_OPTIONAL_PROPERTY(std::string, startNote);
191 MNX_REQUIRED_PROPERTY(std::string, target);
192};
193
199{
200public:
202 Tie(const std::shared_ptr<json>& root, json_pointer pointer)
204 {
205 }
206
211 Tie(Base& parent, std::string_view key, const std::optional<std::string>& target = std::nullopt)
213 {
214 if (target) {
215 set_target(target.value());
216 } else {
217 set_lv(true);
218 }
219 }
220
223 MNX_OPTIONAL_PROPERTY(std::string, target);
224};
225
231{
232public:
233 using ArrayElementObject::ArrayElementObject;
234
238};
239
244class KitNote : public NoteBase
245{
246public:
248 KitNote(const std::shared_ptr<json>& root, json_pointer pointer)
250 {
251 }
252
257 KitNote(Base& parent, std::string_view key, std::string kitComponentId)
258 : NoteBase(parent, key)
259 {
260 set_kitComponent(kitComponentId);
261 }
262
263 MNX_REQUIRED_PROPERTY(std::string, kitComponent);
264
265 inline static constexpr std::string_view JsonSchemaTypeName = "kit-note";
266};
267
272class Note : public NoteBase
273{
274public:
276 Note(const std::shared_ptr<json>& root, json_pointer pointer)
278 {
279 }
280
287 Note(Base& parent, std::string_view key, NoteStep step, int octave, std::optional<int> alter = std::nullopt)
288 : NoteBase(parent, key)
289 {
290 create_pitch(step, octave, alter);
291 }
292
296
297 inline static constexpr std::string_view JsonSchemaTypeName = "note";
298};
299
305{
306public:
308 EventLyricLine(const std::shared_ptr<json>& root, json_pointer pointer)
310 {
311 }
312
317 EventLyricLine(Base& parent, std::string_view key, const std::string& syllableText)
319 {
320 set_text(syllableText);
321 }
322
323 MNX_REQUIRED_PROPERTY(std::string, text);
325};
326
331class EventLyrics : public Object
332{
333public:
334 using Object::Object;
335
337};
338
343class Event : public ContentObject
344{
345public:
347 Event(const std::shared_ptr<json>& root, json_pointer pointer)
349 {
350 }
351
356 Event(Base& parent, std::string_view key, std::optional<NoteValue::Initializer> noteValue = std::nullopt)
357 : ContentObject(parent, key)
358 {
359 // per the specification, either noteValue or the full-measure boolean *must* be supplied.
360 if (noteValue) {
361 create_duration(noteValue.value());
362 } else {
363 set_measure(true);
364 }
365 }
366
378
382 [[nodiscard]] std::optional<Note> findNote(const std::string& noteId) const;
383
385 [[nodiscard]] bool isGrace() const;
386
388 [[nodiscard]] bool isTremolo() const;
389
392 [[nodiscard]] Sequence getSequence() const;
393
396 [[nodiscard]] size_t getSequenceIndex() const;
397
399 [[nodiscard]] FractionValue calcDuration() const;
400
402 [[nodiscard]] FractionValue calcStartTime() const;
403
404 inline static constexpr std::string_view ContentTypeValue = ContentObject::ContentTypeValueDefault;
405 inline static constexpr std::string_view JsonSchemaTypeName = "event";
406};
407
412class Space : public ContentObject
413{
414public:
416 Space(const std::shared_ptr<json>& root, json_pointer pointer)
418 {
419 }
420
425 Space(Base& parent, std::string_view key, const FractionValue& duration)
426 : ContentObject(parent, key)
427 {
428 create_duration(duration);
429 }
430
432
433 inline static constexpr std::string_view ContentTypeValue = "space";
434};
435
440class Grace : public ContentObject
441{
442public:
444 Grace(const std::shared_ptr<json>& root, json_pointer pointer)
446 {
447 }
448
452 Grace(Base& parent, std::string_view key)
453 : ContentObject(parent, key)
454 {
455 create_content();
456 }
457
458 MNX_OPTIONAL_PROPERTY(std::string, color);
462
463 inline static constexpr std::string_view ContentTypeValue = "grace";
464};
465
471{
472public:
474 MultiNoteTremolo(const std::shared_ptr<json>& root, json_pointer pointer)
476 {
477 }
478
485 MultiNoteTremolo(Base& parent, std::string_view key, int numberOfMarks, unsigned noteCount, const NoteValue::Initializer& noteValue)
486 : ContentObject(parent, key)
487 {
488 create_content();
489 set_marks(numberOfMarks);
490 create_outer(noteCount, noteValue);
491 }
492
494 MNX_OPTIONAL_CHILD(NoteValue, individualDuration);
497
498 inline static constexpr std::string_view ContentTypeValue = "tremolo";
499};
500
505class Tuplet : public ContentObject
506{
507public:
509 Tuplet(const std::shared_ptr<json>& root, json_pointer pointer)
511 {
512 }
513
521 Tuplet(Base& parent, std::string_view key,
522 unsigned innerCount, const NoteValue::Initializer& innerNoteValue,
523 unsigned outerCount, const NoteValue::Initializer& outerNoteValue)
524 : ContentObject(parent, key)
525 {
526 create_inner(innerCount, innerNoteValue);
527 create_outer(outerCount, outerNoteValue);
528 create_content();
529 }
530
536 MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(TupletDisplaySetting, showNumber, TupletDisplaySetting::Inner);
537 MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(TupletDisplaySetting, showValue, TupletDisplaySetting::NoNumber);
539
541 [[nodiscard]] FractionValue ratio() const
542 { return outer() / inner(); }
543
544 inline static constexpr std::string_view ContentTypeValue = "tuplet";
545};
546
547} // namespace sequence
548
554{
555public:
557 Sequence(const std::shared_ptr<json>& root, json_pointer pointer)
559 {
560 }
561
565 Sequence(Base& parent, std::string_view key)
567 {
568 create_content();
569 }
570
574 MNX_OPTIONAL_PROPERTY(std::string, voice);
575
590 bool iterateEvents(std::function<bool(sequence::Event event, FractionValue startDuration, FractionValue actualDuration)> iterator) const;
591};
592
593} // namespace mnx
Represents an MNX object that is included as an array element.
Definition BaseTypes.h:631
Represents an MNX array, encapsulating property access.
Definition BaseTypes.h:493
Base class wrapper for all MNX JSON nodes.
Definition BaseTypes.h:212
json_pointer pointer() const
Returns the json_pointer for this node.
Definition BaseTypes.h:274
T parent() const
Returns the parent object for this node.
Definition BaseTypes.h:260
const std::shared_ptr< json > & root() const
Returns the root.
Definition BaseTypes.h:294
Class for content arrays.
Definition BaseTypes.h:716
Base class for objects that are elements of content arrays.
Definition BaseTypes.h:656
static constexpr std::string_view ContentTypeValueDefault
default type value that identifies the type within the content array
Definition BaseTypes.h:658
Represents an MNX dictionary, where each key is a user-defined string.
Definition BaseTypes.h:785
Represents a fraction of a whole note, for measuring musical time.
Definition CommonClasses.h:371
Represents a quantity of symbolic note values=.
Definition CommonClasses.h:577
initializer class for NoteValue
Definition CommonClasses.h:534
Represents a symbolic note value (not necessarily a duration)
Definition CommonClasses.h:530
Represents an MNX object, encapsulating property access.
Definition BaseTypes.h:426
Object(const std::shared_ptr< json > &root, json_pointer pointer)
Wraps an Object class around an existing JSON object node.
Definition BaseTypes.h:431
A sequence of events and other items in this measure for a voice in a part.
Definition Sequence.h:554
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.
Definition Implementations.cpp:433
Sequence(Base &parent, std::string_view key)
Creates a new Sequence class as a child of a JSON element.
Definition Sequence.h:565
MNX_OPTIONAL_PROPERTY(std::string, voice)
the unique (per measure) voice label for this sequence.
MNX_REQUIRED_CHILD(ContentArray, content)
MNX_OPTIONAL_PROPERTY(int, staff)
the staff number for this sequence
Sequence(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Sequence objects.
Definition Sequence.h:557
Represents an explicit directive to show or hide an accidental.
Definition Sequence.h:77
AccidentalDisplay(Base &parent, std::string_view key, bool showAcci)
Creates a new Pitch class as a child of a JSON element.
Definition Sequence.h:89
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(bool, force, false)
Whether this accidental was set intentionally (e.g., a courtesy accidental).
MNX_OPTIONAL_CHILD(AccidentalEnclosure, enclosure)
The enclosure type (brackets or parentheses). Omit if none.
MNX_REQUIRED_PROPERTY(bool, show)
Whether to show or hide the accidental.
AccidentalDisplay(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing AccidentalEnclosure objects.
Definition Sequence.h:80
Represents the enclosure on an accidental.
Definition Sequence.h:51
AccidentalEnclosure(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing AccidentalEnclosure objects.
Definition Sequence.h:54
AccidentalEnclosure(Base &parent, std::string_view key, AccidentalEnclosureSymbol inSymbol)
Creates a new Pitch class as a child of a JSON element.
Definition Sequence.h:63
MNX_REQUIRED_PROPERTY(AccidentalEnclosureSymbol, symbol)
The symbol to use for the enclosure.
Base class for objects that are elements of sequence content arrays.
Definition Sequence.h:41
Contains information about a lyric syllable from one lyric line on a note.
Definition Sequence.h:305
MNX_REQUIRED_PROPERTY(std::string, text)
the syllable text
EventLyricLine(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing EventLyricLine objects.
Definition Sequence.h:308
EventLyricLine(Base &parent, std::string_view key, const std::string &syllableText)
Creates a new EventLyricLine class as a child of a JSON element.
Definition Sequence.h:317
MNX_OPTIONAL_PROPERTY(LyricLineType, type)
the type of syllable (in relation to the complete word)
Contains information about the lyric syllables on the event.
Definition Sequence.h:332
MNX_OPTIONAL_CHILD(Dictionary< EventLyricLine >, lines)
the syllables per lyric line
Container for any markings on an event.
Definition EventMarkings.h:177
Represents a musical event within a sequence.
Definition Sequence.h:344
Event(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Event objects.
Definition Sequence.h:347
static constexpr std::string_view JsonSchemaTypeName
required for mapping
Definition Sequence.h:405
MNX_OPTIONAL_PROPERTY(StemDirection, stemDirection)
Forced stem direction.
Event(Base &parent, std::string_view key, std::optional< NoteValue::Initializer > noteValue=std::nullopt)
Creates a new Event class as a child of a JSON element.
Definition Sequence.h:356
std::optional< Note > findNote(const std::string &noteId) const
Finds a note in the event by its ID.
Definition Implementations.cpp:324
MNX_OPTIONAL_CHILD(Rest, rest)
indicates this event is a rest.
MNX_OPTIONAL_CHILD(Array< Slur >, slurs)
The slurs that start on this event.
bool isGrace() const
Returns true if this event is part of a grace note sequence.
Definition Implementations.cpp:336
Sequence getSequence() const
Returns the Sequence instance for this event.
Definition Implementations.cpp:356
static constexpr std::string_view ContentTypeValue
type value that identifies the type within the content array
Definition Sequence.h:404
MNX_OPTIONAL_CHILD(NoteValue, duration)
Symbolic duration of the event.
FractionValue calcStartTime() const
Calculates and returns the start time of this event within the measure.
Definition Implementations.cpp:391
MNX_OPTIONAL_CHILD(EventMarkings, markings)
Articulation markings on this event.
size_t getSequenceIndex() const
Returns the index of the event (or its container) in the Sequence instance for this event.
Definition Implementations.cpp:365
MNX_OPTIONAL_CHILD(EventLyrics, lyrics)
The lyric syllables on this event.
MNX_OPTIONAL_CHILD(Array< KitNote >, kitNotes)
KitNote array for percussion kit notation.
MNX_OPTIONAL_PROPERTY(int, staff)
Staff number override (e.g., for cross-staff events.)
FractionValue calcDuration() const
Calculates and returns the duration of this event.
Definition Implementations.cpp:374
MNX_OPTIONAL_CHILD(Array< Note >, notes)
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(bool, measure, false)
Whether this event is a whole-measure event.
bool isTremolo() const
Returns true if this event is part of a multi-note tremolo sequence.
Definition Implementations.cpp:346
Represents a grace note sequence within a sequence.
Definition Sequence.h:441
MNX_REQUIRED_CHILD(ContentArray, content)
array of events
static constexpr std::string_view ContentTypeValue
type value that identifies the type within the content array
Definition Sequence.h:463
Grace(Base &parent, std::string_view key)
Creates a new Grace class as a child of a JSON element.
Definition Sequence.h:452
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(bool, slash, true)
whether to show a slash on the grace note
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(GraceType, graceType, GraceType::StealPrevious)
The playback type of the grace note.
Grace(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Grace objects.
Definition Sequence.h:444
MNX_OPTIONAL_PROPERTY(std::string, color)
color to use when rendering the grace note sequence
Represents a single note in a (drum) kit within a musical event within a sequence.
Definition Sequence.h:245
KitNote(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Note objects.
Definition Sequence.h:248
MNX_REQUIRED_PROPERTY(std::string, kitComponent)
The ID within the kit for this part.
KitNote(Base &parent, std::string_view key, std::string kitComponentId)
Creates a new Note class as a child of a JSON element.
Definition Sequence.h:257
static constexpr std::string_view JsonSchemaTypeName
required for mapping
Definition Sequence.h:265
Represents a multi-note tremolo sequence within a sequence.
Definition Sequence.h:471
MultiNoteTremolo(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Tuplet objects.
Definition Sequence.h:474
MNX_REQUIRED_CHILD(ContentArray, content)
array of events
MNX_REQUIRED_CHILD(NoteValueQuantity, outer)
a half note tremolo would be 2 quarters here
MNX_REQUIRED_PROPERTY(int, marks)
the number of marks (beams)
static constexpr std::string_view ContentTypeValue
type value that identifies the type within the content array
Definition Sequence.h:498
MultiNoteTremolo(Base &parent, std::string_view key, int numberOfMarks, unsigned noteCount, const NoteValue::Initializer &noteValue)
Creates a new MultiNoteTremolo class as a child of a JSON element.
Definition Sequence.h:485
MNX_OPTIONAL_CHILD(NoteValue, individualDuration)
optional value that specifies the individual duration of each event in the tremolo.
Represents common elements between Note and KitNote.
Definition Sequence.h:231
MNX_OPTIONAL_CHILD(Array< Tie >, ties)
The (forward) ties, if any.
MNX_OPTIONAL_PROPERTY(int, staff)
Staff number override (e.g., for cross-staff notes.)
Represents a single note (i.e., within a chord) within a musical event within a sequence.
Definition Sequence.h:273
MNX_OPTIONAL_CHILD(AccidentalDisplay, accidentalDisplay)
the forced show/hide state of the accidental
MNX_OPTIONAL_CHILD(TransposeWritten, written)
How to write this note when it is displayed transposed.
MNX_REQUIRED_CHILD(Pitch, pitch)
the pitch of the note
Note(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Note objects.
Definition Sequence.h:276
static constexpr std::string_view JsonSchemaTypeName
required for mapping
Definition Sequence.h:297
Note(Base &parent, std::string_view key, NoteStep step, int octave, std::optional< int > alter=std::nullopt)
Creates a new Note class as a child of a JSON element.
Definition Sequence.h:287
Represents the pitch of a note.
Definition Sequence.h:129
Pitch(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Pitch objects.
Definition Sequence.h:132
MNX_OPTIONAL_PROPERTY(int, alter)
chromatic alteration
Pitch(Base &parent, std::string_view key, NoteStep inpStep, int inpOctave, std::optional< int > inpAlter=std::nullopt)
Creates a new Pitch class as a child of a JSON element.
Definition Sequence.h:143
MNX_REQUIRED_PROPERTY(int, octave)
the octave number
bool isSamePitch(const Pitch &src) const
Checks if the input pitch is the same as this pitch, including enharmonic equivalents.
Definition Implementations.cpp:418
MNX_REQUIRED_PROPERTY(NoteStep, step)
the note step, (i.e., "A".."G")
Represents a rest within a musical event within a sequence.
Definition Sequence.h:105
MNX_OPTIONAL_PROPERTY(int, staffPosition)
The staff position of non-floating rests.
Contains information about a tie on a note.
Definition Sequence.h:168
MNX_OPTIONAL_PROPERTY(SlurTieSide, side)
used to force slur direction (if present)
Slur(Base &parent, std::string_view key, const std::string &target)
Creates a new Slur class as a child of a JSON element.
Definition Sequence.h:180
MNX_OPTIONAL_PROPERTY(SlurTieSide, sideEnd)
used to force slur's endpoint direction (if different than side)
Slur(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Slur objects.
Definition Sequence.h:171
MNX_OPTIONAL_PROPERTY(std::string, startNote)
the specific note ID this slur starts on
MNX_OPTIONAL_PROPERTY(std::string, endNote)
the specific note ID this slur ends on
MNX_OPTIONAL_PROPERTY(LineType, lineType)
the type of line for the slur
MNX_REQUIRED_PROPERTY(std::string, target)
the event ID this slur ends on (if present)
Occupies metric space without showing anything.
Definition Sequence.h:413
MNX_REQUIRED_CHILD(Fraction, duration)
Duration of space to occupy.
static constexpr std::string_view ContentTypeValue
type value that identifies the type within the content array
Definition Sequence.h:433
Space(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Space objects.
Definition Sequence.h:416
Space(Base &parent, std::string_view key, const FractionValue &duration)
Creates a new Space class as a child of a JSON element.
Definition Sequence.h:425
Contains information about a tie on a note.
Definition Sequence.h:199
MNX_OPTIONAL_PROPERTY(std::string, target)
the note id of the tied-to note
MNX_OPTIONAL_PROPERTY(SlurTieSide, side)
used to force tie direction (if present)
Tie(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Tie objects.
Definition Sequence.h:202
Tie(Base &parent, std::string_view key, const std::optional< std::string > &target=std::nullopt)
Creates a new Tie class as a child of a JSON element.
Definition Sequence.h:211
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(bool, lv, false)
Indicates the presence of an l.v. tie (instead of target)
Represents the options for how a note is written when transposed.
Definition Sequence.h:117
MNX_OPTIONAL_PROPERTY(int, diatonicDelta)
the number of enharmonic transpositions to apply
Represents a tuplet sequence within a sequence.
Definition Sequence.h:506
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(TupletDisplaySetting, showValue, TupletDisplaySetting::NoNumber)
How and whether to show the tuplet note value(s)
MNX_REQUIRED_CHILD(NoteValueQuantity, inner)
Inner quantity: 3 quarters in the time of 2 quarters.
FractionValue ratio() const
Return the triplet ratio as a FractionValue.
Definition Sequence.h:541
Tuplet(const std::shared_ptr< json > &root, json_pointer pointer)
Constructor for existing Tuplet objects.
Definition Sequence.h:509
Tuplet(Base &parent, std::string_view key, unsigned innerCount, const NoteValue::Initializer &innerNoteValue, unsigned outerCount, const NoteValue::Initializer &outerNoteValue)
Creates a new Tuplet class as a child of a JSON element.
Definition Sequence.h:521
static constexpr std::string_view ContentTypeValue
type value that identifies the type within the content array
Definition Sequence.h:544
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(AutoYesNo, bracket, AutoYesNo::Auto)
bracket style
MNX_OPTIONAL_PROPERTY_WITH_DEFAULT(TupletDisplaySetting, showNumber, TupletDisplaySetting::Inner)
How and whether to show the tuplet number(s)
MNX_OPTIONAL_PROPERTY(int, staff)
Staff number override (e.g., for cross-staff notes.)
MNX_REQUIRED_CHILD(NoteValueQuantity, outer)
MNX_REQUIRED_CHILD(ContentArray, content)
array of events, tuplets, and grace notes
object model for MNX format
LineType
Specifies the visual style of a line in (specifically) slurs.
Definition Enumerations.h:147
json::json_pointer json_pointer
JSON pointer class for MNX.
Definition BaseTypes.h:198
LyricLineType
The symbols available to bracket a staff group.
Definition Enumerations.h:159
AccidentalEnclosureSymbol
The types of accidental enclosure symbols.
Definition Enumerations.h:31
AutoYesNo
3-state choice enum
Definition Enumerations.h:41
NoteStep
The diatonic note step values.
Definition Enumerations.h:183
SlurTieSide
Specifies the direction of a slur or tie.
Definition Enumerations.h:267
TupletDisplaySetting
Controls display of a tuplet's number or note value.
Definition Enumerations.h:303
GraceType
Options for how to perform grace notes.
Definition Enumerations.h:105
@ StealPrevious
steal time from the previous non-grace.
StemDirection
The values available in a labelref.
Definition Enumerations.h:277
Represents a detached arithmetic fraction with normalization.
Definition CommonClasses.h:59