diff --git a/musicxml/src/datatypes/above_below.rs b/musicxml/src/datatypes/above_below.rs
index f37cacd..c0e311c 100644
--- a/musicxml/src/datatypes/above_below.rs
+++ b/musicxml/src/datatypes/above_below.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to indicate whether one element appears above or below another element.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum AboveBelow {
/// This element appears above the reference element.
Above,
diff --git a/musicxml/src/datatypes/accidental_value.rs b/musicxml/src/datatypes/accidental_value.rs
index 011123e..0101a06 100644
--- a/musicxml/src/datatypes/accidental_value.rs
+++ b/musicxml/src/datatypes/accidental_value.rs
@@ -13,7 +13,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// `smufl` attribute to specify a particular Standard Music Font Layout (SMuFL) accidental.
///
/// The `smufl` attribute may be used with any accidental value to help specify the appearance of symbols that share the same MusicXML semantics.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum AccidentalValue {
///
Sharp,
diff --git a/musicxml/src/datatypes/accordion_middle.rs b/musicxml/src/datatypes/accordion_middle.rs
index 6992030..0b70c3c 100644
--- a/musicxml/src/datatypes/accordion_middle.rs
+++ b/musicxml/src/datatypes/accordion_middle.rs
@@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum allowed value:** 1
///
/// **Maximum allowed value:** 3
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct AccordionMiddle(pub u8);
impl Deref for AccordionMiddle {
diff --git a/musicxml/src/datatypes/anyuri.rs b/musicxml/src/datatypes/anyuri.rs
index b6d3d08..96cc564 100644
--- a/musicxml/src/datatypes/anyuri.rs
+++ b/musicxml/src/datatypes/anyuri.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#anyURI).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct AnyUri(pub String);
impl Deref for AnyUri {
diff --git a/musicxml/src/datatypes/arrow_direction.rs b/musicxml/src/datatypes/arrow_direction.rs
index c4a4061..c11f1c9 100644
--- a/musicxml/src/datatypes/arrow_direction.rs
+++ b/musicxml/src/datatypes/arrow_direction.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the direction in which an arrow points, using Unicode arrow terminology.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum ArrowDirection {
/// 
Down,
diff --git a/musicxml/src/datatypes/arrow_style.rs b/musicxml/src/datatypes/arrow_style.rs
index 2c6467b..a9b3eda 100644
--- a/musicxml/src/datatypes/arrow_style.rs
+++ b/musicxml/src/datatypes/arrow_style.rs
@@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// [Paired][ArrowStyle::Paired] arrows are duplicate [Single][ArrowStyle::Single] arrows in the same direction.
/// [Combined][ArrowStyle::Combined] arrows apply to [Double][ArrowStyle::Double] direction arrows like left right,
/// indicating that an arrow in one direction should be combined with an arrow in the other direction.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum ArrowStyle {
/// 
Combined,
diff --git a/musicxml/src/datatypes/backward_forward.rs b/musicxml/src/datatypes/backward_forward.rs
index 8ca8bd7..d47991d 100644
--- a/musicxml/src/datatypes/backward_forward.rs
+++ b/musicxml/src/datatypes/backward_forward.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// The start of the repeat has a [Forward][BackwardForward::Forward] direction while
/// the end of the repeat has a [Backward][BackwardForward::Backward] direction.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum BackwardForward {
/// 
Backward,
diff --git a/musicxml/src/datatypes/bar_style.rs b/musicxml/src/datatypes/bar_style.rs
index 14ad570..c2a57ba 100644
--- a/musicxml/src/datatypes/bar_style.rs
+++ b/musicxml/src/datatypes/bar_style.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents barline style information.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum BarStyle {
/// 
Dashed,
diff --git a/musicxml/src/datatypes/beam_level.rs b/musicxml/src/datatypes/beam_level.rs
index e6e3473..d1648e5 100644
--- a/musicxml/src/datatypes/beam_level.rs
+++ b/musicxml/src/datatypes/beam_level.rs
@@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize;
/// It does not distinguish overlapping beams, such as grace notes within regular notes, or beams used in different voices.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct BeamLevel(pub u8);
impl Deref for BeamLevel {
diff --git a/musicxml/src/datatypes/beam_value.rs b/musicxml/src/datatypes/beam_value.rs
index 2e5ced3..2b61cf6 100644
--- a/musicxml/src/datatypes/beam_value.rs
+++ b/musicxml/src/datatypes/beam_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the type of beam associated with each of 8 beam levels (up to 1024th notes) available for each note.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum BeamValue {
/// 
#[rename("backward hook")]
diff --git a/musicxml/src/datatypes/beater_value.rs b/musicxml/src/datatypes/beater_value.rs
index f018638..207eb70 100644
--- a/musicxml/src/datatypes/beater_value.rs
+++ b/musicxml/src/datatypes/beater_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents pictograms for beaters, mallets, and sticks that do not have different materials represented in the pictogram.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum BeaterValue {
///
Bow,
diff --git a/musicxml/src/datatypes/bend_shape.rs b/musicxml/src/datatypes/bend_shape.rs
index 6ec80ba..de14fbe 100644
--- a/musicxml/src/datatypes/bend_shape.rs
+++ b/musicxml/src/datatypes/bend_shape.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes between the [Angled][BendShape::Angled] bend symbols commonly used in standard notation
/// and the [Curved][BendShape::Curved] bend symbols commonly used in both tablature and standard notation.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum BendShape {
/// 
Angled,
diff --git a/musicxml/src/datatypes/breath_mark_value.rs b/musicxml/src/datatypes/breath_mark_value.rs
index 20daa49..b52eb74 100644
--- a/musicxml/src/datatypes/breath_mark_value.rs
+++ b/musicxml/src/datatypes/breath_mark_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the symbol used for a breath mark.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum BreathMarkValue {
///
Comma,
diff --git a/musicxml/src/datatypes/caesura_value.rs b/musicxml/src/datatypes/caesura_value.rs
index e4304a1..0da186c 100644
--- a/musicxml/src/datatypes/caesura_value.rs
+++ b/musicxml/src/datatypes/caesura_value.rs
@@ -2,7 +2,7 @@ use alloc::string::String;
use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Represents the shape of the caesura sign.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum CaesuraValue {
///
Normal,
diff --git a/musicxml/src/datatypes/cancel_location.rs b/musicxml/src/datatypes/cancel_location.rs
index ada61ce..d7516fd 100644
--- a/musicxml/src/datatypes/cancel_location.rs
+++ b/musicxml/src/datatypes/cancel_location.rs
@@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// [BeforeBarline][CancelLocation::BeforeBarline] and to the left. It is [Left][CancelLocation::Left] if not specified.
///
/// For mid-measure key elements, [BeforeBarline][CancelLocation::BeforeBarline] should be treated like [Left][CancelLocation::Left].
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum CancelLocation {
/// 
Left,
diff --git a/musicxml/src/datatypes/circular_arrow.rs b/musicxml/src/datatypes/circular_arrow.rs
index 7ce4619..252394e 100644
--- a/musicxml/src/datatypes/circular_arrow.rs
+++ b/musicxml/src/datatypes/circular_arrow.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the direction in which a circular arrow points, using Unicode arrow terminology.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum CircularArrow {
/// 
Anticlockwise,
diff --git a/musicxml/src/datatypes/clef_sign.rs b/musicxml/src/datatypes/clef_sign.rs
index 854cc98..ce8f6e6 100644
--- a/musicxml/src/datatypes/clef_sign.rs
+++ b/musicxml/src/datatypes/clef_sign.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the different clef symbols.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum ClefSign {
/// 
#[rename("G")]
diff --git a/musicxml/src/datatypes/color.rs b/musicxml/src/datatypes/color.rs
index 2ab6bdc..978eec7 100644
--- a/musicxml/src/datatypes/color.rs
+++ b/musicxml/src/datatypes/color.rs
@@ -14,7 +14,7 @@ use regex::Regex;
///
/// As in [SVG 1.1](https://www.w3.org/TR/SVG11/color.html),
/// colors are defined in terms of the [sRGB](https://www.color.org/srgb04.xalter) color space (IEC 61966).
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub struct Color {
/// Amount of red present in the color (0-127)
pub r: u8,
diff --git a/musicxml/src/datatypes/comma_separated_text.rs b/musicxml/src/datatypes/comma_separated_text.rs
index 8cb9755..86f08be 100644
--- a/musicxml/src/datatypes/comma_separated_text.rs
+++ b/musicxml/src/datatypes/comma_separated_text.rs
@@ -5,7 +5,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Used to specify a comma-separated list of text elements, as is used by the `font_family` attribute.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct CommaSeparatedText(pub Vec);
impl Deref for CommaSeparatedText {
diff --git a/musicxml/src/datatypes/css_font_size.rs b/musicxml/src/datatypes/css_font_size.rs
index 57858c7..5410116 100644
--- a/musicxml/src/datatypes/css_font_size.rs
+++ b/musicxml/src/datatypes/css_font_size.rs
@@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// In CSS, these refer to an entry in a table of font sizes computed and kept by the user agent.
/// The scaling is relative to the reference value of [Medium][CssFontSize::Medium].
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum CssFontSize {
/// Scaling factor guideline: 3/5 of [Medium][CssFontSize::Medium].
#[rename("xx-small")]
diff --git a/musicxml/src/datatypes/date.rs b/musicxml/src/datatypes/date.rs
index 6f28757..26b2162 100644
--- a/musicxml/src/datatypes/date.rs
+++ b/musicxml/src/datatypes/date.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use regex::Regex;
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#date).
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub struct Date {
/// The year of the date.
pub year: u16,
diff --git a/musicxml/src/datatypes/decimal.rs b/musicxml/src/datatypes/decimal.rs
index 8cba8cc..b381213 100644
--- a/musicxml/src/datatypes/decimal.rs
+++ b/musicxml/src/datatypes/decimal.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#decimal).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Decimal(pub f64);
impl Eq for Decimal {}
diff --git a/musicxml/src/datatypes/degree_symbol_value.rs b/musicxml/src/datatypes/degree_symbol_value.rs
index 900d53a..f9aac24 100644
--- a/musicxml/src/datatypes/degree_symbol_value.rs
+++ b/musicxml/src/datatypes/degree_symbol_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates which symbol should be used in specifying a degree.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum DegreeSymbolValue {
///
Major,
diff --git a/musicxml/src/datatypes/degree_type_value.rs b/musicxml/src/datatypes/degree_type_value.rs
index fcd28ce..d69e2e5 100644
--- a/musicxml/src/datatypes/degree_type_value.rs
+++ b/musicxml/src/datatypes/degree_type_value.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates whether the current degree element is an addition, alteration, or subtraction
/// to the kind of the current chord in the harmony element.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum DegreeTypeValue {
/// The degree is an addition to the kind of the current chord.
Add,
diff --git a/musicxml/src/datatypes/distance_type.rs b/musicxml/src/datatypes/distance_type.rs
index 1984c07..0953a45 100644
--- a/musicxml/src/datatypes/distance_type.rs
+++ b/musicxml/src/datatypes/distance_type.rs
@@ -8,7 +8,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// - [Beam][DistanceType::Beam]: The distance between beams.
/// - [Hyphen][DistanceType::Hyphen]: The distance between hyphens in lyrics.
/// - [Other][DistanceType::Other]: Left as a string so that other application-specific types can be defined.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum DistanceType {
/// The distance between beams.
Beam,
diff --git a/musicxml/src/datatypes/divisions.rs b/musicxml/src/datatypes/divisions.rs
index d4a6f0e..4edea89 100644
--- a/musicxml/src/datatypes/divisions.rs
+++ b/musicxml/src/datatypes/divisions.rs
@@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// It is preferred that these be integer values both for MIDI interoperability and to avoid roundoff errors.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Divisions(pub i32);
impl Deref for Divisions {
diff --git a/musicxml/src/datatypes/effect_value.rs b/musicxml/src/datatypes/effect_value.rs
index 989b1a9..9c49c15 100644
--- a/musicxml/src/datatypes/effect_value.rs
+++ b/musicxml/src/datatypes/effect_value.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents pictograms for sound effect percussion instruments.
///
/// The cannon, lotus flute, and megaphone values are in addition to Stone's list.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum EffectValue {
///
Anvil,
diff --git a/musicxml/src/datatypes/enclosure_shape.rs b/musicxml/src/datatypes/enclosure_shape.rs
index bf89132..af82cf3 100644
--- a/musicxml/src/datatypes/enclosure_shape.rs
+++ b/musicxml/src/datatypes/enclosure_shape.rs
@@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// A [Bracket][EnclosureShape::Bracket] enclosure is similar to a rectangle with the bottom line missing,
/// as is common in jazz notation. An [InvertedBracket][EnclosureShape::InvertedBracket] enclosure is
/// similar to a rectangle with the top line missing.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum EnclosureShape {
/// 
Rectangle,
diff --git a/musicxml/src/datatypes/ending_number.rs b/musicxml/src/datatypes/ending_number.rs
index 7d18d14..5b40578 100644
--- a/musicxml/src/datatypes/ending_number.rs
+++ b/musicxml/src/datatypes/ending_number.rs
@@ -11,7 +11,7 @@ use regex::Regex;
/// The "zero or more spaces" version is used when software knows that an ending is present, but cannot determine the type of the ending.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct EndingNumber(pub String);
impl Deref for EndingNumber {
diff --git a/musicxml/src/datatypes/fan.rs b/musicxml/src/datatypes/fan.rs
index 874c380..0db279e 100644
--- a/musicxml/src/datatypes/fan.rs
+++ b/musicxml/src/datatypes/fan.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the type of beam fanning present on a note, used to represent accelerandos and ritardandos.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Fan {
/// 
Accel,
diff --git a/musicxml/src/datatypes/fermata_shape.rs b/musicxml/src/datatypes/fermata_shape.rs
index d94e947..66c3e2f 100644
--- a/musicxml/src/datatypes/fermata_shape.rs
+++ b/musicxml/src/datatypes/fermata_shape.rs
@@ -2,7 +2,7 @@ use alloc::string::String;
use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Represents the shape of the fermata sign.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum FermataShape {
///
Normal,
diff --git a/musicxml/src/datatypes/fifths.rs b/musicxml/src/datatypes/fifths.rs
index 0d1582e..9bc3821 100644
--- a/musicxml/src/datatypes/fifths.rs
+++ b/musicxml/src/datatypes/fifths.rs
@@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize;
/// key's placement within the circle of fifths (hence the type name).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct Fifths(pub i8);
impl Deref for Fifths {
diff --git a/musicxml/src/datatypes/font_family.rs b/musicxml/src/datatypes/font_family.rs
index 84824fc..0547937 100644
--- a/musicxml/src/datatypes/font_family.rs
+++ b/musicxml/src/datatypes/font_family.rs
@@ -12,7 +12,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// The fantasy style refers to decorative text such as found in older German-style printing.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct FontFamily(pub Vec);
impl Deref for FontFamily {
diff --git a/musicxml/src/datatypes/font_size.rs b/musicxml/src/datatypes/font_size.rs
index ee65c26..d4ea0ef 100644
--- a/musicxml/src/datatypes/font_size.rs
+++ b/musicxml/src/datatypes/font_size.rs
@@ -4,7 +4,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Can be one of the [CSS font sizes](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/css-font-size/)
/// or a [decimal](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/xsd-decimal/) point size.
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Copy, Clone)]
pub enum FontSize {
/// One of the [CSS font sizes](https://www.w3.org/2021/06/musicxml40/musicxml-reference/data-types/css-font-size/).
Css(CssFontSize),
diff --git a/musicxml/src/datatypes/font_style.rs b/musicxml/src/datatypes/font_style.rs
index fc85497..b0cabd4 100644
--- a/musicxml/src/datatypes/font_style.rs
+++ b/musicxml/src/datatypes/font_style.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents a simplified version of the [CSS font-style property](https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-prop-desc).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum FontStyle {
/// Normal text.
Normal,
diff --git a/musicxml/src/datatypes/font_weight.rs b/musicxml/src/datatypes/font_weight.rs
index be50ab5..343f60b 100644
--- a/musicxml/src/datatypes/font_weight.rs
+++ b/musicxml/src/datatypes/font_weight.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents a simplified version of the [CSS font-weight property](https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#font-prop-desc).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum FontWeight {
/// Normal text.
Normal,
diff --git a/musicxml/src/datatypes/glass_value.rs b/musicxml/src/datatypes/glass_value.rs
index 1782a86..342797b 100644
--- a/musicxml/src/datatypes/glass_value.rs
+++ b/musicxml/src/datatypes/glass_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents pictograms for glass percussion instruments.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum GlassValue {
///
#[rename("glass harmonica")]
diff --git a/musicxml/src/datatypes/glyph_type.rs b/musicxml/src/datatypes/glyph_type.rs
index f5e6160..941dde2 100644
--- a/musicxml/src/datatypes/glyph_type.rs
+++ b/musicxml/src/datatypes/glyph_type.rs
@@ -2,7 +2,7 @@ use alloc::string::String;
use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Defines what type of glyph is being defined in a [Glyph][crate::elements::Glyph] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum GlyphType {
/// Specifies the glyph to use when a note has a [Rest][crate::elements::Rest] element and a `type` value of quarter.
QuarterRest,
diff --git a/musicxml/src/datatypes/group_barline_value.rs b/musicxml/src/datatypes/group_barline_value.rs
index 199a840..a8919fe 100644
--- a/musicxml/src/datatypes/group_barline_value.rs
+++ b/musicxml/src/datatypes/group_barline_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates if the group should have common barlines.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum GroupBarlineValue {
/// 
Yes,
diff --git a/musicxml/src/datatypes/group_symbol_value.rs b/musicxml/src/datatypes/group_symbol_value.rs
index 7044f2d..b26621e 100644
--- a/musicxml/src/datatypes/group_symbol_value.rs
+++ b/musicxml/src/datatypes/group_symbol_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates how the symbol for a group or multi-staff part is indicated in the score.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum GroupSymbolValue {
/// 
Brace,
diff --git a/musicxml/src/datatypes/handbell_value.rs b/musicxml/src/datatypes/handbell_value.rs
index 3bd4084..db4c413 100644
--- a/musicxml/src/datatypes/handbell_value.rs
+++ b/musicxml/src/datatypes/handbell_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the type of handbell technique being notated.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HandbellValue {
///
Belltree,
diff --git a/musicxml/src/datatypes/harmon_closed_location.rs b/musicxml/src/datatypes/harmon_closed_location.rs
index ff73cf8..cdd5aa6 100644
--- a/musicxml/src/datatypes/harmon_closed_location.rs
+++ b/musicxml/src/datatypes/harmon_closed_location.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates which portion of the symbol is filled in when the corresponding
/// [HarmonClosedValue][super::HarmonClosedValue] is [Half][super::HarmonClosedValue::Half].
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HarmonClosedLocation {
/// 
Bottom,
diff --git a/musicxml/src/datatypes/harmon_closed_value.rs b/musicxml/src/datatypes/harmon_closed_value.rs
index 62ac218..3d8e177 100644
--- a/musicxml/src/datatypes/harmon_closed_value.rs
+++ b/musicxml/src/datatypes/harmon_closed_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents whether the harmon mute is closed, open, or half-open.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HarmonClosedValue {
///
Yes,
diff --git a/musicxml/src/datatypes/harmony_arrangement.rs b/musicxml/src/datatypes/harmony_arrangement.rs
index 3c8f653..6523a0a 100644
--- a/musicxml/src/datatypes/harmony_arrangement.rs
+++ b/musicxml/src/datatypes/harmony_arrangement.rs
@@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// appears to the right of the first. The [Vertical][HarmonyArrangement::Vertical] value specifies
/// that the second element appears below the first. The [Diagonal][HarmonyArrangement::Diagonal] value
/// specifies that the second element appears both below and to the right of the first.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HarmonyArrangement {
/// 
Horizontal,
diff --git a/musicxml/src/datatypes/harmony_type.rs b/musicxml/src/datatypes/harmony_type.rs
index ab47f4c..1a80cd4 100644
--- a/musicxml/src/datatypes/harmony_type.rs
+++ b/musicxml/src/datatypes/harmony_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Differentiates different types of harmonies when alternate harmonies are possible.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HarmonyType {
/// Alternate analysis.
Alternate,
diff --git a/musicxml/src/datatypes/hole_closed_location.rs b/musicxml/src/datatypes/hole_closed_location.rs
index 40d2554..b74de76 100644
--- a/musicxml/src/datatypes/hole_closed_location.rs
+++ b/musicxml/src/datatypes/hole_closed_location.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates which portion of the hole is filled in when the corresponding
/// [HoleClosedValue][super::HoleClosedValue] is [Half][super::HoleClosedValue::Half].
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HoleClosedLocation {
/// 
Bottom,
diff --git a/musicxml/src/datatypes/hole_closed_value.rs b/musicxml/src/datatypes/hole_closed_value.rs
index 054fbcd..7cab777 100644
--- a/musicxml/src/datatypes/hole_closed_value.rs
+++ b/musicxml/src/datatypes/hole_closed_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents whether the hole is closed, open, or half-open.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum HoleClosedValue {
///
Yes,
diff --git a/musicxml/src/datatypes/id.rs b/musicxml/src/datatypes/id.rs
index f6e298f..0408ee3 100644
--- a/musicxml/src/datatypes/id.rs
+++ b/musicxml/src/datatypes/id.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#ID).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Id(pub String);
impl Deref for Id {
diff --git a/musicxml/src/datatypes/idref.rs b/musicxml/src/datatypes/idref.rs
index 2363a5a..f54e4b8 100644
--- a/musicxml/src/datatypes/idref.rs
+++ b/musicxml/src/datatypes/idref.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#IDREF).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct IdRef(pub String);
impl Deref for IdRef {
diff --git a/musicxml/src/datatypes/integer.rs b/musicxml/src/datatypes/integer.rs
index 7824791..7f9a113 100644
--- a/musicxml/src/datatypes/integer.rs
+++ b/musicxml/src/datatypes/integer.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#integer).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Integer(pub i32);
impl Deref for Integer {
diff --git a/musicxml/src/datatypes/kind_value.rs b/musicxml/src/datatypes/kind_value.rs
index 7d0d18a..9a8b48d 100644
--- a/musicxml/src/datatypes/kind_value.rs
+++ b/musicxml/src/datatypes/kind_value.rs
@@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// [Degree][crate::elements::Degree] elements can then add, subtract, or alter from these starting points.
///
/// The 11th and 13th values are usually used as a basis for alteration.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum KindValue {
/// Triad: major third, augmented fifth.
Augmented,
diff --git a/musicxml/src/datatypes/left_center_right.rs b/musicxml/src/datatypes/left_center_right.rs
index 8098b41..e3092c1 100644
--- a/musicxml/src/datatypes/left_center_right.rs
+++ b/musicxml/src/datatypes/left_center_right.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to define horizontal alignment and text justification.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum LeftCenterRight {
/// Left horizontal alignment or justification.
Left,
diff --git a/musicxml/src/datatypes/left_right.rs b/musicxml/src/datatypes/left_right.rs
index 678064b..3d20293 100644
--- a/musicxml/src/datatypes/left_right.rs
+++ b/musicxml/src/datatypes/left_right.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to indicate whether one element appears to the left or the right of another element.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum LeftRight {
/// This element appears to the left of the reference element.
Left,
diff --git a/musicxml/src/datatypes/line_end.rs b/musicxml/src/datatypes/line_end.rs
index 94f7ed7..cd05050 100644
--- a/musicxml/src/datatypes/line_end.rs
+++ b/musicxml/src/datatypes/line_end.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Specifies if there is a jog up or down (or both), an arrow, or nothing at the start or end of a bracket.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum LineEnd {
/// 
Up,
diff --git a/musicxml/src/datatypes/line_length.rs b/musicxml/src/datatypes/line_length.rs
index 4392970..78f6661 100644
--- a/musicxml/src/datatypes/line_length.rs
+++ b/musicxml/src/datatypes/line_length.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes between different line lengths for [Doit][crate::elements::Doit],
/// [Falloff][crate::elements::Falloff], [Plop][crate::elements::Plop],
/// and [Scoop][crate::elements::Scoop] articulations.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum LineLength {
///
Short,
diff --git a/musicxml/src/datatypes/line_shape.rs b/musicxml/src/datatypes/line_shape.rs
index 62ccc7e..9754cd2 100644
--- a/musicxml/src/datatypes/line_shape.rs
+++ b/musicxml/src/datatypes/line_shape.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes between straight and curved lines.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum LineShape {
///
Straight,
diff --git a/musicxml/src/datatypes/line_type.rs b/musicxml/src/datatypes/line_type.rs
index fa8b5c4..4e3b09d 100644
--- a/musicxml/src/datatypes/line_type.rs
+++ b/musicxml/src/datatypes/line_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes between solid, dashed, dotted, and wavy lines.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum LineType {
/// 
Dashed,
diff --git a/musicxml/src/datatypes/line_width_type.rs b/musicxml/src/datatypes/line_width_type.rs
index 4dd56f6..588c2cc 100644
--- a/musicxml/src/datatypes/line_width_type.rs
+++ b/musicxml/src/datatypes/line_width_type.rs
@@ -2,7 +2,7 @@ use alloc::string::String;
use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Defines what type of line is being defined in a [LineWidth][crate::elements::LineWidth] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum LineWidthType {
/// A beam line.
Beam,
diff --git a/musicxml/src/datatypes/margin_type.rs b/musicxml/src/datatypes/margin_type.rs
index 33484bd..41cf613 100644
--- a/musicxml/src/datatypes/margin_type.rs
+++ b/musicxml/src/datatypes/margin_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Specifies whether margins apply to even page, odd pages, or both.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum MarginType {
/// Margins apply to both even and odd pages.
Both,
diff --git a/musicxml/src/datatypes/measure_numbering_value.rs b/musicxml/src/datatypes/measure_numbering_value.rs
index 5ea7541..285a2ff 100644
--- a/musicxml/src/datatypes/measure_numbering_value.rs
+++ b/musicxml/src/datatypes/measure_numbering_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Describes how measure numbers are displayed on this part: no numbers, numbers every measure, or numbers every system.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum MeasureNumberingValue {
/// 
None,
diff --git a/musicxml/src/datatypes/measure_text.rs b/musicxml/src/datatypes/measure_text.rs
index c7e1d89..63ccf40 100644
--- a/musicxml/src/datatypes/measure_text.rs
+++ b/musicxml/src/datatypes/measure_text.rs
@@ -11,7 +11,7 @@ use musicxml_macros::DatatypeSerialize;
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
///
/// **Minimum Length**: 1
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct MeasureText(pub String);
impl Deref for MeasureText {
diff --git a/musicxml/src/datatypes/membrane_value.rs b/musicxml/src/datatypes/membrane_value.rs
index a2a0cfe..121cbfd 100644
--- a/musicxml/src/datatypes/membrane_value.rs
+++ b/musicxml/src/datatypes/membrane_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents pictograms for membrane percussion instruments.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum MembraneValue {
///
#[rename("bass drum")]
diff --git a/musicxml/src/datatypes/metal_value.rs b/musicxml/src/datatypes/metal_value.rs
index 8e5402c..2c2a267 100644
--- a/musicxml/src/datatypes/metal_value.rs
+++ b/musicxml/src/datatypes/metal_value.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents pictograms for metal percussion instruments.
///
/// The hi-hat value refers to a pictogram like high-hat cymbals, but without the long vertical line at the bottom.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum MetalValue {
///
Agogo,
diff --git a/musicxml/src/datatypes/midi_128.rs b/musicxml/src/datatypes/midi_128.rs
index b2db428..f1d220b 100644
--- a/musicxml/src/datatypes/midi_128.rs
+++ b/musicxml/src/datatypes/midi_128.rs
@@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum Value**: 1
///
/// **Maximum Value**: 128
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct Midi128(pub u8);
impl Deref for Midi128 {
diff --git a/musicxml/src/datatypes/midi_16.rs b/musicxml/src/datatypes/midi_16.rs
index 313d4a5..bd90dab 100644
--- a/musicxml/src/datatypes/midi_16.rs
+++ b/musicxml/src/datatypes/midi_16.rs
@@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum Value**: 1
///
/// **Maximum Value**: 16
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct Midi16(pub u8);
impl Deref for Midi16 {
diff --git a/musicxml/src/datatypes/midi_16384.rs b/musicxml/src/datatypes/midi_16384.rs
index 291e848..aa946f9 100644
--- a/musicxml/src/datatypes/midi_16384.rs
+++ b/musicxml/src/datatypes/midi_16384.rs
@@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum Value**: 1
///
/// **Maximum Value**: 16384
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct Midi16384(pub u16);
impl Deref for Midi16384 {
diff --git a/musicxml/src/datatypes/millimeters.rs b/musicxml/src/datatypes/millimeters.rs
index 366d757..906fb0f 100644
--- a/musicxml/src/datatypes/millimeters.rs
+++ b/musicxml/src/datatypes/millimeters.rs
@@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// This is used in the [Scaling][crate::elements::Scaling] element to provide a default scaling from tenths to physical units.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Millimeters(pub f64);
impl Eq for Millimeters {}
diff --git a/musicxml/src/datatypes/milliseconds.rs b/musicxml/src/datatypes/milliseconds.rs
index 57a6917..687de31 100644
--- a/musicxml/src/datatypes/milliseconds.rs
+++ b/musicxml/src/datatypes/milliseconds.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents an integral number of milliseconds.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Milliseconds(pub u32);
impl Deref for Milliseconds {
diff --git a/musicxml/src/datatypes/mode.rs b/musicxml/src/datatypes/mode.rs
index ae22d93..12d2890 100644
--- a/musicxml/src/datatypes/mode.rs
+++ b/musicxml/src/datatypes/mode.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to specify major/minor and other mode distinctions.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Mode {
/// Major mode.
Major,
diff --git a/musicxml/src/datatypes/mute.rs b/musicxml/src/datatypes/mute.rs
index 861c625..03d855c 100644
--- a/musicxml/src/datatypes/mute.rs
+++ b/musicxml/src/datatypes/mute.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// The [On][Mute::On] and [Off][Mute::Off] values are used for undifferentiated mutes.
/// The remaining values represent specific mutes.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Mute {
/// Represents an on-mute.
On,
diff --git a/musicxml/src/datatypes/nmtoken.rs b/musicxml/src/datatypes/nmtoken.rs
index f36b4b9..6a22b84 100644
--- a/musicxml/src/datatypes/nmtoken.rs
+++ b/musicxml/src/datatypes/nmtoken.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#NMTOKEN).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct NmToken(pub String);
impl Deref for NmToken {
diff --git a/musicxml/src/datatypes/non_negative_decimal.rs b/musicxml/src/datatypes/non_negative_decimal.rs
index 2b0cec3..173ec9f 100644
--- a/musicxml/src/datatypes/non_negative_decimal.rs
+++ b/musicxml/src/datatypes/non_negative_decimal.rs
@@ -8,7 +8,7 @@ use musicxml_macros::DatatypeSerialize;
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
///
/// **Minimum value:** 0.0
-#[derive(Debug, PartialEq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)]
pub struct NonNegativeDecimal(pub f64);
impl Eq for NonNegativeDecimal {}
diff --git a/musicxml/src/datatypes/non_negative_integer.rs b/musicxml/src/datatypes/non_negative_integer.rs
index 0aba3e6..5201ccd 100644
--- a/musicxml/src/datatypes/non_negative_integer.rs
+++ b/musicxml/src/datatypes/non_negative_integer.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#nonNegativeInteger).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct NonNegativeInteger(pub u32);
impl Deref for NonNegativeInteger {
diff --git a/musicxml/src/datatypes/note_size_type.rs b/musicxml/src/datatypes/note_size_type.rs
index a1dc400..f8c45e2 100644
--- a/musicxml/src/datatypes/note_size_type.rs
+++ b/musicxml/src/datatypes/note_size_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates the type of note size being defined by a [NoteSize][crate::elements::NoteSize] element.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum NoteSizeType {
/// Used for notes of cue size that do not include a [Grace][crate::elements::Grace] element, whether defined explicitly or implicitly via a [Cue][crate::elements::Cue] element.
Cue,
diff --git a/musicxml/src/datatypes/note_type_value.rs b/musicxml/src/datatypes/note_type_value.rs
index cbcd90d..5a11553 100644
--- a/musicxml/src/datatypes/note_type_value.rs
+++ b/musicxml/src/datatypes/note_type_value.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used for the MusicXML [Type][crate::elements::Type] element and represents the graphic note type,
/// from 1024th (shortest) to maxima (longest).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum NoteTypeValue {
/// 
Maxima,
diff --git a/musicxml/src/datatypes/notehead_value.rs b/musicxml/src/datatypes/notehead_value.rs
index cd02e6b..9f866c9 100644
--- a/musicxml/src/datatypes/notehead_value.rs
+++ b/musicxml/src/datatypes/notehead_value.rs
@@ -19,7 +19,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// that share the same MusicXML semantics. Noteheads in the SMuFL Note name noteheads and Note name noteheads
/// supplement ranges (U+E150–U+E1AF and U+EEE0–U+EEFF) should not use the `smufl` attribute or the "other" value,
/// but instead use the [NoteheadText][crate::elements::NoteheadText] element.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum NoteheadValue {
/// 
#[rename("arrow down")]
diff --git a/musicxml/src/datatypes/number_level.rs b/musicxml/src/datatypes/number_level.rs
index ab6f048..49b7bcb 100644
--- a/musicxml/src/datatypes/number_level.rs
+++ b/musicxml/src/datatypes/number_level.rs
@@ -34,7 +34,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum value**: 1
///
/// **Maximum value**: 16
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct NumberLevel(pub u8);
impl Deref for NumberLevel {
diff --git a/musicxml/src/datatypes/number_of_lines.rs b/musicxml/src/datatypes/number_of_lines.rs
index 7ff186d..5b719b9 100644
--- a/musicxml/src/datatypes/number_of_lines.rs
+++ b/musicxml/src/datatypes/number_of_lines.rs
@@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum value**: 0
///
/// **Maximum value**: 3
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct NumberOfLines(pub u8);
impl Deref for NumberOfLines {
diff --git a/musicxml/src/datatypes/number_or_normal.rs b/musicxml/src/datatypes/number_or_normal.rs
index 7079182..7b56125 100644
--- a/musicxml/src/datatypes/number_or_normal.rs
+++ b/musicxml/src/datatypes/number_or_normal.rs
@@ -4,7 +4,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Can be either a decimal number or the string "normal".
///
/// This is used by the `line_height` and `letter_spacing` attributes.
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Copy, Clone)]
pub enum NumberOrNormal {
/// Represents the string "normal".
Normal,
diff --git a/musicxml/src/datatypes/numeral_mode.rs b/musicxml/src/datatypes/numeral_mode.rs
index c10311e..cc2b9dd 100644
--- a/musicxml/src/datatypes/numeral_mode.rs
+++ b/musicxml/src/datatypes/numeral_mode.rs
@@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// melodic minor value sharpens both 6 and 7. If a minor mode is used without
/// qualification, either in the [Mode][crate::elements::Mode] or [NumeralMode][crate::elements::NumeralMode]
/// elements, natural minor is used.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum NumeralMode {
/// Numerals are interpreted relative to a harmonic minor scale with a raised 7th degree.
#[rename("harmonic minor")]
diff --git a/musicxml/src/datatypes/numeral_value.rs b/musicxml/src/datatypes/numeral_value.rs
index 9ecaddb..e2ac597 100644
--- a/musicxml/src/datatypes/numeral_value.rs
+++ b/musicxml/src/datatypes/numeral_value.rs
@@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum value**: 1
///
/// **Maximum value**: 7
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct NumeralValue(pub u8);
impl Deref for NumeralValue {
diff --git a/musicxml/src/datatypes/octave.rs b/musicxml/src/datatypes/octave.rs
index 46c35a1..3824dfe 100644
--- a/musicxml/src/datatypes/octave.rs
+++ b/musicxml/src/datatypes/octave.rs
@@ -6,7 +6,7 @@ use musicxml_macros::DatatypeSerialize;
/// Represents octaves by the numbers 0 to 9, where 4 indicates the octave started by middle C.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct Octave(pub u8);
impl Deref for Octave {
diff --git a/musicxml/src/datatypes/on_off.rs b/musicxml/src/datatypes/on_off.rs
index e967d7a..93fde72 100644
--- a/musicxml/src/datatypes/on_off.rs
+++ b/musicxml/src/datatypes/on_off.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Ued for notation elements such as string mutes.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum OnOff {
/// Represents the "on" state.
On,
diff --git a/musicxml/src/datatypes/over_under.rs b/musicxml/src/datatypes/over_under.rs
index 4b807d2..9d334f8 100644
--- a/musicxml/src/datatypes/over_under.rs
+++ b/musicxml/src/datatypes/over_under.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to indicate whether the tips of curved lines such as slurs and ties
/// are overhand (tips down) or underhand (tips up).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum OverUnder {
/// Tips of curved lines are overhand (tips down).
Over,
diff --git a/musicxml/src/datatypes/pedal_type.rs b/musicxml/src/datatypes/pedal_type.rs
index 9c5dc0d..fb8c56f 100644
--- a/musicxml/src/datatypes/pedal_type.rs
+++ b/musicxml/src/datatypes/pedal_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes types of pedal directions.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum PedalType {
/// Indicates the start of a damper pedal.
Start,
diff --git a/musicxml/src/datatypes/percent.rs b/musicxml/src/datatypes/percent.rs
index 0492c00..6706580 100644
--- a/musicxml/src/datatypes/percent.rs
+++ b/musicxml/src/datatypes/percent.rs
@@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum value:** 0.0
///
/// **Maximum value:** 100.0
-#[derive(Debug, PartialEq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)]
pub struct Percent(pub f64);
impl Eq for Percent {}
diff --git a/musicxml/src/datatypes/pitched_value.rs b/musicxml/src/datatypes/pitched_value.rs
index fb2f88b..525e3ed 100644
--- a/musicxml/src/datatypes/pitched_value.rs
+++ b/musicxml/src/datatypes/pitched_value.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// The [Chimes][PitchedValue::Chimes] and [TubularChimes][PitchedValue::TubularChimes] values
/// distinguish the single-line and double-line versions of the pictogram.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum PitchedValue {
///
Celesta,
diff --git a/musicxml/src/datatypes/positive_divisions.rs b/musicxml/src/datatypes/positive_divisions.rs
index a217cd4..6180d65 100644
--- a/musicxml/src/datatypes/positive_divisions.rs
+++ b/musicxml/src/datatypes/positive_divisions.rs
@@ -8,7 +8,7 @@ use musicxml_macros::DatatypeSerialize;
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
///
/// **Minimum value**: 1
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct PositiveDivisions(pub u32);
impl Deref for PositiveDivisions {
diff --git a/musicxml/src/datatypes/positive_integer.rs b/musicxml/src/datatypes/positive_integer.rs
index bd8a36b..24250bd 100644
--- a/musicxml/src/datatypes/positive_integer.rs
+++ b/musicxml/src/datatypes/positive_integer.rs
@@ -6,7 +6,7 @@ use musicxml_macros::DatatypeSerialize;
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#positiveInteger).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct PositiveInteger(pub u32);
impl Deref for PositiveInteger {
diff --git a/musicxml/src/datatypes/positive_integer_or_empty.rs b/musicxml/src/datatypes/positive_integer_or_empty.rs
index c44c01a..753e0b2 100644
--- a/musicxml/src/datatypes/positive_integer_or_empty.rs
+++ b/musicxml/src/datatypes/positive_integer_or_empty.rs
@@ -2,7 +2,7 @@ use alloc::string::{String, ToString};
use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Represents a positive integer or an empty value.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum PositiveIntegerOrEmpty {
/// Represents an empty value.
Empty,
diff --git a/musicxml/src/datatypes/principal_voice_symbol.rs b/musicxml/src/datatypes/principal_voice_symbol.rs
index 3679c00..c46d00e 100644
--- a/musicxml/src/datatypes/principal_voice_symbol.rs
+++ b/musicxml/src/datatypes/principal_voice_symbol.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the type of symbol used to indicate a principal or secondary voice.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum PrincipalVoiceSymbol {
///
#[rename("Hauptstimme")]
diff --git a/musicxml/src/datatypes/right_left_middle.rs b/musicxml/src/datatypes/right_left_middle.rs
index 80e339e..7a1a402 100644
--- a/musicxml/src/datatypes/right_left_middle.rs
+++ b/musicxml/src/datatypes/right_left_middle.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to specify barline location.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum RightLeftMiddle {
/// Right barline.
Right,
diff --git a/musicxml/src/datatypes/rotation_degrees.rs b/musicxml/src/datatypes/rotation_degrees.rs
index 55a90b8..479e344 100644
--- a/musicxml/src/datatypes/rotation_degrees.rs
+++ b/musicxml/src/datatypes/rotation_degrees.rs
@@ -12,7 +12,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum value:** -180.0
///
/// **Maximum value:** 180.0
-#[derive(Debug, PartialEq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)]
pub struct RotationDegrees(pub f32);
impl Eq for RotationDegrees {}
diff --git a/musicxml/src/datatypes/semi_pitched.rs b/musicxml/src/datatypes/semi_pitched.rs
index 6b62a75..d2e5de9 100644
--- a/musicxml/src/datatypes/semi_pitched.rs
+++ b/musicxml/src/datatypes/semi_pitched.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents categories of indefinite pitch for percussion instruments.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum SemiPitched {
/// High indefinite pitch.
High,
diff --git a/musicxml/src/datatypes/semitones.rs b/musicxml/src/datatypes/semitones.rs
index 2a469c7..7276ae1 100644
--- a/musicxml/src/datatypes/semitones.rs
+++ b/musicxml/src/datatypes/semitones.rs
@@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Decimal values like 0.5 (quarter tone sharp) are used for microtones.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Semitones(pub i16);
impl Deref for Semitones {
diff --git a/musicxml/src/datatypes/show_frets.rs b/musicxml/src/datatypes/show_frets.rs
index cc706b7..ca98ed2 100644
--- a/musicxml/src/datatypes/show_frets.rs
+++ b/musicxml/src/datatypes/show_frets.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates whether to show tablature frets as numbers (0, 1, 2) or letters (a, b, c).
///
/// The default choice is numbers.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum ShowFrets {
/// 
Letters,
diff --git a/musicxml/src/datatypes/show_tuplet.rs b/musicxml/src/datatypes/show_tuplet.rs
index 31ad48b..5732df5 100644
--- a/musicxml/src/datatypes/show_tuplet.rs
+++ b/musicxml/src/datatypes/show_tuplet.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// [TupletActual][crate::elements::TupletActual] element, both the
/// [TupletActual][crate::elements::TupletActual] or [TupletNormal][crate::elements::TupletNormal]
/// elements, or neither.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum ShowTuplet {
/// Show only the [TupletActual][crate::elements::TupletActual] element.
Actual,
diff --git a/musicxml/src/datatypes/smufl_accidental_glyph_name.rs b/musicxml/src/datatypes/smufl_accidental_glyph_name.rs
index ec2b39e..b5d89ee 100644
--- a/musicxml/src/datatypes/smufl_accidental_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_accidental_glyph_name.rs
@@ -11,7 +11,7 @@ use regex::Regex;
/// used at the start of glyph names for SMuFL accidentals.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct SmuflAccidentalGlyphName(pub String);
impl Deref for SmuflAccidentalGlyphName {
diff --git a/musicxml/src/datatypes/smufl_coda_glyph_name.rs b/musicxml/src/datatypes/smufl_coda_glyph_name.rs
index 5cd4d9f..07bb391 100644
--- a/musicxml/src/datatypes/smufl_coda_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_coda_glyph_name.rs
@@ -10,7 +10,7 @@ use regex::Regex;
/// The value is a SMuFL canonical glyph name that starts with coda.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct SmuflCodaGlyphName(pub String);
impl Deref for SmuflCodaGlyphName {
diff --git a/musicxml/src/datatypes/smufl_glyph_name.rs b/musicxml/src/datatypes/smufl_glyph_name.rs
index 7c1416c..69b282b 100644
--- a/musicxml/src/datatypes/smufl_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_glyph_name.rs
@@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// standard piano pedal mark would be "keyboardPedalPed", not U+E650.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct SmuflGlyphName(pub String);
impl Deref for SmuflGlyphName {
diff --git a/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs b/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs
index a3f1f3d..b11021e 100644
--- a/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_lyrics_glyph_name.rs
@@ -10,7 +10,7 @@ use regex::Regex;
/// The value is a SMuFL canonical glyph name that starts with lyrics.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct SmuflLyricsGlyphName(pub String);
impl Deref for SmuflLyricsGlyphName {
diff --git a/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs b/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs
index e9c72bc..2b29295 100644
--- a/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_pictogram_glyph_name.rs
@@ -10,7 +10,7 @@ use regex::Regex;
/// The value is a SMuFL canonical glyph name that starts with pict.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct SmuflPictogramGlyphName(pub String);
impl Deref for SmuflPictogramGlyphName {
diff --git a/musicxml/src/datatypes/smufl_segno_glyph_name.rs b/musicxml/src/datatypes/smufl_segno_glyph_name.rs
index ab14c56..4e838b3 100644
--- a/musicxml/src/datatypes/smufl_segno_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_segno_glyph_name.rs
@@ -10,7 +10,7 @@ use regex::Regex;
/// The value is a SMuFL canonical glyph name that starts with segno.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct SmuflSegnoGlyphName(pub String);
impl Deref for SmuflSegnoGlyphName {
diff --git a/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs b/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs
index 28198a1..b311451 100644
--- a/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs
+++ b/musicxml/src/datatypes/smufl_wavy_line_glyph_name.rs
@@ -12,7 +12,7 @@ use regex::Regex;
/// lines range, excluding the beam glyphs.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeSerialize)]
pub struct SmuflWavyLineGlyphName(pub String);
impl Deref for SmuflWavyLineGlyphName {
diff --git a/musicxml/src/datatypes/staff_divide_symbol.rs b/musicxml/src/datatypes/staff_divide_symbol.rs
index 7069b95..4eabfcc 100644
--- a/musicxml/src/datatypes/staff_divide_symbol.rs
+++ b/musicxml/src/datatypes/staff_divide_symbol.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used for staff division symbols.
///
/// The down, up, and up-down values correspond to SMuFL code points U+E00B, U+E00C, and U+E00D respectively.
-#[derive(Debug, Default, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StaffDivideSymbol {
///
Down,
diff --git a/musicxml/src/datatypes/staff_line.rs b/musicxml/src/datatypes/staff_line.rs
index 0a63cf7..9c15cb6 100644
--- a/musicxml/src/datatypes/staff_line.rs
+++ b/musicxml/src/datatypes/staff_line.rs
@@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize;
/// Staff lines are numbered from bottom to top, with 1 being the bottom line on a staff.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct StaffLine(pub u8);
impl Deref for StaffLine {
diff --git a/musicxml/src/datatypes/staff_line_position.rs b/musicxml/src/datatypes/staff_line_position.rs
index ed2e954..3ca8c9b 100644
--- a/musicxml/src/datatypes/staff_line_position.rs
+++ b/musicxml/src/datatypes/staff_line_position.rs
@@ -9,7 +9,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// A [StaffLinePosition] value can extend beyond the range of the lines on the current staff.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct StaffLinePosition(pub i16);
impl Deref for StaffLinePosition {
diff --git a/musicxml/src/datatypes/staff_number.rs b/musicxml/src/datatypes/staff_number.rs
index e9c6e1c..2e4fb53 100644
--- a/musicxml/src/datatypes/staff_number.rs
+++ b/musicxml/src/datatypes/staff_number.rs
@@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize;
/// Staves are numbered from top to bottom, with 1 being the top staff on a part.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct StaffNumber(pub u8);
impl Deref for StaffNumber {
diff --git a/musicxml/src/datatypes/staff_type.rs b/musicxml/src/datatypes/staff_type.rs
index 716a75e..42f3da7 100644
--- a/musicxml/src/datatypes/staff_type.rs
+++ b/musicxml/src/datatypes/staff_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Specifies different uses for the staff.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StaffType {
/// Shares the same music as the prior staff, but displayed differently
/// (e.g., treble and bass clef, standard notation and tablature). It is not included in playback.
diff --git a/musicxml/src/datatypes/start_note.rs b/musicxml/src/datatypes/start_note.rs
index 9515eac..ac0d281 100644
--- a/musicxml/src/datatypes/start_note.rs
+++ b/musicxml/src/datatypes/start_note.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Describes the starting note of trills and mordents for playback, relative to the current note.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StartNote {
/// The trill or mordent starts on the note below the current note.
Below,
diff --git a/musicxml/src/datatypes/start_stop.rs b/musicxml/src/datatypes/start_stop.rs
index eafd08a..2a36d5c 100644
--- a/musicxml/src/datatypes/start_stop.rs
+++ b/musicxml/src/datatypes/start_stop.rs
@@ -12,7 +12,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// When multiple elements with the same tag are used within the same note, their order within the MusicXML
/// document should match the musical score order.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StartStop {
/// Starting point of an element.
Start,
diff --git a/musicxml/src/datatypes/start_stop_continue.rs b/musicxml/src/datatypes/start_stop_continue.rs
index 94f5cee..73eb56d 100644
--- a/musicxml/src/datatypes/start_stop_continue.rs
+++ b/musicxml/src/datatypes/start_stop_continue.rs
@@ -15,7 +15,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// match the musical score order. For example, a note that marks both the end of one slur and the start of a new slur
/// should have the incoming slur element with a type of [Stop][StartStopContinue::Stop] precede the outgoing slur element
/// with a type of [Start][StartStopContinue::Start].
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StartStopContinue {
/// Starting point of an element.
Start,
diff --git a/musicxml/src/datatypes/start_stop_discontinue.rs b/musicxml/src/datatypes/start_stop_discontinue.rs
index 11042e0..4252cc6 100644
--- a/musicxml/src/datatypes/start_stop_discontinue.rs
+++ b/musicxml/src/datatypes/start_stop_discontinue.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to specify [Ending][crate::elements::Ending] types.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StartStopDiscontinue {
/// Used with the left barline of the first measure in an ending.
Start,
diff --git a/musicxml/src/datatypes/start_stop_single.rs b/musicxml/src/datatypes/start_stop_single.rs
index 8b0f197..56737a8 100644
--- a/musicxml/src/datatypes/start_stop_single.rs
+++ b/musicxml/src/datatypes/start_stop_single.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used for an attribute of musical elements that can be used for either multi-note or single-note musical elements, as for groupings.
///
/// When multiple elements with the same tag are used within the same note, their order within the MusicXML document should match the musical score order.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StartStopSingle {
/// Starting point of a multi-note element.
Start,
diff --git a/musicxml/src/datatypes/stem_value.rs b/musicxml/src/datatypes/stem_value.rs
index 72a1ac8..9165f1a 100644
--- a/musicxml/src/datatypes/stem_value.rs
+++ b/musicxml/src/datatypes/stem_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the notated stem direction.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StemValue {
/// 
Down,
diff --git a/musicxml/src/datatypes/step.rs b/musicxml/src/datatypes/step.rs
index 14d59db..e6ff150 100644
--- a/musicxml/src/datatypes/step.rs
+++ b/musicxml/src/datatypes/step.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents a step of the diatonic scale, represented using the English letters A through G.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Step {
/// Diatonic scale step A.
#[rename("A")]
diff --git a/musicxml/src/datatypes/stick_location.rs b/musicxml/src/datatypes/stick_location.rs
index 70b8a2e..4f19c25 100644
--- a/musicxml/src/datatypes/stick_location.rs
+++ b/musicxml/src/datatypes/stick_location.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents pictograms for the location of sticks, beaters, or mallets on cymbals, gongs, drums, and other instruments.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StickLocation {
///
Center,
diff --git a/musicxml/src/datatypes/stick_material.rs b/musicxml/src/datatypes/stick_material.rs
index a11a0dc..2381652 100644
--- a/musicxml/src/datatypes/stick_material.rs
+++ b/musicxml/src/datatypes/stick_material.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the material being displayed in a stick pictogram.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StickMaterial {
///
Hard,
diff --git a/musicxml/src/datatypes/stick_type.rs b/musicxml/src/datatypes/stick_type.rs
index f5421e2..b189545 100644
--- a/musicxml/src/datatypes/stick_type.rs
+++ b/musicxml/src/datatypes/stick_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the shape of pictograms where the material in the stick, mallet, or beater is represented in the pictogram.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum StickType {
///
#[rename("bass drum")]
diff --git a/musicxml/src/datatypes/string_number.rs b/musicxml/src/datatypes/string_number.rs
index 4900c3e..0cd511f 100644
--- a/musicxml/src/datatypes/string_number.rs
+++ b/musicxml/src/datatypes/string_number.rs
@@ -9,7 +9,7 @@ use musicxml_macros::DatatypeSerialize;
/// Strings are numbered from high to low, with 1 being the highest pitched full-length string.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct StringNumber(pub u8);
impl Deref for StringNumber {
diff --git a/musicxml/src/datatypes/swing_type_value.rs b/musicxml/src/datatypes/swing_type_value.rs
index d802903..a52af4f 100644
--- a/musicxml/src/datatypes/swing_type_value.rs
+++ b/musicxml/src/datatypes/swing_type_value.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Specifies the note type, either eighth or 16th, to which the ratio defined in the [Swing][crate::elements::Swing] element is applied.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum SwingTypeValue {
/// The [Swing][crate::elements::Swing] ratio applies to 16th notes.
#[rename("16th")]
diff --git a/musicxml/src/datatypes/syllabic.rs b/musicxml/src/datatypes/syllabic.rs
index 671f9d4..c9b3932 100644
--- a/musicxml/src/datatypes/syllabic.rs
+++ b/musicxml/src/datatypes/syllabic.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// The single, begin, end, and middle values represent single-syllable words,
/// word-beginning syllables, word-ending syllables, and mid-word syllables, respectively.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Syllabic {
/// 
Begin,
diff --git a/musicxml/src/datatypes/symbol_size.rs b/musicxml/src/datatypes/symbol_size.rs
index f62d6da..6b9d31c 100644
--- a/musicxml/src/datatypes/symbol_size.rs
+++ b/musicxml/src/datatypes/symbol_size.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to distinguish between full, cue sized, grace cue sized, and oversized symbols.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum SymbolSize {
/// Use a cue-sized symbol, generally smaller than a full-sized symbol.
Cue,
diff --git a/musicxml/src/datatypes/sync_type.rs b/musicxml/src/datatypes/sync_type.rs
index 7d707c5..ae53b8f 100644
--- a/musicxml/src/datatypes/sync_type.rs
+++ b/musicxml/src/datatypes/sync_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Specifies the style that a score-following application should use to synchronize an accompaniment with a performer.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum SyncType {
/// No synchronization to the performer.
None,
diff --git a/musicxml/src/datatypes/system_relation.rs b/musicxml/src/datatypes/system_relation.rs
index 8d056ff..2edf899 100644
--- a/musicxml/src/datatypes/system_relation.rs
+++ b/musicxml/src/datatypes/system_relation.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes elements that are associated with a system rather than the particular part where the element appears.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum SystemRelation {
/// The element should appear only on the top part of the current system.
#[rename("only-top")]
diff --git a/musicxml/src/datatypes/system_relation_number.rs b/musicxml/src/datatypes/system_relation_number.rs
index ac8c14e..9aaa3f9 100644
--- a/musicxml/src/datatypes/system_relation_number.rs
+++ b/musicxml/src/datatypes/system_relation_number.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Distinguishes measure numbers that are associated with a system rather than the particular part where the element appears.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum SystemRelationNumber {
/// The number should appear only on the top part of the current system.
#[rename("only-top")]
diff --git a/musicxml/src/datatypes/tap_hand.rs b/musicxml/src/datatypes/tap_hand.rs
index 8dc7ecc..55f8194 100644
--- a/musicxml/src/datatypes/tap_hand.rs
+++ b/musicxml/src/datatypes/tap_hand.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the symbol to use for a tap element.
///
/// The left and right values refer to the SMuFL guitarLeftHandTapping and guitarRightHandTapping glyphs respectively.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TapHand {
///
Left,
diff --git a/musicxml/src/datatypes/tenths.rs b/musicxml/src/datatypes/tenths.rs
index f94335b..75bd571 100644
--- a/musicxml/src/datatypes/tenths.rs
+++ b/musicxml/src/datatypes/tenths.rs
@@ -17,7 +17,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// [StaffSize][crate::elements::StaffSize] element.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Tenths(pub f64);
impl Eq for Tenths {}
diff --git a/musicxml/src/datatypes/text_direction.rs b/musicxml/src/datatypes/text_direction.rs
index 7669179..424b83d 100644
--- a/musicxml/src/datatypes/text_direction.rs
+++ b/musicxml/src/datatypes/text_direction.rs
@@ -4,7 +4,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to adjust and override the Unicode bidirectional text algorithm,similar to the Directionality
/// data category in the [W3C Internationalization Tag Set recommendation](https://www.w3.org/TR/2007/REC-its-20070403/#directionality).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TextDirection {
/// Left-to-right embed.
Ltr,
diff --git a/musicxml/src/datatypes/tied_type.rs b/musicxml/src/datatypes/tied_type.rs
index 85fe12b..c105a51 100644
--- a/musicxml/src/datatypes/tied_type.rs
+++ b/musicxml/src/datatypes/tied_type.rs
@@ -14,7 +14,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// In start-stop cases, ties can add more elements using a [Continue][TiedType::Continue] type. This is
/// typically used to specify the formatting of cross-system ties.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TiedType {
/// Start of a tie.
Start,
diff --git a/musicxml/src/datatypes/time_only.rs b/musicxml/src/datatypes/time_only.rs
index f7f240b..11518fb 100644
--- a/musicxml/src/datatypes/time_only.rs
+++ b/musicxml/src/datatypes/time_only.rs
@@ -13,7 +13,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// through the repeated section that the element applies.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct TimeOnly(pub Vec);
impl Deref for TimeOnly {
diff --git a/musicxml/src/datatypes/time_relation.rs b/musicxml/src/datatypes/time_relation.rs
index 390e62b..c0fcc86 100644
--- a/musicxml/src/datatypes/time_relation.rs
+++ b/musicxml/src/datatypes/time_relation.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Indicates the symbol used to represent the interchangeable aspect of dual time signatures.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TimeRelation {
/// 
Bracket,
diff --git a/musicxml/src/datatypes/time_separator.rs b/musicxml/src/datatypes/time_separator.rs
index 4737ba6..964beef 100644
--- a/musicxml/src/datatypes/time_separator.rs
+++ b/musicxml/src/datatypes/time_separator.rs
@@ -12,7 +12,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// side of the separator line. The [None][TimeSeparator::None] value represents no separator with the beats
/// and beat-type arranged vertically. The [Adjacent][TimeSeparator::Adjacent] value represents no
/// separator with the beats and beat-type arranged horizontally.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TimeSeparator {
/// 
Adjacent,
diff --git a/musicxml/src/datatypes/time_symbol.rs b/musicxml/src/datatypes/time_symbol.rs
index af942a2..a83d421 100644
--- a/musicxml/src/datatypes/time_symbol.rs
+++ b/musicxml/src/datatypes/time_symbol.rs
@@ -13,7 +13,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// should be represented with a dotted downstem note that corresponds to three times the
/// [BeatType][crate::elements::BeatType] value, and a numerator that is one third the
/// [Beats][crate::elements::Beats] value.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TimeSymbol {
/// 
Common,
diff --git a/musicxml/src/datatypes/tip_direction.rs b/musicxml/src/datatypes/tip_direction.rs
index 419d0b3..44dbcf9 100644
--- a/musicxml/src/datatypes/tip_direction.rs
+++ b/musicxml/src/datatypes/tip_direction.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Represents the direction in which the tip of a stick or beater points, using Unicode arrow terminology.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TipDirection {
/// 
Down,
diff --git a/musicxml/src/datatypes/token.rs b/musicxml/src/datatypes/token.rs
index acf5d4e..4188cf7 100644
--- a/musicxml/src/datatypes/token.rs
+++ b/musicxml/src/datatypes/token.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C XML Schema standard](https://www.w3.org/TR/xmlschema-2/#token).
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct Token(pub String);
impl Deref for Token {
diff --git a/musicxml/src/datatypes/top_bottom.rs b/musicxml/src/datatypes/top_bottom.rs
index 18839ff..00ab771 100644
--- a/musicxml/src/datatypes/top_bottom.rs
+++ b/musicxml/src/datatypes/top_bottom.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to indicate the top or bottom part of a vertical shape like [NonArpeggiate][crate::elements::NonArpeggiate].
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TopBottom {
/// Top of the vertical shape.
Top,
diff --git a/musicxml/src/datatypes/tremolo_marks.rs b/musicxml/src/datatypes/tremolo_marks.rs
index e29a1a1..51c7ad1 100644
--- a/musicxml/src/datatypes/tremolo_marks.rs
+++ b/musicxml/src/datatypes/tremolo_marks.rs
@@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize;
/// **Minimum value:** 0
///
/// **Maximum value:** 8
-#[derive(Debug, PartialEq, Eq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeSerialize)]
pub struct TremoloMarks(pub u8);
impl Deref for TremoloMarks {
diff --git a/musicxml/src/datatypes/tremolo_type.rs b/musicxml/src/datatypes/tremolo_type.rs
index 5e19d3e..d6216a8 100644
--- a/musicxml/src/datatypes/tremolo_type.rs
+++ b/musicxml/src/datatypes/tremolo_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to distinguish double-note, single-note, and unmeasured tremolos.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TremoloType {
/// Start of a double-note tremolo.
Start,
diff --git a/musicxml/src/datatypes/trill_beats.rs b/musicxml/src/datatypes/trill_beats.rs
index bd547f5..21564bc 100644
--- a/musicxml/src/datatypes/trill_beats.rs
+++ b/musicxml/src/datatypes/trill_beats.rs
@@ -10,7 +10,7 @@ use musicxml_macros::DatatypeSerialize;
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
///
/// **Minimum value**: 2.0
-#[derive(Debug, PartialEq, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Copy, Clone, DatatypeSerialize)]
pub struct TrillBeats(pub f64);
impl Eq for TrillBeats {}
diff --git a/musicxml/src/datatypes/trill_step.rs b/musicxml/src/datatypes/trill_step.rs
index 1dc4407..b4ad29f 100644
--- a/musicxml/src/datatypes/trill_step.rs
+++ b/musicxml/src/datatypes/trill_step.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Describes the alternating note of trills and mordents for playback, relative to the current note.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TrillStep {
/// Half step from the current note.
Half,
diff --git a/musicxml/src/datatypes/two_note_turn.rs b/musicxml/src/datatypes/two_note_turn.rs
index 1d2ba58..a126a0f 100644
--- a/musicxml/src/datatypes/two_note_turn.rs
+++ b/musicxml/src/datatypes/two_note_turn.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Describes the ending notes of trills and mordents for playback, relative to the current note.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum TwoNoteTurn {
/// Half step from the current note.
Half,
diff --git a/musicxml/src/datatypes/up_down.rs b/musicxml/src/datatypes/up_down.rs
index eec3652..7222f61 100644
--- a/musicxml/src/datatypes/up_down.rs
+++ b/musicxml/src/datatypes/up_down.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used for the direction of arrows and other pointed symbols like vertical accents, indicating which way the tip is pointing.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum UpDown {
///
Up,
diff --git a/musicxml/src/datatypes/up_down_stop_continue.rs b/musicxml/src/datatypes/up_down_stop_continue.rs
index ad4c75d..2105c8c 100644
--- a/musicxml/src/datatypes/up_down_stop_continue.rs
+++ b/musicxml/src/datatypes/up_down_stop_continue.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used for octave-shift elements, indicating the direction of the shift from their true pitched values because of printing difficulty.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum UpDownStopContinue {
/// Start of an [OctaveShift][crate::elements::OctaveShift] up, such as 8va bassa.
Up,
diff --git a/musicxml/src/datatypes/upright_inverted.rs b/musicxml/src/datatypes/upright_inverted.rs
index bf8b02c..4cc5939 100644
--- a/musicxml/src/datatypes/upright_inverted.rs
+++ b/musicxml/src/datatypes/upright_inverted.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Describes the appearance of a [Fermata][crate::elements::Fermata] element.
///
/// The value is [Upright][UprightInverted::Upright] if not specified.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum UprightInverted {
///
Upright,
diff --git a/musicxml/src/datatypes/valign.rs b/musicxml/src/datatypes/valign.rs
index b60193b..7502543 100644
--- a/musicxml/src/datatypes/valign.rs
+++ b/musicxml/src/datatypes/valign.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to indicate vertical alignment to the top, middle, bottom, or baseline of the text.
///
/// Defaults are implementation-dependent.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Valign {
/// Aligned to the top of the text.
Top,
diff --git a/musicxml/src/datatypes/valign_image.rs b/musicxml/src/datatypes/valign_image.rs
index 1a1131d..7dc6824 100644
--- a/musicxml/src/datatypes/valign_image.rs
+++ b/musicxml/src/datatypes/valign_image.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to indicate vertical alignment for images and graphics, so it does not include a baseline value.
///
/// Defaults are implementation-dependent.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum ValignImage {
/// Aligned to the top of the image.
Top,
diff --git a/musicxml/src/datatypes/wedge_type.rs b/musicxml/src/datatypes/wedge_type.rs
index 462f8d1..3f2de8e 100644
--- a/musicxml/src/datatypes/wedge_type.rs
+++ b/musicxml/src/datatypes/wedge_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used to specify [Wedge][crate::elements::Wedge] types.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum WedgeType {
/// Start of a crescendo [Wedge][crate::elements::Wedge] that is closed on the left side.
Crescendo,
diff --git a/musicxml/src/datatypes/winged.rs b/musicxml/src/datatypes/winged.rs
index 02f333c..6806abb 100644
--- a/musicxml/src/datatypes/winged.rs
+++ b/musicxml/src/datatypes/winged.rs
@@ -7,7 +7,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// The [Straight][Winged::Straight] and [Curved][Winged::Curved] values represent single wings, while the
/// [DoubleStraight][Winged::DoubleStraight] and [DoubleCurved][Winged::DoubleCurved] values represent
/// double wings. The [None][Winged::None] value indicates no wings and is the default.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum Winged {
/// 
None,
diff --git a/musicxml/src/datatypes/wood_value.rs b/musicxml/src/datatypes/wood_value.rs
index f0735ae..00eeaff 100644
--- a/musicxml/src/datatypes/wood_value.rs
+++ b/musicxml/src/datatypes/wood_value.rs
@@ -6,7 +6,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
///
/// The [Maraca][WoodValue::Maraca] and [Maracas][WoodValue::Maracas] values distinguish
/// the one- and two-maraca versions of the pictogram.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum WoodValue {
///
#[rename("bamboo scraper")]
diff --git a/musicxml/src/datatypes/xlink_actuate.rs b/musicxml/src/datatypes/xlink_actuate.rs
index bd6a548..52c9487 100644
--- a/musicxml/src/datatypes/xlink_actuate.rs
+++ b/musicxml/src/datatypes/xlink_actuate.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-behaviors).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum XlinkActuate {
/// An application should traverse from the starting resource to the ending resource only on a
/// post-loading event triggered for the purpose of traversal. This is the default value.
diff --git a/musicxml/src/datatypes/xlink_show.rs b/musicxml/src/datatypes/xlink_show.rs
index 85a4fe1..7479713 100644
--- a/musicxml/src/datatypes/xlink_show.rs
+++ b/musicxml/src/datatypes/xlink_show.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-behaviors).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum XlinkShow {
/// An application traversing to the ending resource should load it in a new window,
/// frame, pane, or other relevant presentation context.
diff --git a/musicxml/src/datatypes/xlink_type.rs b/musicxml/src/datatypes/xlink_type.rs
index 1f54e29..604032b 100644
--- a/musicxml/src/datatypes/xlink_type.rs
+++ b/musicxml/src/datatypes/xlink_type.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-behaviors).
///
/// MusicXML only supports the simple type.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum XlinkType {
/// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#dt-simplelink).
Simple,
diff --git a/musicxml/src/datatypes/xml_lang.rs b/musicxml/src/datatypes/xml_lang.rs
index b2eba37..434fc64 100644
--- a/musicxml/src/datatypes/xml_lang.rs
+++ b/musicxml/src/datatypes/xml_lang.rs
@@ -8,7 +8,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Language names come from ISO 639, with optional country subcodes from ISO 3166.
///
/// The value of an instance of this type may be accessed by dereferencing the struct: `*datatype_val`.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub struct XmlLang(pub String);
impl Deref for XmlLang {
diff --git a/musicxml/src/datatypes/xml_space.rs b/musicxml/src/datatypes/xml_space.rs
index 8c7f1a0..9b97baa 100644
--- a/musicxml/src/datatypes/xml_space.rs
+++ b/musicxml/src/datatypes/xml_space.rs
@@ -3,7 +3,7 @@ use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// See the definition in the [W3C Extensible Markup Language recommendation](https://www.w3.org/TR/xml/#sec-white-space).
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum XmlSpace {
/// See the definition in the [W3C Extensible Markup Language recommendation](https://www.w3.org/TR/xml/#sec-white-space).
Default,
diff --git a/musicxml/src/datatypes/yes_no.rs b/musicxml/src/datatypes/yes_no.rs
index a63bc0f..766b1d2 100644
--- a/musicxml/src/datatypes/yes_no.rs
+++ b/musicxml/src/datatypes/yes_no.rs
@@ -5,7 +5,7 @@ use musicxml_macros::{DatatypeDeserialize, DatatypeSerialize};
/// Used for boolean-like attributes.
///
/// We cannot use W3C XML Schema booleans due to their restrictions on expression of boolean values.
-#[derive(Debug, PartialEq, Eq, DatatypeDeserialize, DatatypeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, DatatypeDeserialize, DatatypeSerialize)]
pub enum YesNo {
/// True.
Yes,
diff --git a/musicxml/src/datatypes/yes_no_number.rs b/musicxml/src/datatypes/yes_no_number.rs
index 3d62a50..013937c 100644
--- a/musicxml/src/datatypes/yes_no_number.rs
+++ b/musicxml/src/datatypes/yes_no_number.rs
@@ -3,7 +3,7 @@ use alloc::string::{String, ToString};
use musicxml_internal::{DatatypeDeserializer, DatatypeSerializer};
/// Used for attributes that can be either boolean or numeric values.
-#[derive(Debug, PartialEq)]
+#[derive(Debug, PartialEq, Copy, Clone)]
pub enum YesNoNumber {
/// The value is `yes`.
Yes,
diff --git a/musicxml/src/datatypes/yyyy_mm_dd.rs b/musicxml/src/datatypes/yyyy_mm_dd.rs
index ea8e952..e627f8f 100644
--- a/musicxml/src/datatypes/yyyy_mm_dd.rs
+++ b/musicxml/src/datatypes/yyyy_mm_dd.rs
@@ -5,7 +5,7 @@ use regex::Regex;
/// Represents dates in the yyyy-mm-dd format, following ISO 8601.
///
/// This is a W3C XML Schema date type, but without the optional timezone data.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub struct YyyyMmDd {
/// The year.
pub year: u16,
diff --git a/musicxml/src/elements/accent.rs b/musicxml/src/elements/accent.rs
index 589e809..058c95e 100644
--- a/musicxml/src/elements/accent.rs
+++ b/musicxml/src/elements/accent.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Accent] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AccentAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct AccentAttributes {
/// The [Accent] element indicates a regular horizontal accent mark.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Accent {
/// Element-specific attributes
pub attributes: AccentAttributes,
diff --git a/musicxml/src/elements/accidental.rs b/musicxml/src/elements/accidental.rs
index 0a1c76d..afcd034 100644
--- a/musicxml/src/elements/accidental.rs
+++ b/musicxml/src/elements/accidental.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [AccidentalAttributes] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AccidentalAttributes {
/// Specifies whether or not brackets are put around a symbol for an editorial indication. If not specified, it is left to application defaults.
pub bracket: Option,
@@ -56,7 +56,7 @@ pub struct AccidentalAttributes {
/// The [Accidental] element represents actual notated accidentals.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Accidental {
/// Element-specific attributes
pub attributes: AccidentalAttributes,
diff --git a/musicxml/src/elements/accidental_mark.rs b/musicxml/src/elements/accidental_mark.rs
index 82cfb25..56b0bcb 100644
--- a/musicxml/src/elements/accidental_mark.rs
+++ b/musicxml/src/elements/accidental_mark.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [AccidentalMark] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AccidentalMarkAttributes {
/// Specifies whether or not brackets are put around a symbol for an editorial indication. If not specified, it is left to application defaults.
pub bracket: Option,
@@ -58,7 +58,7 @@ pub struct AccidentalMarkAttributes {
/// 
///
/// When used in an ornament, position and placement are relative to the ornament, not relative to the note.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("accidental-mark")]
pub struct AccidentalMark {
/// Element-specific attributes
diff --git a/musicxml/src/elements/accidental_text.rs b/musicxml/src/elements/accidental_text.rs
index 756a03c..3c3febf 100644
--- a/musicxml/src/elements/accidental_text.rs
+++ b/musicxml/src/elements/accidental_text.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [AccidentalText] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AccidentalTextAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -91,7 +91,7 @@ pub struct AccidentalTextAttributes {
/// The [AccidentalText] element is used for exact formatting of accidentals in display elements such as [PartNameDisplay][super::PartNameDisplay].
///
/// The` enclosure` attribute is none if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("accidental-text")]
pub struct AccidentalText {
/// Element-specific attributes
diff --git a/musicxml/src/elements/accord.rs b/musicxml/src/elements/accord.rs
index 2e7b467..28a3bb2 100644
--- a/musicxml/src/elements/accord.rs
+++ b/musicxml/src/elements/accord.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Accord] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AccordAttributes {
/// Strings are numbered from high to low.
pub string: Option,
}
/// Contents of the [Accord] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct AccordContents {
/// Step on a diatonic scale, represented using the English letters A through G.
pub tuning_step: TuningStep,
@@ -25,7 +25,7 @@ pub struct AccordContents {
/// The [Accord] element represents the tuning of a single string in the [Scordatura][super::Scordatura] element.
///
/// It uses the same group of elements as the [StaffTuning][super::StaffTuning] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Accord {
/// Element-specific attributes
pub attributes: AccordAttributes,
diff --git a/musicxml/src/elements/accordion_high.rs b/musicxml/src/elements/accordion_high.rs
index 9a804f8..89ecba5 100644
--- a/musicxml/src/elements/accordion_high.rs
+++ b/musicxml/src/elements/accordion_high.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// 
///
/// This element is omitted if no dot is present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("accordion-high")]
pub struct AccordionHigh {
/// Element-specific attributes
diff --git a/musicxml/src/elements/accordion_low.rs b/musicxml/src/elements/accordion_low.rs
index 9b2ccb5..2043969 100644
--- a/musicxml/src/elements/accordion_low.rs
+++ b/musicxml/src/elements/accordion_low.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// 
///
/// This element is omitted if no dot is present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("accordion-low")]
pub struct AccordionLow {
/// Element-specific attributes
diff --git a/musicxml/src/elements/accordion_middle.rs b/musicxml/src/elements/accordion_middle.rs
index 6f915a3..1433c6c 100644
--- a/musicxml/src/elements/accordion_middle.rs
+++ b/musicxml/src/elements/accordion_middle.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// 
///
/// This element is omitted if no dots are present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("accordion-middle")]
pub struct AccordionMiddle {
/// Element-specific attributes
diff --git a/musicxml/src/elements/accordion_registration.rs b/musicxml/src/elements/accordion_registration.rs
index 9eb2e63..b1b319f 100644
--- a/musicxml/src/elements/accordion_registration.rs
+++ b/musicxml/src/elements/accordion_registration.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [AccordionRegistration] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AccordionRegistrationAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct AccordionRegistrationAttributes {
}
/// Contents of the [AccordionRegistration] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct AccordionRegistrationContents {
/// The [AccordionHigh] element represents the presence of one or more dots in the high section of the registration symbol.
pub accordion_high: Option,
@@ -71,7 +71,7 @@ pub struct AccordionRegistrationContents {
/// These are circular symbols divided horizontally into high, middle, and low sections that correspond to 4', 8', and 16' pipes.
/// Each [AccordionHigh], [AccordionLow], and [AccordionMiddle] element represents the presence of one or more dots in the registration diagram.
/// An [AccordionRegistration] element needs to have at least one of the child elements present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("accordion-registration")]
pub struct AccordionRegistration {
/// Element-specific attributes
diff --git a/musicxml/src/elements/actual_notes.rs b/musicxml/src/elements/actual_notes.rs
index 03ff963..eea89d7 100644
--- a/musicxml/src/elements/actual_notes.rs
+++ b/musicxml/src/elements/actual_notes.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [ActualNotes] element describes how many notes are played in the time usually occupied by the number in the [NormalNotes][super::NormalNotes] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("actual-notes")]
pub struct ActualNotes {
/// Element-specific attributes
diff --git a/musicxml/src/elements/alter.rs b/musicxml/src/elements/alter.rs
index d46a8ae..e87d8bc 100644
--- a/musicxml/src/elements/alter.rs
+++ b/musicxml/src/elements/alter.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Alter] element represents chromatic alteration in number of semitones (e.g., -1 for flat, 1 for sharp).
///
/// Decimal values like 0.5 (quarter tone sharp) are used for microtones.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Alter {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/appearance.rs b/musicxml/src/elements/appearance.rs
index be2beaf..7ec18cd 100644
--- a/musicxml/src/elements/appearance.rs
+++ b/musicxml/src/elements/appearance.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Appearance] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct AppearanceContents {
/// The [LineWidth] element specifies the width of a line type in tenths.
pub line_width: Vec,
@@ -22,7 +22,7 @@ pub struct AppearanceContents {
///
/// This includes support for line widths, definitions for note sizes, standard distances between notation elements, and Standard Music Font Layout (SMuFL) glyphs,
/// plus an extension element for other aspects of appearance.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Appearance {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/arpeggiate.rs b/musicxml/src/elements/arpeggiate.rs
index 7779f76..b339169 100644
--- a/musicxml/src/elements/arpeggiate.rs
+++ b/musicxml/src/elements/arpeggiate.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Arpeggiate] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ArpeggiateAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -46,7 +46,7 @@ pub struct ArpeggiateAttributes {
///
/// The length of the sign can be determined from the position attributes for the [Arpeggiate] elements used with the
/// top and bottom notes of the arpeggiated chord.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Arpeggiate {
/// Element-specific attributes
pub attributes: ArpeggiateAttributes,
diff --git a/musicxml/src/elements/arrow.rs b/musicxml/src/elements/arrow.rs
index e53ea27..059499b 100644
--- a/musicxml/src/elements/arrow.rs
+++ b/musicxml/src/elements/arrow.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Arrow] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ArrowAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct ArrowAttributes {
}
/// Contents of the [StraightArrowContents] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct StraightArrowContents {
/// The [ArrowDirection] element specifies the direction of the arrow.
pub arrow_direction: ArrowDirection,
@@ -55,7 +55,7 @@ pub struct StraightArrowContents {
}
/// Contents of the [CircularArrowContents] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct CircularArrowContents {
/// The [CircularArrow] element specifies the direction of the circular arrow.
pub circular_arrow: CircularArrow,
@@ -64,7 +64,7 @@ pub struct CircularArrowContents {
/// Contents of the [Arrow] element.
///
/// The [Arrow] element may contain either [StraightArrowContents] or [CircularArrowContents].
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum ArrowContents {
/// The [StraightArrowContents] element specifies the direction, style, and arrowhead of a straight arrow.
Straight(StraightArrowContents),
@@ -98,7 +98,7 @@ impl ContentSerializer for ArrowContents {
/// It can represent both Unicode and Standard Music Font Layout (SMuFL) arrows.
/// The `smufl` attribute distinguishes different SMuFL glyphs that have an arrow appearance such as "arrowBlackUp,"
/// "guitarStrumUp," or "handbellsSwingUp." The specified glyph should match the descriptive representation.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Arrow {
/// Element-specific attributes
pub attributes: ArrowAttributes,
diff --git a/musicxml/src/elements/arrow_direction.rs b/musicxml/src/elements/arrow_direction.rs
index 71299be..dbe112d 100644
--- a/musicxml/src/elements/arrow_direction.rs
+++ b/musicxml/src/elements/arrow_direction.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [ArrowDirection] element represents the direction in which an arrow points, using Unicode arrow terminology.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("arrow-direction")]
pub struct ArrowDirection {
/// Element-specific attributes
diff --git a/musicxml/src/elements/arrow_style.rs b/musicxml/src/elements/arrow_style.rs
index bc27c68..dcf4553 100644
--- a/musicxml/src/elements/arrow_style.rs
+++ b/musicxml/src/elements/arrow_style.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [ArrowStyle] element represents the style of an arrow, using Unicode arrow terminology.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("arrow-style")]
pub struct ArrowStyle {
/// Element-specific attributes
diff --git a/musicxml/src/elements/arrowhead.rs b/musicxml/src/elements/arrowhead.rs
index 63a35d3..264bfe9 100644
--- a/musicxml/src/elements/arrowhead.rs
+++ b/musicxml/src/elements/arrowhead.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The presence of an [Arrowhead] element indicates that only the arrowhead is displayed within the [Arrow][super::Arrow], not the arrow stem.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Arrowhead {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/articulations.rs b/musicxml/src/elements/articulations.rs
index 083d73b..a9393a3 100644
--- a/musicxml/src/elements/articulations.rs
+++ b/musicxml/src/elements/articulations.rs
@@ -8,14 +8,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Articulations] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ArticulationsAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
}
/// The [ArticulationsType] element specifies all possible articulations and accents available for use in an [Articulations] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum ArticulationsType {
/// The [Accent] element indicates a regular accent mark.
Accent(Accent),
@@ -61,7 +61,7 @@ pub enum ArticulationsType {
/// The [Articulations] element groups together articulations and accents.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Articulations {
/// Element-specific attributes
pub attributes: ArticulationsAttributes,
diff --git a/musicxml/src/elements/artificial.rs b/musicxml/src/elements/artificial.rs
index d41b72d..72cad51 100644
--- a/musicxml/src/elements/artificial.rs
+++ b/musicxml/src/elements/artificial.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Artificial] element indicates that this is an artificial harmonic.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Artificial {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/assess.rs b/musicxml/src/elements/assess.rs
index dffc769..e5c81d3 100644
--- a/musicxml/src/elements/assess.rs
+++ b/musicxml/src/elements/assess.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Assess] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct AssessAttributes {
/// If yes, the note should be assessed; if no, it should not be assessed.
/// If not specified, it is no for notes with a [Cue][super::Cue] child element and yes otherwise.
@@ -32,7 +32,7 @@ impl Default for AssessAttributes {
///
/// By default, an assessment application should assess all notes without a [Cue][super::Cue] child element,
/// and not assess any note with a [Cue][super::Cue] child element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Assess {
/// Element-specific attributes
pub attributes: AssessAttributes,
diff --git a/musicxml/src/elements/attributes.rs b/musicxml/src/elements/attributes.rs
index 008d895..04a3959 100644
--- a/musicxml/src/elements/attributes.rs
+++ b/musicxml/src/elements/attributes.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Attributes] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct AttributesContents {
/// The [Footnote] element specifies editorial information or lyrics content.
pub footnote: Option,
@@ -45,7 +45,7 @@ pub struct AttributesContents {
///
/// This includes key and time signatures, clefs, transpositions, and staving. When attributes are changed mid-measure,
/// it affects the music in score order, not in MusicXML document order.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Attributes {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/backup.rs b/musicxml/src/elements/backup.rs
index b27fad6..f2bf3d1 100644
--- a/musicxml/src/elements/backup.rs
+++ b/musicxml/src/elements/backup.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Backup] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct BackupContents {
/// The [Duration] element specifies the number of divisions to move back.
pub duration: Duration,
@@ -20,7 +20,7 @@ pub struct BackupContents {
///
/// The [Backup] element is generally used to move between voices and staves. Thus it does not include [Voice][super::Voice] or [Staff][super::Staff] elements.
/// Duration values should always be positive, and should not cross measure boundaries or mid-measure changes in the [Divisions][super::Divisions] value.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Backup {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/bar_style.rs b/musicxml/src/elements/bar_style.rs
index c09d694..1af90d8 100644
--- a/musicxml/src/elements/bar_style.rs
+++ b/musicxml/src/elements/bar_style.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BarStyle] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BarStyleAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -13,7 +13,7 @@ pub struct BarStyleAttributes {
/// The [BarStyle] element contains barline style and color information.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("bar-style")]
pub struct BarStyle {
/// Element-specific attributes
diff --git a/musicxml/src/elements/barline.rs b/musicxml/src/elements/barline.rs
index 2710106..629bbd6 100644
--- a/musicxml/src/elements/barline.rs
+++ b/musicxml/src/elements/barline.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Barline] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BarlineAttributes {
/// Used for playback when there is a [Coda] child element.
/// Indicates the end point for a forward jump to a coda sign.
@@ -29,7 +29,7 @@ pub struct BarlineAttributes {
}
/// Contents of the [Barline] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct BarlineContents {
/// The [BarStyle] element indicates the style of the barline.
pub bar_style: Option,
@@ -58,7 +58,7 @@ pub struct BarlineContents {
/// This includes information about repeats and multiple endings, as well as line style. Barline data is on the same level as the other musical data
/// in a score - a child of a measure in a partwise score, or a part in a timewise score. This allows for barlines within measures, as in dotted barlines
/// that subdivide measures in complex meters. The two [Fermata] elements allow for fermatas on both sides of the barline (the lower one inverted).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Barline {
/// Element-specific attributes
pub attributes: BarlineAttributes,
diff --git a/musicxml/src/elements/barre.rs b/musicxml/src/elements/barre.rs
index 6214da6..483ac66 100644
--- a/musicxml/src/elements/barre.rs
+++ b/musicxml/src/elements/barre.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Barre] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BarreAttributes {
/// The start value indicates the lowest pitched string (e.g., the string with the highest MusicXML number).
/// The stop value indicates the highest pitched string.
@@ -16,7 +16,7 @@ pub struct BarreAttributes {
/// The [Barre] element indicates placing a finger over multiple strings on a single fret.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Barre {
/// Element-specific attributes
pub attributes: BarreAttributes,
diff --git a/musicxml/src/elements/base_pitch.rs b/musicxml/src/elements/base_pitch.rs
index 8326fa0..ca2bf3e 100644
--- a/musicxml/src/elements/base_pitch.rs
+++ b/musicxml/src/elements/base_pitch.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The presence of the [BasePitch] element indicates this is the pitch at which the string is played before touching to create the harmonic.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("base-pitch")]
pub struct BasePitch {
/// Element-specific attributes
diff --git a/musicxml/src/elements/bass.rs b/musicxml/src/elements/bass.rs
index 2bc999d..67e8e04 100644
--- a/musicxml/src/elements/bass.rs
+++ b/musicxml/src/elements/bass.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Bass] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BassAttributes {
/// Specifies where the bass is displayed relative to what precedes it.
pub arrangement: Option,
}
/// Contents of the [Bass] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct BassContents {
/// The [BassSeparator] element specifies the symbol used to indicate a bass note in popular music chord symbols.
pub bass_separator: Option,
@@ -26,7 +26,7 @@ pub struct BassContents {
///
/// It is generally not used in functional harmony, as inversion is generally not used in pop chord symbols.
/// As with [Root][super::Root], it is divided into step and alter elements, similar to pitches.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Bass {
/// Element-specific attributes
pub attributes: BassAttributes,
diff --git a/musicxml/src/elements/bass_alter.rs b/musicxml/src/elements/bass_alter.rs
index b0d9dd4..19e9e67 100644
--- a/musicxml/src/elements/bass_alter.rs
+++ b/musicxml/src/elements/bass_alter.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BassAlter] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BassAlterAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -45,7 +45,7 @@ pub struct BassAlterAttributes {
///
/// In some chord styles, the text for the [BassStep][super::BassStep] element may include [BassAlter] information. In that case, the `print_object` attribute
/// of the [BassAlter] element can be set to "no".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("bass-alter")]
pub struct BassAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/bass_separator.rs b/musicxml/src/elements/bass_separator.rs
index 70d25e6..f8ba48c 100644
--- a/musicxml/src/elements/bass_separator.rs
+++ b/musicxml/src/elements/bass_separator.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BassSeparator] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BassSeparatorAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -40,7 +40,7 @@ pub struct BassSeparatorAttributes {
/// The [BassSeparator] element indicates that text, rather than a line or slash, separates the bass from what precedes it.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("bass-separator")]
pub struct BassSeparator {
/// Element-specific attributes
diff --git a/musicxml/src/elements/bass_step.rs b/musicxml/src/elements/bass_step.rs
index 93a83b7..2083799 100644
--- a/musicxml/src/elements/bass_step.rs
+++ b/musicxml/src/elements/bass_step.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BassStep] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BassStepAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -40,7 +40,7 @@ pub struct BassStepAttributes {
}
/// The [BassStep] element represents the pitch step of the bass of the current chord within the [Harmony][super::Harmony] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("bass-step")]
pub struct BassStep {
/// Element-specific attributes
diff --git a/musicxml/src/elements/beam.rs b/musicxml/src/elements/beam.rs
index 33cc1c4..8cbd27d 100644
--- a/musicxml/src/elements/beam.rs
+++ b/musicxml/src/elements/beam.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Beam] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BeamAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -29,7 +29,7 @@ pub struct BeamAttributes {
/// starting with the eighth note beam using a value of 1:
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Beam {
/// Element-specific attributes
pub attributes: BeamAttributes,
diff --git a/musicxml/src/elements/beat_repeat.rs b/musicxml/src/elements/beat_repeat.rs
index 07b891a..188fe2b 100644
--- a/musicxml/src/elements/beat_repeat.rs
+++ b/musicxml/src/elements/beat_repeat.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BeatRepeat] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BeatRepeatAttributes {
/// Indicates the starting or stopping point of the section displaying the beat repeat symbols.
pub r#type: StartStop,
@@ -17,7 +17,7 @@ pub struct BeatRepeatAttributes {
}
/// Contents of the [BeatRepeat] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct BeatRepeatContents {
/// The [SlashType] element is used to indicate the notation style for the slashes.
pub slash_type: Option,
@@ -36,7 +36,7 @@ pub struct BeatRepeatContents {
///
/// The [BeatRepeat] element specifies a notation style for repetitions. The actual music being repeated needs to be repeated within the MusicXML file.
/// This element specifies the notation that indicates the repeat.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("beat-repeat")]
pub struct BeatRepeat {
/// Element-specific attributes
diff --git a/musicxml/src/elements/beat_type.rs b/musicxml/src/elements/beat_type.rs
index bdf2560..5dfeafa 100644
--- a/musicxml/src/elements/beat_type.rs
+++ b/musicxml/src/elements/beat_type.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [BeatType] element indicates the beat unit, as found in the denominator of a time signature.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("beat-type")]
pub struct BeatType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/beat_unit.rs b/musicxml/src/elements/beat_unit.rs
index 4989c40..093cb32 100644
--- a/musicxml/src/elements/beat_unit.rs
+++ b/musicxml/src/elements/beat_unit.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [BeatUnit] element indicates the graphical note type to use in a metronome mark.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("beat-unit")]
pub struct BeatUnit {
/// Element-specific attributes
diff --git a/musicxml/src/elements/beat_unit_dot.rs b/musicxml/src/elements/beat_unit_dot.rs
index fe044e4..a29f4be 100644
--- a/musicxml/src/elements/beat_unit_dot.rs
+++ b/musicxml/src/elements/beat_unit_dot.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [BeatUnitDot] element is used to specify any augmentation dots for a metronome mark note.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("beat-unit-dot")]
pub struct BeatUnitDot {
/// Element-specific attributes
diff --git a/musicxml/src/elements/beat_unit_tied.rs b/musicxml/src/elements/beat_unit_tied.rs
index 8ebc2e6..423beb1 100644
--- a/musicxml/src/elements/beat_unit_tied.rs
+++ b/musicxml/src/elements/beat_unit_tied.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [BeatUnitTied] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct BeatUnitTiedContents {
/// The [BeatUnit] element specifies the beat unit for a metronome mark.
pub beat_unit: BeatUnit,
@@ -16,7 +16,7 @@ pub struct BeatUnitTiedContents {
///
/// This allows two or more tied notes to be associated with a [PerMinute][super::PerMinute] value in a metronome mark, whereas the [MetronomeTied][super::MetronomeTied] element
/// is restricted to metric relationship marks.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("beat-unit-tied")]
pub struct BeatUnitTied {
/// Element-specific attributes
diff --git a/musicxml/src/elements/beater.rs b/musicxml/src/elements/beater.rs
index 7b9f436..c43a55a 100644
--- a/musicxml/src/elements/beater.rs
+++ b/musicxml/src/elements/beater.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Beater] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BeaterAttributes {
/// Indicates the direction in which the tip of the beater points.
pub tip: Option,
@@ -13,7 +13,7 @@ pub struct BeaterAttributes {
/// The [Beater] element represents pictograms for beaters, mallets, and sticks that do not have different materials represented in the pictogram.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Beater {
/// Element-specific attributes
pub attributes: BeaterAttributes,
diff --git a/musicxml/src/elements/bend.rs b/musicxml/src/elements/bend.rs
index c42f440..c1bf5e7 100644
--- a/musicxml/src/elements/bend.rs
+++ b/musicxml/src/elements/bend.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Bend] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BendAttributes {
/// Does the bend accelerate during playback? Default is "no".
pub accelerate: Option,
@@ -51,7 +51,7 @@ pub struct BendAttributes {
}
/// Contents of the [Bend] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct BendContents {
/// The [BendAlter] element specifies the alteration of the bend.
pub bend_alter: BendAlter,
@@ -66,7 +66,7 @@ pub struct BendContents {
/// The [Bend] element is used in guitar notation and tablature.
///
/// A single note with a bend and release will contain two [Bend] elements: the first to represent the bend and the second to represent the release.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Bend {
/// Element-specific attributes
pub attributes: BendAttributes,
diff --git a/musicxml/src/elements/bend_alter.rs b/musicxml/src/elements/bend_alter.rs
index ab1837b..c1a5892 100644
--- a/musicxml/src/elements/bend_alter.rs
+++ b/musicxml/src/elements/bend_alter.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
/// As with the [Alter][super::Alter] element, numbers like 0.5 can be used to indicate microtones. Negative values indicate pre-bends or releases.
/// The [PreBend][super::PreBend] and [Release][super::Release] elements are used to distinguish what is intended.
/// Because the [BendAlter] element represents the number of steps in the bend, a release after a bend has a negative [BendAlter] value, not a zero value.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("bend-alter")]
pub struct BendAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/bookmark.rs b/musicxml/src/elements/bookmark.rs
index 6e0fb91..2c2899d 100644
--- a/musicxml/src/elements/bookmark.rs
+++ b/musicxml/src/elements/bookmark.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Bookmark] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BookmarkAttributes {
/// The identifier for this bookmark, unique within this document.
pub id: Id,
@@ -24,7 +24,7 @@ pub struct BookmarkAttributes {
}
/// The [Bookmark] element serves as a well-defined target for an incoming simple XLink.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Bookmark {
/// Element-specific attributes
pub attributes: BookmarkAttributes,
diff --git a/musicxml/src/elements/bottom_margin.rs b/musicxml/src/elements/bottom_margin.rs
index e9c3399..68651ad 100644
--- a/musicxml/src/elements/bottom_margin.rs
+++ b/musicxml/src/elements/bottom_margin.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [BottomMargin] element specifies the bottom page margin in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("bottom-margin")]
pub struct BottomMargin {
/// Element-specific attributes
diff --git a/musicxml/src/elements/bracket.rs b/musicxml/src/elements/bracket.rs
index 0227ab0..5f32387 100644
--- a/musicxml/src/elements/bracket.rs
+++ b/musicxml/src/elements/bracket.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Bracket] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BracketAttributes {
/// Specifies if there is a jog up or down (or both), an arrow, or nothing at the start or end of the bracket.
pub line_end: LineEnd,
@@ -50,7 +50,7 @@ pub struct BracketAttributes {
/// 
///
/// The `line_type` is solid if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Bracket {
/// Element-specific attributes
pub attributes: BracketAttributes,
diff --git a/musicxml/src/elements/brass_bend.rs b/musicxml/src/elements/brass_bend.rs
index 1d3a75f..5e82bea 100644
--- a/musicxml/src/elements/brass_bend.rs
+++ b/musicxml/src/elements/brass_bend.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BrassBend] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BrassBendAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct BrassBendAttributes {
/// The [BrassBend] element represents the u-shaped bend symbol used in brass notation, distinct from the [Bend][super::Bend] element used in guitar music.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("brass-bend")]
pub struct BrassBend {
/// Element-specific attributes
diff --git a/musicxml/src/elements/breath_mark.rs b/musicxml/src/elements/breath_mark.rs
index c587e58..4233097 100644
--- a/musicxml/src/elements/breath_mark.rs
+++ b/musicxml/src/elements/breath_mark.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [BreathMark] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct BreathMarkAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct BreathMarkAttributes {
/// The [BreathMark] element indicates a place to take a breath.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("breath-mark")]
pub struct BreathMark {
/// Element-specific attributes
diff --git a/musicxml/src/elements/caesura.rs b/musicxml/src/elements/caesura.rs
index 4a957dd..320dd09 100644
--- a/musicxml/src/elements/caesura.rs
+++ b/musicxml/src/elements/caesura.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Caesura] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CaesuraAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct CaesuraAttributes {
/// The [Caesura] element indicates a slight pause.
///
/// It is notated using a "railroad tracks" symbol or other variations specified in the element content.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Caesura {
/// Element-specific attributes
pub attributes: CaesuraAttributes,
diff --git a/musicxml/src/elements/cancel.rs b/musicxml/src/elements/cancel.rs
index 8464c5b..ec8b4ef 100644
--- a/musicxml/src/elements/cancel.rs
+++ b/musicxml/src/elements/cancel.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Cancel] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CancelAttributes {
/// Indicates where the cancellation appears relative to the new key signature. It is "left" if not specified.
pub location: Option,
@@ -17,7 +17,7 @@ pub struct CancelAttributes {
/// This will always happen when changing to C major or A minor and need not be specified then.
/// The [Cancel] element value matches the fifths value of the cancelled key signature
/// (e.g., a cancel of -2 will provide an explicit cancellation for changing from B flat major to F major).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Cancel {
/// Element-specific attributes
pub attributes: CancelAttributes,
diff --git a/musicxml/src/elements/capo.rs b/musicxml/src/elements/capo.rs
index 354b340..731a5e6 100644
--- a/musicxml/src/elements/capo.rs
+++ b/musicxml/src/elements/capo.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Capo] element indicates at which fret a capo should be placed on a fretted instrument.
///
/// This changes the open tuning of the strings specified by the [StaffTuning][super::StaffTuning] element by the specified number of half-steps.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Capo {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/chord.rs b/musicxml/src/elements/chord.rs
index d8cb9cf..5d0e5ea 100644
--- a/musicxml/src/elements/chord.rs
+++ b/musicxml/src/elements/chord.rs
@@ -16,7 +16,7 @@ use musicxml_macros::*;
/// 
///
/// If these first three notes are represented as a chord, the quarter notes must be the ones with the [Chord] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Chord {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/chromatic.rs b/musicxml/src/elements/chromatic.rs
index 02edac6..40aaa5d 100644
--- a/musicxml/src/elements/chromatic.rs
+++ b/musicxml/src/elements/chromatic.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
///
/// This value does not include [OctaveChange][super::OctaveChange] values; the values for both elements need to be added
/// to the written pitch to get the correct sounding pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Chromatic {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/circular_arrow.rs b/musicxml/src/elements/circular_arrow.rs
index d64cb7e..303a4fd 100644
--- a/musicxml/src/elements/circular_arrow.rs
+++ b/musicxml/src/elements/circular_arrow.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [CircularArrow] element represents a circular arrow, using Unicode arrow terminology to specify the arrow direction.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("circular-arrow")]
pub struct CircularArrow {
/// Element-specific attributes
diff --git a/musicxml/src/elements/clef.rs b/musicxml/src/elements/clef.rs
index 779d286..5595cea 100644
--- a/musicxml/src/elements/clef.rs
+++ b/musicxml/src/elements/clef.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Clef] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ClefAttributes {
/// Sometimes clefs are added to the staff in non-standard line positions, either to indicate cue passages,
/// or when there are multiple clefs present simultaneously on one staff. In this situation,
@@ -57,7 +57,7 @@ pub struct ClefAttributes {
}
/// Contents of the [Clef] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct ClefContents {
/// The [Sign] element represents the clef symbol.
pub sign: Sign,
@@ -70,7 +70,7 @@ pub struct ClefContents {
/// Clefs are represented by a combination of [Sign], [Line], and [ClefOctaveChange] elements.
///
/// Clefs appear at the start of each system unless the `print_object` attribute has been set to "no" or the `additional` attribute has been set to "yes".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Clef {
/// Element-specific attributes
pub attributes: ClefAttributes,
diff --git a/musicxml/src/elements/clef_octave_change.rs b/musicxml/src/elements/clef_octave_change.rs
index dab6d47..2b06da3 100644
--- a/musicxml/src/elements/clef_octave_change.rs
+++ b/musicxml/src/elements/clef_octave_change.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [ClefOctaveChange] element is used for transposing clefs.
///
/// A treble clef for tenors would have a value of -1.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("clef-octave-change")]
pub struct ClefOctaveChange {
/// Element-specific attributes
diff --git a/musicxml/src/elements/coda.rs b/musicxml/src/elements/coda.rs
index 86e8823..2811cde 100644
--- a/musicxml/src/elements/coda.rs
+++ b/musicxml/src/elements/coda.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Coda] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CodaAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -63,7 +63,7 @@ pub struct CodaAttributes {
/// A [Sound][super::Sound] element is also needed to guide playback applications reliably.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Coda {
/// Element-specific attributes
pub attributes: CodaAttributes,
diff --git a/musicxml/src/elements/concert_score.rs b/musicxml/src/elements/concert_score.rs
index df83cc2..946bf2b 100644
--- a/musicxml/src/elements/concert_score.rs
+++ b/musicxml/src/elements/concert_score.rs
@@ -10,7 +10,7 @@ use musicxml_macros::*;
/// either the [Diatonic][super::Diatonic] or [Chromatic][super::Chromatic] elements. Concert scores may include octave transpositions,
/// so [Transpose][super::Transpose] elements with a [Double][super::Double] element or a non-zero [OctaveChange][super::OctaveChange]
/// element value are permitted.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("concert-score")]
pub struct ConcertScore {
/// Element-specific attributes
diff --git a/musicxml/src/elements/creator.rs b/musicxml/src/elements/creator.rs
index 7ee8a59..27c2cfd 100644
--- a/musicxml/src/elements/creator.rs
+++ b/musicxml/src/elements/creator.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Creator] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CreatorAttributes {
/// Distinguishes different creative contributions. Thus there can be multiple [Creator] elements
/// within an [Identification][super::Identification] element. Standard values are composer, lyricist, and arranger.
@@ -16,7 +16,7 @@ pub struct CreatorAttributes {
/// The [Creator] element describes the creators of the score.
///
/// This is similar to the Dublin Core creator element. The MusicXML format does not use the creator / contributor distinction from Dublin Core.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Creator {
/// Element-specific attributes
pub attributes: CreatorAttributes,
diff --git a/musicxml/src/elements/credit.rs b/musicxml/src/elements/credit.rs
index 23ad86c..2fff9ec 100644
--- a/musicxml/src/elements/credit.rs
+++ b/musicxml/src/elements/credit.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Credit] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CreditAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
@@ -17,14 +17,14 @@ pub struct CreditAttributes {
}
/// Contents of the [CreditImage] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct CreditImageContents {
/// The [CreditImage] element specifies the appearance of an image within a credit.
pub credit_image: CreditImage,
}
/// Contents of the [CreditTextSubcontents] element.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct CreditTextSubcontents {
/// The [Link] element specifies a hyperlink to a URL.
pub link: Vec,
@@ -37,7 +37,7 @@ pub struct CreditTextSubcontents {
}
/// Contents of the [CreditTextContents] element.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct CreditTextContents {
/// The [CreditWords] element specifies the text of a credit.
pub credit_words: Option,
@@ -92,7 +92,7 @@ impl ContentDeserializer for CreditTextContents {
/// Contents of the [CreditSubcontents] element.
#[allow(clippy::large_enum_variant)]
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum CreditSubcontents {
/// The [CreditImageContents] element specifies the appearance of an image within a credit.
Image(CreditImageContents),
@@ -101,7 +101,7 @@ pub enum CreditSubcontents {
}
/// Contents of the [Credit] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct CreditContents {
/// The [CreditType] element specifies the type of text that appears in a credit.
pub credit_type: Vec,
@@ -202,7 +202,7 @@ impl ContentSerializer for CreditContents {
///
/// By default, a series of [CreditWords][super::CreditWords] and [CreditSymbol][super::CreditSymbol] elements within a single [Credit] element follow one another
/// in sequence visually. Non-positional formatting attributes are carried over from the previous element by default.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Credit {
/// Element-specific attributes
pub attributes: CreditAttributes,
diff --git a/musicxml/src/elements/credit_image.rs b/musicxml/src/elements/credit_image.rs
index 89bcd70..91baaf7 100644
--- a/musicxml/src/elements/credit_image.rs
+++ b/musicxml/src/elements/credit_image.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [CreditImage] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CreditImageAttributes {
/// Changes the computation of the default horizontal position.
/// The origin is changed relative to the left-hand side of the note or the musical position within the bar.
@@ -58,7 +58,7 @@ pub struct CreditImageAttributes {
///
/// However, since the [Credit][super::Credit] is not part of a measure, the `default_x` and `default_y` attributes adjust the origin relative
/// to the bottom left-hand corner of the page.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("credit-image")]
pub struct CreditImage {
/// Element-specific attributes
diff --git a/musicxml/src/elements/credit_symbol.rs b/musicxml/src/elements/credit_symbol.rs
index 4749154..c4558e5 100644
--- a/musicxml/src/elements/credit_symbol.rs
+++ b/musicxml/src/elements/credit_symbol.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [CreditSymbol] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CreditSymbolAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -91,7 +91,7 @@ pub struct CreditSymbolAttributes {
///
/// By default, a series of [CreditWords][super::CreditWords] and [CreditSymbol] elements within a single [Credit][super::Credit] element follow one another
/// in sequence visually. Non-positional formatting attributes are carried over from the previous element by default.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("credit-symbol")]
pub struct CreditSymbol {
/// Element-specific attributes
diff --git a/musicxml/src/elements/credit_type.rs b/musicxml/src/elements/credit_type.rs
index 21a0545..e18a906 100644
--- a/musicxml/src/elements/credit_type.rs
+++ b/musicxml/src/elements/credit_type.rs
@@ -16,7 +16,7 @@ use musicxml_macros::*;
/// - part name
///
/// Other values may also be used.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("credit-type")]
pub struct CreditType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/credit_words.rs b/musicxml/src/elements/credit_words.rs
index cac5f88..dfbebfa 100644
--- a/musicxml/src/elements/credit_words.rs
+++ b/musicxml/src/elements/credit_words.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [CreditWords] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct CreditWordsAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -95,7 +95,7 @@ pub struct CreditWordsAttributes {
///
/// By default, a series of [CreditWords] and [CreditSymbol][super::CreditSymbol] elements within a single [Credit][super::Credit] element follow one another
/// in sequence visually. Non-positional formatting attributes are carried over from the previous element by default.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("credit-words")]
pub struct CreditWords {
/// Element-specific attributes
diff --git a/musicxml/src/elements/cue.rs b/musicxml/src/elements/cue.rs
index ab52a55..023579e 100644
--- a/musicxml/src/elements/cue.rs
+++ b/musicxml/src/elements/cue.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
///
/// In MusicXML, a cue note is a silent note with no playback. Normal notes that play can be specified as cue size using the [Type][super::Type] element.
/// A cue note that is specified as full size using the [Type][super::Type] element will still remain silent.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Cue {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/damp.rs b/musicxml/src/elements/damp.rs
index c57aa86..534c7bc 100644
--- a/musicxml/src/elements/damp.rs
+++ b/musicxml/src/elements/damp.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Damp] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DampAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -57,7 +57,7 @@ pub struct DampAttributes {
/// The [Damp] element specifies a harp damping mark.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Damp {
/// Element-specific attributes
pub attributes: DampAttributes,
diff --git a/musicxml/src/elements/damp_all.rs b/musicxml/src/elements/damp_all.rs
index b6ef0c6..0f72b8b 100644
--- a/musicxml/src/elements/damp_all.rs
+++ b/musicxml/src/elements/damp_all.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DampAll] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DampAllAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -57,7 +57,7 @@ pub struct DampAllAttributes {
/// The [DampAll] element specifies a harp damping mark for all strings.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("damp-all")]
pub struct DampAll {
/// Element-specific attributes
diff --git a/musicxml/src/elements/dashes.rs b/musicxml/src/elements/dashes.rs
index fbe5b6e..6dcb2bb 100644
--- a/musicxml/src/elements/dashes.rs
+++ b/musicxml/src/elements/dashes.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Dashes] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DashesAttributes {
/// Indicates if this is the start, stop, or continuation of the dashes.
pub r#type: StartStopContinue,
@@ -42,7 +42,7 @@ pub struct DashesAttributes {
/// The [Dashes] element represents dashes, used for instance with cresc. and dim. marks.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Dashes {
/// Element-specific attributes
pub attributes: DashesAttributes,
diff --git a/musicxml/src/elements/defaults.rs b/musicxml/src/elements/defaults.rs
index 63bf96f..35e6502 100644
--- a/musicxml/src/elements/defaults.rs
+++ b/musicxml/src/elements/defaults.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Defaults] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct DefaultsContents {
/// The [Scaling] element specifies the percentage of the regular scaling to use for music notation.
pub scaling: Option,
@@ -35,7 +35,7 @@ pub struct DefaultsContents {
/// layout, and default values for the music font, word font, lyric font, and lyric language.
///
/// Except for the [ConcertScore] element, if any defaults are missing, the choice of what to use is determined by the application.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Defaults {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/degree.rs b/musicxml/src/elements/degree.rs
index 85c95f1..0194a2b 100644
--- a/musicxml/src/elements/degree.rs
+++ b/musicxml/src/elements/degree.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Degree] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DegreeAttributes {
/// Specifies whether or not to print an object. It is yes if not specified.
pub print_object: Option,
}
/// Contents of the [Degree] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct DegreeContents {
/// The [DegreeValue] element specifies the degree value for the degree element.
pub degree_value: DegreeValue,
@@ -29,7 +29,7 @@ pub struct DegreeContents {
///
/// A [Harmony][super::Harmony] with a [Kind][super::Kind] value of "other" can be spelled explicitly by using a series of [Degree] elements together with
/// a [Root][super::Root], [Numeral][super::Numeral], or [Function][super::Function] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Degree {
/// Element-specific attributes
pub attributes: DegreeAttributes,
diff --git a/musicxml/src/elements/degree_alter.rs b/musicxml/src/elements/degree_alter.rs
index 0d5f77c..b929b2f 100644
--- a/musicxml/src/elements/degree_alter.rs
+++ b/musicxml/src/elements/degree_alter.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DegreeAlter] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DegreeAlterAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct DegreeAlterAttributes {
/// If the [DegreeType][super::DegreeType] value is alter or subtract, the [DegreeAlter] value is relative to the degree already
/// in the chord based on its [Kind][super::Kind] element. If the [DegreeType][super::DegreeType] value is add, the [DegreeAlter] is relative
/// to a dominant chord (major and perfect intervals except for a minor seventh).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("degree-alter")]
pub struct DegreeAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/degree_type.rs b/musicxml/src/elements/degree_type.rs
index 85561bb..5a97491 100644
--- a/musicxml/src/elements/degree_type.rs
+++ b/musicxml/src/elements/degree_type.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DegreeType] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DegreeTypeAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct DegreeTypeAttributes {
/// The [DegreeType] element indicates if this degree is an addition, alteration, or subtraction relative to the [Kind][super::Kind] of the current chord.
///
/// The value of the [DegreeType] element affects the interpretation of the value of the [DegreeAlter][super::DegreeAlter] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("degree-type")]
pub struct DegreeType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/degree_value.rs b/musicxml/src/elements/degree_value.rs
index 8648fee..5364f9f 100644
--- a/musicxml/src/elements/degree_value.rs
+++ b/musicxml/src/elements/degree_value.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DegreeValue] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DegreeValueAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct DegreeValueAttributes {
}
/// The content of the [DegreeValue] element is a number indicating the degree of the chord (1 for the root, 3 for third, etc).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("degree-value")]
pub struct DegreeValue {
/// Element-specific attributes
diff --git a/musicxml/src/elements/delayed_inverted_turn.rs b/musicxml/src/elements/delayed_inverted_turn.rs
index f72641f..0cf6b77 100644
--- a/musicxml/src/elements/delayed_inverted_turn.rs
+++ b/musicxml/src/elements/delayed_inverted_turn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DelayedInvertedTurn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DelayedInvertedTurnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -63,7 +63,7 @@ pub struct DelayedInvertedTurnAttributes {
/// An inverted turn has the shape which goes down and then up.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("delayed-inverted-turn")]
pub struct DelayedInvertedTurn {
/// Element-specific attributes
diff --git a/musicxml/src/elements/delayed_turn.rs b/musicxml/src/elements/delayed_turn.rs
index 1c90d71..7343061 100644
--- a/musicxml/src/elements/delayed_turn.rs
+++ b/musicxml/src/elements/delayed_turn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DelayedTurn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DelayedTurnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -61,7 +61,7 @@ pub struct DelayedTurnAttributes {
/// The [DelayedTurn] element indicates a normal turn that is delayed until the end of the current note.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("delayed-turn")]
pub struct DelayedTurn {
/// Element-specific attributes
diff --git a/musicxml/src/elements/detached_legato.rs b/musicxml/src/elements/detached_legato.rs
index 2836937..ba9862d 100644
--- a/musicxml/src/elements/detached_legato.rs
+++ b/musicxml/src/elements/detached_legato.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DetachedLegato] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DetachedLegatoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct DetachedLegatoAttributes {
/// The [DetachedLegato] element indicates the combination of a tenuto line and staccato dot symbol.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("detached-legato")]
pub struct DetachedLegato {
/// Element-specific attributes
diff --git a/musicxml/src/elements/diatonic.rs b/musicxml/src/elements/diatonic.rs
index 3213bf9..3c119a0 100644
--- a/musicxml/src/elements/diatonic.rs
+++ b/musicxml/src/elements/diatonic.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
///
/// This allows for correct spelling of enharmonic transpositions. This value does not include [OctaveChange][super::OctaveChange] values;
/// the values for both elements need to be added to the written pitch to get the correct sounding pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Diatonic {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/direction.rs b/musicxml/src/elements/direction.rs
index b41ac0b..40346c7 100644
--- a/musicxml/src/elements/direction.rs
+++ b/musicxml/src/elements/direction.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Direction] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DirectionAttributes {
/// Changes the default_x position of a [Direction]. It indicates that the left-hand side of the direction
/// is aligned with the left-hand side of the time signature. If no time signature is present, the direction
@@ -21,7 +21,7 @@ pub struct DirectionAttributes {
}
/// Contents of the [Direction] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct DirectionContents {
/// The [DirectionType] element specifies the type of the direction.
pub direction_type: Vec,
@@ -50,7 +50,7 @@ pub struct DirectionContents {
/// By default, a series of [DirectionType] elements and a series of child elements of a [DirectionType] within a single [Direction] element follow one
/// another in sequence visually. For a series of [DirectionType] children, non-positional formatting attributes are carried over from the previous
/// element by default.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Direction {
/// Element-specific attributes
pub attributes: DirectionAttributes,
diff --git a/musicxml/src/elements/direction_type.rs b/musicxml/src/elements/direction_type.rs
index f9532bf..677e7b2 100644
--- a/musicxml/src/elements/direction_type.rs
+++ b/musicxml/src/elements/direction_type.rs
@@ -9,14 +9,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DirectionType] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DirectionTypeAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
}
/// The [DirectionTypeContents] element specifies all possible options available for use in a [DirectionType] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum DirectionTypeContents {
/// The [Rehearsal] element indicates a rehearsal mark.
Rehearsal(Vec),
@@ -251,7 +251,7 @@ impl ContentSerializer for DirectionTypeContents {
///
/// The [Dynamics] element may also be used in the [Notations][super::Notations] element. Child element attributes related to print suggestions apply
/// to the individual [DirectionType], not to the overall [Direction][super::Direction].
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("direction-type")]
pub struct DirectionType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/directive.rs b/musicxml/src/elements/directive.rs
index abfc929..b5a9656 100644
--- a/musicxml/src/elements/directive.rs
+++ b/musicxml/src/elements/directive.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Directive] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DirectiveAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -43,7 +43,7 @@ pub struct DirectiveAttributes {
///
/// This is typically used for tempo markings at the beginning of a piece of music. This element was deprecated in Version 2.0 in favor of the
/// [Direction][super::Direction] element's `directive` attribute.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Directive {
/// Element-specific attributes
pub attributes: DirectiveAttributes,
diff --git a/musicxml/src/elements/display_octave.rs b/musicxml/src/elements/display_octave.rs
index 9c1a311..ee940a1 100644
--- a/musicxml/src/elements/display_octave.rs
+++ b/musicxml/src/elements/display_octave.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
///
/// Positioning follows the current clef. If percussion clef is used, the [DisplayStep][super::DisplayStep] and [DisplayOctave] elements are interpreted
/// as if in treble clef, with a G in octave 4 on line 2.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("display-octave")]
pub struct DisplayOctave {
/// Element-specific attributes
diff --git a/musicxml/src/elements/display_step.rs b/musicxml/src/elements/display_step.rs
index 616e6b3..ca8a33a 100644
--- a/musicxml/src/elements/display_step.rs
+++ b/musicxml/src/elements/display_step.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
///
/// Positioning follows the current clef. If percussion clef is used, the [DisplayStep] and [DisplayOctave][super::DisplayOctave] elements are interpreted
/// as if in treble clef, with a G in octave 4 on line 2.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("display-step")]
pub struct DisplayStep {
/// Element-specific attributes
diff --git a/musicxml/src/elements/display_text.rs b/musicxml/src/elements/display_text.rs
index 38f58d9..76ea955 100644
--- a/musicxml/src/elements/display_text.rs
+++ b/musicxml/src/elements/display_text.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DisplayText] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DisplayTextAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -89,7 +89,7 @@ pub struct DisplayTextAttributes {
/// The [DisplayText] element is used for exact formatting of multi-font text in display elements such as [PartNameDisplay][super::PartNameDisplay].
///
/// The `enclosure` attribute is none if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("display-text")]
pub struct DisplayText {
/// Element-specific attributes
diff --git a/musicxml/src/elements/distance.rs b/musicxml/src/elements/distance.rs
index cc4b377..316ee66 100644
--- a/musicxml/src/elements/distance.rs
+++ b/musicxml/src/elements/distance.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Distance] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DistanceAttributes {
/// The type of distance being defined.
pub r#type: DistanceType,
}
/// The [Distance] element represents standard distances between notation elements in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Distance {
/// Element-specific attributes
pub attributes: DistanceAttributes,
diff --git a/musicxml/src/elements/divisions.rs b/musicxml/src/elements/divisions.rs
index de7e149..adb559b 100644
--- a/musicxml/src/elements/divisions.rs
+++ b/musicxml/src/elements/divisions.rs
@@ -10,7 +10,7 @@ use musicxml_macros::*;
///
/// Using a [Divisions] element lets us use just one number to represent a duration for each note in the score, while retaining the full power of a
/// fractional representation. If maximum compatibility with Standard MIDI 1.0 files is important, do not have the [Divisions] value exceed 16383.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Divisions {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/doit.rs b/musicxml/src/elements/doit.rs
index b5af7b2..fdfb79f 100644
--- a/musicxml/src/elements/doit.rs
+++ b/musicxml/src/elements/doit.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Doit] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DoitAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct DoitAttributes {
/// The doit appears after the main note and goes above the main pitch.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Doit {
/// Element-specific attributes
pub attributes: DoitAttributes,
diff --git a/musicxml/src/elements/dot.rs b/musicxml/src/elements/dot.rs
index 814b36e..84a4f96 100644
--- a/musicxml/src/elements/dot.rs
+++ b/musicxml/src/elements/dot.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Dot] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DotAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -40,7 +40,7 @@ pub struct DotAttributes {
}
/// One [Dot] element is used for each dot of prolongation.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Dot {
/// Element-specific attributes
pub attributes: DotAttributes,
diff --git a/musicxml/src/elements/double.rs b/musicxml/src/elements/double.rs
index 6b1edce..10e51f3 100644
--- a/musicxml/src/elements/double.rs
+++ b/musicxml/src/elements/double.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Double] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DoubleAttributes {
/// If the `above` attribute is set to yes, the doubling is one octave above what is written,
/// as for mixed flute / piccolo parts in band literature. Otherwise the doubling is one octave
@@ -13,7 +13,7 @@ pub struct DoubleAttributes {
}
/// If the [Double] element is present, it indicates that the music is doubled one octave from what is currently written.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Double {
/// Element-specific attributes
pub attributes: DoubleAttributes,
diff --git a/musicxml/src/elements/double_tongue.rs b/musicxml/src/elements/double_tongue.rs
index c93d4a8..ff6dc1b 100644
--- a/musicxml/src/elements/double_tongue.rs
+++ b/musicxml/src/elements/double_tongue.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DoubleTongue] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DoubleTongueAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct DoubleTongueAttributes {
/// The [DoubleTongue] element represents the double tongue symbol (two dots arranged horizontally).
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("double-tongue")]
pub struct DoubleTongue {
/// Element-specific attributes
diff --git a/musicxml/src/elements/down_bow.rs b/musicxml/src/elements/down_bow.rs
index 8375475..f952ea5 100644
--- a/musicxml/src/elements/down_bow.rs
+++ b/musicxml/src/elements/down_bow.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [DownBow] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DownBowAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct DownBowAttributes {
/// The [DownBow] element represents the symbol that is used both for down-bowing on bowed instruments, and down-stroke on plucked instruments.
///
/// ![DownBow][down-bow.png]
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("down-bow")]
pub struct DownBow {
/// Element-specific attributes
diff --git a/musicxml/src/elements/duration.rs b/musicxml/src/elements/duration.rs
index b718c3c..e3706c9 100644
--- a/musicxml/src/elements/duration.rs
+++ b/musicxml/src/elements/duration.rs
@@ -9,7 +9,7 @@ use musicxml_macros::*;
///
/// The [Duration] element moves the musical position when used in [Backup][super::Backup] elements, [Forward][super::Forward] elements, and
/// [Note][super::Note] elements that do not contain a [Chord][super::Chord] child element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Duration {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/dynamics.rs b/musicxml/src/elements/dynamics.rs
index 7873d63..3dcdd17 100644
--- a/musicxml/src/elements/dynamics.rs
+++ b/musicxml/src/elements/dynamics.rs
@@ -11,7 +11,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Dynamics] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct DynamicsAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -72,7 +72,7 @@ pub struct DynamicsAttributes {
}
/// The [DynamicsType] element specifies all possible dynamics available for use in a [Dynamics] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum DynamicsType {
/// The [P] element represents the piano dynamic.
P(P),
@@ -146,7 +146,7 @@ pub enum DynamicsType {
///
/// The `placement` attribute is used when the dynamics are associated with a [Note][super::Note]. It is ignored when the dynamics are associated with
/// a [Direction][super::Direction]. In that case the [Direction][super::Direction] element's `placement` attribute is used instead.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Dynamics {
/// Element-specific attributes
pub attributes: DynamicsAttributes,
diff --git a/musicxml/src/elements/effect.rs b/musicxml/src/elements/effect.rs
index d0fa2f6..38e115c 100644
--- a/musicxml/src/elements/effect.rs
+++ b/musicxml/src/elements/effect.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Effect] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct EffectAttributes {
/// Distinguishes different SMuFL stylistic alternates.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct EffectAttributes {
/// The [Effect] element represents pictograms for sound effect percussion instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Effect {
/// Element-specific attributes
pub attributes: EffectAttributes,
diff --git a/musicxml/src/elements/elevation.rs b/musicxml/src/elements/elevation.rs
index 1be7426..073f21b 100644
--- a/musicxml/src/elements/elevation.rs
+++ b/musicxml/src/elements/elevation.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Elevation] and [Pan][super::Pan] elements allow placing of sound in a 3-D space relative to the listener.
///
/// Both are expressed in degrees ranging from -180 to 180. For [Elevation], 0 is level with the listener, 90 is directly above, and -90 is directly below.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Elevation {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/elision.rs b/musicxml/src/elements/elision.rs
index b17c2a3..9c2df5c 100644
--- a/musicxml/src/elements/elision.rs
+++ b/musicxml/src/elements/elision.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Elision] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ElisionAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -25,7 +25,7 @@ pub struct ElisionAttributes {
/// The text content specifies the symbol used to display the elision. Common values are a no-break space (Unicode 00A0), an underscore (Unicode 005F),
/// or an undertie (Unicode 203F). If the text content is empty, the `smufl` attribute is used to specify the symbol to use.
/// If neither text content nor a `smufl` attribute are present, the elision glyph is application-specific.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Elision {
/// Element-specific attributes
pub attributes: ElisionAttributes,
diff --git a/musicxml/src/elements/encoder.rs b/musicxml/src/elements/encoder.rs
index 4f0e711..c447195 100644
--- a/musicxml/src/elements/encoder.rs
+++ b/musicxml/src/elements/encoder.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Encoder] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct EncoderAttributes {
/// Standard values are music, words, and arrangement, but other types may be used.
/// This attribute is only needed when there are multiple [Encoder] elements.
@@ -12,7 +12,7 @@ pub struct EncoderAttributes {
}
/// The [Encoder] element contains information about who did the digital encoding.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Encoder {
/// Element-specific attributes
pub attributes: EncoderAttributes,
diff --git a/musicxml/src/elements/encoding.rs b/musicxml/src/elements/encoding.rs
index d7a4217..9062671 100644
--- a/musicxml/src/elements/encoding.rs
+++ b/musicxml/src/elements/encoding.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [EncodingContents] element specifies all possible options available for use in an [Encoding] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum EncodingContents {
/// The [EncodingDate] element specifies the date of the encoding.
#[rename("encoding-date")]
@@ -21,7 +21,7 @@ pub enum EncodingContents {
}
/// The [Encoding] element contains information about who did the digital encoding, when, with what software, and in what aspects.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Encoding {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/encoding_date.rs b/musicxml/src/elements/encoding_date.rs
index 4e31d51..2fb4773 100644
--- a/musicxml/src/elements/encoding_date.rs
+++ b/musicxml/src/elements/encoding_date.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [EncodingDate] element specifies the date of the digital encoding.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("encoding-date")]
pub struct EncodingDate {
/// Element-specific attributes
diff --git a/musicxml/src/elements/encoding_description.rs b/musicxml/src/elements/encoding_description.rs
index ec1fa3e..82c008a 100644
--- a/musicxml/src/elements/encoding_description.rs
+++ b/musicxml/src/elements/encoding_description.rs
@@ -4,7 +4,7 @@ use musicxml_macros::*;
/// The [EncodingDescription] element contains descriptive information about the digital encoding
/// that is not provided in the other [Encoding][super::Encoding] child elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("encoding-description")]
pub struct EncodingDescription {
/// Element-specific attributes
diff --git a/musicxml/src/elements/end_line.rs b/musicxml/src/elements/end_line.rs
index 540f46e..ff9742f 100644
--- a/musicxml/src/elements/end_line.rs
+++ b/musicxml/src/elements/end_line.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [EndLine] element comes from RP-017 for Standard MIDI File Lyric meta-events.
///
/// It facilitates lyric display for Karaoke and similar applications.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("end-line")]
pub struct EndLine {
/// Element-specific attributes
diff --git a/musicxml/src/elements/end_paragraph.rs b/musicxml/src/elements/end_paragraph.rs
index 1f4b0c1..b62fb01 100644
--- a/musicxml/src/elements/end_paragraph.rs
+++ b/musicxml/src/elements/end_paragraph.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [EndParagraph] element comes from RP-017 for Standard MIDI File Lyric meta-events.
///
/// It facilitates lyric display for Karaoke and similar applications.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("end-paragraph")]
pub struct EndParagraph {
/// Element-specific attributes
diff --git a/musicxml/src/elements/ending.rs b/musicxml/src/elements/ending.rs
index 9a4fdc5..26050bd 100644
--- a/musicxml/src/elements/ending.rs
+++ b/musicxml/src/elements/ending.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Ending] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct EndingAttributes {
/// Indicates which times the ending is played, similar to the `time_only` attribute used by other elements.
/// While this often represents the numeric values for what is under the ending line, it can also indicate whether
@@ -64,7 +64,7 @@ pub struct EndingAttributes {
/// 
///
/// The element text is used when the text displayed in the ending is different than what appears in the number attribute.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ending {
/// Element-specific attributes
pub attributes: EndingAttributes,
diff --git a/musicxml/src/elements/ensemble.rs b/musicxml/src/elements/ensemble.rs
index 0e469ff..5a5dd2a 100644
--- a/musicxml/src/elements/ensemble.rs
+++ b/musicxml/src/elements/ensemble.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Ensemble] element is present if performance is intended by an ensemble such as an orchestral section.
///
/// The text of the [Ensemble] element contains the size of the section, or is empty if the ensemble size is not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ensemble {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/except_voice.rs b/musicxml/src/elements/except_voice.rs
index dfab135..21cd2f1 100644
--- a/musicxml/src/elements/except_voice.rs
+++ b/musicxml/src/elements/except_voice.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
///
/// Any [Note][super::Note] elements that are in voices specified by the [ExceptVoice] elements are displayed in normal notation,
/// in addition to the slash notation that is always displayed.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("except-voice")]
pub struct ExceptVoice {
/// Element-specific attributes
diff --git a/musicxml/src/elements/extend.rs b/musicxml/src/elements/extend.rs
index 60ed044..7425a1d 100644
--- a/musicxml/src/elements/extend.rs
+++ b/musicxml/src/elements/extend.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Extend] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ExtendAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -33,7 +33,7 @@ pub struct ExtendAttributes {
}
/// The [Extend] element represents lyric word extension / melisma lines as well as figured bass extensions.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Extend {
/// Element-specific attributes
pub attributes: ExtendAttributes,
diff --git a/musicxml/src/elements/eyeglasses.rs b/musicxml/src/elements/eyeglasses.rs
index 2b2b21f..1d522a7 100644
--- a/musicxml/src/elements/eyeglasses.rs
+++ b/musicxml/src/elements/eyeglasses.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Eyeglasses] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct EyeglassesAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -57,7 +57,7 @@ pub struct EyeglassesAttributes {
/// The [Eyeglasses] element represents the eyeglasses symbol, common in commercial music.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Eyeglasses {
/// Element-specific attributes
pub attributes: EyeglassesAttributes,
diff --git a/musicxml/src/elements/f.rs b/musicxml/src/elements/f.rs
index 1393879..dc32a09 100644
--- a/musicxml/src/elements/f.rs
+++ b/musicxml/src/elements/f.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [F] element represents a forte dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct F {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/falloff.rs b/musicxml/src/elements/falloff.rs
index b75f36a..ef0bdbb 100644
--- a/musicxml/src/elements/falloff.rs
+++ b/musicxml/src/elements/falloff.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Falloff] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FalloffAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct FalloffAttributes {
/// The falloff appears after the main note and goes below the main pitch.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Falloff {
/// Element-specific attributes
pub attributes: FalloffAttributes,
diff --git a/musicxml/src/elements/feature.rs b/musicxml/src/elements/feature.rs
index 0d9dc15..890c979 100644
--- a/musicxml/src/elements/feature.rs
+++ b/musicxml/src/elements/feature.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Feature] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FeatureAttributes {
/// Represents the type of the feature. This type is flexible to allow for different analyses.
pub r#type: Option,
@@ -13,7 +13,7 @@ pub struct FeatureAttributes {
/// The [Feature] element is a part of the [Grouping][super::Grouping] element used for musical analysis.
///
/// The `type` attribute represents the type of the feature and the element content represents its value.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Feature {
/// Element-specific attributes
pub attributes: FeatureAttributes,
diff --git a/musicxml/src/elements/fermata.rs b/musicxml/src/elements/fermata.rs
index d133263..8bcb6e3 100644
--- a/musicxml/src/elements/fermata.rs
+++ b/musicxml/src/elements/fermata.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Fermata] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FermataAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -46,7 +46,7 @@ pub struct FermataAttributes {
/// An empty [Fermata] element represents a normal fermata.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fermata {
/// Element-specific attributes
pub attributes: FermataAttributes,
diff --git a/musicxml/src/elements/ff.rs b/musicxml/src/elements/ff.rs
index a78b4b8..63eca40 100644
--- a/musicxml/src/elements/ff.rs
+++ b/musicxml/src/elements/ff.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Ff] element represents a fortissimo dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ff {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/fff.rs b/musicxml/src/elements/fff.rs
index 85bb2a9..5571ebf 100644
--- a/musicxml/src/elements/fff.rs
+++ b/musicxml/src/elements/fff.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Fff] element represents a triple forte dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fff {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/ffff.rs b/musicxml/src/elements/ffff.rs
index 6173d3f..6191a49 100644
--- a/musicxml/src/elements/ffff.rs
+++ b/musicxml/src/elements/ffff.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Ffff] element represents an ffff dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ffff {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/fffff.rs b/musicxml/src/elements/fffff.rs
index 007624b..d27f37f 100644
--- a/musicxml/src/elements/fffff.rs
+++ b/musicxml/src/elements/fffff.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Fffff] element represents an fffff dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fffff {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/ffffff.rs b/musicxml/src/elements/ffffff.rs
index d86c34e..b8d2674 100644
--- a/musicxml/src/elements/ffffff.rs
+++ b/musicxml/src/elements/ffffff.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Ffffff] element represents an ffffff dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ffffff {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/fifths.rs b/musicxml/src/elements/fifths.rs
index 5801c23..b689102 100644
--- a/musicxml/src/elements/fifths.rs
+++ b/musicxml/src/elements/fifths.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Fifths] element represents the number of flats or sharps in a traditional key signature.
///
/// Negative numbers are used for flats and positive numbers for sharps, reflecting the key's placement within the circle of fifths (hence the element name).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fifths {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/figure.rs b/musicxml/src/elements/figure.rs
index 05d8085..0e1a13f 100644
--- a/musicxml/src/elements/figure.rs
+++ b/musicxml/src/elements/figure.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Figure] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct FigureContents {
/// The [Prefix] element is used to specify the prefix of a figured bass symbol.
pub prefix: Option,
@@ -21,7 +21,7 @@ pub struct FigureContents {
}
/// The [Figure] element represents a single figure within a [FiguredBass][super::FiguredBass] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Figure {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/figure_number.rs b/musicxml/src/elements/figure_number.rs
index 47f94ca..8e9aea9 100644
--- a/musicxml/src/elements/figure_number.rs
+++ b/musicxml/src/elements/figure_number.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [FigureNumber] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FigureNumberAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct FigureNumberAttributes {
/// 
///
/// Overstrikes of the figure number are represented in the [Suffix][super::Suffix] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("figure-number")]
pub struct FigureNumber {
/// Element-specific attributes
diff --git a/musicxml/src/elements/figured_bass.rs b/musicxml/src/elements/figured_bass.rs
index 1b572f6..e1a79b6 100644
--- a/musicxml/src/elements/figured_bass.rs
+++ b/musicxml/src/elements/figured_bass.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [FiguredBass] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FiguredBassAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -75,7 +75,7 @@ pub struct FiguredBassAttributes {
}
/// Contents of the [FiguredBass] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct FiguredBassContents {
/// The [Figure] element represents a single figured bass figure.
pub figure: Vec,
@@ -91,7 +91,7 @@ pub struct FiguredBassContents {
///
/// A [FiguredBass] element takes its position from the first regular note (not a grace note or chord note) that follows in score order.
/// The optional [Duration] element is used to indicate changes of figures under a note. Figures are ordered from top to bottom.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("figured-bass")]
pub struct FiguredBass {
/// Element-specific attributes
diff --git a/musicxml/src/elements/fingering.rs b/musicxml/src/elements/fingering.rs
index d5ef802..8f1974b 100644
--- a/musicxml/src/elements/fingering.rs
+++ b/musicxml/src/elements/fingering.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Fingering] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FingeringAttributes {
/// Indicates that this is an alternate fingering. It is no if not present.
pub alternate: Option,
@@ -47,7 +47,7 @@ pub struct FingeringAttributes {
///
/// Multiple fingerings may be given, typically to substitute fingerings in the middle of a note. For guitar and other fretted instruments,
/// the [Fingering] element represents the fretting finger; the [Pluck][super::Pluck] element represents the plucking finger.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fingering {
/// Element-specific attributes
pub attributes: FingeringAttributes,
diff --git a/musicxml/src/elements/fingernails.rs b/musicxml/src/elements/fingernails.rs
index ea15031..c06410a 100644
--- a/musicxml/src/elements/fingernails.rs
+++ b/musicxml/src/elements/fingernails.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Fingernails] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FingernailsAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct FingernailsAttributes {
/// The [Fingernails] element is used in notation for harp and other plucked string instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fingernails {
/// Element-specific attributes
pub attributes: FingernailsAttributes,
diff --git a/musicxml/src/elements/first.rs b/musicxml/src/elements/first.rs
index ba3d233..790052c 100644
--- a/musicxml/src/elements/first.rs
+++ b/musicxml/src/elements/first.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [First] element is the part of the swing ratio that refers to the first of two consecutive notes.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct First {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/first_fret.rs b/musicxml/src/elements/first_fret.rs
index 3949b79..f0a7d43 100644
--- a/musicxml/src/elements/first_fret.rs
+++ b/musicxml/src/elements/first_fret.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [FirstFret] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FirstFretAttributes {
/// Indicates whether the text appears to the left or right of the frame.
pub location: Option,
@@ -15,7 +15,7 @@ pub struct FirstFretAttributes {
/// The [FirstFret] element indicates which fret is shown in the top space of the frame.
///
/// It is fret 1 if the element is not present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("first-fret")]
pub struct FirstFret {
/// Element-specific attributes
diff --git a/musicxml/src/elements/flip.rs b/musicxml/src/elements/flip.rs
index 10b0161..11f65f8 100644
--- a/musicxml/src/elements/flip.rs
+++ b/musicxml/src/elements/flip.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Flip] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FlipAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct FlipAttributes {
/// The [Flip] element represents the flip symbol used in brass notation.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Flip {
/// Element-specific attributes
pub attributes: FlipAttributes,
diff --git a/musicxml/src/elements/footnote.rs b/musicxml/src/elements/footnote.rs
index 8cf8d0a..fa2fc84 100644
--- a/musicxml/src/elements/footnote.rs
+++ b/musicxml/src/elements/footnote.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Footnote] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FootnoteAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -87,7 +87,7 @@ pub struct FootnoteAttributes {
}
/// The [Footnote] element specifies editorial information that appears in footnotes in the printed score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Footnote {
/// Element-specific attributes
pub attributes: FootnoteAttributes,
diff --git a/musicxml/src/elements/for_part.rs b/musicxml/src/elements/for_part.rs
index bca4417..54df465 100644
--- a/musicxml/src/elements/for_part.rs
+++ b/musicxml/src/elements/for_part.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [ForPart] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ForPartAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
@@ -16,7 +16,7 @@ pub struct ForPartAttributes {
}
/// Contents of the [ForPart] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct ForPartContents {
/// The [PartClef] element is used to specify the clef used in a part.
pub part_clef: Option,
@@ -28,7 +28,7 @@ pub struct ForPartContents {
///
/// It is only used in score files that contain a [ConcertScore][super::ConcertScore] element in the [Defaults][super::Defaults] element.
/// This allows concert scores with transposed parts to be represented in a single uncompressed MusicXML file.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("for-part")]
pub struct ForPart {
/// Element-specific attributes
diff --git a/musicxml/src/elements/forward.rs b/musicxml/src/elements/forward.rs
index d7819ff..857aa4c 100644
--- a/musicxml/src/elements/forward.rs
+++ b/musicxml/src/elements/forward.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Forward] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ForwardContents {
/// The [Duration] element specifies the duration of the forward element.
pub duration: Duration,
@@ -23,7 +23,7 @@ pub struct ForwardContents {
///
/// The [Forward] element is generally used within voices and staves. [Duration] values should always be positive, and should not cross
/// measure boundaries or mid-measure changes in the [Divisions][super::Divisions] value.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Forward {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/fp.rs b/musicxml/src/elements/fp.rs
index a27230b..00ace5b 100644
--- a/musicxml/src/elements/fp.rs
+++ b/musicxml/src/elements/fp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Fp] element represents a forte piano dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/frame.rs b/musicxml/src/elements/frame.rs
index 952b011..ba3eedf 100644
--- a/musicxml/src/elements/frame.rs
+++ b/musicxml/src/elements/frame.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Frame] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FrameAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct FrameAttributes {
}
/// Contents of the [Frame] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct FrameContents {
/// The [FrameStrings] element specifies the number of strings on the frame.
pub frame_strings: FrameStrings,
@@ -73,7 +73,7 @@ pub struct FrameContents {
/// The representation is based on the NIFF guitar grid with additional information. The frame type's `unplayed` attribute indicates
/// what to display above a string that has no associated [FrameNote] element. Typical values are "x" and the empty string. If the attribute
/// is not present, the display of the unplayed string is application-defined.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Frame {
/// Element-specific attributes
pub attributes: FrameAttributes,
diff --git a/musicxml/src/elements/frame_frets.rs b/musicxml/src/elements/frame_frets.rs
index 1c7c2de..b4d30dc 100644
--- a/musicxml/src/elements/frame_frets.rs
+++ b/musicxml/src/elements/frame_frets.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [FrameFrets] element gives the overall size of the frame in horizontal spaces (frets).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("frame-frets")]
pub struct FrameFrets {
/// Element-specific attributes
diff --git a/musicxml/src/elements/frame_note.rs b/musicxml/src/elements/frame_note.rs
index 8d2b216..c87b2e1 100644
--- a/musicxml/src/elements/frame_note.rs
+++ b/musicxml/src/elements/frame_note.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [FrameNote] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct FrameNoteContents {
/// The [StringNumber] element specifies the string number of the note.
pub string: StringNumber,
@@ -19,7 +19,7 @@ pub struct FrameNoteContents {
/// The [FrameNote] type represents each note included in the frame.
///
/// An open string will have a fret value of 0, while a muted string will not be associated with a [FrameNote] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("frame-note")]
pub struct FrameNote {
/// Element-specific attributes
diff --git a/musicxml/src/elements/frame_strings.rs b/musicxml/src/elements/frame_strings.rs
index 0e78b72..e2e97bc 100644
--- a/musicxml/src/elements/frame_strings.rs
+++ b/musicxml/src/elements/frame_strings.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [FrameStrings] element gives the overall size of the frame in vertical lines (strings).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("frame-strings")]
pub struct FrameStrings {
/// Element-specific attributes
diff --git a/musicxml/src/elements/fret.rs b/musicxml/src/elements/fret.rs
index 3206c42..22ff315 100644
--- a/musicxml/src/elements/fret.rs
+++ b/musicxml/src/elements/fret.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Fret] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FretAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -21,7 +21,7 @@ pub struct FretAttributes {
/// The [Fret] element is used with tablature notation and chord diagrams.
///
/// Fret numbers start with 0 for an open string and 1 for the first fret.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fret {
/// Element-specific attributes
pub attributes: FretAttributes,
diff --git a/musicxml/src/elements/function.rs b/musicxml/src/elements/function.rs
index 57bb9f9..48bb12c 100644
--- a/musicxml/src/elements/function.rs
+++ b/musicxml/src/elements/function.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Function] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct FunctionAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -41,7 +41,7 @@ pub struct FunctionAttributes {
///
/// It represents the Roman numeral part of a functional harmony rather than the complete function itself. It has been deprecated
/// as of MusicXML 4.0 in favor of the [Numeral][super::Numeral] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Function {
/// Element-specific attributes
pub attributes: FunctionAttributes,
diff --git a/musicxml/src/elements/fz.rs b/musicxml/src/elements/fz.rs
index 29dd3c6..fa63aee 100644
--- a/musicxml/src/elements/fz.rs
+++ b/musicxml/src/elements/fz.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Fz] element represents a forzando fz dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Fz {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/glass.rs b/musicxml/src/elements/glass.rs
index d0d7f8f..f72e6e0 100644
--- a/musicxml/src/elements/glass.rs
+++ b/musicxml/src/elements/glass.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Glass] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GlassAttributes {
/// Distinguishes different SMuFL glyphs for wind chimes in the Chimes pictograms range, including those made of materials other than glass.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct GlassAttributes {
/// The [Glass] element represents pictograms for glass percussion instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Glass {
/// Element-specific attributes
pub attributes: GlassAttributes,
diff --git a/musicxml/src/elements/glissando.rs b/musicxml/src/elements/glissando.rs
index f15fa30..3d3c161 100644
--- a/musicxml/src/elements/glissando.rs
+++ b/musicxml/src/elements/glissando.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Glissando] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GlissandoAttributes {
/// Indicates if this is the start or stop of the glissando.
pub r#type: StartStop,
@@ -54,7 +54,7 @@ pub struct GlissandoAttributes {
/// The [Glissando] and [Slide][super::Slide] elements both indicate rapidly moving from one pitch to the other so that individual notes are not discerned.
///
/// A [Glissando] sounds the distinct notes in between the two pitches and defaults to a wavy line. The optional text is printed alongside the line.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Glissando {
/// Element-specific attributes
pub attributes: GlissandoAttributes,
diff --git a/musicxml/src/elements/glyph.rs b/musicxml/src/elements/glyph.rs
index 8e9343a..c133ddb 100644
--- a/musicxml/src/elements/glyph.rs
+++ b/musicxml/src/elements/glyph.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Glyph] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GlyphAttributes {
/// The type of glyph that is being defined.
pub r#type: GlyphType,
@@ -18,7 +18,7 @@ pub struct GlyphAttributes {
/// The SMuFL canonical glyph name should match the type. For instance, a type of quarter-rest would use values "restQuarter," "restQuarterOld," or
/// "restQuarterZ". A type of g-clef-ottava-bassa would use values "gClef8vb," "gClef8vbOld," or "gClef8vbCClef". A type of octave-shift-up-8 would use values
/// "ottava," "ottavaBassa," "ottavaBassaBa," "ottavaBassaVb," or "octaveBassa".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Glyph {
/// Element-specific attributes
pub attributes: GlyphAttributes,
diff --git a/musicxml/src/elements/golpe.rs b/musicxml/src/elements/golpe.rs
index 2bfd1b0..bd8380e 100644
--- a/musicxml/src/elements/golpe.rs
+++ b/musicxml/src/elements/golpe.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Golpe] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GolpeAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct GolpeAttributes {
/// The [Golpe] element represents the golpe symbol that is used for tapping the pick guard in guitar music.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Golpe {
/// Element-specific attributes
pub attributes: GolpeAttributes,
diff --git a/musicxml/src/elements/grace.rs b/musicxml/src/elements/grace.rs
index b370652..05e874b 100644
--- a/musicxml/src/elements/grace.rs
+++ b/musicxml/src/elements/grace.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Grace] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GraceAttributes {
/// Indicates to make time, not steal time, for grace note playback.
/// The units are in real-time divisions for the grace note.
@@ -20,7 +20,7 @@ pub struct GraceAttributes {
/// The [Grace] element indicates the presence of a grace note.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Grace {
/// Element-specific attributes
pub attributes: GraceAttributes,
diff --git a/musicxml/src/elements/group.rs b/musicxml/src/elements/group.rs
index f6aac92..5375c1e 100644
--- a/musicxml/src/elements/group.rs
+++ b/musicxml/src/elements/group.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Group] element allows the use of different versions of the part for different purposes.
///
/// Typical values include "score," "parts," "sound," and "data". Ordering information can be derived from the ordering within a MusicXML score or opus.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Group {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/group_abbreviation.rs b/musicxml/src/elements/group_abbreviation.rs
index c1e0724..8ac3fab 100644
--- a/musicxml/src/elements/group_abbreviation.rs
+++ b/musicxml/src/elements/group_abbreviation.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [GroupAbbreviation] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupAbbreviationAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct GroupAbbreviationAttributes {
/// The [GroupAbbreviation] element describes the abbreviation of a [PartGroup][super::PartGroup] element.
///
/// The formatting attributes are deprecated as of Version 2.0 in favor of the new [GroupAbbreviationDisplay][super::GroupAbbreviationDisplay] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-abbreviation")]
pub struct GroupAbbreviation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_abbreviation_display.rs b/musicxml/src/elements/group_abbreviation_display.rs
index e71e1e7..ab2ecb6 100644
--- a/musicxml/src/elements/group_abbreviation_display.rs
+++ b/musicxml/src/elements/group_abbreviation_display.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [GroupAbbreviationDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupAbbreviationDisplayAttributes {
/// Specifies whether or not to print an object. It is yes if not specified.
pub print_object: Option,
}
/// Contents of the [GroupAbbreviationDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct GroupAbbreviationDisplayContents {
/// The [DisplayText] element specifies the text of the group abbreviation.
pub display_text: Vec,
@@ -26,7 +26,7 @@ pub struct GroupAbbreviationDisplayContents {
///
/// Formatting specified in the [GroupAbbreviationDisplay] element overrides formatting specified in the
/// [GroupAbbreviation][super::GroupAbbreviation] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-abbreviation-display")]
pub struct GroupAbbreviationDisplay {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_barline.rs b/musicxml/src/elements/group_barline.rs
index b6a779d..ec9112b 100644
--- a/musicxml/src/elements/group_barline.rs
+++ b/musicxml/src/elements/group_barline.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [GroupBarline] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupBarlineAttributes {
/// Indicates the color of an element.
pub color: Option,
}
/// The [GroupBarline] element indicates if the group should have common barlines.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-barline")]
pub struct GroupBarline {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_link.rs b/musicxml/src/elements/group_link.rs
index 222c8ff..83ac421 100644
--- a/musicxml/src/elements/group_link.rs
+++ b/musicxml/src/elements/group_link.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
///
/// The optional [GroupLink] elements identify the groups used in the linked document. The content of a [GroupLink] element should match the content
/// of a [Group][super::Group] element in the linked document.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-link")]
pub struct GroupLink {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_name.rs b/musicxml/src/elements/group_name.rs
index b498005..7e5867c 100644
--- a/musicxml/src/elements/group_name.rs
+++ b/musicxml/src/elements/group_name.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [GroupName] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupNameAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct GroupNameAttributes {
/// The [GroupName] element describes the name of a [PartGroup][super::PartGroup] element.
///
/// The formatting attributes are deprecated as of Version 2.0 in favor of the new [GroupNameDisplay][super::GroupNameDisplay] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-name")]
pub struct GroupName {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_name_display.rs b/musicxml/src/elements/group_name_display.rs
index cec2924..8df1cc3 100644
--- a/musicxml/src/elements/group_name_display.rs
+++ b/musicxml/src/elements/group_name_display.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [GroupNameDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupNameDisplayAttributes {
/// Specifies whether or not to print an object. It is yes if not specified.
pub print_object: Option,
}
/// Contents of the [GroupNameDisplay] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct GroupNameDisplayContents {
/// The [DisplayText] element specifies the text to display for the group name.
pub display_text: Vec,
@@ -25,7 +25,7 @@ pub struct GroupNameDisplayContents {
/// The `print_object` attribute can be used to determine what, if anything, is printed at the start of each system.
///
/// Formatting specified in the [GroupNameDisplay] element overrides formatting specified in the [GroupName][super::GroupName] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-name-display")]
pub struct GroupNameDisplay {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_symbol.rs b/musicxml/src/elements/group_symbol.rs
index 25a8f5c..258ad64 100644
--- a/musicxml/src/elements/group_symbol.rs
+++ b/musicxml/src/elements/group_symbol.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [GroupSymbol] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupSymbolAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -32,7 +32,7 @@ pub struct GroupSymbolAttributes {
/// The [GroupSymbol] element indicates how the symbol for a group is indicated in the score.
///
/// It is none if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-symbol")]
pub struct GroupSymbol {
/// Element-specific attributes
diff --git a/musicxml/src/elements/group_time.rs b/musicxml/src/elements/group_time.rs
index 3ac0b08..1811a12 100644
--- a/musicxml/src/elements/group_time.rs
+++ b/musicxml/src/elements/group_time.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [GroupTime] element indicates that the displayed time signatures should stretch across all parts and staves in the group.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("group-time")]
pub struct GroupTime {
/// Element-specific attributes
diff --git a/musicxml/src/elements/grouping.rs b/musicxml/src/elements/grouping.rs
index 8c8fb34..45d9ca0 100644
--- a/musicxml/src/elements/grouping.rs
+++ b/musicxml/src/elements/grouping.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Grouping] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct GroupingAttributes {
/// Indicates if this is a single-note grouping, or the start or stop of a multi-note grouping.
pub r#type: StartStopSingle,
@@ -18,7 +18,7 @@ pub struct GroupingAttributes {
}
/// Contents of the [Grouping] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct GroupingContents {
/// The [Feature] element is used for musical analysis.
pub feature: Vec,
@@ -31,7 +31,7 @@ pub struct GroupingContents {
///
/// This element is flexible to allow for different types of analyses. Future versions of the MusicXML format may add elements that can represent more
/// standardized categories of analysis data, allowing for easier data sharing.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Grouping {
/// Element-specific attributes
pub attributes: GroupingAttributes,
diff --git a/musicxml/src/elements/half_muted.rs b/musicxml/src/elements/half_muted.rs
index d73600e..66def1d 100644
--- a/musicxml/src/elements/half_muted.rs
+++ b/musicxml/src/elements/half_muted.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [HalfMuted] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HalfMutedAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -48,7 +48,7 @@ pub struct HalfMutedAttributes {
///
/// The `smufl` attribute can be used to distinguish different SMuFL glyphs that have a similar appearance such as "brassMuteHalfClosed" and "guitarHalfOpenPedal".
/// If not present, the default glyph is "brassMuteHalfClosed".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("half-muted")]
pub struct HalfMuted {
/// Element-specific attributes
diff --git a/musicxml/src/elements/hammer_on.rs b/musicxml/src/elements/hammer_on.rs
index 0c2eaa8..d50dedd 100644
--- a/musicxml/src/elements/hammer_on.rs
+++ b/musicxml/src/elements/hammer_on.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [HammerOn] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HammerOnAttributes {
/// Indicates if this is the start or stop of the hammer-on.
pub r#type: StartStop,
@@ -51,7 +51,7 @@ pub struct HammerOnAttributes {
///
/// Since a single slur can be marked over many notes, the [HammerOn] element is separate so the individual pair of notes can be specified.
/// The element content can be used to specify how the [HammerOn] should be notated. An empty element leaves this choice up to the application.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("hammer-on")]
pub struct HammerOn {
/// Element-specific attributes
diff --git a/musicxml/src/elements/handbell.rs b/musicxml/src/elements/handbell.rs
index cee9f5c..39f9bf2 100644
--- a/musicxml/src/elements/handbell.rs
+++ b/musicxml/src/elements/handbell.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Handbell] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HandbellAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -40,7 +40,7 @@ pub struct HandbellAttributes {
}
/// The [Handbell] element represents notation for various techniques used in handbell and handchime music.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Handbell {
/// Element-specific attributes
pub attributes: HandbellAttributes,
diff --git a/musicxml/src/elements/harmon_closed.rs b/musicxml/src/elements/harmon_closed.rs
index baf3c5d..a281bc9 100644
--- a/musicxml/src/elements/harmon_closed.rs
+++ b/musicxml/src/elements/harmon_closed.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [HarmonClosed] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HarmonClosedAttributes {
/// Indicates which portion of the symbol is filled in when the element value is half.
pub location: Option,
}
/// The [HarmonClosed] element represents whether the harmon mute is closed, open, or half-open.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("harmon-closed")]
pub struct HarmonClosed {
/// Element-specific attributes
diff --git a/musicxml/src/elements/harmon_mute.rs b/musicxml/src/elements/harmon_mute.rs
index 42190dd..77007f7 100644
--- a/musicxml/src/elements/harmon_mute.rs
+++ b/musicxml/src/elements/harmon_mute.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [HarmonMute] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HarmonMuteAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -41,7 +41,7 @@ pub struct HarmonMuteAttributes {
}
/// Contents of the [HarmonMute] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct HarmonMuteContents {
/// The [HarmonClosed] element represents the symbols used for harmon mutes in brass notation.
pub harmon_closed: HarmonClosed,
@@ -50,7 +50,7 @@ pub struct HarmonMuteContents {
/// The [HarmonMute] element represents the symbols used for harmon mutes in brass notation.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("harmon-mute")]
pub struct HarmonMute {
/// Element-specific attributes
diff --git a/musicxml/src/elements/harmonic.rs b/musicxml/src/elements/harmonic.rs
index 52a0e32..428130e 100644
--- a/musicxml/src/elements/harmonic.rs
+++ b/musicxml/src/elements/harmonic.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Harmonic] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HarmonicAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -43,7 +43,7 @@ pub struct HarmonicAttributes {
}
/// Contents of the [Harmonic] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct HarmonicContents {
/// The [Natural] element indicates natural harmonics.
pub natural: Option,
@@ -62,7 +62,7 @@ pub struct HarmonicContents {
/// Allowing the type of pitch to be specified, combined with controls for appearance/playback differences, allows both the notation and the
/// sound to be represented. Artificial harmonics can add a notated touching pitch; artificial pinch harmonics will usually not notate a touching pitch.
/// The attributes for the [Harmonic] element refer to the use of the circular harmonic symbol, typically but not always used with natural harmonics.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Harmonic {
/// Element-specific attributes
pub attributes: HarmonicAttributes,
diff --git a/musicxml/src/elements/harmony.rs b/musicxml/src/elements/harmony.rs
index 80046d7..93a0c39 100644
--- a/musicxml/src/elements/harmony.rs
+++ b/musicxml/src/elements/harmony.rs
@@ -10,7 +10,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Harmony] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HarmonyAttributes {
/// Specifies how multiple harmony-chords are arranged relative to each other.
/// Harmony-chords with vertical arrangement are separated by horizontal lines.
@@ -61,7 +61,7 @@ pub struct HarmonyAttributes {
}
/// Contents of the [HarmonySubcontents] element.
-#[derive(Debug, PartialEq, Eq, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentSerialize)]
pub struct HarmonySubcontents {
/// The [Root] element specifies the root of a harmony-chord.
pub root: Option,
@@ -80,7 +80,7 @@ pub struct HarmonySubcontents {
}
/// Contents of the [Harmony] element.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct HarmonyContents {
/// The [HarmonySubcontents] element specifies the root, numeral, function, kind, inversion, bass, and degree of a harmony-chord.
pub harmony: Vec,
@@ -190,7 +190,7 @@ impl ContentSerializer for HarmonyContents {
/// A [Root] is a pitch name like C, D, E, while a [Numeral] is a scale degree like 1, 2, 3. The [Root] element is generally used with pop chord symbols,
/// while the [Numeral] element is generally used with classical functional harmony and Nashville numbers. It is an either/or choice to avoid data inconsistency.
/// The [Function] element, which represents Roman numerals with roman numeral text, has been deprecated as of MusicXML 4.0.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Harmony {
/// Element-specific attributes
pub attributes: HarmonyAttributes,
diff --git a/musicxml/src/elements/harp_pedals.rs b/musicxml/src/elements/harp_pedals.rs
index f91f4a0..2ea1c13 100644
--- a/musicxml/src/elements/harp_pedals.rs
+++ b/musicxml/src/elements/harp_pedals.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [HarpPedals] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HarpPedalsAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct HarpPedalsAttributes {
}
/// Contents of the [HarpPedals] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct HarpPedalsContents {
/// The [PedalTuning] element specifies the tuning of a single harp pedal.
pub pedal_tuning: Vec,
@@ -69,7 +69,7 @@ pub struct HarpPedalsContents {
/// The [PedalStep][super::PedalStep] and [PedalAlter][super::PedalAlter] elements use the same values
/// as the [Step][super::Step] and [Alter][super::Alter] elements. For easiest reading, the [PedalTuning] elements should follow standard harp pedal order,
/// with [PedalStep][super::PedalStep] values of D, C, B, E, F, G, and A.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("harp-pedals")]
pub struct HarpPedals {
/// Element-specific attributes
diff --git a/musicxml/src/elements/haydn.rs b/musicxml/src/elements/haydn.rs
index 55e9733..9262197 100644
--- a/musicxml/src/elements/haydn.rs
+++ b/musicxml/src/elements/haydn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Haydn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HaydnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -61,7 +61,7 @@ pub struct HaydnAttributes {
/// 
///
/// This is defined in the Standard Music Font Layout (SMuFL) as ornamentHaydn.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Haydn {
/// Element-specific attributes
pub attributes: HaydnAttributes,
diff --git a/musicxml/src/elements/heel.rs b/musicxml/src/elements/heel.rs
index 3ef15a9..84978a2 100644
--- a/musicxml/src/elements/heel.rs
+++ b/musicxml/src/elements/heel.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Heel] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HeelAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct HeelAttributes {
/// The [Heel] element is used with organ pedals.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Heel {
/// Element-specific attributes
pub attributes: HeelAttributes,
diff --git a/musicxml/src/elements/hole.rs b/musicxml/src/elements/hole.rs
index a71bbab..4fb603b 100644
--- a/musicxml/src/elements/hole.rs
+++ b/musicxml/src/elements/hole.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Hole] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HoleAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -41,7 +41,7 @@ pub struct HoleAttributes {
}
/// Contents of the [Hole] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct HoleContents {
/// The [HoleType] element specifies the type of hole.
pub hole_type: Option,
@@ -54,7 +54,7 @@ pub struct HoleContents {
/// The [Hole] element represents the symbols used for woodwind and brass fingerings as well as other notations.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Hole {
/// Element-specific attributes
pub attributes: HoleAttributes,
diff --git a/musicxml/src/elements/hole_closed.rs b/musicxml/src/elements/hole_closed.rs
index 1838553..12e5443 100644
--- a/musicxml/src/elements/hole_closed.rs
+++ b/musicxml/src/elements/hole_closed.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [HoleClosed] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct HoleClosedAttributes {
/// Indicates which portion of the hole is filled in when the element value is half.
pub location: Option,
}
/// The [HoleClosed] element represents whether the hole is closed, open, or half-open.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("hole-closed")]
pub struct HoleClosed {
/// Element-specific attributes
diff --git a/musicxml/src/elements/hole_shape.rs b/musicxml/src/elements/hole_shape.rs
index 3c60ca0..1a9c600 100644
--- a/musicxml/src/elements/hole_shape.rs
+++ b/musicxml/src/elements/hole_shape.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [HoleShape] element indicates the shape of the hole symbol.
///
/// It is a circle if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("hole-shape")]
pub struct HoleShape {
/// Element-specific attributes
diff --git a/musicxml/src/elements/hole_type.rs b/musicxml/src/elements/hole_type.rs
index f183035..27814d9 100644
--- a/musicxml/src/elements/hole_type.rs
+++ b/musicxml/src/elements/hole_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The content of the [HoleType] element indicates what the hole symbol represents in terms of instrument fingering or other techniques.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("hole-type")]
pub struct HoleType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/humming.rs b/musicxml/src/elements/humming.rs
index e17036e..96612f1 100644
--- a/musicxml/src/elements/humming.rs
+++ b/musicxml/src/elements/humming.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Humming] element represents a humming voice.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Humming {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/identification.rs b/musicxml/src/elements/identification.rs
index c5b7074..0d9f085 100644
--- a/musicxml/src/elements/identification.rs
+++ b/musicxml/src/elements/identification.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Identification] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct IdentificationContents {
/// The [Creator] element specifies the creator of the score.
pub creator: Vec,
@@ -24,7 +24,7 @@ pub struct IdentificationContents {
///
/// It includes information that may apply at a score-wide, movement-wide, or part-wide level. The [Creator], [Rights], [Source],
/// and [Relation] elements are based on [Dublin Core](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Identification {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/image.rs b/musicxml/src/elements/image.rs
index 54a0958..c530e1a 100644
--- a/musicxml/src/elements/image.rs
+++ b/musicxml/src/elements/image.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Image] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ImageAttributes {
/// The URL for the image file.
pub source: AnyUri,
@@ -55,7 +55,7 @@ pub struct ImageAttributes {
}
/// The [Image] element is used to include graphical images in a score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Image {
/// Element-specific attributes
pub attributes: ImageAttributes,
diff --git a/musicxml/src/elements/instrument.rs b/musicxml/src/elements/instrument.rs
index 67a5ff7..dab7d5e 100644
--- a/musicxml/src/elements/instrument.rs
+++ b/musicxml/src/elements/instrument.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Instrument] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InstrumentAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: IdRef,
@@ -15,7 +15,7 @@ pub struct InstrumentAttributes {
/// If multiple [ScoreInstrument][super::ScoreInstrument] elements are specified in a [ScorePart][super::ScorePart], there should be an
/// [Instrument] element for each note in the [Part][super::Part]. Notes that are shared between multiple [ScoreInstruments][super::ScoreInstrument]
/// can have more than one [Instrument] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Instrument {
/// Element-specific attributes
pub attributes: InstrumentAttributes,
diff --git a/musicxml/src/elements/instrument_abbreviation.rs b/musicxml/src/elements/instrument_abbreviation.rs
index 8f6b5b2..a85419a 100644
--- a/musicxml/src/elements/instrument_abbreviation.rs
+++ b/musicxml/src/elements/instrument_abbreviation.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [InstrumentAbbreviation] element is typically used within a software application, rather than appearing on the printed page of a score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("instrument-abbreviation")]
pub struct InstrumentAbbreviation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/instrument_change.rs b/musicxml/src/elements/instrument_change.rs
index 9f9f14b..186a424 100644
--- a/musicxml/src/elements/instrument_change.rs
+++ b/musicxml/src/elements/instrument_change.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [InstrumentChange] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InstrumentChangeAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: IdRef,
}
/// Contents of the [InstrumentChange] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct InstrumentChangeContents {
/// The [InstrumentSound] element specifies the virtual instrument sound to use for a given [ScoreInstrument][super::ScoreInstrument].
pub instrument_sound: Option,
@@ -27,7 +27,7 @@ pub struct InstrumentChangeContents {
/// The [InstrumentChange] element type represents a change to the virtual instrument sound for a given [ScoreInstrument][super::ScoreInstrument].
///
/// All [InstrumentChange] child elements can also be initially specified within the [ScoreInstrument][super::ScoreInstrument] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("instrument-change")]
pub struct InstrumentChange {
/// Element-specific attributes
diff --git a/musicxml/src/elements/instrument_link.rs b/musicxml/src/elements/instrument_link.rs
index fff152a..25ba824 100644
--- a/musicxml/src/elements/instrument_link.rs
+++ b/musicxml/src/elements/instrument_link.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [InstrumentLink] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InstrumentLinkAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: IdRef,
@@ -15,7 +15,7 @@ pub struct InstrumentLinkAttributes {
/// For example, a "Clarinet 1 and 2" part in a score file could link to separate "Clarinet 1" and "Clarinet 2" part files.
/// The [InstrumentLink] element distinguishes which of the [ScoreInstruments][super::ScoreInstrument] within a [ScorePart][super::ScorePart]
/// are in which part file.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("instrument-link")]
pub struct InstrumentLink {
/// Element-specific attributes
diff --git a/musicxml/src/elements/instrument_name.rs b/musicxml/src/elements/instrument_name.rs
index dcc4c9e..3755618 100644
--- a/musicxml/src/elements/instrument_name.rs
+++ b/musicxml/src/elements/instrument_name.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [InstrumentName] element is typically used within a software application, rather than appearing on the printed page of a score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("instrument-name")]
pub struct InstrumentName {
/// Element-specific attributes
diff --git a/musicxml/src/elements/instrument_sound.rs b/musicxml/src/elements/instrument_sound.rs
index 5c32210..f54cb9c 100644
--- a/musicxml/src/elements/instrument_sound.rs
+++ b/musicxml/src/elements/instrument_sound.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
///
/// This description is independent of a particular virtual or MIDI instrument specification and allows playback to be shared
/// more easily between applications and libraries.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("instrument-sound")]
pub struct InstrumentSound {
/// Element-specific attributes
diff --git a/musicxml/src/elements/instruments.rs b/musicxml/src/elements/instruments.rs
index b3009bd..f87ad8f 100644
--- a/musicxml/src/elements/instruments.rs
+++ b/musicxml/src/elements/instruments.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Instruments] element is only used if more than one instrument is represented in the part.
///
/// For example, oboe I and II where they play together most of the time. If absent, a value of 1 is assumed.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Instruments {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/interchangeable.rs b/musicxml/src/elements/interchangeable.rs
index bcf76bc..ffdea3a 100644
--- a/musicxml/src/elements/interchangeable.rs
+++ b/musicxml/src/elements/interchangeable.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Interchangeable] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InterchangeableAttributes {
/// Indicates how to display the arrangement between the [Beats] and [BeatType] values in the second of the dual time signatures.
pub separator: Option,
@@ -14,7 +14,7 @@ pub struct InterchangeableAttributes {
}
/// Contents of the [InterchangeableBeatData] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct InterchangeableBeatData {
/// The number of beats in the second of the dual time signatures.
pub beats: Beats,
@@ -23,7 +23,7 @@ pub struct InterchangeableBeatData {
}
/// Contents of the [Interchangeable] element.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct InterchangeableContents {
/// The time relation between the two dual time signatures.
pub time_relation: Option,
@@ -79,7 +79,7 @@ impl ContentSerializer for InterchangeableContents {
}
/// The [Interchangeable] element is used to represent the second in a pair of interchangeable dual time signatures, such as the 6/8 in 3/4 (6/8).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Interchangeable {
/// Element-specific attributes
pub attributes: InterchangeableAttributes,
diff --git a/musicxml/src/elements/inversion.rs b/musicxml/src/elements/inversion.rs
index de1e9d2..66d88f5 100644
--- a/musicxml/src/elements/inversion.rs
+++ b/musicxml/src/elements/inversion.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Inversion] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InversionAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct InversionAttributes {
/// The [Inversion] element represents harmony inversions.
///
/// The value is a number indicating which inversion is used: 0 for root position, 1 for first inversion, etc.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Inversion {
/// Element-specific attributes
pub attributes: InversionAttributes,
diff --git a/musicxml/src/elements/inverted_mordent.rs b/musicxml/src/elements/inverted_mordent.rs
index 70cb846..fbbb5da 100644
--- a/musicxml/src/elements/inverted_mordent.rs
+++ b/musicxml/src/elements/inverted_mordent.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [InvertedMordent] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InvertedMordentAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -67,7 +67,7 @@ pub struct InvertedMordentAttributes {
/// 
///
/// The choice of which mordent is inverted differs between MusicXML and the Standard Music Font Layout (SMuFL).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("inverted-mordent")]
pub struct InvertedMordent {
/// Element-specific attributes
diff --git a/musicxml/src/elements/inverted_turn.rs b/musicxml/src/elements/inverted_turn.rs
index 1441c52..282c3d8 100644
--- a/musicxml/src/elements/inverted_turn.rs
+++ b/musicxml/src/elements/inverted_turn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [InvertedTurn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InvertedTurnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -61,7 +61,7 @@ pub struct InvertedTurnAttributes {
/// The [InvertedTurn] element has the shape which goes down and then up.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("inverted-turn")]
pub struct InvertedTurn {
/// Element-specific attributes
diff --git a/musicxml/src/elements/inverted_vertical_turn.rs b/musicxml/src/elements/inverted_vertical_turn.rs
index 36384dd..dd09028 100644
--- a/musicxml/src/elements/inverted_vertical_turn.rs
+++ b/musicxml/src/elements/inverted_vertical_turn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [InvertedVerticalTurn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct InvertedVerticalTurnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -59,7 +59,7 @@ pub struct InvertedVerticalTurnAttributes {
/// The [InvertedVerticalTurn] element has the turn symbol shape arranged vertically going from upper right to lower left.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("inverted-vertical-turn")]
pub struct InvertedVerticalTurn {
/// Element-specific attributes
diff --git a/musicxml/src/elements/ipa.rs b/musicxml/src/elements/ipa.rs
index b480904..ee47d1f 100644
--- a/musicxml/src/elements/ipa.rs
+++ b/musicxml/src/elements/ipa.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Ipa] element represents International Phonetic Alphabet (IPA) sounds for vocal music.
///
/// String content is limited to IPA 2015 symbols represented in Unicode 13.0.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ipa {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/key.rs b/musicxml/src/elements/key.rs
index cca244f..395fc3c 100644
--- a/musicxml/src/elements/key.rs
+++ b/musicxml/src/elements/key.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Key] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct KeyAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -45,7 +45,7 @@ pub struct KeyAttributes {
}
/// Contents of the [ExplicitKeyContents] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ExplicitKeyContents {
/// The [Cancel] element indicates the cancellation of a previous key signature.
pub cancel: Option,
@@ -58,7 +58,7 @@ pub struct ExplicitKeyContents {
}
/// Contents of the [RelativeKeyContents] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct RelativeKeyContents {
/// The [KeyStep] element represents the pitch step of the key signature.
pub key_step: KeyStep,
@@ -73,7 +73,7 @@ pub struct RelativeKeyContents {
/// Contents of the [Key] element.
///
/// The [Key] element may contain either [ExplicitKeyContents] or [RelativeKeyContents].
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum KeyContents {
/// The [ExplicitKeyContents] element represents a key signature with a specified number of flats or sharps.
Explicit(ExplicitKeyContents),
@@ -104,7 +104,7 @@ impl ContentSerializer for KeyContents {
///
/// Both traditional and non-traditional key signatures are supported. Key signatures appear at the start of each system
/// unless the `print_object` attribute has been set to "no".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Key {
/// Element-specific attributes
pub attributes: KeyAttributes,
diff --git a/musicxml/src/elements/key_accidental.rs b/musicxml/src/elements/key_accidental.rs
index 1076a11..7526406 100644
--- a/musicxml/src/elements/key_accidental.rs
+++ b/musicxml/src/elements/key_accidental.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [KeyAccidental] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct KeyAccidentalAttributes {
/// Specifies a Standard Music Font Layout (SMuFL) accidental character by its canonical glyph name.
pub smufl: Option,
@@ -15,7 +15,7 @@ pub struct KeyAccidentalAttributes {
///
/// It is used for disambiguating microtonal accidentals. The different element names indicate the different meaning of altering notes
/// in a scale versus altering a sounding pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("key-accidental")]
pub struct KeyAccidental {
/// Element-specific attributes
diff --git a/musicxml/src/elements/key_alter.rs b/musicxml/src/elements/key_alter.rs
index 3475802..a8e68ea 100644
--- a/musicxml/src/elements/key_alter.rs
+++ b/musicxml/src/elements/key_alter.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// as the [Alter][super::Alter] element.
///
/// The different element names indicate the different meaning of altering notes in a scale versus altering a sounding pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("key-alter")]
pub struct KeyAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/key_octave.rs b/musicxml/src/elements/key_octave.rs
index c898bfc..f4f1579 100644
--- a/musicxml/src/elements/key_octave.rs
+++ b/musicxml/src/elements/key_octave.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [KeyOctave] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct KeyOctaveAttributes {
/// A positive integer that refers to the key signature element in left-to-right order.
pub number: PositiveInteger,
@@ -17,7 +17,7 @@ pub struct KeyOctaveAttributes {
/// The [KeyOctave] element specifies in which octave an element of a key signature appears.
///
/// The content specifies the octave value using the same values as the [DisplayOctave][super::DisplayOctave] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("key-octave")]
pub struct KeyOctave {
/// Element-specific attributes
diff --git a/musicxml/src/elements/key_step.rs b/musicxml/src/elements/key_step.rs
index 49f87cb..5a80159 100644
--- a/musicxml/src/elements/key_step.rs
+++ b/musicxml/src/elements/key_step.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [KeyStep] element indicates the pitch step to be altered, represented using the same names as in the [Step][super::Step] element.
///
/// The different element names indicate the different meaning of altering notes in a scale versus altering a sounding pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("key-step")]
pub struct KeyStep {
/// Element-specific attributes
diff --git a/musicxml/src/elements/kind.rs b/musicxml/src/elements/kind.rs
index 483f141..e0dfee0 100644
--- a/musicxml/src/elements/kind.rs
+++ b/musicxml/src/elements/kind.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Kind] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct KindAttributes {
/// The `bracket_degrees`` attribute is yes if all the degrees should be in a bracket. The default is implementation-dependent.
pub bracket_degrees: Option,
@@ -85,7 +85,7 @@ pub struct KindAttributes {
///
/// The `text` attribute may use strings such as "13sus" that refer to both the kind and one or more [Degree][super::Degree] elements. In this case,
/// the corresponding [Degree][super::Degree] elements should have the `print_object` attribute set to "no" to keep redundant alterations from being displayed.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Kind {
/// Element-specific attributes
pub attributes: KindAttributes,
diff --git a/musicxml/src/elements/laughing.rs b/musicxml/src/elements/laughing.rs
index b61f5bb..09e9f0a 100644
--- a/musicxml/src/elements/laughing.rs
+++ b/musicxml/src/elements/laughing.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Laughing] element represents a laughing voice.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Laughing {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/left_divider.rs b/musicxml/src/elements/left_divider.rs
index 53d1f17..7e0f37b 100644
--- a/musicxml/src/elements/left_divider.rs
+++ b/musicxml/src/elements/left_divider.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [LeftDivider] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LeftDividerAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -58,7 +58,7 @@ pub struct LeftDividerAttributes {
///
/// The default vertical position is half the [SystemDistance][super::SystemDistance] value from the top of the system that is below the divider.
/// The default horizontal position is the left system margin.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("left-divider")]
pub struct LeftDivider {
/// Element-specific attributes
diff --git a/musicxml/src/elements/left_margin.rs b/musicxml/src/elements/left_margin.rs
index d848f7c..7f0dae0 100644
--- a/musicxml/src/elements/left_margin.rs
+++ b/musicxml/src/elements/left_margin.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [LeftMargin] element specifies the left margin for the parent element in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("left-margin")]
pub struct LeftMargin {
/// Element-specific attributes
diff --git a/musicxml/src/elements/level.rs b/musicxml/src/elements/level.rs
index 324cad4..dbd7f1d 100644
--- a/musicxml/src/elements/level.rs
+++ b/musicxml/src/elements/level.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Level] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LevelAttributes {
/// Specifies whether or not brackets are put around a symbol for an editorial indication. If not specified, it is left to application defaults.
pub bracket: Option,
@@ -24,7 +24,7 @@ pub struct LevelAttributes {
/// The [Level] element is used to specify editorial information for different MusicXML elements.
///
/// The content contains identifying and/or descriptive text about the editorial status of the parent element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Level {
/// Element-specific attributes
pub attributes: LevelAttributes,
diff --git a/musicxml/src/elements/line.rs b/musicxml/src/elements/line.rs
index ce2adbd..1c115e1 100644
--- a/musicxml/src/elements/line.rs
+++ b/musicxml/src/elements/line.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
/// They are only needed with the G, F, and C signs in order to position a pitch correctly on the staff.
/// Standard values are 2 for the G sign (treble clef), 4 for the F sign (bass clef), and 3 for the C sign (alto clef).
/// Line values can be used to specify positions outside the staff, such as a C clef positioned in the middle of a grand staff.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Line {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/line_detail.rs b/musicxml/src/elements/line_detail.rs
index 6cfbf7f..c6da6d7 100644
--- a/musicxml/src/elements/line_detail.rs
+++ b/musicxml/src/elements/line_detail.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [LineDetail] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LineDetailAttributes {
/// Indicates the staff line affected, numbered from bottom to top.
pub line: StaffLine,
@@ -25,7 +25,7 @@ pub struct LineDetailAttributes {
/// where a note placed below the higher line is distinct from a note placed above the lower line. Hidden staff lines are included when specifying clef
/// lines and determining [DisplayStep][super::DisplayStep] / [DisplayOctave][super::DisplayOctave] values, but are not counted as lines for the purposes
/// of the [SystemLayout][super::SystemLayout] and [StaffLayout][super::StaffLayout] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("line-detail")]
pub struct LineDetail {
/// Element-specific attributes
diff --git a/musicxml/src/elements/line_width.rs b/musicxml/src/elements/line_width.rs
index 1331dc7..2a96c6e 100644
--- a/musicxml/src/elements/line_width.rs
+++ b/musicxml/src/elements/line_width.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [LineWidth] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LineWidthAttributes {
/// The type of line whose width is being defined.
pub r#type: LineWidthType,
}
/// The [LineWidth] element indicates the width of a specific line type in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("line-width")]
pub struct LineWidth {
/// Element-specific attributes
diff --git a/musicxml/src/elements/link.rs b/musicxml/src/elements/link.rs
index 99b146b..d03a878 100644
--- a/musicxml/src/elements/link.rs
+++ b/musicxml/src/elements/link.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Link] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LinkAttributes {
/// The `xlink_href` attribute provides the data that allows an application to find a remote resource or resource fragment.
/// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-locators).
@@ -60,7 +60,7 @@ pub struct LinkAttributes {
/// The [Link] element serves as an outgoing simple XLink.
///
/// If a relative link is used within a document that is part of a compressed MusicXML file, the link is relative to the root folder of the zip file.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Link {
/// Element-specific attributes
pub attributes: LinkAttributes,
diff --git a/musicxml/src/elements/listen.rs b/musicxml/src/elements/listen.rs
index d430081..c56cf52 100644
--- a/musicxml/src/elements/listen.rs
+++ b/musicxml/src/elements/listen.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [ListenContents] element specifies all possible options available for use in a [Listen] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum ListenContents {
/// The [Assess] element specifies the assessment of a performance.
Assess(Assess),
@@ -20,7 +20,7 @@ pub enum ListenContents {
///
/// The [Listen] element handles interactions that are specific to a note. If multiple child elements of the same type are present,
/// they should have distinct `player` and/or `time_only` attributes.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Listen {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/listening.rs b/musicxml/src/elements/listening.rs
index e011ae4..8e628a2 100644
--- a/musicxml/src/elements/listening.rs
+++ b/musicxml/src/elements/listening.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Listening] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ListeningContents {
/// The [Sync] element specifies the synchronization of the score-following or machine-listening data with the music.
pub sync: Option,
@@ -25,7 +25,7 @@ pub struct ListeningContents {
///
/// Note that the [Offset] reflects the intended musical position for the change in state. It should not be used to compensate for latency issues in
/// particular hardware configurations.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Listening {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/lyric.rs b/musicxml/src/elements/lyric.rs
index dfb0230..08a7986 100644
--- a/musicxml/src/elements/lyric.rs
+++ b/musicxml/src/elements/lyric.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Lyric] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LyricAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -48,7 +48,7 @@ pub struct LyricAttributes {
}
/// Contents of the [AdditionalTextLyric] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct AdditionalTextLyric {
/// The [Elision] element represents an elision in a lyric.
pub elision: Option,
@@ -59,7 +59,7 @@ pub struct AdditionalTextLyric {
}
/// The [TextLyric] element represents the text of a lyric.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct TextLyric {
/// The [Syllabic] element represents the type of syllable for a lyric.
pub syllabic: Option,
@@ -165,7 +165,7 @@ impl ContentSerializer for TextLyric {
}
/// The [ExtendLyric] element represents an extension of a lyric.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ExtendLyric {
/// The [Extend] element represents an extension of a lyric.
pub extend: Extend,
@@ -180,7 +180,7 @@ pub struct ExtendLyric {
}
/// The [LaughingLyric] element represents a laughing lyric.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct LaughingLyric {
/// The [Laughing] element represents a laughing lyric.
pub laughing: Laughing,
@@ -195,7 +195,7 @@ pub struct LaughingLyric {
}
/// The [HummingLyric] element represents a humming lyric.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct HummingLyric {
/// The [Humming] element represents a humming lyric.
pub humming: Humming,
@@ -212,7 +212,7 @@ pub struct HummingLyric {
/// Contents of the [Lyric] element.
///
/// The [Lyric] element may contain either a [TextLyric], [ExtendLyric], [LaughingLyric], or [HummingLyric].
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum LyricContents {
/// The [TextLyric] element represents the text of a lyric.
Text(TextLyric),
@@ -265,7 +265,7 @@ impl ContentSerializer for LyricContents {
///
/// The `print_object` attribute can override a [Note][super::Note]'s `print_lyric` attribute in cases where only some lyrics on a note are printed,
/// as when lyrics for later verses are printed in a block of text rather than with each note.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Lyric {
/// Element-specific attributes
pub attributes: LyricAttributes,
diff --git a/musicxml/src/elements/lyric_font.rs b/musicxml/src/elements/lyric_font.rs
index 8330500..4634228 100644
--- a/musicxml/src/elements/lyric_font.rs
+++ b/musicxml/src/elements/lyric_font.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [LyricFont] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LyricFontAttributes {
/// A comma-separated list of font names.
pub font_family: Option,
@@ -21,7 +21,7 @@ pub struct LyricFontAttributes {
}
/// The [LyricFont] element specifies the default font for a particular name and number of lyric.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("lyric-font")]
pub struct LyricFont {
/// Element-specific attributes
diff --git a/musicxml/src/elements/lyric_language.rs b/musicxml/src/elements/lyric_language.rs
index 491cdbd..6c52002 100644
--- a/musicxml/src/elements/lyric_language.rs
+++ b/musicxml/src/elements/lyric_language.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [LyricLanguage] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct LyricLanguageAttributes {
/// Specifies the language used in the element content. It is Italian ("it") if not specified.
pub xml_lang: XmlLang,
@@ -15,7 +15,7 @@ pub struct LyricLanguageAttributes {
}
/// The [LyricLanguage] element specifies the default language for a particular name and number of lyric.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("lyric-language")]
pub struct LyricLanguage {
/// Element-specific attributes
diff --git a/musicxml/src/elements/measure.rs b/musicxml/src/elements/measure.rs
index 7cf7e2a..12630c1 100644
--- a/musicxml/src/elements/measure.rs
+++ b/musicxml/src/elements/measure.rs
@@ -8,7 +8,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Measure] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MeasureAttributes {
/// The attribute that identifies the measure. Going from partwise to timewise, measures are grouped via this attribute.
/// In partwise files, it should be the same for measures in different parts that share the same left barline.
@@ -36,7 +36,7 @@ pub struct MeasureAttributes {
}
/// The [MeasureElement] specifies all possible elements available for use in a [Measure] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum MeasureElement {
/// The [Part] element is a container for musical data that is part of a score.
Part(Part),
@@ -72,7 +72,7 @@ pub enum MeasureElement {
}
/// The [Measure] element includes the basic musical data such as [Notes][super::Note] within a document.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Measure {
/// Element-specific attributes
pub attributes: MeasureAttributes,
diff --git a/musicxml/src/elements/measure_distance.rs b/musicxml/src/elements/measure_distance.rs
index 02ee02d..81cc34e 100644
--- a/musicxml/src/elements/measure_distance.rs
+++ b/musicxml/src/elements/measure_distance.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
///
/// This value is only used for systems where there is horizontal whitespace in the middle of a system, as in systems with codas.
/// To specify the measure width, use the `width` attribute of the [Measure][super::Measure] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("measure-distance")]
pub struct MeasureDistance {
/// Element-specific attributes
diff --git a/musicxml/src/elements/measure_layout.rs b/musicxml/src/elements/measure_layout.rs
index 3a9eee1..31dac71 100644
--- a/musicxml/src/elements/measure_layout.rs
+++ b/musicxml/src/elements/measure_layout.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [MeasureLayout] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct MeasureLayoutContents {
/// The [MeasureDistance] element includes the horizontal distance from the previous measure.
pub measure_distance: Option,
@@ -13,7 +13,7 @@ pub struct MeasureLayoutContents {
/// The [MeasureLayout] element includes the horizontal distance from the previous measure.
///
/// It applies to the current measure only.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("measure-layout")]
pub struct MeasureLayout {
/// Element-specific attributes
diff --git a/musicxml/src/elements/measure_numbering.rs b/musicxml/src/elements/measure_numbering.rs
index b26d382..30e133f 100644
--- a/musicxml/src/elements/measure_numbering.rs
+++ b/musicxml/src/elements/measure_numbering.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MeasureNumbering] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MeasureNumberingAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -74,7 +74,7 @@ pub struct MeasureNumberingAttributes {
///
/// The `text` attribute from the [Measure][super::Measure] element is used for display, or the `number` attribute if the text attribute is not present.
/// Measures with an `implicit` attribute set to yes never display a measure number, regardless of the [MeasureNumbering] setting.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("measure-numbering")]
pub struct MeasureNumbering {
/// Element-specific attributes
diff --git a/musicxml/src/elements/measure_repeat.rs b/musicxml/src/elements/measure_repeat.rs
index abb6d06..45a45a4 100644
--- a/musicxml/src/elements/measure_repeat.rs
+++ b/musicxml/src/elements/measure_repeat.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MeasureRepeat] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MeasureRepeatAttributes {
/// Indicates the starting or stopping point of the section displaying the measure repeat symbols.
pub r#type: Option,
@@ -23,7 +23,7 @@ pub struct MeasureRepeatAttributes {
///
/// The [MeasureRepeat] element specifies a notation style for repetitions. The actual music being repeated needs to be repeated within each measure of the MusicXML file.
/// This element specifies the notation that indicates the repeat.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("measure-repeat")]
pub struct MeasureRepeat {
/// Element-specific attributes
diff --git a/musicxml/src/elements/measure_style.rs b/musicxml/src/elements/measure_style.rs
index da714c8..7671fc9 100644
--- a/musicxml/src/elements/measure_style.rs
+++ b/musicxml/src/elements/measure_style.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MeasureStyle] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MeasureStyleAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -27,7 +27,7 @@ pub struct MeasureStyleAttributes {
/// Contents of the [MeasureStyle] element.
///
/// The [MeasureStyle] element may contain either a [MultipleRest], [MeasureRepeat], [BeatRepeat], or [Slash].
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum MeasureStyleContents {
/// The [MultipleRest] element indicates a rest that spans multiple measures.
MultipleRest(MultipleRest),
@@ -46,7 +46,7 @@ pub enum MeasureStyleContents {
/// The [MultipleRest] and [MeasureRepeat] elements indicate the number of measures covered in the element content.
/// The [BeatRepeat] and [Slash] elements can cover partial measures. All but the [MultipleRest] element use a `type` attribute to indicate
/// starting and stopping the use of the style.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct MeasureStyle {
/// Element-specific attributes
pub attributes: MeasureStyleAttributes,
diff --git a/musicxml/src/elements/membrane.rs b/musicxml/src/elements/membrane.rs
index 0ae11ea..c8f6be2 100644
--- a/musicxml/src/elements/membrane.rs
+++ b/musicxml/src/elements/membrane.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Membrane] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MembraneAttributes {
/// Distinguishes different SMuFL stylistic alternates.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct MembraneAttributes {
/// The [Membrane] element represents pictograms for membrane percussion instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Membrane {
/// Element-specific attributes
pub attributes: MembraneAttributes,
diff --git a/musicxml/src/elements/metal.rs b/musicxml/src/elements/metal.rs
index 1932e3b..b48fc6a 100644
--- a/musicxml/src/elements/metal.rs
+++ b/musicxml/src/elements/metal.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Metal] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MetalAttributes {
/// Distinguishes different SMuFL stylistic alternates.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct MetalAttributes {
/// The [Metal] element represents pictograms for metal percussion instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Metal {
/// Element-specific attributes
pub attributes: MetalAttributes,
diff --git a/musicxml/src/elements/metronome.rs b/musicxml/src/elements/metronome.rs
index 5381660..0e5970c 100644
--- a/musicxml/src/elements/metronome.rs
+++ b/musicxml/src/elements/metronome.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Metronome] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MetronomeAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -66,7 +66,7 @@ pub struct MetronomeAttributes {
}
/// The [BeatBasedEquation] element specifies the metronome mark in terms of beat units.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct BeatBasedEquation {
/// The [BeatUnit] element specifies the beat unit for the metronome mark.
pub beat_unit: BeatUnit,
@@ -77,7 +77,7 @@ pub struct BeatBasedEquation {
}
/// The [BeatEquation] element specifies the metronome mark in terms of beats per minute or beat units.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum BeatEquation {
/// The [PerMinute] element specifies the metronome mark in terms of beats per minute.
BPM(PerMinute),
@@ -86,7 +86,7 @@ pub enum BeatEquation {
}
/// The [BeatBased] element specifies the metronome mark in terms of beat units.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct BeatBased {
/// The [BeatUnit] element specifies the beat unit for the metronome mark.
pub beat_unit: BeatUnit,
@@ -177,7 +177,7 @@ impl ContentSerializer for BeatBased {
}
/// The [AdditionalMetronomeBasedContents] element specifies additional metronome marks.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct AdditionalMetronomeBasedContents {
/// The [MetronomeRelation] element specifies the relationship between additional metronome marks.
pub metronome_relation: MetronomeRelation,
@@ -186,7 +186,7 @@ pub struct AdditionalMetronomeBasedContents {
}
/// The [MetronomeBased] element specifies the metronome mark in terms of beat units.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct MetronomeBased {
/// The [MetronomeArrows] element specifies the appearance of arrows in the metronome mark.
pub metronome_arrows: Option,
@@ -246,7 +246,7 @@ impl ContentSerializer for MetronomeBased {
/// Contents of the [Metronome] element.
///
/// The [Metronome] element may contain either [BeatBased] or [MetronomeBased] contents.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum MetronomeContents {
/// The [BeatBased] element specifies the metronome mark in terms of beat units.
BeatBased(BeatBased),
@@ -280,7 +280,7 @@ impl ContentSerializer for MetronomeContents {
/// such as swing tempo marks where two eighths are equated to a quarter note / eighth note triplet.
/// Tied notes can be represented in both types of metronome marks by using the [BeatUnitTied] and [MetronomeTied][super::MetronomeTied] elements.
/// The `print_object` attribute is set to "no" in cases where the [Metronome] element represents a relationship or range that is not displayed in the music notation.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Metronome {
/// Element-specific attributes
pub attributes: MetronomeAttributes,
diff --git a/musicxml/src/elements/metronome_arrows.rs b/musicxml/src/elements/metronome_arrows.rs
index 04c4153..0a9a9cd 100644
--- a/musicxml/src/elements/metronome_arrows.rs
+++ b/musicxml/src/elements/metronome_arrows.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// If the [MetronomeArrows] element is present, it indicates that metric modulation arrows are displayed on both sides of the metronome mark.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-arrows")]
pub struct MetronomeArrows {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_beam.rs b/musicxml/src/elements/metronome_beam.rs
index 03cca5f..13ec311 100644
--- a/musicxml/src/elements/metronome_beam.rs
+++ b/musicxml/src/elements/metronome_beam.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MetronomeBeam] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MetronomeBeamAttributes {
/// Indicates eighth note through 1024th note beams using number values 1 thru 8 respectively. The default value is 1.
pub number: Option,
@@ -14,7 +14,7 @@ pub struct MetronomeBeamAttributes {
/// but does not include all the attributes available in the [Beam][super::Beam] element.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-beam")]
pub struct MetronomeBeam {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_dot.rs b/musicxml/src/elements/metronome_dot.rs
index 80f3e02..42a3017 100644
--- a/musicxml/src/elements/metronome_dot.rs
+++ b/musicxml/src/elements/metronome_dot.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MetronomeDot] element works like the [Dot][super::Dot] element in defining metric relationships.
-#[derive(Debug, Default, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-dot")]
pub struct MetronomeDot {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_note.rs b/musicxml/src/elements/metronome_note.rs
index 9b81ed0..ea54fe2 100644
--- a/musicxml/src/elements/metronome_note.rs
+++ b/musicxml/src/elements/metronome_note.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [MetronomeNote] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct MetronomeNoteContents {
/// The [MetronomeType] element specifies the note type for the metronome mark.
pub metronome_type: MetronomeType,
@@ -19,7 +19,7 @@ pub struct MetronomeNoteContents {
}
/// The [MetronomeNote] element defines the appearance of a note within a metric relationship mark.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-note")]
pub struct MetronomeNote {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_relation.rs b/musicxml/src/elements/metronome_relation.rs
index d5b3e38..14edef2 100644
--- a/musicxml/src/elements/metronome_relation.rs
+++ b/musicxml/src/elements/metronome_relation.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// 
///
/// The currently allowed value is "equals", but this may expand in future versions. If the element is empty, the equals value is used.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-relation")]
pub struct MetronomeRelation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_tied.rs b/musicxml/src/elements/metronome_tied.rs
index 560d487..16072a4 100644
--- a/musicxml/src/elements/metronome_tied.rs
+++ b/musicxml/src/elements/metronome_tied.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MetronomeTied] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MetronomeTiedAttributes {
/// Indicates if this is the start or stop of the tie.
pub r#type: StartStop,
@@ -14,7 +14,7 @@ pub struct MetronomeTiedAttributes {
///
/// As with the [Tied][super::Tied] element, both the start and stop of the tie should be specified, in this case within separate
/// [MetronomeNote][super::MetronomeNote] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-tied")]
pub struct MetronomeTied {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_tuplet.rs b/musicxml/src/elements/metronome_tuplet.rs
index a074f2d..c560d22 100644
--- a/musicxml/src/elements/metronome_tuplet.rs
+++ b/musicxml/src/elements/metronome_tuplet.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MetronomeTuplet] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MetronomeTupletAttributes {
/// Indicates if this is the start or stop of the tuplet.
pub r#type: StartStop,
@@ -16,7 +16,7 @@ pub struct MetronomeTupletAttributes {
}
/// Contents of the [MetronomeTuplet] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct MetronomeTupletContents {
/// The [ActualNotes] element specifies the number of notes in the tuplet.
pub actual_notes: ActualNotes,
@@ -32,7 +32,7 @@ pub struct MetronomeTupletContents {
/// along with some attributes from the [Tuplet][super::Tuplet] element.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-tuplet")]
pub struct MetronomeTuplet {
/// Element-specific attributes
diff --git a/musicxml/src/elements/metronome_type.rs b/musicxml/src/elements/metronome_type.rs
index e548e09..100be29 100644
--- a/musicxml/src/elements/metronome_type.rs
+++ b/musicxml/src/elements/metronome_type.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MetronomeType] element works like the [Type][super::Type] element in defining metric relationships.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("metronome-type")]
pub struct MetronomeType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/mf.rs b/musicxml/src/elements/mf.rs
index e3499a6..1d06527 100644
--- a/musicxml/src/elements/mf.rs
+++ b/musicxml/src/elements/mf.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Mf] element represents a mezzo forte dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Mf {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/midi_bank.rs b/musicxml/src/elements/midi_bank.rs
index c08f401..9d77f30 100644
--- a/musicxml/src/elements/midi_bank.rs
+++ b/musicxml/src/elements/midi_bank.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MidiBank] element specifies a MIDI 1.0 bank number ranging from 1 to 16,384.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-bank")]
pub struct MidiBank {
/// Element-specific attributes
diff --git a/musicxml/src/elements/midi_channel.rs b/musicxml/src/elements/midi_channel.rs
index f4a4e59..5c7523f 100644
--- a/musicxml/src/elements/midi_channel.rs
+++ b/musicxml/src/elements/midi_channel.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MidiChannel] element specifies a MIDI 1.0 channel numbers ranging from 1 to 16.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-channel")]
pub struct MidiChannel {
/// Element-specific attributes
diff --git a/musicxml/src/elements/midi_device.rs b/musicxml/src/elements/midi_device.rs
index ab606ba..8a89a68 100644
--- a/musicxml/src/elements/midi_device.rs
+++ b/musicxml/src/elements/midi_device.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MidiDevice] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MidiDeviceAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
@@ -15,7 +15,7 @@ pub struct MidiDeviceAttributes {
/// The [MidiDevice] element corresponds to the `DeviceName` meta event in Standard MIDI Files.
///
/// Unlike the `DeviceName` meta event, there can be multiple [MidiDevice] elements per MusicXML part.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-device")]
pub struct MidiDevice {
/// Element-specific attributes
diff --git a/musicxml/src/elements/midi_instrument.rs b/musicxml/src/elements/midi_instrument.rs
index 5f00e72..96a5d32 100644
--- a/musicxml/src/elements/midi_instrument.rs
+++ b/musicxml/src/elements/midi_instrument.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MidiInstrument] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MidiInstrumentAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: IdRef,
}
/// Contents of the [MidiInstrument] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct MidiInstrumentContents {
/// The [MidiChannel] element specifies the MIDI 1.0 channel number.
pub midi_channel: Option,
@@ -36,7 +36,7 @@ pub struct MidiInstrumentContents {
///
/// The [MidiInstrument] element can be a part of either the [ScoreInstrument][super::ScoreInstrument] element at the start of a part,
/// or the [Sound][super::Sound] element within a part.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-instrument")]
pub struct MidiInstrument {
/// Element-specific attributes
diff --git a/musicxml/src/elements/midi_name.rs b/musicxml/src/elements/midi_name.rs
index 07b466c..dcf9dcc 100644
--- a/musicxml/src/elements/midi_name.rs
+++ b/musicxml/src/elements/midi_name.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MidiName] element corresponds to a `ProgramName` meta-event within a Standard MIDI File.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-name")]
pub struct MidiName {
/// Element-specific attributes
diff --git a/musicxml/src/elements/midi_program.rs b/musicxml/src/elements/midi_program.rs
index 2e1915d..98d371d 100644
--- a/musicxml/src/elements/midi_program.rs
+++ b/musicxml/src/elements/midi_program.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MidiProgram] element specifies a MIDI 1.0 program number ranging from 1 to 128.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-program")]
pub struct MidiProgram {
/// Element-specific attributes
diff --git a/musicxml/src/elements/midi_unpitched.rs b/musicxml/src/elements/midi_unpitched.rs
index 9f49287..95cb5ac 100644
--- a/musicxml/src/elements/midi_unpitched.rs
+++ b/musicxml/src/elements/midi_unpitched.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
///
/// It is usually used with MIDI banks for percussion. Note that MIDI 1.0 note numbers are generally specified from 0 to 127
/// rather than the 1 to 128 numbering used in this element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("midi-unpitched")]
pub struct MidiUnpitched {
/// Element-specific attributes
diff --git a/musicxml/src/elements/millimeters.rs b/musicxml/src/elements/millimeters.rs
index 77beb21..f0459f3 100644
--- a/musicxml/src/elements/millimeters.rs
+++ b/musicxml/src/elements/millimeters.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Millimeters] element contains the number of millimeters that correspond to the given number of tenths within the [Scaling][super::Scaling] element formula.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Millimeters {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/miscellaneous.rs b/musicxml/src/elements/miscellaneous.rs
index 9a0eeb6..b66afd1 100644
--- a/musicxml/src/elements/miscellaneous.rs
+++ b/musicxml/src/elements/miscellaneous.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Miscellaneous] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct MiscellaneousContents {
/// The [MiscellaneousField] element specifies a part of the metadata.
pub miscellaneous_field: Vec,
@@ -13,7 +13,7 @@ pub struct MiscellaneousContents {
/// If a program has other metadata not yet supported in the MusicXML format, it can go in the [Miscellaneous] element.
///
/// The [Miscellaneous] element puts each separate part of metadata into its own [MiscellaneousField] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Miscellaneous {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/miscellaneous_field.rs b/musicxml/src/elements/miscellaneous_field.rs
index a928129..84611fa 100644
--- a/musicxml/src/elements/miscellaneous_field.rs
+++ b/musicxml/src/elements/miscellaneous_field.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MiscellaneousField] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MiscellaneousFieldAttributes {
/// Indicates the type of metadata the element content represents.
pub name: Token,
}
/// If a program has other metadata not yet supported in the MusicXML format, each type of metadata can go in a [MiscellaneousField] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("miscellaneous-field")]
pub struct MiscellaneousField {
/// Element-specific attributes
diff --git a/musicxml/src/elements/mode.rs b/musicxml/src/elements/mode.rs
index 7afbc08..5ca71ca 100644
--- a/musicxml/src/elements/mode.rs
+++ b/musicxml/src/elements/mode.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Mode] element is used to specify major/minor and other mode distinctions.
///
/// Valid mode values include major, minor, dorian, phrygian, lydian, mixolydian, aeolian, ionian, locrian, and none.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Mode {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/mordent.rs b/musicxml/src/elements/mordent.rs
index f2ac11f..b3d2dc6 100644
--- a/musicxml/src/elements/mordent.rs
+++ b/musicxml/src/elements/mordent.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Mordent] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MordentAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -67,7 +67,7 @@ pub struct MordentAttributes {
/// 
///
/// The choice of which mordent sign is inverted differs between MusicXML and the Standard Music Font Layout (SMuFL).
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Mordent {
/// Element-specific attributes
pub attributes: MordentAttributes,
diff --git a/musicxml/src/elements/movement_number.rs b/musicxml/src/elements/movement_number.rs
index f17e4c2..15edda0 100644
--- a/musicxml/src/elements/movement_number.rs
+++ b/musicxml/src/elements/movement_number.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MovementNumber] element specifies the number of a movement.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("movement-number")]
pub struct MovementNumber {
/// Element-specific attributes
diff --git a/musicxml/src/elements/movement_title.rs b/musicxml/src/elements/movement_title.rs
index 45949ab..07c88cd 100644
--- a/musicxml/src/elements/movement_title.rs
+++ b/musicxml/src/elements/movement_title.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [MovementTitle] element specifies the title of a movement, not including its number.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("movement-title")]
pub struct MovementTitle {
/// Element-specific attributes
diff --git a/musicxml/src/elements/mp.rs b/musicxml/src/elements/mp.rs
index 1355a46..206439a 100644
--- a/musicxml/src/elements/mp.rs
+++ b/musicxml/src/elements/mp.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Mp] element represents a mezzo piano dynamic marking.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Mp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/multiple_rest.rs b/musicxml/src/elements/multiple_rest.rs
index 8b02ae4..26a3329 100644
--- a/musicxml/src/elements/multiple_rest.rs
+++ b/musicxml/src/elements/multiple_rest.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MultipleRest] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MultipleRestAttributes {
/// Specifies whether the multiple rests uses the 1-bar / 2-bar / 4-bar rest symbols,
/// or a single shape. It is no if not specified.
@@ -16,7 +16,7 @@ pub struct MultipleRestAttributes {
/// 
///
/// The element text indicates the number of measures in the multiple rest.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("multiple-rest")]
pub struct MultipleRest {
/// Element-specific attributes
diff --git a/musicxml/src/elements/music_font.rs b/musicxml/src/elements/music_font.rs
index e6fdb1f..0767dec 100644
--- a/musicxml/src/elements/music_font.rs
+++ b/musicxml/src/elements/music_font.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [MusicFont] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct MusicFontAttributes {
/// A comma-separated list of font names.
pub font_family: Option,
@@ -17,7 +17,7 @@ pub struct MusicFontAttributes {
}
/// The [MusicFont] element represents the default values for the music font in the score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("music-font")]
pub struct MusicFont {
/// Element-specific attributes
diff --git a/musicxml/src/elements/mute.rs b/musicxml/src/elements/mute.rs
index 2f3f0b7..bd740d4 100644
--- a/musicxml/src/elements/mute.rs
+++ b/musicxml/src/elements/mute.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Mute] element represents muting playback for different instruments, including brass, winds, and strings.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Mute {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/n.rs b/musicxml/src/elements/n.rs
index ca71968..73724a9 100644
--- a/musicxml/src/elements/n.rs
+++ b/musicxml/src/elements/n.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [N] element represents a niente dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct N {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/natural.rs b/musicxml/src/elements/natural.rs
index 6e412a0..74d45dd 100644
--- a/musicxml/src/elements/natural.rs
+++ b/musicxml/src/elements/natural.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// 
///
/// These are usually notated at base pitch rather than sounding pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Natural {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/non_arpeggiate.rs b/musicxml/src/elements/non_arpeggiate.rs
index 6980792..1645609 100644
--- a/musicxml/src/elements/non_arpeggiate.rs
+++ b/musicxml/src/elements/non_arpeggiate.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [NonArpeggiate] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NonArpeggiateAttributes {
/// Indicates whether this is the top or bottom of the symbol.
pub r#type: TopBottom,
@@ -40,7 +40,7 @@ pub struct NonArpeggiateAttributes {
/// The [NonArpeggiate] element indicates that this [Note][super::Note] is at the top or bottom of a bracket indicating to not arpeggiate these notes.
///
/// Since this does not involve playback, it is only used on the top or bottom notes, not on each [Note][super::Note] as for the [Arpeggiate][super::Arpeggiate] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("non-arpeggiate")]
pub struct NonArpeggiate {
/// Element-specific attributes
diff --git a/musicxml/src/elements/normal_dot.rs b/musicxml/src/elements/normal_dot.rs
index 2b83f30..47d9fd1 100644
--- a/musicxml/src/elements/normal_dot.rs
+++ b/musicxml/src/elements/normal_dot.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [NormalDot] element is used to specify dotted normal tuplet types.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("normal-dot")]
pub struct NormalDot {
/// Element-specific attributes
diff --git a/musicxml/src/elements/normal_notes.rs b/musicxml/src/elements/normal_notes.rs
index 76eb4e3..cea30d9 100644
--- a/musicxml/src/elements/normal_notes.rs
+++ b/musicxml/src/elements/normal_notes.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
/// If the type associated with the number in the [NormalNotes] element is different than the current note type
/// (e.g., a quarter note within an eighth note triplet), then the [NormalNotes] type (e.g. eighth) is specified
/// in the [NormalType][super::NormalType] and [NormalDot][super::NormalDot] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("normal-notes")]
pub struct NormalNotes {
/// Element-specific attributes
diff --git a/musicxml/src/elements/normal_type.rs b/musicxml/src/elements/normal_type.rs
index 503e866..d48ea10 100644
--- a/musicxml/src/elements/normal_type.rs
+++ b/musicxml/src/elements/normal_type.rs
@@ -8,7 +8,7 @@ use musicxml_macros::*;
/// If the type associated with the number in the [NormalNotes][super::NormalNotes] element is different than the current note type
/// (e.g., a quarter note within an eighth note triplet), then the [NormalNotes][super::NormalNotes] type
/// (e.g. eighth) is specified in the [NormalType] and [NormalDot][super::NormalDot] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("normal-type")]
pub struct NormalType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/notations.rs b/musicxml/src/elements/notations.rs
index e71a10e..5d3cfd1 100644
--- a/musicxml/src/elements/notations.rs
+++ b/musicxml/src/elements/notations.rs
@@ -8,7 +8,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Notations] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NotationsAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
@@ -17,7 +17,7 @@ pub struct NotationsAttributes {
}
/// The [NotationContentTypes] contains the various notations that can be applied to a note or chord.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum NotationContentTypes {
/// The [Tied] element indicates that a tie begins or ends with this note.
Tied(Tied),
@@ -50,7 +50,7 @@ pub enum NotationContentTypes {
}
/// Contents of the [Notations] element.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct NotationsContents {
/// The [Footnote] element is used to specify editorial information or analysis.
pub footnote: Option,
@@ -156,7 +156,7 @@ impl ContentSerializer for NotationsContents {
/// Multiple [Notations] elements are allowed in order to represent multiple editorial levels.
/// The `print_object` attribute allows [Notations] to represent details of performance technique, such as fingerings,
/// without having them appear in the score. This element is not related to the concept of XML notations.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Notations {
/// Element-specific attributes
pub attributes: NotationsAttributes,
diff --git a/musicxml/src/elements/note.rs b/musicxml/src/elements/note.rs
index e54f408..e72cb1f 100644
--- a/musicxml/src/elements/note.rs
+++ b/musicxml/src/elements/note.rs
@@ -10,7 +10,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Note] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NoteAttributes {
/// Alters the starting time of the note from when it would otherwise occur based on the flow of durations -
/// information that is specific to a performance. It is expressed in terms of divisions, either positive or negative.
@@ -79,7 +79,7 @@ pub struct NoteAttributes {
}
/// The [AudibleType] element contains whether the note is a pitch, unpitched, or rest.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub enum AudibleType {
/// The [Pitch] element contains the pitch of a note.
Pitch(Pitch),
@@ -90,7 +90,7 @@ pub enum AudibleType {
}
/// The [GraceNormalInfo] element contains the actual data for a normal grace note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct GraceNormalInfo {
/// The [Chord] element indicates that this note is a chord note.
pub chord: Option,
@@ -146,7 +146,7 @@ impl ContentSerializer for GraceNormalInfo {
}
/// The [GraceCueInfo] element contains the actual data for a cue grace note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub struct GraceCueInfo {
/// The [Cue] element indicates that this note is a cue note.
pub cue: Cue,
@@ -204,7 +204,7 @@ impl ContentSerializer for GraceCueInfo {
}
/// The [GraceType] element contains the actual data for either a cue grace note or a normal grace note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum GraceType {
/// The [GraceCueInfo] element contains the actual data for a cue grace note.
Cue(GraceCueInfo),
@@ -213,7 +213,7 @@ pub enum GraceType {
}
/// The [GraceInfo] element contains the actual data for a grace note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct GraceInfo {
/// The [Grace] element indicates that this note is a grace note.
pub grace: Grace,
@@ -247,7 +247,7 @@ impl ContentSerializer for GraceInfo {
}
/// The [CueInfo] element contains the actual data for a cue note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone)]
pub struct CueInfo {
/// The [Cue] element indicates that this note is a cue note.
pub cue: Cue,
@@ -315,7 +315,7 @@ impl ContentSerializer for CueInfo {
}
/// The [NormalInfo] element contains the actual data for a normal note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct NormalInfo {
/// The [Chord] element indicates that this note is a chord note.
pub chord: Option,
@@ -381,7 +381,7 @@ impl ContentSerializer for NormalInfo {
}
/// The [NoteType] element contains the actual data for a note.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum NoteType {
/// The [GraceInfo] element contains the actual data for a grace note.
Grace(GraceInfo),
@@ -392,7 +392,7 @@ pub enum NoteType {
}
/// Contents of the [Note] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct NoteContents {
/// The [NoteType] element contains the actual data for the note.
pub info: NoteType,
@@ -555,7 +555,7 @@ impl ContentSerializer for NoteContents {
/// (e.g., [Tie] is used for sound, [Tied][super::Tied] for notation). Thus grace notes do not have a [Duration] element. Cue notes
/// have a [Duration] element, as do [Forward][super::Forward] elements, but no [Tie] elements. Having these two types of information
/// available can make interchange easier, as some programs handle one type of information more readily than the other.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Note {
/// Element-specific attributes
pub attributes: NoteAttributes,
diff --git a/musicxml/src/elements/note_size.rs b/musicxml/src/elements/note_size.rs
index 59ce328..083ffae 100644
--- a/musicxml/src/elements/note_size.rs
+++ b/musicxml/src/elements/note_size.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [NoteSize] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NoteSizeAttributes {
/// The type of note size being defined.
pub r#type: NoteSizeType,
@@ -14,7 +14,7 @@ pub struct NoteSizeAttributes {
/// as defined in the [Type][super::Type] element.
///
/// A value of 100 would be identical to the size of a regular note as defined by the music font.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("note-size")]
pub struct NoteSize {
/// Element-specific attributes
diff --git a/musicxml/src/elements/notehead.rs b/musicxml/src/elements/notehead.rs
index 80fcd4c..e12d946 100644
--- a/musicxml/src/elements/notehead.rs
+++ b/musicxml/src/elements/notehead.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Notehead] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NoteheadAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -35,7 +35,7 @@ pub struct NoteheadAttributes {
/// [Note name noteheads supplement](https://www.w3.org/2021/03/smufl14/tables/note-name-noteheads-supplement.html) ranges
/// (U+E150–U+E1AF and U+EEE0–U+EEFF) should not use the `smufl` attribute or the `other` value, but instead use
/// the [NoteheadText][super::NoteheadText] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Notehead {
/// Element-specific attributes
pub attributes: NoteheadAttributes,
diff --git a/musicxml/src/elements/notehead_text.rs b/musicxml/src/elements/notehead_text.rs
index 56637b6..f99b495 100644
--- a/musicxml/src/elements/notehead_text.rs
+++ b/musicxml/src/elements/notehead_text.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [NoteheadText] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct NoteheadTextContents {
/// The [DisplayText] element specifies the text that is displayed inside a notehead.
pub display_text: Option,
@@ -16,7 +16,7 @@ pub struct NoteheadTextContents {
///
/// It is not needed for the numbers used in tablature or jianpu notation. The presence of a TAB or jianpu clefs is sufficient to
/// indicate that numbers are used. The [DisplayText] and [AccidentalText] elements allow display of fully formatted text and accidentals.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("notehead-text")]
pub struct NoteheadText {
/// Element-specific attributes
diff --git a/musicxml/src/elements/numeral.rs b/musicxml/src/elements/numeral.rs
index 96aa1e3..daa50f6 100644
--- a/musicxml/src/elements/numeral.rs
+++ b/musicxml/src/elements/numeral.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Numeral] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct NumeralContents {
/// The [NumeralRoot] element specifies the root of the Roman numeral or Nashville number.
pub numeral_root: NumeralRoot,
@@ -17,7 +17,7 @@ pub struct NumeralContents {
/// The [Numeral] element represents the Roman numeral or Nashville number part of a harmony.
///
/// It requires that the key be specified in the encoding, either with a [Key][super::Key] or [NumeralKey] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Numeral {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/numeral_alter.rs b/musicxml/src/elements/numeral_alter.rs
index 8f100a6..ab94e57 100644
--- a/musicxml/src/elements/numeral_alter.rs
+++ b/musicxml/src/elements/numeral_alter.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [NumeralAlter] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NumeralAlterAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct NumeralAlterAttributes {
/// The [NumeralAlter] element represents an alteration to the [NumeralRoot][super::NumeralRoot],
/// similar to the [Alter][super::Alter] element for a [Pitch][super::Pitch].
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("numeral-alter")]
pub struct NumeralAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/numeral_fifths.rs b/musicxml/src/elements/numeral_fifths.rs
index c194862..aa5ee13 100644
--- a/musicxml/src/elements/numeral_fifths.rs
+++ b/musicxml/src/elements/numeral_fifths.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [NumeralFifths] element specifies the key in the same way as the [Fifths] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("numeral-fifths")]
pub struct NumeralFifths {
/// Element-specific attributes
diff --git a/musicxml/src/elements/numeral_key.rs b/musicxml/src/elements/numeral_key.rs
index 607e09a..a32064c 100644
--- a/musicxml/src/elements/numeral_key.rs
+++ b/musicxml/src/elements/numeral_key.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [NumeralKey] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NumeralKeyAttributes {
/// Specifies whether or not to print an object. It is yes if not specified.
pub print_object: Option,
}
/// Contents of the [NumeralKey] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct NumeralKeyContents {
/// The [NumeralFifths] element specifies the number of fifths in the key signature of the numeral.
pub numeral_fifths: NumeralFifths,
@@ -21,7 +21,7 @@ pub struct NumeralKeyContents {
}
/// The [NumeralKey] element is used when the key for the numeral is different than the key specified by the key signature.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("numeral-key")]
pub struct NumeralKey {
/// Element-specific attributes
diff --git a/musicxml/src/elements/numeral_mode.rs b/musicxml/src/elements/numeral_mode.rs
index 5c270a7..4f340dd 100644
--- a/musicxml/src/elements/numeral_mode.rs
+++ b/musicxml/src/elements/numeral_mode.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [NumeralMode] specifies the scale that is used to interpret the [NumeralRoot][super::NumeralRoot] element values.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("numeral-mode")]
pub struct NumeralMode {
/// Element-specific attributes
diff --git a/musicxml/src/elements/numeral_root.rs b/musicxml/src/elements/numeral_root.rs
index bfe5283..efe571d 100644
--- a/musicxml/src/elements/numeral_root.rs
+++ b/musicxml/src/elements/numeral_root.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [NumeralRoot] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct NumeralRootAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -41,7 +41,7 @@ pub struct NumeralRootAttributes {
}
/// The [NumeralRoot] element represents the Roman numeral or Nashville number as a positive integer from 1 to 7.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("numeral-root")]
pub struct NumeralRoot {
/// Element-specific attributes
diff --git a/musicxml/src/elements/octave.rs b/musicxml/src/elements/octave.rs
index 368cac4..a4087b5 100644
--- a/musicxml/src/elements/octave.rs
+++ b/musicxml/src/elements/octave.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Octaves are represented by the numbers 0 to 9, where 4 indicates the octave started by middle C.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Octave {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/octave_change.rs b/musicxml/src/elements/octave_change.rs
index c661a4b..ff703a0 100644
--- a/musicxml/src/elements/octave_change.rs
+++ b/musicxml/src/elements/octave_change.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
///
/// The [OctaveChange] element should be included when using transposition intervals of an octave or more,
/// and should not be present for intervals of less than an octave.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("octave-change")]
pub struct OctaveChange {
/// Element-specific attributes
diff --git a/musicxml/src/elements/octave_shift.rs b/musicxml/src/elements/octave_shift.rs
index a583ae8..fff4ff9 100644
--- a/musicxml/src/elements/octave_shift.rs
+++ b/musicxml/src/elements/octave_shift.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OctaveShift] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OctaveShiftAttributes {
/// Indicates if this is the start, stop, or continuation of the octave shift.
/// The start is specified as a shift up or down from their performed values.
@@ -79,7 +79,7 @@ impl Default for OctaveShiftAttributes {
/// 
///
/// A treble clef line noted with 8va will be indicated with an [OctaveShift] down from the pitch data indicated in the notes.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("octave-shift")]
pub struct OctaveShift {
/// Element-specific attributes
diff --git a/musicxml/src/elements/offset.rs b/musicxml/src/elements/offset.rs
index ca34164..5eee09e 100644
--- a/musicxml/src/elements/offset.rs
+++ b/musicxml/src/elements/offset.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Offset] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OffsetAttributes {
/// The offset affects the visual appearance of the direction. If the `sound` attribute is yes,
/// then the offset affects playback and listening too. If it is no, then any [Sound][super::Sound] or
@@ -17,7 +17,7 @@ pub struct OffsetAttributes {
///
/// The current musical location is always within the current measure, even at the end of a measure. If an element within a [Direction][super::Direction]
/// includes a `default_x` attribute, the [Offset] value will be ignored when determining the appearance of that element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Offset {
/// Element-specific attributes
pub attributes: OffsetAttributes,
diff --git a/musicxml/src/elements/open.rs b/musicxml/src/elements/open.rs
index 455e87e..38d214e 100644
--- a/musicxml/src/elements/open.rs
+++ b/musicxml/src/elements/open.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Open] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OpenAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -46,7 +46,7 @@ pub struct OpenAttributes {
///
/// The `smufl` attribute can be used to distinguish different Standard Music Font Layout (SMuFL) glyphs that have a similar appearance
/// such as "brassMuteOpen" and "guitarOpenPedal". If not present, the default glyph is "brassMuteOpen".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Open {
/// Element-specific attributes
pub attributes: OpenAttributes,
diff --git a/musicxml/src/elements/open_string.rs b/musicxml/src/elements/open_string.rs
index 3598b72..f6796a6 100644
--- a/musicxml/src/elements/open_string.rs
+++ b/musicxml/src/elements/open_string.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OpenString] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OpenStringAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct OpenStringAttributes {
/// The [OpenString] element represents the zero-shaped open string symbol.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("open-string")]
pub struct OpenString {
/// Element-specific attributes
diff --git a/musicxml/src/elements/opus.rs b/musicxml/src/elements/opus.rs
index f8c9361..ab5c86a 100644
--- a/musicxml/src/elements/opus.rs
+++ b/musicxml/src/elements/opus.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Opus] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OpusAttributes {
/// The `xlink_href` attribute provides the data that allows an application to find a remote resource or resource fragment.
/// See the definition in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-locators).
@@ -27,7 +27,7 @@ pub struct OpusAttributes {
}
/// The [Opus] element represents a link to a MusicXML opus document that composes multiple MusicXML scores into a collection.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Opus {
/// Element-specific attributes
pub attributes: OpusAttributes,
diff --git a/musicxml/src/elements/ornaments.rs b/musicxml/src/elements/ornaments.rs
index 8ebd065..f234a89 100644
--- a/musicxml/src/elements/ornaments.rs
+++ b/musicxml/src/elements/ornaments.rs
@@ -8,14 +8,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Ornaments] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OrnamentsAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
}
/// The [OrnamentType] element specifies the ornaments available to be performed.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum OrnamentType {
/// The [TrillMark] element represents the trill-mark symbol.
#[rename("trill-mark")]
@@ -59,7 +59,7 @@ pub enum OrnamentType {
}
/// Contents of the [Ornaments] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentSerialize)]
pub struct OrnamentContents {
/// The [OrnamentType] elements specify the ornaments to be performed.
pub ornaments: Vec,
@@ -92,7 +92,7 @@ impl ContentDeserializer for OrnamentContents {
///
/// The [AccidentalMark] element's content is represented the same as an [Accidental][super::Accidental] element, but with a different
/// name to reflect the different musical meaning.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ornaments {
/// Element-specific attributes
pub attributes: OrnamentsAttributes,
diff --git a/musicxml/src/elements/other_appearance.rs b/musicxml/src/elements/other_appearance.rs
index e88e43a..1285e97 100644
--- a/musicxml/src/elements/other_appearance.rs
+++ b/musicxml/src/elements/other_appearance.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherAppearance] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherAppearanceAttributes {
/// The appearance type being specified.
pub r#type: Token,
@@ -13,7 +13,7 @@ pub struct OtherAppearanceAttributes {
/// The [OtherAppearance] element is used to define any graphical settings not yet in the current version of the MusicXML format.
///
/// This allows extended representation, though without application interoperability.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-appearance")]
pub struct OtherAppearance {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_articulation.rs b/musicxml/src/elements/other_articulation.rs
index 224e410..9c5afc8 100644
--- a/musicxml/src/elements/other_articulation.rs
+++ b/musicxml/src/elements/other_articulation.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherArticulation] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherArticulationAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -47,7 +47,7 @@ pub struct OtherArticulationAttributes {
/// The `smufl` attribute can be used to specify a particular articulation, allowing application interoperability without requiring every
/// Standard Music Font Layout (SMuFL) articulation to have a MusicXML element equivalent. Using the [OtherArticulation] element without the `smufl`
/// attribute allows for extended representation, though without application interoperability.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-articulation")]
pub struct OtherArticulation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_direction.rs b/musicxml/src/elements/other_direction.rs
index 4e04d71..b646fbd 100644
--- a/musicxml/src/elements/other_direction.rs
+++ b/musicxml/src/elements/other_direction.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherDirection] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherDirectionAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -66,7 +66,7 @@ pub struct OtherDirectionAttributes {
/// The `smufl` attribute can be used to specify a particular direction symbol, allowing application interoperability without requiring every
/// SMuFL glyph to have a MusicXML element equivalent. Using the [OtherDirection] element without the `smufl` attribute allows for extended representation,
/// though without application interoperability.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-direction")]
pub struct OtherDirection {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_dynamics.rs b/musicxml/src/elements/other_dynamics.rs
index 08f4338..0592d14 100644
--- a/musicxml/src/elements/other_dynamics.rs
+++ b/musicxml/src/elements/other_dynamics.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherDynamics] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherDynamicsAttributes {
/// Indicates a particular Standard Music Font Layout (SMuFL) character using its canonical glyph name.
/// Sometimes this is a formatting choice, and sometimes this is a refinement of the semantic meaning of an element.
@@ -12,7 +12,7 @@ pub struct OtherDynamicsAttributes {
}
/// The [OtherDynamics] element allows other dynamic marks that are not covered by combinations of the individual [Dynamics][super::Dynamics] child elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-dynamics")]
pub struct OtherDynamics {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_listen.rs b/musicxml/src/elements/other_listen.rs
index c933720..26f11e9 100644
--- a/musicxml/src/elements/other_listen.rs
+++ b/musicxml/src/elements/other_listen.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherListen] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherListenAttributes {
/// Indicates the type of listening to which the element content applies.
pub r#type: Token,
@@ -16,7 +16,7 @@ pub struct OtherListenAttributes {
}
/// The [OtherListen] element represents other types of listening control and interaction that are specific to a note.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-listen")]
pub struct OtherListen {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_listening.rs b/musicxml/src/elements/other_listening.rs
index 0594991..bdce33d 100644
--- a/musicxml/src/elements/other_listening.rs
+++ b/musicxml/src/elements/other_listening.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherListening] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherListeningAttributes {
/// Indicates the type of listening to which the element content applies.
pub r#type: Token,
@@ -17,7 +17,7 @@ pub struct OtherListeningAttributes {
/// The [OtherListening] element represents other types of listening control and interaction that change the state of the
/// listening application from the specified point in the performance onward.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-listening")]
pub struct OtherListening {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_notation.rs b/musicxml/src/elements/other_notation.rs
index f224855..1e425a3 100644
--- a/musicxml/src/elements/other_notation.rs
+++ b/musicxml/src/elements/other_notation.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherNotation] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherNotationAttributes {
/// Indicates if this is a single-note notation, or the start or stop of a multi-note notation.
pub r#type: StartStopSingle,
@@ -61,7 +61,7 @@ pub struct OtherNotationAttributes {
/// The `smufl` attribute can be used to specify a particular notation, allowing application interoperability without requiring every
/// Standard Music Font Layout (SMuFL) glyph to have a MusicXML element equivalent. Using the [OtherNotation] element without the `smufl` attribute
/// allows for extended representation, though without application interoperability.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-notation")]
pub struct OtherNotation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_ornament.rs b/musicxml/src/elements/other_ornament.rs
index 60d31c4..d0ae34b 100644
--- a/musicxml/src/elements/other_ornament.rs
+++ b/musicxml/src/elements/other_ornament.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherOrnament] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherOrnamentAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -47,7 +47,7 @@ pub struct OtherOrnamentAttributes {
/// The `smufl` attribute can be used to specify a particular ornament, allowing application interoperability without requiring every
/// Standard Music Font Layout (SMuFL) ornament to have a MusicXML element equivalent. Using the [OtherOrnament] element without the `smufl` attribute
/// allows for extended representation, though without application interoperability.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-ornament")]
pub struct OtherOrnament {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_percussion.rs b/musicxml/src/elements/other_percussion.rs
index 015e930..0fb1035 100644
--- a/musicxml/src/elements/other_percussion.rs
+++ b/musicxml/src/elements/other_percussion.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherPercussion] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherPercussionAttributes {
/// Indicates a particular Standard Music Font Layout (SMuFL) character using its canonical glyph name.
/// Sometimes this is a formatting choice, and sometimes this is a refinement of the semantic meaning of an element.
@@ -12,7 +12,7 @@ pub struct OtherPercussionAttributes {
}
/// The [OtherPercussion] element represents percussion pictograms not defined elsewhere.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-percussion")]
pub struct OtherPercussion {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_play.rs b/musicxml/src/elements/other_play.rs
index c4164f9..1b8602b 100644
--- a/musicxml/src/elements/other_play.rs
+++ b/musicxml/src/elements/other_play.rs
@@ -4,14 +4,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherPlay] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherPlayAttributes {
/// Indicates the type of playback to which the element content applies.
pub r#type: Token,
}
/// The [OtherPlay] element represents other types of playback not otherwise specified within the [Play][super::Play] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-play")]
pub struct OtherPlay {
/// Element-specific attributes
diff --git a/musicxml/src/elements/other_technical.rs b/musicxml/src/elements/other_technical.rs
index 56d1212..1d364a0 100644
--- a/musicxml/src/elements/other_technical.rs
+++ b/musicxml/src/elements/other_technical.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [OtherTechnical] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct OtherTechnicalAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -47,7 +47,7 @@ pub struct OtherTechnicalAttributes {
/// The `smufl` attribute can be used to specify a particular glyph, allowing application interoperability without requiring every
/// Standard Music Font Layout (SMuFL) technical indication to have a MusicXML element equivalent. Using the [OtherTechnical] element
/// without the `smufl` attribute allows for extended representation, though without application interoperability.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("other-technical")]
pub struct OtherTechnical {
/// Element-specific attributes
diff --git a/musicxml/src/elements/p.rs b/musicxml/src/elements/p.rs
index 054f2e0..17212cd 100644
--- a/musicxml/src/elements/p.rs
+++ b/musicxml/src/elements/p.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [P] element represents a piano dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct P {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/page_height.rs b/musicxml/src/elements/page_height.rs
index 2617ca2..7f4b6a5 100644
--- a/musicxml/src/elements/page_height.rs
+++ b/musicxml/src/elements/page_height.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [PageHeight] element specifies the page height in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("page-height")]
pub struct PageHeight {
/// Element-specific attributes
diff --git a/musicxml/src/elements/page_layout.rs b/musicxml/src/elements/page_layout.rs
index ddf5e62..2692ae0 100644
--- a/musicxml/src/elements/page_layout.rs
+++ b/musicxml/src/elements/page_layout.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [PageLayout] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PageLayoutContents {
/// The [PageHeight] element specifies the height of the page.
pub page_height: Option,
@@ -22,7 +22,7 @@ pub struct PageLayoutContents {
/// All other pages use the default values as determined by the [Defaults][super::Defaults] element. If any child elements are missing
/// from the [PageLayout] element in a [Print][super::Print] element, the values determined by the [Defaults][super::Defaults] element
/// are used there as well.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("page-layout")]
pub struct PageLayout {
/// Element-specific attributes
diff --git a/musicxml/src/elements/page_margins.rs b/musicxml/src/elements/page_margins.rs
index 204d228..5f5a689 100644
--- a/musicxml/src/elements/page_margins.rs
+++ b/musicxml/src/elements/page_margins.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PageMargins] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PageMarginsAttributes {
/// Specifies whether the margins apply to even pages, odd pages, or both.
/// This attribute is not needed when used as part of a [Print][super::Print] element.
@@ -14,7 +14,7 @@ pub struct PageMarginsAttributes {
}
/// Contents of the [PageMargins] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct PageMarginsContents {
/// The [LeftMargin] element specifies the left margin in tenths.
pub left_margin: LeftMargin,
@@ -27,7 +27,7 @@ pub struct PageMarginsContents {
}
/// The [PageMargins] element specifies page margins in tenths either for both even and odd pages, or via separate odd and even page number values.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("page-margins")]
pub struct PageMargins {
/// Element-specific attributes
diff --git a/musicxml/src/elements/page_width.rs b/musicxml/src/elements/page_width.rs
index 4a31eb6..1e185ab 100644
--- a/musicxml/src/elements/page_width.rs
+++ b/musicxml/src/elements/page_width.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [PageWidth] element specifies the page width in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("page-width")]
pub struct PageWidth {
/// Element-specific attributes
diff --git a/musicxml/src/elements/pan.rs b/musicxml/src/elements/pan.rs
index 09f4f59..fe6f255 100644
--- a/musicxml/src/elements/pan.rs
+++ b/musicxml/src/elements/pan.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
///
/// Both are expressed in degrees ranging from -180 to 180. For [Pan], 0 is straight ahead, -90 is hard left, 90 is hard right,
/// and -180 and 180 are directly behind the listener.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pan {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/part.rs b/musicxml/src/elements/part.rs
index e58fd49..bb34683 100644
--- a/musicxml/src/elements/part.rs
+++ b/musicxml/src/elements/part.rs
@@ -8,14 +8,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Part] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: IdRef,
}
/// The [PartElement] specifies all possible elements available for use in a [Part] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum PartElement {
/// The [Measure] element includes the basic musical data containers within a document.
Measure(Measure),
@@ -51,7 +51,7 @@ pub enum PartElement {
}
/// The [Part] element includes the basic musical data such as [Notes][super::Note] or [Measures][Measure] within a document.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Part {
/// Element-specific attributes
pub attributes: PartAttributes,
diff --git a/musicxml/src/elements/part_abbreviation.rs b/musicxml/src/elements/part_abbreviation.rs
index 7315d56..1605f64 100644
--- a/musicxml/src/elements/part_abbreviation.rs
+++ b/musicxml/src/elements/part_abbreviation.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartAbbreviation] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartAbbreviationAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -46,7 +46,7 @@ pub struct PartAbbreviationAttributes {
/// The [PartName][super::PartName] and [PartAbbreviation] elements describe the name and abbreviation of a [ScorePart][super::ScorePart] element, respectively.
/// Formatting attributes for these elements were deprecated in Version 2.0 in favor of the [PartNameDisplay][super::PartNameDisplay] and
/// [PartAbbreviationDisplay][super::PartAbbreviationDisplay] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-abbreviation")]
pub struct PartAbbreviation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_abbreviation_display.rs b/musicxml/src/elements/part_abbreviation_display.rs
index 83c9172..1714b7c 100644
--- a/musicxml/src/elements/part_abbreviation_display.rs
+++ b/musicxml/src/elements/part_abbreviation_display.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartAbbreviationDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartAbbreviationDisplayAttributes {
/// Specifies whether or not to print an object. It is yes if not specified.
pub print_object: Option,
}
/// Contents of the [PartAbbreviationDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PartAbbreviationDisplayContents {
/// The [DisplayText] element specifies the text to display for the part abbreviation.
pub display_text: Option,
@@ -26,7 +26,7 @@ pub struct PartAbbreviationDisplayContents {
///
/// Formatting specified in the [PartAbbreviationDisplay] element overrides formatting specified in the
/// [PartAbbreviation][super::PartAbbreviation] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-abbreviation-display")]
pub struct PartAbbreviationDisplay {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_clef.rs b/musicxml/src/elements/part_clef.rs
index 5a575e1..f6b66e3 100644
--- a/musicxml/src/elements/part_clef.rs
+++ b/musicxml/src/elements/part_clef.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [PartClef] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct PartClefContents {
/// The [Sign] element represents the clef symbol.
pub sign: Sign,
@@ -18,7 +18,7 @@ pub struct PartClefContents {
///
/// The child elements of the [PartClef] element have the same meaning as for the [Clef][super::Clef] element. However that meaning applies
/// to a transposed part created from the existing score file.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-clef")]
pub struct PartClef {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_group.rs b/musicxml/src/elements/part_group.rs
index 043a331..30587fb 100644
--- a/musicxml/src/elements/part_group.rs
+++ b/musicxml/src/elements/part_group.rs
@@ -8,7 +8,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartGroup] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartGroupAttributes {
/// Indicates the start or stop of the [PartGroup].
pub r#type: StartStop,
@@ -18,7 +18,7 @@ pub struct PartGroupAttributes {
}
/// Contents of the [PartGroup] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PartGroupContents {
/// The [GroupName] element specifies the name of the group.
pub group_name: Option,
@@ -50,7 +50,7 @@ pub struct PartGroupContents {
/// A [PartGroup] element is not needed for a single multi-staff part. By default, multi-staff parts include a brace symbol and
/// (if appropriate given the [BarStyle][super::BarStyle]) common barlines. The symbol formatting for a multi-staff part can be more fully specified
/// using the [PartSymbol][super::PartSymbol] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-group")]
pub struct PartGroup {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_link.rs b/musicxml/src/elements/part_link.rs
index 12ccdb9..4c5f148 100644
--- a/musicxml/src/elements/part_link.rs
+++ b/musicxml/src/elements/part_link.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartLink] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartLinkAttributes {
/// The `xlink_href` attribute provides the data that allows an application to find a remote resource or resource fragment. See the definition
/// in the [XML Linking Language recommendation](https://www.w3.org/TR/xlink11/#link-locators).
@@ -28,7 +28,7 @@ pub struct PartLinkAttributes {
}
/// Contents of the [PartLink] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PartLinkContents {
/// The [InstrumentLink] element allows MusicXML data for a single instrument to be defined within a part.
pub instrument_link: Vec,
@@ -40,7 +40,7 @@ pub struct PartLinkContents {
///
/// It links a [ScorePart][super::ScorePart] from a score document to MusicXML documents that contain parts data. In the case of a single
/// compressed MusicXML file, the link href values are paths that are relative to the root folder of the zip file.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-link")]
pub struct PartLink {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_list.rs b/musicxml/src/elements/part_list.rs
index 0af94d8..72048dd 100644
--- a/musicxml/src/elements/part_list.rs
+++ b/musicxml/src/elements/part_list.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [PartListElement] specifies all possible elements available for use in a [PartList] element.
#[allow(clippy::large_enum_variant)]
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum PartListElement {
/// The [PartGroup] element indicates a group of parts that is bracketed together.
PartGroup(PartGroup),
@@ -14,7 +14,7 @@ pub enum PartListElement {
}
/// Contents of the [PartList] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct PartListContents {
/// Ordered list of [PartList] content elements.
pub content: Vec,
@@ -60,7 +60,7 @@ impl ContentSerializer for PartListContents {
///
/// There must be at least one [ScorePart], combined as desired with [PartGroup] elements that indicate braces and brackets. Parts are ordered from
/// top to bottom in a score based on the order in which they appear in the [PartList].
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-list")]
pub struct PartList {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_name.rs b/musicxml/src/elements/part_name.rs
index 77f11ee..fc483c7 100644
--- a/musicxml/src/elements/part_name.rs
+++ b/musicxml/src/elements/part_name.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartName] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartNameAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -47,7 +47,7 @@ pub struct PartNameAttributes {
///
/// Formatting attributes for these elements were deprecated in Version 2.0 in favor of the [PartNameDisplay][super::PartNameDisplay] and
/// [PartAbbreviationDisplay][super::PartAbbreviationDisplay] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-name")]
pub struct PartName {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_name_display.rs b/musicxml/src/elements/part_name_display.rs
index af2702a..87c1c0e 100644
--- a/musicxml/src/elements/part_name_display.rs
+++ b/musicxml/src/elements/part_name_display.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartNameDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartNameDisplayAttributes {
/// Specifies whether or not to print an object. It is yes if not specified.
pub print_object: Option,
}
/// Contents of the [PartNameDisplay] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PartNameDisplayContents {
/// The [DisplayText] element specifies the text to display for the part name.
pub display_text: Option,
@@ -25,7 +25,7 @@ pub struct PartNameDisplayContents {
/// The `print_object` attribute can be used to determine what, if anything, is printed at the start of each system.
///
/// Formatting specified in the [PartNameDisplay] element overrides formatting specified in the [PartName][super::PartName] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-name-display")]
pub struct PartNameDisplay {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_symbol.rs b/musicxml/src/elements/part_symbol.rs
index d2e6f83..221a3b8 100644
--- a/musicxml/src/elements/part_symbol.rs
+++ b/musicxml/src/elements/part_symbol.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PartSymbol] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PartSymbolAttributes {
/// Specifies the bottom staff of the symbol when it does not extend across the entire part.
pub bottom_staff: Option,
@@ -41,7 +41,7 @@ pub struct PartSymbolAttributes {
/// part, the `top_staff` will typically be 1 for the right hand, while the `bottom_staff` will typically be 2 for the left hand. Staff 3 for the pedals
/// is usually outside the brace. By default, the presence of a [PartSymbol] element that does not extend across the entire part also indicates a corresponding
/// change in the common barlines within a part.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-symbol")]
pub struct PartSymbol {
/// Element-specific attributes
diff --git a/musicxml/src/elements/part_transpose.rs b/musicxml/src/elements/part_transpose.rs
index da2ba05..dc8ca2a 100644
--- a/musicxml/src/elements/part_transpose.rs
+++ b/musicxml/src/elements/part_transpose.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [PartTranspose] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct PartTransposeContents {
/// The [Diatonic] element specifies the number of diatonic steps up or down from the written key signature.
pub diatonic: Option,
@@ -22,7 +22,7 @@ pub struct PartTransposeContents {
///
/// The [Chromatic] element in a [PartTranspose] element will usually have a non-zero value, since octave transpositions can be represented in concert
/// scores using the [Transpose][super::Transpose] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("part-transpose")]
pub struct PartTranspose {
/// Element-specific attributes
diff --git a/musicxml/src/elements/pedal.rs b/musicxml/src/elements/pedal.rs
index 342ecd0..2632091 100644
--- a/musicxml/src/elements/pedal.rs
+++ b/musicxml/src/elements/pedal.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Pedal] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PedalAttributes {
/// Distinguishes different types of pedal directions.
pub r#type: PedalType,
@@ -57,7 +57,7 @@ pub struct PedalAttributes {
///
/// The soft pedal is not included here because there is no special symbol or graphic used for it beyond what can be specified
/// with [Words][super::Words] and [Bracket][super::Bracket] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pedal {
/// Element-specific attributes
pub attributes: PedalAttributes,
diff --git a/musicxml/src/elements/pedal_alter.rs b/musicxml/src/elements/pedal_alter.rs
index 78d20b0..5a659fc 100644
--- a/musicxml/src/elements/pedal_alter.rs
+++ b/musicxml/src/elements/pedal_alter.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [PedalAlter] element defines the chromatic alteration for a single harp pedal.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("pedal-alter")]
pub struct PedalAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/pedal_step.rs b/musicxml/src/elements/pedal_step.rs
index acf68f4..6fb3b42 100644
--- a/musicxml/src/elements/pedal_step.rs
+++ b/musicxml/src/elements/pedal_step.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [PedalStep] element defines the pitch step for a single harp pedal.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("pedal-step")]
pub struct PedalStep {
/// Element-specific attributes
diff --git a/musicxml/src/elements/pedal_tuning.rs b/musicxml/src/elements/pedal_tuning.rs
index d1d6231..8820149 100644
--- a/musicxml/src/elements/pedal_tuning.rs
+++ b/musicxml/src/elements/pedal_tuning.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [PedalTuning] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct PedalTuningContents {
/// The [PedalStep] element specifies the step of the tuning.
pub pedal_step: PedalStep,
@@ -13,7 +13,7 @@ pub struct PedalTuningContents {
}
/// The [PedalTuning] element specifies the tuning of a single harp pedal.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("pedal-tuning")]
pub struct PedalTuning {
/// Element-specific attributes
diff --git a/musicxml/src/elements/per_minute.rs b/musicxml/src/elements/per_minute.rs
index aee94e3..2f460cf 100644
--- a/musicxml/src/elements/per_minute.rs
+++ b/musicxml/src/elements/per_minute.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PerMinute] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PerMinuteAttributes {
/// A comma-separated list of font names.
pub font_family: Option,
@@ -21,7 +21,7 @@ pub struct PerMinuteAttributes {
/// If a font is specified, it overrides the font specified for the overall [Metronome][super::Metronome] element.
/// This allows separate specification of a music font for the [BeatUnit][super::BeatUnit] and a text font for the numeric value,
/// in cases where a single metronome font is not used.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("per-minute")]
pub struct PerMinute {
/// Element-specific attributes
diff --git a/musicxml/src/elements/percussion.rs b/musicxml/src/elements/percussion.rs
index 776f39e..142b31a 100644
--- a/musicxml/src/elements/percussion.rs
+++ b/musicxml/src/elements/percussion.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Percussion] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PercussionAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -60,7 +60,7 @@ pub struct PercussionAttributes {
}
/// The [PercussionContents] element specifies all possible options for use in a [Percussion] element.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub enum PercussionContents {
/// The [Glass] element is used to define glass pictogram symbols.
Glass(Glass),
@@ -92,7 +92,7 @@ pub enum PercussionContents {
///
/// The organization of these symbols follows the definitions in Kurt Stone's "Music Notation in the Twentieth Century" on pages 206-212 and 223.
/// More pictograms have been added to the ones listed in Stone, based on how usage has evolved since the book was published in 1980.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct Percussion {
/// Element-specific attributes
pub attributes: PercussionAttributes,
diff --git a/musicxml/src/elements/pf.rs b/musicxml/src/elements/pf.rs
index bc6fc31..8395094 100644
--- a/musicxml/src/elements/pf.rs
+++ b/musicxml/src/elements/pf.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Pf] element represents a piano forte dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pf {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/pitch.rs b/musicxml/src/elements/pitch.rs
index 15c11c7..b997b83 100644
--- a/musicxml/src/elements/pitch.rs
+++ b/musicxml/src/elements/pitch.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Pitch] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct PitchContents {
/// The [Step] element represents the step of the diatonic scale.
pub step: Step,
@@ -15,7 +15,7 @@ pub struct PitchContents {
}
/// [Pitch] is represented as a combination of the step of the diatonic scale, the chromatic alteration, and the octave.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pitch {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/pitched.rs b/musicxml/src/elements/pitched.rs
index 501e1cf..0dbc643 100644
--- a/musicxml/src/elements/pitched.rs
+++ b/musicxml/src/elements/pitched.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Pitched] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PitchedAttributes {
/// Distinguishes different SMuFL glyphs for a particular pictogram within the Tuned mallet percussion pictograms range.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct PitchedAttributes {
/// The [Pitched] element represents pictograms for pitched percussion instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pitched {
/// Element-specific attributes
pub attributes: PitchedAttributes,
diff --git a/musicxml/src/elements/play.rs b/musicxml/src/elements/play.rs
index b369127..14c69e9 100644
--- a/musicxml/src/elements/play.rs
+++ b/musicxml/src/elements/play.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Play] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PlayAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
}
/// Contents of the [Play] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PlayContents {
/// The [Ipa] element specifies International Phonetic Alphabet symbols for vocal music.
pub ipa: Option,
@@ -28,7 +28,7 @@ pub struct PlayContents {
///
/// When used as part of a [Sound][super::Sound] element, it applies to all notes going forward in score order. In multi-instrument parts,
/// the affected instrument should be specified using the id attribute. When used as part of a [Note][super::Note] element, it applies to the current note only.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Play {
/// Element-specific attributes
pub attributes: PlayAttributes,
diff --git a/musicxml/src/elements/player.rs b/musicxml/src/elements/player.rs
index ef0842f..2f7b0c3 100644
--- a/musicxml/src/elements/player.rs
+++ b/musicxml/src/elements/player.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Player] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PlayerAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Id,
}
/// Contents of the [Player] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PlayerContents {
/// The [PlayerName] element specifies the name of the player.
pub player_name: PlayerName,
@@ -21,7 +21,7 @@ pub struct PlayerContents {
/// The [Player] element allows for multiple players per [ScorePart][super::ScorePart] for use in listening applications.
///
/// One player may play multiple instruments, while a single instrument may include multiple players in divisi sections.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Player {
/// Element-specific attributes
pub attributes: PlayerAttributes,
diff --git a/musicxml/src/elements/player_name.rs b/musicxml/src/elements/player_name.rs
index 3852e26..16bd21c 100644
--- a/musicxml/src/elements/player_name.rs
+++ b/musicxml/src/elements/player_name.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [PlayerName] element is typically used within a software application, rather than appearing on the printed page of a score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("player-name")]
pub struct PlayerName {
/// Element-specific attributes
diff --git a/musicxml/src/elements/plop.rs b/musicxml/src/elements/plop.rs
index deae4dd..2f04dd3 100644
--- a/musicxml/src/elements/plop.rs
+++ b/musicxml/src/elements/plop.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Plop] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PlopAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct PlopAttributes {
/// 
///
/// The plop appears before the main note and comes from above the main pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Plop {
/// Element-specific attributes
pub attributes: PlopAttributes,
diff --git a/musicxml/src/elements/pluck.rs b/musicxml/src/elements/pluck.rs
index c0a54b0..29eccd6 100644
--- a/musicxml/src/elements/pluck.rs
+++ b/musicxml/src/elements/pluck.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Pluck] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PluckAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct PluckAttributes {
/// The [Pluck] element is used to specify the plucking fingering on a fretted instrument, where the fingering element refers to the fretting fingering.
///
/// Typical values are p, i, m, a for pulgar/thumb, indicio/index, medio/middle, and anular/ring fingers.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pluck {
/// Element-specific attributes
pub attributes: PluckAttributes,
diff --git a/musicxml/src/elements/pp.rs b/musicxml/src/elements/pp.rs
index 8a93080..76502ae 100644
--- a/musicxml/src/elements/pp.rs
+++ b/musicxml/src/elements/pp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Pp] element represents a pianissimo dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/ppp.rs b/musicxml/src/elements/ppp.rs
index 6b4b8f4..e923268 100644
--- a/musicxml/src/elements/ppp.rs
+++ b/musicxml/src/elements/ppp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Ppp] element represents a triple piano dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ppp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/pppp.rs b/musicxml/src/elements/pppp.rs
index fee5bf3..df23c40 100644
--- a/musicxml/src/elements/pppp.rs
+++ b/musicxml/src/elements/pppp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Pppp] element represents a pppp dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pppp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/ppppp.rs b/musicxml/src/elements/ppppp.rs
index e3b987b..5e61417 100644
--- a/musicxml/src/elements/ppppp.rs
+++ b/musicxml/src/elements/ppppp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Ppppp] element represents a pppp dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Ppppp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/pppppp.rs b/musicxml/src/elements/pppppp.rs
index 0ea9632..613013a 100644
--- a/musicxml/src/elements/pppppp.rs
+++ b/musicxml/src/elements/pppppp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Pppppp] element represents a pppp dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Pppppp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/pre_bend.rs b/musicxml/src/elements/pre_bend.rs
index 60e800f..93e803f 100644
--- a/musicxml/src/elements/pre_bend.rs
+++ b/musicxml/src/elements/pre_bend.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [PreBend] element indicates that a bend is a pre-bend rather than a normal bend or a release.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("pre-bend")]
pub struct PreBend {
/// Element-specific attributes
diff --git a/musicxml/src/elements/prefix.rs b/musicxml/src/elements/prefix.rs
index 098b0d5..d52c27f 100644
--- a/musicxml/src/elements/prefix.rs
+++ b/musicxml/src/elements/prefix.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Prefix] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PrefixAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -40,7 +40,7 @@ pub struct PrefixAttributes {
/// Values for the [Prefix] element include plus and the accidental values sharp, flat, natural, double-sharp, flat-flat, and sharp-sharp.
///
/// The [Prefix] element may contain additional values for symbols specific to particular figured bass styles.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Prefix {
/// Element-specific attributes
pub attributes: PrefixAttributes,
diff --git a/musicxml/src/elements/principal_voice.rs b/musicxml/src/elements/principal_voice.rs
index 0bb427e..bd4baf8 100644
--- a/musicxml/src/elements/principal_voice.rs
+++ b/musicxml/src/elements/principal_voice.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PrincipalVoice] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PrincipalVoiceAttributes {
/// Indicates the type of symbol used. When used for analysis separate from any printed score markings,
/// it should be set to none. Otherwise if the type is stop it should be set to plain.
@@ -65,7 +65,7 @@ pub struct PrincipalVoiceAttributes {
/// The [PrincipalVoice] element represents principal and secondary voices in a score, either for analysis or for square bracket symbols that appear in a score.
///
/// The content of the [PrincipalVoice] element is used for analysis and may be any text value.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("principal-voice")]
pub struct PrincipalVoice {
/// Element-specific attributes
diff --git a/musicxml/src/elements/print.rs b/musicxml/src/elements/print.rs
index 1b192ed..8601e4e 100644
--- a/musicxml/src/elements/print.rs
+++ b/musicxml/src/elements/print.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Print] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PrintAttributes {
/// The number of blank pages to insert before the current measure. It is ignored if `new_page` is not "yes".
/// These blank pages have no music, but may have text or images specified by the [Credit][super::Credit] element.
@@ -31,7 +31,7 @@ pub struct PrintAttributes {
}
/// Contents of the [Print] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct PrintContents {
/// The [PageLayout] element contains general page layout parameters.
pub page_layout: Option,
@@ -56,7 +56,7 @@ pub struct PrintContents {
///
/// Layout group elements in a [Print] element only apply to the current page, system, or staff. Music that follows continues to take
/// the default values from the layout determined by the [Defaults][super::Defaults] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Print {
/// Element-specific attributes
pub attributes: PrintAttributes,
diff --git a/musicxml/src/elements/pull_off.rs b/musicxml/src/elements/pull_off.rs
index ea670a7..adc78b5 100644
--- a/musicxml/src/elements/pull_off.rs
+++ b/musicxml/src/elements/pull_off.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [PullOff] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct PullOffAttributes {
/// Distinguishes multiple pull-offs when they overlap in MusicXML document order.
pub r#type: StartStop,
@@ -52,7 +52,7 @@ pub struct PullOffAttributes {
/// Since a single slur can be marked over many notes, the [PullOff] element is separate so the individual pair of notes can be specified.
///
/// The element content can be used to specify how the [PullOff] should be notated. An empty element leaves this choice up to the application.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("pull-off")]
pub struct PullOff {
/// Element-specific attributes
diff --git a/musicxml/src/elements/rehearsal.rs b/musicxml/src/elements/rehearsal.rs
index 610a08c..7ac63e6 100644
--- a/musicxml/src/elements/rehearsal.rs
+++ b/musicxml/src/elements/rehearsal.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Rehearsal] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RehearsalAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -93,7 +93,7 @@ pub struct RehearsalAttributes {
/// 
///
/// The `enclosure` is square if not specified. Left justification is used if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Rehearsal {
/// Element-specific attributes
pub attributes: RehearsalAttributes,
diff --git a/musicxml/src/elements/relation.rs b/musicxml/src/elements/relation.rs
index d0a82f5..61464fa 100644
--- a/musicxml/src/elements/relation.rs
+++ b/musicxml/src/elements/relation.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Relation] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RelationAttributes {
/// Standard type values are music, words, and arrangement, but other types may be used.
pub r#type: Token,
@@ -13,7 +13,7 @@ pub struct RelationAttributes {
/// The [Relation] element describes a related resource for the music that is encoded.
///
/// This is similar to the [Dublin Core relation](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/elements11/relation/) element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Relation {
/// Element-specific attributes
pub attributes: RelationAttributes,
diff --git a/musicxml/src/elements/release.rs b/musicxml/src/elements/release.rs
index 4bf510e..8ef000d 100644
--- a/musicxml/src/elements/release.rs
+++ b/musicxml/src/elements/release.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Release] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ReleaseAttributes {
/// Specifies where the release starts in terms of divisions relative to the current note.
pub offset: Option,
@@ -13,7 +13,7 @@ pub struct ReleaseAttributes {
/// The [Release] element indicates that a bend is a release rather than a normal bend or pre-bend.
///
/// The `first_beat` and `last_beat` attributes of the parent [Bend][super::Bend] element are relative to the original note position, not this offset value.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Release {
/// Element-specific attributes
pub attributes: ReleaseAttributes,
diff --git a/musicxml/src/elements/repeat.rs b/musicxml/src/elements/repeat.rs
index 51b88e5..871d95b 100644
--- a/musicxml/src/elements/repeat.rs
+++ b/musicxml/src/elements/repeat.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Repeat] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RepeatAttributes {
/// The start of the repeat has a forward direction while the end of the repeat has a backward direction.
pub direction: BackwardForward,
@@ -21,7 +21,7 @@ pub struct RepeatAttributes {
/// The [Repeat] element represents repeat marks.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Repeat {
/// Element-specific attributes
pub attributes: RepeatAttributes,
diff --git a/musicxml/src/elements/rest.rs b/musicxml/src/elements/rest.rs
index a9f5748..82566ce 100644
--- a/musicxml/src/elements/rest.rs
+++ b/musicxml/src/elements/rest.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Rest] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RestAttributes {
/// If yes, this indicates this is a complete measure rest.
pub measure: Option,
}
/// Contents of the [Rest] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct RestContents {
/// The [DisplayStep] element specifies the step of the rest.
pub display_step: Option,
@@ -23,7 +23,7 @@ pub struct RestContents {
/// The [Rest] element indicates notated rests or silences.
///
/// A [Rest] element is usually empty, but placement on the staff can be specified using [DisplayStep] and [DisplayOctave] elements.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Rest {
/// Element-specific attributes
pub attributes: RestAttributes,
diff --git a/musicxml/src/elements/rf.rs b/musicxml/src/elements/rf.rs
index f99699c..f926c2e 100644
--- a/musicxml/src/elements/rf.rs
+++ b/musicxml/src/elements/rf.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Rf] element represents a rinforzando rf dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Rf {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/rfz.rs b/musicxml/src/elements/rfz.rs
index 30ecfa4..82895f5 100644
--- a/musicxml/src/elements/rfz.rs
+++ b/musicxml/src/elements/rfz.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Rfz] element represents a rinforzando rfz dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Rfz {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/right_divider.rs b/musicxml/src/elements/right_divider.rs
index 696d6b0..5fecb83 100644
--- a/musicxml/src/elements/right_divider.rs
+++ b/musicxml/src/elements/right_divider.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [RightDivider] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RightDividerAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -58,7 +58,7 @@ pub struct RightDividerAttributes {
///
/// The default vertical position is half the [SystemDistance][super::SystemDistance] value from the top of the system that is below the divider.
/// The default horizontal position is the right system margin.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("right-divider")]
pub struct RightDivider {
/// Element-specific attributes
diff --git a/musicxml/src/elements/right_margin.rs b/musicxml/src/elements/right_margin.rs
index baa49e1..886dcf1 100644
--- a/musicxml/src/elements/right_margin.rs
+++ b/musicxml/src/elements/right_margin.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [RightMargin] element specifies the right margin for the parent element in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("right-margin")]
pub struct RightMargin {
/// Element-specific attributes
diff --git a/musicxml/src/elements/rights.rs b/musicxml/src/elements/rights.rs
index e965e46..ebd7d63 100644
--- a/musicxml/src/elements/rights.rs
+++ b/musicxml/src/elements/rights.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Rights] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RightsAttributes {
/// Standard type values are music, words, and arrangement, but other types may be used.
/// This attribute is only needed when there are multiple [Rights] elements.
@@ -15,7 +15,7 @@ pub struct RightsAttributes {
///
/// This is similar to the [Dublin Core rights](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/elements11/rights/) element.
/// Words, music, and derivatives can have different types, so multiple [Rights] elements with different type attributes are supported.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Rights {
/// Element-specific attributes
pub attributes: RightsAttributes,
diff --git a/musicxml/src/elements/root.rs b/musicxml/src/elements/root.rs
index 7361202..3b6ce63 100644
--- a/musicxml/src/elements/root.rs
+++ b/musicxml/src/elements/root.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Root] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct RootContents {
/// The [RootStep] element specifies the pitch like C, D, E vs. a scale degree like 1, 2, 3.
pub root_step: RootStep,
@@ -16,7 +16,7 @@ pub struct RootContents {
///
/// It is used with chord symbols in popular music. The [Root] element has a [RootStep] and optional [RootAlter] element similar to the
/// [Step][super::Step] and [Alter][super::Alter] elements, but renamed to distinguish the different musical meanings.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Root {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/root_alter.rs b/musicxml/src/elements/root_alter.rs
index 36745d4..bf9ceb3 100644
--- a/musicxml/src/elements/root_alter.rs
+++ b/musicxml/src/elements/root_alter.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [RootAlter] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RootAlterAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -47,7 +47,7 @@ pub struct RootAlterAttributes {
///
/// In some chord styles, the text for the [RootStep][super::RootStep] element may include [RootAlter] information. In that case,
/// the `print_object` attribute of the [RootAlter] element can be set to "no".
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("root-alter")]
pub struct RootAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/root_step.rs b/musicxml/src/elements/root_step.rs
index e50f2a3..bf8ff67 100644
--- a/musicxml/src/elements/root_step.rs
+++ b/musicxml/src/elements/root_step.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [RootStep] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct RootStepAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct RootStepAttributes {
/// The [RootStep] element represents the pitch step of the root of the current chord within the harmony element.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("root-step")]
pub struct RootStep {
/// Element-specific attributes
diff --git a/musicxml/src/elements/scaling.rs b/musicxml/src/elements/scaling.rs
index 5e18baa..20aa007 100644
--- a/musicxml/src/elements/scaling.rs
+++ b/musicxml/src/elements/scaling.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Scaling] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct ScalingContents {
/// The [Millimeters] element specifies the number of millimeters that are equivalent to the scaling number.
pub millimeters: Millimeters,
@@ -17,7 +17,7 @@ pub struct ScalingContents {
/// The translation to absolute units is done with the [Scaling] element, which specifies how many millimeters are equal to how many tenths.
/// For a staff height of 7 mm, [Millimeters] would be set to 7 while [Tenths] is set to 40. The ability to set a formula rather than a single scaling
/// factor helps avoid roundoff errors.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Scaling {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/schleifer.rs b/musicxml/src/elements/schleifer.rs
index 37d4eae..28f21b0 100644
--- a/musicxml/src/elements/schleifer.rs
+++ b/musicxml/src/elements/schleifer.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Schleifer] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SchleiferAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct SchleiferAttributes {
/// The name for the [Schleifer] element is based on the German ornament name, to avoid confusion with the [Slide][super::Slide] element.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Schleifer {
/// Element-specific attributes
pub attributes: SchleiferAttributes,
diff --git a/musicxml/src/elements/scoop.rs b/musicxml/src/elements/scoop.rs
index eb19ab4..70c0d5a 100644
--- a/musicxml/src/elements/scoop.rs
+++ b/musicxml/src/elements/scoop.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Scoop] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ScoopAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -56,7 +56,7 @@ pub struct ScoopAttributes {
/// 
///
/// The scoop appears before the main note and comes from below the main pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Scoop {
/// Element-specific attributes
pub attributes: ScoopAttributes,
diff --git a/musicxml/src/elements/scordatura.rs b/musicxml/src/elements/scordatura.rs
index 765207e..17a42f3 100644
--- a/musicxml/src/elements/scordatura.rs
+++ b/musicxml/src/elements/scordatura.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Scordatura] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ScordaturaAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
@@ -16,7 +16,7 @@ pub struct ScordaturaAttributes {
/// 
///
/// Strings are numbered from high to low.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Scordatura {
/// Element-specific attributes
pub attributes: ScordaturaAttributes,
diff --git a/musicxml/src/elements/score_instrument.rs b/musicxml/src/elements/score_instrument.rs
index 9813136..429bc9c 100644
--- a/musicxml/src/elements/score_instrument.rs
+++ b/musicxml/src/elements/score_instrument.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [ScoreInstrument] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ScoreInstrumentAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Id,
}
/// Contents of the [ScoreInstrument] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ScoreInstrumentContents {
/// The [InstrumentName] element specifies the name of the instrument.
pub instrument_name: InstrumentName,
@@ -38,7 +38,7 @@ pub struct ScoreInstrumentContents {
///
/// The [ScoreInstrument] element can also distinguish multiple instruments of the same type that are on the same part, such as Clarinet 1 and
/// Clarinet 2 instruments within a Clarinets 1 and 2 part.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("score-instrument")]
pub struct ScoreInstrument {
/// Element-specific attributes
diff --git a/musicxml/src/elements/score_part.rs b/musicxml/src/elements/score_part.rs
index c3f2926..747d1b8 100644
--- a/musicxml/src/elements/score_part.rs
+++ b/musicxml/src/elements/score_part.rs
@@ -8,14 +8,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [ScorePart] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ScorePartAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Id,
}
/// Contents of the [ScorePart] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ScorePartContents {
/// The [Identification] element contains information about the creator, rights, and encoding of the part.
pub identification: Option,
@@ -45,7 +45,7 @@ pub struct ScorePartContents {
///
/// Often each MusicXML part corresponds to a track in a Standard MIDI Format 1 file. In this case, the [MidiDevice] element is used to make a
/// MIDI device or port assignment for the given track or specific MIDI instruments. Initial [MidiInstrument] assignments may be made here as well.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("score-part")]
pub struct ScorePart {
/// Element-specific attributes
diff --git a/musicxml/src/elements/score_partwise.rs b/musicxml/src/elements/score_partwise.rs
index 3d68593..244738d 100644
--- a/musicxml/src/elements/score_partwise.rs
+++ b/musicxml/src/elements/score_partwise.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [ScorePartwise] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ScorePartwiseAttributes {
/// The `version` attribute was added in Version 1.1 for the [ScorePartwise] and [ScoreTimewise][super::ScoreTimewise]
/// documents. It provides an easier way to get version information than through the MusicXML public ID. The default value is
@@ -15,7 +15,7 @@ pub struct ScorePartwiseAttributes {
}
/// Contents of the [ScorePartwise] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ScorePartwiseContents {
/// The [Work] element specifies the work title and opus number for the score.
pub work: Option,
@@ -38,7 +38,7 @@ pub struct ScorePartwiseContents {
/// The [ScorePartwise] element is the root element for a partwise MusicXML score.
///
/// It includes score header information followed by a series of [Part] elements with [Measure][super::Measure] elements inside.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("score-partwise")]
pub struct ScorePartwise {
/// Element-specific attributes
diff --git a/musicxml/src/elements/score_timewise.rs b/musicxml/src/elements/score_timewise.rs
index c823c1a..a2d5296 100644
--- a/musicxml/src/elements/score_timewise.rs
+++ b/musicxml/src/elements/score_timewise.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [ScoreTimewise] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ScoreTimewiseAttributes {
/// The `version` attribute was added in Version 1.1 for the [ScorePartwise][super::ScorePartwise] and [ScoreTimewise]
/// documents. It provides an easier way to get version information than through the MusicXML public ID. The default value is
@@ -15,7 +15,7 @@ pub struct ScoreTimewiseAttributes {
}
/// Contents of the [ScoreTimewise] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct ScoreTimewiseContents {
/// The [Work] element specifies the work title and movement or opus number information.
pub work: Option,
@@ -38,7 +38,7 @@ pub struct ScoreTimewiseContents {
/// The [ScoreTimewise] element is the root element for a timewise MusicXML score.
///
/// It includes score header information followed by a series of [Measure] elements with [Part][super::Part] elements inside.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("score-timewise")]
pub struct ScoreTimewise {
/// Element-specific attributes
diff --git a/musicxml/src/elements/second.rs b/musicxml/src/elements/second.rs
index ba68ba9..380870a 100644
--- a/musicxml/src/elements/second.rs
+++ b/musicxml/src/elements/second.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Second] element is the part of the swing ratio that refers to the second of two consecutive notes.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Second {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/segno.rs b/musicxml/src/elements/segno.rs
index ecbaf75..b0e5af8 100644
--- a/musicxml/src/elements/segno.rs
+++ b/musicxml/src/elements/segno.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Segno] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SegnoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -63,7 +63,7 @@ pub struct SegnoAttributes {
/// 
///
/// A [Sound][super::Sound] element is also needed to guide playback applications reliably.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Segno {
/// Element-specific attributes
pub attributes: SegnoAttributes,
diff --git a/musicxml/src/elements/semi_pitched.rs b/musicxml/src/elements/semi_pitched.rs
index d0063e3..88f1f5c 100644
--- a/musicxml/src/elements/semi_pitched.rs
+++ b/musicxml/src/elements/semi_pitched.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [SemiPitched] element represents categories of indefinite pitch for percussion instruments.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("semi-pitched")]
pub struct SemiPitched {
/// Element-specific attributes
diff --git a/musicxml/src/elements/senza_misura.rs b/musicxml/src/elements/senza_misura.rs
index e9c7afa..c796bd3 100644
--- a/musicxml/src/elements/senza_misura.rs
+++ b/musicxml/src/elements/senza_misura.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
///
/// The optional element content indicates the symbol to be used, if any, such as an X. The [Time][super::Time] element's `symbol`
/// attribute is not used when a [SenzaMisura] element is present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("senza-misura")]
pub struct SenzaMisura {
/// Element-specific attributes
diff --git a/musicxml/src/elements/sf.rs b/musicxml/src/elements/sf.rs
index 6930e53..a9fca74 100644
--- a/musicxml/src/elements/sf.rs
+++ b/musicxml/src/elements/sf.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Sf] element represents a sforzando sf dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sf {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/sffz.rs b/musicxml/src/elements/sffz.rs
index 1158d08..005a2af 100644
--- a/musicxml/src/elements/sffz.rs
+++ b/musicxml/src/elements/sffz.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Sffz] element represents a sforzando sffz dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sffz {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/sfp.rs b/musicxml/src/elements/sfp.rs
index e39cc1b..d04bd21 100644
--- a/musicxml/src/elements/sfp.rs
+++ b/musicxml/src/elements/sfp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Sfp] element represents a sforzando piano sfp dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sfp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/sfpp.rs b/musicxml/src/elements/sfpp.rs
index 4e840d7..d096314 100644
--- a/musicxml/src/elements/sfpp.rs
+++ b/musicxml/src/elements/sfpp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Sfpp] element represents a sforzando pianissimo sfpp dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sfpp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/sfz.rs b/musicxml/src/elements/sfz.rs
index a80c464..adb5a48 100644
--- a/musicxml/src/elements/sfz.rs
+++ b/musicxml/src/elements/sfz.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Sfz] element represents a sforzando sfz dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sfz {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/sfzp.rs b/musicxml/src/elements/sfzp.rs
index e60e2a0..4637c02 100644
--- a/musicxml/src/elements/sfzp.rs
+++ b/musicxml/src/elements/sfzp.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Sfzp] element represents a sforzando piano sfzp dynamic marking.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sfzp {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/shake.rs b/musicxml/src/elements/shake.rs
index 20d833f..f050c1b 100644
--- a/musicxml/src/elements/shake.rs
+++ b/musicxml/src/elements/shake.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Shake] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ShakeAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -59,7 +59,7 @@ pub struct ShakeAttributes {
/// The [Shake] element has a similar appearance to an [InvertedMordent][super::InvertedMordent] element.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Shake {
/// Element-specific attributes
pub attributes: ShakeAttributes,
diff --git a/musicxml/src/elements/sign.rs b/musicxml/src/elements/sign.rs
index 58598ff..572d5c9 100644
--- a/musicxml/src/elements/sign.rs
+++ b/musicxml/src/elements/sign.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Sign] element represents the clef symbol.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sign {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/slash.rs b/musicxml/src/elements/slash.rs
index 1040a8c..8e08c3c 100644
--- a/musicxml/src/elements/slash.rs
+++ b/musicxml/src/elements/slash.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Slash] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SlashAttributes {
/// Indicates the starting or stopping point of the section displaying slash notation.
pub r#type: StartStop,
@@ -16,7 +16,7 @@ pub struct SlashAttributes {
}
/// Contents of the [Slash] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct SlashContents {
/// The [SlashType] element indicates the notation style for the slash notation.
pub slash_type: Option,
@@ -32,7 +32,7 @@ pub struct SlashContents {
///
/// The stop type indicates the first beat where slash notation no longer displayed. Both the start and stop of the slash notation should be
/// specified unless the slashes are displayed through the end of the part.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Slash {
/// Element-specific attributes
pub attributes: SlashAttributes,
diff --git a/musicxml/src/elements/slash_dot.rs b/musicxml/src/elements/slash_dot.rs
index 12ad2c9..a546208 100644
--- a/musicxml/src/elements/slash_dot.rs
+++ b/musicxml/src/elements/slash_dot.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [SlashDot] element is used to specify any augmentation dots in the note type used to display repetition marks.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("slash-dot")]
pub struct SlashDot {
/// Element-specific attributes
diff --git a/musicxml/src/elements/slash_type.rs b/musicxml/src/elements/slash_type.rs
index a917e5a..5cedcc5 100644
--- a/musicxml/src/elements/slash_type.rs
+++ b/musicxml/src/elements/slash_type.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [SlashType] element indicates the graphical note type to use for the display of repetition marks.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("slash-type")]
pub struct SlashType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/slide.rs b/musicxml/src/elements/slide.rs
index c095ded..f5b358c 100644
--- a/musicxml/src/elements/slide.rs
+++ b/musicxml/src/elements/slide.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Slide] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SlideAttributes {
/// Indicates if this is the start or stop of the slide.
pub r#type: StartStop,
@@ -65,7 +65,7 @@ pub struct SlideAttributes {
/// 
///
/// A [Slide] is continuous between the two pitches and defaults to a solid line. The optional text is printed alongside the line.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Slide {
/// Element-specific attributes
pub attributes: SlideAttributes,
diff --git a/musicxml/src/elements/slur.rs b/musicxml/src/elements/slur.rs
index 0140ec6..112ce7d 100644
--- a/musicxml/src/elements/slur.rs
+++ b/musicxml/src/elements/slur.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Slur] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SlurAttributes {
/// Indicates if this is the start, stop, or continuation of the slur.
pub r#type: StartStopContinue,
@@ -66,7 +66,7 @@ pub struct SlurAttributes {
///
/// Normal slurs and S-shaped slurs need only two bezier points: one associated with the start of the slur, the other with the stop.
/// Complex slurs and slurs divided over system breaks can specify additional bezier data at [Slur] elements with a continue type.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Slur {
/// Element-specific attributes
pub attributes: SlurAttributes,
diff --git a/musicxml/src/elements/smear.rs b/musicxml/src/elements/smear.rs
index 245feaa..739c43d 100644
--- a/musicxml/src/elements/smear.rs
+++ b/musicxml/src/elements/smear.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Smear] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SmearAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct SmearAttributes {
/// The [Smear] element represents the tilde-shaped smear symbol used in brass notation.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Smear {
/// Element-specific attributes
pub attributes: SmearAttributes,
diff --git a/musicxml/src/elements/snap_pizzicato.rs b/musicxml/src/elements/snap_pizzicato.rs
index 40f4f74..d4ed9c6 100644
--- a/musicxml/src/elements/snap_pizzicato.rs
+++ b/musicxml/src/elements/snap_pizzicato.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [SnapPizzicato] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SnapPizzicatoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -45,7 +45,7 @@ pub struct SnapPizzicatoAttributes {
///
/// This is a circle with a line, where the line comes inside the circle. It is distinct from the [ThumbPosition][super::ThumbPosition] symbol,
/// where the line does not come inside the circle.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("snap-pizzicato")]
pub struct SnapPizzicato {
/// Element-specific attributes
diff --git a/musicxml/src/elements/soft_accent.rs b/musicxml/src/elements/soft_accent.rs
index 3995266..0680965 100644
--- a/musicxml/src/elements/soft_accent.rs
+++ b/musicxml/src/elements/soft_accent.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [SoftAccent] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SoftAccentAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct SoftAccentAttributes {
/// 
///
/// It can be combined with other articulations to implement the first eight symbols in the Standard Music Font Layout (SMuFL) Articulation supplement range.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("soft-accent")]
pub struct SoftAccent {
/// Element-specific attributes
diff --git a/musicxml/src/elements/software.rs b/musicxml/src/elements/software.rs
index 2fe128a..499d449 100644
--- a/musicxml/src/elements/software.rs
+++ b/musicxml/src/elements/software.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Software] element specifies what software created the digital encoding.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Software {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/solo.rs b/musicxml/src/elements/solo.rs
index 0fb0feb..c3f4093 100644
--- a/musicxml/src/elements/solo.rs
+++ b/musicxml/src/elements/solo.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Solo] element is present if performance is intended by a solo instrument.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Solo {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/sound.rs b/musicxml/src/elements/sound.rs
index a32e1ff..3790436 100644
--- a/musicxml/src/elements/sound.rs
+++ b/musicxml/src/elements/sound.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Sound] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SoundAttributes {
/// Indicates the end point for a forward jump to a coda sign. If there are multiple jumps, the value of these parameters can be used to name and distinguish them.
pub coda: Option,
@@ -61,7 +61,7 @@ pub struct SoundAttributes {
}
/// Contents of the [Sound] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct SoundContents {
/// The [InstrumentChange] element is used to change instruments mid-score.
pub instrument_change: Vec,
@@ -89,7 +89,7 @@ pub struct SoundContents {
/// If the [Sound] element is a child of a [Direction][super::Direction] element, the sound [Offset] element overrides the
/// direction [Offset] element if both elements are present. Note that the offset reflects the intended musical position for
/// the change in sound. It should not be used to compensate for latency issues in particular hardware configurations.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sound {
/// Element-specific attributes
pub attributes: SoundAttributes,
diff --git a/musicxml/src/elements/sounding_pitch.rs b/musicxml/src/elements/sounding_pitch.rs
index e889eb7..6f8218f 100644
--- a/musicxml/src/elements/sounding_pitch.rs
+++ b/musicxml/src/elements/sounding_pitch.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The presence of the [SoundingPitch] element indicates this is the pitch which is heard when playing the harmonic.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("sounding-pitch")]
pub struct SoundingPitch {
/// Element-specific attributes
diff --git a/musicxml/src/elements/source.rs b/musicxml/src/elements/source.rs
index 1df13bb..7315904 100644
--- a/musicxml/src/elements/source.rs
+++ b/musicxml/src/elements/source.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Source] element describes the source for the music that is encoded.
///
/// This is similar to the [Dublin Core source](https://www.dublincore.org/specifications/dublin-core/dcmi-terms/elements11/source/) element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Source {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/spiccato.rs b/musicxml/src/elements/spiccato.rs
index ec3d07f..42e2b22 100644
--- a/musicxml/src/elements/spiccato.rs
+++ b/musicxml/src/elements/spiccato.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Spiccato] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SpiccatoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct SpiccatoAttributes {
/// The [Spiccato] element is used for a stroke articulation, as opposed to a dot or a wedge.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Spiccato {
/// Element-specific attributes
pub attributes: SpiccatoAttributes,
diff --git a/musicxml/src/elements/staccatissimo.rs b/musicxml/src/elements/staccatissimo.rs
index 68becb2..686b4c8 100644
--- a/musicxml/src/elements/staccatissimo.rs
+++ b/musicxml/src/elements/staccatissimo.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Staccatissimo] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaccatissimoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct StaccatissimoAttributes {
/// The [Staccatissimo] element is used for a wedge articulation, as opposed to a dot or a stroke.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Staccatissimo {
/// Element-specific attributes
pub attributes: StaccatissimoAttributes,
diff --git a/musicxml/src/elements/staccato.rs b/musicxml/src/elements/staccato.rs
index 4829f7b..c50daa8 100644
--- a/musicxml/src/elements/staccato.rs
+++ b/musicxml/src/elements/staccato.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Staccato] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaccatoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct StaccatoAttributes {
/// The [Staccato] element is used for a dot articulation, as opposed to a stroke or a wedge.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Staccato {
/// Element-specific attributes
pub attributes: StaccatoAttributes,
diff --git a/musicxml/src/elements/staff.rs b/musicxml/src/elements/staff.rs
index 37369ac..2130614 100644
--- a/musicxml/src/elements/staff.rs
+++ b/musicxml/src/elements/staff.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// [Staff] assignment is only needed for music notated on multiple staves.
///
/// Staff values are numbers, with 1 referring to the top-most staff in a part.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Staff {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/staff_details.rs b/musicxml/src/elements/staff_details.rs
index 4e636f5..6fc8f90 100644
--- a/musicxml/src/elements/staff_details.rs
+++ b/musicxml/src/elements/staff_details.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StaffDetails] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaffDetailsAttributes {
/// Specifies the staff number from top to bottom within the part. The value is 1 if not present.
pub number: Option,
@@ -18,7 +18,7 @@ pub struct StaffDetailsAttributes {
}
/// Contents of the [StaffDetails] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct StaffDetailsContents {
/// The [StaffType] element indicates the type of staff.
pub staff_type: Option,
@@ -35,7 +35,7 @@ pub struct StaffDetailsContents {
}
/// The [StaffDetails] element is used to indicate different types of staves.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-details")]
pub struct StaffDetails {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_distance.rs b/musicxml/src/elements/staff_distance.rs
index 6aabcd6..d8b0669 100644
--- a/musicxml/src/elements/staff_distance.rs
+++ b/musicxml/src/elements/staff_distance.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [StaffDistance] element represents the vertical distance from the bottom line of the previous staff in this system to the top line of the current staff.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-distance")]
pub struct StaffDistance {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_divide.rs b/musicxml/src/elements/staff_divide.rs
index 9b886ff..da0726d 100644
--- a/musicxml/src/elements/staff_divide.rs
+++ b/musicxml/src/elements/staff_divide.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StaffDivide] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaffDivideAttributes {
/// Specifies the type of staff division symbol.
pub r#type: StaffDivideSymbol,
@@ -61,7 +61,7 @@ pub struct StaffDivideAttributes {
/// The [StaffDivide] element represents the staff division arrow symbols found in the Standard Music Font Layout (SMuFL)
/// [Staff brackets and dividers](https://www.w3.org/2021/03/smufl14/tables/staff-brackets-and-dividers.html) range at code points
/// U+E00B, U+E00C, and U+E00D.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-divide")]
pub struct StaffDivide {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_layout.rs b/musicxml/src/elements/staff_layout.rs
index a028d99..a08ff6b 100644
--- a/musicxml/src/elements/staff_layout.rs
+++ b/musicxml/src/elements/staff_layout.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StaffLayout] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaffLayoutAttributes {
/// Refers to staff numbers within the part, from top to bottom on the system. A value of 1 is used if not present.
pub number: Option,
}
/// Contents of the [StaffLayout] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct StaffLayoutContents {
/// The [StaffDistance] element specifies the vertical distance from the bottom line of the previous staff in this system to the top line of the staff specified by the `number` attribute.
pub staff_distance: Option,
@@ -23,7 +23,7 @@ pub struct StaffLayoutContents {
///
/// When used in the [Defaults][super::Defaults] element, the values apply to all systems in all parts. When used in the [Print][super::Print] element,
/// the values apply to the current system only. This value is ignored for the first staff in a system.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-layout")]
pub struct StaffLayout {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_lines.rs b/musicxml/src/elements/staff_lines.rs
index bdc2a6d..df7ac86 100644
--- a/musicxml/src/elements/staff_lines.rs
+++ b/musicxml/src/elements/staff_lines.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [StaffLines] element specifies the number of lines and is usually used for a non 5-line staff.
///
/// If the [StaffLines] element is present, the appearance of each line may be individually specified with a [LineDetail][super::LineDetail] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-lines")]
pub struct StaffLines {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_size.rs b/musicxml/src/elements/staff_size.rs
index 09724eb..516b33e 100644
--- a/musicxml/src/elements/staff_size.rs
+++ b/musicxml/src/elements/staff_size.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StaffSize] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaffSizeAttributes {
/// Specifies the percentage scaling that applies to the notation. Values less that 100 make the notation smaller while values over 100 make the notation larger.
pub scaling: Option,
@@ -18,7 +18,7 @@ pub struct StaffSizeAttributes {
///
/// In some cases, a [StaffSize] different than 100 also scales the notation on the staff, such as with a cue staff. In other cases, such as percussion staves,
/// the lines may be more widely spaced without scaling the notation on the staff. The scaling attribute allows these two cases to be distinguished.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-size")]
pub struct StaffSize {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_tuning.rs b/musicxml/src/elements/staff_tuning.rs
index 7c9c8fc..49149b1 100644
--- a/musicxml/src/elements/staff_tuning.rs
+++ b/musicxml/src/elements/staff_tuning.rs
@@ -5,14 +5,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StaffTuning] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StaffTuningAttributes {
/// Indicates the staff line for this tuning, numbered from bottom to top.
pub line: StaffLine,
}
/// Contents of the [StaffTuning] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct StaffTuningContents {
/// The [TuningStep] element specifies the step of the tuning.
pub tuning_step: TuningStep,
@@ -25,7 +25,7 @@ pub struct StaffTuningContents {
/// The [StaffTuning] element specifies the open, non-capo tuning of the lines on a tablature staff.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-tuning")]
pub struct StaffTuning {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staff_type.rs b/musicxml/src/elements/staff_type.rs
index 5f634b8..e46342f 100644
--- a/musicxml/src/elements/staff_type.rs
+++ b/musicxml/src/elements/staff_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [StaffType] element specifies different uses for the staff, as listed in the [StaffType][crate::datatypes::StaffType] data type.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("staff-type")]
pub struct StaffType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/staves.rs b/musicxml/src/elements/staves.rs
index 0d50252..aae8886 100644
--- a/musicxml/src/elements/staves.rs
+++ b/musicxml/src/elements/staves.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Staves] element is used if there is more than one staff represented in the given part (e.g., 2 staves for typical piano parts).
///
/// If absent, a value of 1 is assumed. Staves are ordered from top to bottom in a part in numerical order, with staff 1 above staff 2.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Staves {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/stem.rs b/musicxml/src/elements/stem.rs
index 61f8105..450945a 100644
--- a/musicxml/src/elements/stem.rs
+++ b/musicxml/src/elements/stem.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Stem] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StemAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -32,7 +32,7 @@ pub struct StemAttributes {
/// Values for the [Stem] element can be down, up, none, or double.
///
/// A [Stem] element associated with a [Rest][super::Rest] refers to a stemlet.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Stem {
/// Element-specific attributes
pub attributes: StemAttributes,
diff --git a/musicxml/src/elements/step.rs b/musicxml/src/elements/step.rs
index c4a47aa..9f62e12 100644
--- a/musicxml/src/elements/step.rs
+++ b/musicxml/src/elements/step.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Step] element represents a step of the diatonic scale, represented using the English letters A through G.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Step {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/stick.rs b/musicxml/src/elements/stick.rs
index b76ef53..ac081ed 100644
--- a/musicxml/src/elements/stick.rs
+++ b/musicxml/src/elements/stick.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Stick] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StickAttributes {
/// Indicates the presence of a dashed circle around the round beater part of a pictogram. The value is no if not specified.
pub dashed_circle: Option,
@@ -16,7 +16,7 @@ pub struct StickAttributes {
}
/// Contents of the [Stick] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct StickContents {
/// The [StickType] element indicates the pictogram type of the stick, mallet, or beater.
pub stick_type: StickType,
@@ -27,7 +27,7 @@ pub struct StickContents {
/// The [Stick] element represents pictograms where the material of the stick, mallet, or beater is included.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Stick {
/// Element-specific attributes
pub attributes: StickAttributes,
diff --git a/musicxml/src/elements/stick_location.rs b/musicxml/src/elements/stick_location.rs
index bd61d7f..e981db5 100644
--- a/musicxml/src/elements/stick_location.rs
+++ b/musicxml/src/elements/stick_location.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [StickLocation] element represents pictograms for the location of sticks, beaters, or mallets on cymbals, gongs, drums, and other instruments.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("stick-location")]
pub struct StickLocation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/stick_material.rs b/musicxml/src/elements/stick_material.rs
index c97774f..f718b1d 100644
--- a/musicxml/src/elements/stick_material.rs
+++ b/musicxml/src/elements/stick_material.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [StickMaterial] element represents the material being displayed in a stick pictogram.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("stick-material")]
pub struct StickMaterial {
/// Element-specific attributes
diff --git a/musicxml/src/elements/stick_type.rs b/musicxml/src/elements/stick_type.rs
index d6cc164..ea72cb5 100644
--- a/musicxml/src/elements/stick_type.rs
+++ b/musicxml/src/elements/stick_type.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [StickType] element represents the shape of pictograms where the material in the stick, mallet, or beater is represented in the pictogram.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("stick-type")]
pub struct StickType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/stopped.rs b/musicxml/src/elements/stopped.rs
index e88d736..a096bea 100644
--- a/musicxml/src/elements/stopped.rs
+++ b/musicxml/src/elements/stopped.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Stopped] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StoppedAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -48,7 +48,7 @@ pub struct StoppedAttributes {
///
/// The `smufl` attribute distinguishes different Standard Music Font Layout (SMuFL) glyphs that have a similar appearance
/// such as "handbellsMalletBellSuspended" and "guitarClosePedal". If not present, the default glyph is brassMuteClosed.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Stopped {
/// Element-specific attributes
pub attributes: StoppedAttributes,
diff --git a/musicxml/src/elements/straight.rs b/musicxml/src/elements/straight.rs
index 2636b14..fa55cb0 100644
--- a/musicxml/src/elements/straight.rs
+++ b/musicxml/src/elements/straight.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [Straight] element specifies that no swing is present, so consecutive notes have equal durations.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Straight {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/stress.rs b/musicxml/src/elements/stress.rs
index c69e026..b494f0e 100644
--- a/musicxml/src/elements/stress.rs
+++ b/musicxml/src/elements/stress.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Stress] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StressAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct StressAttributes {
/// The [Stress] element indicates a stressed note.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Stress {
/// Element-specific attributes
pub attributes: StressAttributes,
diff --git a/musicxml/src/elements/string.rs b/musicxml/src/elements/string.rs
index 85fcc7c..16e49f4 100644
--- a/musicxml/src/elements/string.rs
+++ b/musicxml/src/elements/string.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StringNumber] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StringAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct StringAttributes {
/// The [StringNumber] element is used with tablature notation, regular notation (where it is often circled), and chord diagrams.
///
/// String numbers start with 1 for the highest pitched full-length string.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("string")]
pub struct StringNumber {
/// Element-specific attributes
diff --git a/musicxml/src/elements/string_mute.rs b/musicxml/src/elements/string_mute.rs
index 77b8c34..956e9f2 100644
--- a/musicxml/src/elements/string_mute.rs
+++ b/musicxml/src/elements/string_mute.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StringMute] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StringMuteAttributes {
/// Specifies if the string mute is going on or off.
pub r#type: OnOff,
@@ -61,7 +61,7 @@ pub struct StringMuteAttributes {
/// The [StringMute] element represents string mute on and mute off symbols.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("string-mute")]
pub struct StringMute {
/// Element-specific attributes
diff --git a/musicxml/src/elements/strong_accent.rs b/musicxml/src/elements/strong_accent.rs
index beaa864..433095e 100644
--- a/musicxml/src/elements/strong_accent.rs
+++ b/musicxml/src/elements/strong_accent.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [StrongAccent] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct StrongAccentAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct StrongAccentAttributes {
/// The [StrongAccent] element indicates a vertical accent mark.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("strong-accent")]
pub struct StrongAccent {
/// Element-specific attributes
diff --git a/musicxml/src/elements/suffix.rs b/musicxml/src/elements/suffix.rs
index a99ed5c..e3bc7fe 100644
--- a/musicxml/src/elements/suffix.rs
+++ b/musicxml/src/elements/suffix.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Suffix] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SuffixAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct SuffixAttributes {
/// Suffixes include both symbols that come after the figure number and those that overstrike the figure number. The [Suffix] values slash, back-slash,
/// and vertical are used for slashed numbers indicating chromatic alteration. The orientation and display of the slash usually depends on the figure number.
/// The [Suffix] element may contain additional values for symbols specific to particular figured bass styles.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Suffix {
/// Element-specific attributes
pub attributes: SuffixAttributes,
diff --git a/musicxml/src/elements/supports.rs b/musicxml/src/elements/supports.rs
index 278878a..67e885e 100644
--- a/musicxml/src/elements/supports.rs
+++ b/musicxml/src/elements/supports.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Supports] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SupportsAttributes {
/// Indicates the element that is supported or not by the encoding.
pub element: NmToken,
@@ -23,7 +23,7 @@ pub struct SupportsAttributes {
/// of an element is ambiguous if you do not know if the encoding supports that element. It also allows programs to indicate support for
/// specific attributes, or specific attributes with specific values. This lets applications communicate, for example, that all system and/or
/// page breaks are contained in the MusicXML file.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Supports {
/// Element-specific attributes
pub attributes: SupportsAttributes,
diff --git a/musicxml/src/elements/swing.rs b/musicxml/src/elements/swing.rs
index 0531e8d..577b0c8 100644
--- a/musicxml/src/elements/swing.rs
+++ b/musicxml/src/elements/swing.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Swing] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct SwingContents {
/// The [Straight] element specifies whether or not to use straight playback.
pub straight: Option,
@@ -28,7 +28,7 @@ pub struct SwingContents {
/// The [Swing] element has no effect for playback of grace notes, notes where a [Type][super::Type] element is not present, and notes where the
/// specified [Duration][super::Duration] is different than the nominal value associated with the specified [Type][super::Type]. If a swung note has
/// `attack` and `release` attributes, those values modify the swung playback.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Swing {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/swing_style.rs b/musicxml/src/elements/swing_style.rs
index 67f3d53..89831d1 100644
--- a/musicxml/src/elements/swing_style.rs
+++ b/musicxml/src/elements/swing_style.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [SwingStyle] element is a string describing the style of swing used.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("swing-style")]
pub struct SwingStyle {
/// Element-specific attributes
diff --git a/musicxml/src/elements/swing_type.rs b/musicxml/src/elements/swing_type.rs
index efa6199..6738776 100644
--- a/musicxml/src/elements/swing_type.rs
+++ b/musicxml/src/elements/swing_type.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [SwingType] element specifies the note type, either eighth or 16th, to which the [First][super::First] to [Second][super::Second] ratio is applied.
///
/// The value is eighth if this element is not present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("swing-type")]
pub struct SwingType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/syllabic.rs b/musicxml/src/elements/syllabic.rs
index 2a3a86d..857fac5 100644
--- a/musicxml/src/elements/syllabic.rs
+++ b/musicxml/src/elements/syllabic.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Syllabic] element indicates lyric hyphenation.
///
/// The single, begin, end, and middle values represent single-syllable words, word-beginning syllables, word-ending syllables, and mid-word syllables, respectively.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Syllabic {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/symbol.rs b/musicxml/src/elements/symbol.rs
index a153cf4..2132d33 100644
--- a/musicxml/src/elements/symbol.rs
+++ b/musicxml/src/elements/symbol.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Symbol] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SymbolAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -88,7 +88,7 @@ pub struct SymbolAttributes {
///
/// It is used when an occasional musical symbol is interspersed into text. It should not be used in place of semantic markup, such as metronome marks
/// that mix text and symbols. Left justification is used if not specified. Enclosure is none if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Symbol {
/// Element-specific attributes
pub attributes: SymbolAttributes,
diff --git a/musicxml/src/elements/sync.rs b/musicxml/src/elements/sync.rs
index 5ede078..ce229f1 100644
--- a/musicxml/src/elements/sync.rs
+++ b/musicxml/src/elements/sync.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Sync] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct SyncAttributes {
/// Specifies the style that a score following application should use to synchronize an accompaniment with a performer.
pub r#type: SyncType,
@@ -20,7 +20,7 @@ pub struct SyncAttributes {
/// The [Sync] element specifies the style that a score-following application should use the synchronize an accompaniment with a performer.
///
/// If this element is not included in a score, default synchronization depends on the application.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Sync {
/// Element-specific attributes
pub attributes: SyncAttributes,
diff --git a/musicxml/src/elements/system_distance.rs b/musicxml/src/elements/system_distance.rs
index 61d29dc..676c4bf 100644
--- a/musicxml/src/elements/system_distance.rs
+++ b/musicxml/src/elements/system_distance.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [SystemDistance] is measured from the bottom line of the previous system to the top line of the current system.
///
/// It is ignored for the first system on a page.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("system-distance")]
pub struct SystemDistance {
/// Element-specific attributes
diff --git a/musicxml/src/elements/system_dividers.rs b/musicxml/src/elements/system_dividers.rs
index 33e5620..06439a0 100644
--- a/musicxml/src/elements/system_dividers.rs
+++ b/musicxml/src/elements/system_dividers.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [SystemDividers] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct SystemDividersContents {
/// The [LeftDivider] element indicates the presence or absence of a system divider on the left side of the page.
pub left_divider: LeftDivider,
@@ -17,7 +17,7 @@ pub struct SystemDividersContents {
/// Dividers on the left and right side of the page are controlled by the [LeftDivider] and [RightDivider] elements respectively.
///
/// When used in the [Print][super::Print] element, the [SystemDividers] element affects the dividers that would appear between the current system and the previous system.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("system-dividers")]
pub struct SystemDividers {
/// Element-specific attributes
diff --git a/musicxml/src/elements/system_layout.rs b/musicxml/src/elements/system_layout.rs
index 62ba737..a8fed18 100644
--- a/musicxml/src/elements/system_layout.rs
+++ b/musicxml/src/elements/system_layout.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [SystemLayout] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct SystemLayoutContents {
/// The [SystemMargins] element specifies the left and right margins of the system.
pub system_margins: Option,
@@ -31,7 +31,7 @@ pub struct SystemLayoutContents {
/// use the default values as determined by the [Defaults][super::Defaults] element. If any child elements are missing from the [SystemLayout] element
/// in a [Print][super::Print] element, the values determined by the [Defaults][super::Defaults] element are used there as well. This type of
/// [SystemLayout] element need only be read from or written to the first visible part in the score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("system-layout")]
pub struct SystemLayout {
/// Element-specific attributes
diff --git a/musicxml/src/elements/system_margins.rs b/musicxml/src/elements/system_margins.rs
index 70cf072..4e6e8d4 100644
--- a/musicxml/src/elements/system_margins.rs
+++ b/musicxml/src/elements/system_margins.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [SystemMargins] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct SystemMarginsContents {
/// The [LeftMargin] element specifies the left system margin.
pub left_margin: LeftMargin,
@@ -15,7 +15,7 @@ pub struct SystemMarginsContents {
/// System margins are relative to the page margins.
///
/// Positive values indent and negative values reduce the margin size.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("system-margins")]
pub struct SystemMargins {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tap.rs b/musicxml/src/elements/tap.rs
index 69e7279..fe3b64c 100644
--- a/musicxml/src/elements/tap.rs
+++ b/musicxml/src/elements/tap.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Tap] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TapAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -47,7 +47,7 @@ pub struct TapAttributes {
/// 
///
/// The element content allows specification of the notation; + and T are common choices.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tap {
/// Element-specific attributes
pub attributes: TapAttributes,
diff --git a/musicxml/src/elements/technical.rs b/musicxml/src/elements/technical.rs
index 0f00730..5afe88d 100644
--- a/musicxml/src/elements/technical.rs
+++ b/musicxml/src/elements/technical.rs
@@ -9,14 +9,14 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Technical] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TechnicalAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
}
/// The [TechnicalContents] element specifies all possible options available for use in a [Technical] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub enum TechnicalContents {
/// The [UpBow] element represents the symbol for up-bow.
#[rename("up-bow")]
@@ -97,7 +97,7 @@ pub enum TechnicalContents {
}
/// The [Technical] element groups together technical indications that give performance information for specific instruments.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Technical {
/// Element-specific attributes
pub attributes: TechnicalAttributes,
diff --git a/musicxml/src/elements/tenths.rs b/musicxml/src/elements/tenths.rs
index cd935f1..c9cff3e 100644
--- a/musicxml/src/elements/tenths.rs
+++ b/musicxml/src/elements/tenths.rs
@@ -5,7 +5,7 @@ use musicxml_macros::*;
/// The [Tenths] element contains the number of tenths that correspond to the given number of millimeters within the [Scaling][super::Scaling] element formula.
///
/// Setting this to 40 allows the [Millimeters][super::Millimeters] element to specify the size of a 5-line staff.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tenths {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/tenuto.rs b/musicxml/src/elements/tenuto.rs
index 64866b1..992da06 100644
--- a/musicxml/src/elements/tenuto.rs
+++ b/musicxml/src/elements/tenuto.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Tenuto] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TenutoAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct TenutoAttributes {
/// The [Tenuto] element indicates a tenuto line symbol.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tenuto {
/// Element-specific attributes
pub attributes: TenutoAttributes,
diff --git a/musicxml/src/elements/text.rs b/musicxml/src/elements/text.rs
index b7fb8fc..7f20a9f 100644
--- a/musicxml/src/elements/text.rs
+++ b/musicxml/src/elements/text.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [TextAttributes] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TextAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct TextAttributes {
/// The [Text] element represents a syllable or portion of a syllable for lyric text underlay.
///
/// A hyphen in the element content should only be used for an actual hyphenated word.
-#[derive(Debug, Default, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Text {
/// Element-specific attributes
pub attributes: TextAttributes,
diff --git a/musicxml/src/elements/thumb_position.rs b/musicxml/src/elements/thumb_position.rs
index 4260666..74f21d1 100644
--- a/musicxml/src/elements/thumb_position.rs
+++ b/musicxml/src/elements/thumb_position.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [ThumbPosition] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ThumbPositionAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct ThumbPositionAttributes {
/// 
///
/// This is a circle with a line, where the line does not come within the circle. It is distinct from the [SnapPizzicato][super::SnapPizzicato] symbol, where the line comes inside the circle.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("thumb-position")]
pub struct ThumbPosition {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tie.rs b/musicxml/src/elements/tie.rs
index d9a8380..fc7cd82 100644
--- a/musicxml/src/elements/tie.rs
+++ b/musicxml/src/elements/tie.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Tie] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TieAttributes {
/// Indicates if this is the start or stop of the tie.
pub r#type: StartStop,
@@ -16,7 +16,7 @@ pub struct TieAttributes {
/// The [Tie] element indicates that a tie begins or ends with this note.
///
/// The [Tie] element indicates sound; the [Tied][super::Tied] element indicates notation.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tie {
/// Element-specific attributes
pub attributes: TieAttributes,
diff --git a/musicxml/src/elements/tied.rs b/musicxml/src/elements/tied.rs
index 1d118c8..68c3198 100644
--- a/musicxml/src/elements/tied.rs
+++ b/musicxml/src/elements/tied.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Tied] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TiedAttributes {
/// Indicates if this is the start, stop, or continuation of a tie, or if this is a tie indicating that an instrument should be undamped.
pub r#type: StartStopContinue,
@@ -79,7 +79,7 @@ pub struct TiedAttributes {
///
/// Normal ties need only two bezier points: one associated with the start of the tie, the other with the stop. Ties divided over system breaks can specify
/// additional bezier data at [Tied] elements with a continue type.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tied {
/// Element-specific attributes
pub attributes: TiedAttributes,
diff --git a/musicxml/src/elements/time.rs b/musicxml/src/elements/time.rs
index 3d7f773..e0dc3aa 100644
--- a/musicxml/src/elements/time.rs
+++ b/musicxml/src/elements/time.rs
@@ -8,7 +8,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Time] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TimeAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -67,7 +67,7 @@ pub struct TimeAttributes {
}
/// The [TimeBeatContents] element specifies the number of beats in a measure and the beat unit.
-#[derive(Debug, PartialEq, Eq)]
+#[derive(Debug, PartialEq, Eq, Clone)]
pub struct TimeBeatContents {
/// The [Beats] element specifies the number of beats in a measure.
pub beats: Beats,
@@ -76,7 +76,7 @@ pub struct TimeBeatContents {
}
/// Contents of the [Time] element.
-#[derive(Debug, Default, PartialEq, Eq)]
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
pub struct TimeContents {
/// The [TimeBeatContents] element specifies the number of beats in a measure and the beat unit.
pub beats: Vec,
@@ -143,7 +143,7 @@ impl ContentSerializer for TimeContents {
///
/// The `print_object` attribute allows a time signature to be specified but not printed, as is the case for excerpts from the middle of a score.
/// The value is "yes" if not present.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Time {
/// Element-specific attributes
pub attributes: TimeAttributes,
diff --git a/musicxml/src/elements/time_modification.rs b/musicxml/src/elements/time_modification.rs
index b9b56dd..c752868 100644
--- a/musicxml/src/elements/time_modification.rs
+++ b/musicxml/src/elements/time_modification.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [TimeModification] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct TimeModificationContents {
/// The [ActualNotes] element specifies the number of notes in the tuplet.
pub actual_notes: ActualNotes,
@@ -21,7 +21,7 @@ pub struct TimeModificationContents {
/// A [TimeModification] element shows how the cumulative, sounding effect of tuplets and double-note tremolos compare to the written
/// note type represented by the [Type][super::Type] and [Dot][super::Dot] elements. Nested tuplets and other notations that use more detailed
/// information need both the [TimeModification] and [Tuplet][super::Tuplet] elements to be represented accurately.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("time-modification")]
pub struct TimeModification {
/// Element-specific attributes
diff --git a/musicxml/src/elements/time_relation.rs b/musicxml/src/elements/time_relation.rs
index 603bdeb..b06c47f 100644
--- a/musicxml/src/elements/time_relation.rs
+++ b/musicxml/src/elements/time_relation.rs
@@ -4,7 +4,7 @@ use musicxml_macros::*;
/// The [TimeRelation] element indicates the symbol used to represent the interchangeable aspect of dual time signatures,
/// as specified in the [TimeRelation][crate::datatypes::TimeRelation] type.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("time-relation")]
pub struct TimeRelation {
/// Element-specific attributes
diff --git a/musicxml/src/elements/timpani.rs b/musicxml/src/elements/timpani.rs
index 5ba00bc..8280084 100644
--- a/musicxml/src/elements/timpani.rs
+++ b/musicxml/src/elements/timpani.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Timpani] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TimpaniAttributes {
/// Distinguishes different SMuFL stylistic alternates.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct TimpaniAttributes {
/// The [Timpani] element represents the timpani pictogram.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Timpani {
/// Element-specific attributes
pub attributes: TimpaniAttributes,
diff --git a/musicxml/src/elements/toe.rs b/musicxml/src/elements/toe.rs
index 73e6084..1bf7812 100644
--- a/musicxml/src/elements/toe.rs
+++ b/musicxml/src/elements/toe.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Toe] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct ToeAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct ToeAttributes {
/// The [Toe] element is used with organ pedals.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Toe {
/// Element-specific attributes
pub attributes: ToeAttributes,
diff --git a/musicxml/src/elements/top_margin.rs b/musicxml/src/elements/top_margin.rs
index c85fa93..4c86246 100644
--- a/musicxml/src/elements/top_margin.rs
+++ b/musicxml/src/elements/top_margin.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [TopMargin] element specifies the top page margin in tenths.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("top-margin")]
pub struct TopMargin {
/// Element-specific attributes
diff --git a/musicxml/src/elements/top_system_distance.rs b/musicxml/src/elements/top_system_distance.rs
index 4d36cb5..6f74978 100644
--- a/musicxml/src/elements/top_system_distance.rs
+++ b/musicxml/src/elements/top_system_distance.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [TopSystemDistance] is measured from the page's top margin to the top line of the first system.
///
/// It is ignored for all but the first system on a page.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("top-system-distance")]
pub struct TopSystemDistance {
/// Element-specific attributes
diff --git a/musicxml/src/elements/touching_pitch.rs b/musicxml/src/elements/touching_pitch.rs
index 92fc95f..d6e1e8f 100644
--- a/musicxml/src/elements/touching_pitch.rs
+++ b/musicxml/src/elements/touching_pitch.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The presence of the [TouchingPitch] element indicates this is the pitch at which the string is touched lightly to produce the harmonic.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("touching-pitch")]
pub struct TouchingPitch {
/// Element-specific attributes
diff --git a/musicxml/src/elements/transpose.rs b/musicxml/src/elements/transpose.rs
index 8b829a5..da50a93 100644
--- a/musicxml/src/elements/transpose.rs
+++ b/musicxml/src/elements/transpose.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Transpose] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TransposeAttributes {
/// Specifies an ID that is unique to the entire document.
pub id: Option,
@@ -15,7 +15,7 @@ pub struct TransposeAttributes {
}
/// Contents of the [Transpose] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct TransposeContents {
/// The [Diatonic] element specifies the number of diatonic steps to transpose.
pub diatonic: Option,
@@ -30,7 +30,7 @@ pub struct TransposeContents {
/// The [Transpose] element represents what must be added to a written pitch to get a correct sounding pitch.
///
/// It is used for encoding parts for transposing instruments that are in written vs. concert pitch.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Transpose {
/// Element-specific attributes
pub attributes: TransposeAttributes,
diff --git a/musicxml/src/elements/tremolo.rs b/musicxml/src/elements/tremolo.rs
index 282a7e1..9e8531b 100644
--- a/musicxml/src/elements/tremolo.rs
+++ b/musicxml/src/elements/tremolo.rs
@@ -6,7 +6,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Tremolo] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TremoloAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -61,7 +61,7 @@ pub struct TremoloAttributes {
/// range for an unmeasured tremolo. It is ignored for other tremolo types. The SMuFL "buzzRoll" glyph is used if the attribute is missing.
///
/// Using repeater beams for indicating tremolos is deprecated as of Version 3.0.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tremolo {
/// Element-specific attributes
pub attributes: TremoloAttributes,
diff --git a/musicxml/src/elements/trill_mark.rs b/musicxml/src/elements/trill_mark.rs
index 554b6fd..157d31e 100644
--- a/musicxml/src/elements/trill_mark.rs
+++ b/musicxml/src/elements/trill_mark.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [TrillMark] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TrillMarkAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -59,7 +59,7 @@ pub struct TrillMarkAttributes {
/// The [TrillMark] element represents the trill symbol.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("trill-mark")]
pub struct TrillMark {
/// Element-specific attributes
diff --git a/musicxml/src/elements/triple_tongue.rs b/musicxml/src/elements/triple_tongue.rs
index 70e3e29..311771d 100644
--- a/musicxml/src/elements/triple_tongue.rs
+++ b/musicxml/src/elements/triple_tongue.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [TripleTongue] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TripleTongueAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct TripleTongueAttributes {
/// The [TripleTongue] element represents the triple tongue symbol (three dots arranged horizontally).
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("triple-tongue")]
pub struct TripleTongue {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuning_alter.rs b/musicxml/src/elements/tuning_alter.rs
index b985558..67f2473 100644
--- a/musicxml/src/elements/tuning_alter.rs
+++ b/musicxml/src/elements/tuning_alter.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [TuningAlter] element is represented like the [Alter][super::Alter] element, with a different name to reflect its different function in string tuning.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuning-alter")]
pub struct TuningAlter {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuning_octave.rs b/musicxml/src/elements/tuning_octave.rs
index 0283c7c..9834d31 100644
--- a/musicxml/src/elements/tuning_octave.rs
+++ b/musicxml/src/elements/tuning_octave.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [TuningOctave] element is represented like the [Octave][super::Octave] element, with a different name to reflect its different function in string tuning.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuning-octave")]
pub struct TuningOctave {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuning_step.rs b/musicxml/src/elements/tuning_step.rs
index 3732f1d..f4c8463 100644
--- a/musicxml/src/elements/tuning_step.rs
+++ b/musicxml/src/elements/tuning_step.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [TuningStep] element is represented like the [Step][super::Step] element, with a different name to reflect its different function in string tuning.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuning-step")]
pub struct TuningStep {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuplet.rs b/musicxml/src/elements/tuplet.rs
index d922faa..67ac62b 100644
--- a/musicxml/src/elements/tuplet.rs
+++ b/musicxml/src/elements/tuplet.rs
@@ -5,7 +5,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Tuplet] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TupletAttributes {
/// Indicates if this is the start or stop of the tuplet.
pub r#type: StartStop,
@@ -45,7 +45,7 @@ pub struct TupletAttributes {
}
/// Contents of the [Tuplet] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct TupletContents {
/// The [TupletActual] element specifies the number of notes in the tuplet.
pub tuplet_actual: Option,
@@ -61,7 +61,7 @@ pub struct TupletContents {
/// Whereas a [TimeModification][super::TimeModification] element shows how the cumulative, sounding effect of tuplets and double-note tremolos compare
/// to the written note type, the [Tuplet] element describes how this is displayed. The [Tuplet] element also provides more detailed representation information
/// than the [TimeModification][super::TimeModification] element, and is needed to represent nested tuplets and other complex tuplets accurately.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Tuplet {
/// Element-specific attributes
pub attributes: TupletAttributes,
diff --git a/musicxml/src/elements/tuplet_actual.rs b/musicxml/src/elements/tuplet_actual.rs
index 8e269a0..5ae6209 100644
--- a/musicxml/src/elements/tuplet_actual.rs
+++ b/musicxml/src/elements/tuplet_actual.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [TupletActual] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct TupletActualContents {
/// The [TupletNumber] element specifies the number of notes in the tuplet.
pub tuplet_number: Option,
@@ -18,7 +18,7 @@ pub struct TupletActualContents {
/// including number and note type (with dots).
///
/// If any of these elements are absent, their values are based on the [TimeModification][super::TimeModification] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuplet-actual")]
pub struct TupletActual {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuplet_dot.rs b/musicxml/src/elements/tuplet_dot.rs
index 6312720..cbf025e 100644
--- a/musicxml/src/elements/tuplet_dot.rs
+++ b/musicxml/src/elements/tuplet_dot.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [TupletDot] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TupletDotAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -19,7 +19,7 @@ pub struct TupletDotAttributes {
}
/// The [TupletDot] element is used to specify dotted tuplet types.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuplet-dot")]
pub struct TupletDot {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuplet_normal.rs b/musicxml/src/elements/tuplet_normal.rs
index 61cb1b6..75a5c78 100644
--- a/musicxml/src/elements/tuplet_normal.rs
+++ b/musicxml/src/elements/tuplet_normal.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [TupletNormal] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct TupletNormalContents {
/// The [TupletNumber] element specifies the number of notes in the tuplet.
pub tuplet_number: Option,
@@ -18,7 +18,7 @@ pub struct TupletNormalContents {
/// including number and note type (with dots).
///
/// If any of these elements are absent, their values are based on the [TimeModification][super::TimeModification] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuplet-normal")]
pub struct TupletNormal {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuplet_number.rs b/musicxml/src/elements/tuplet_number.rs
index a23a713..838c09d 100644
--- a/musicxml/src/elements/tuplet_number.rs
+++ b/musicxml/src/elements/tuplet_number.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [TupletNumber] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TupletNumberAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -19,7 +19,7 @@ pub struct TupletNumberAttributes {
}
/// The [TupletNumber] element indicates the number of notes for this portion of the tuplet.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuplet-number")]
pub struct TupletNumber {
/// Element-specific attributes
diff --git a/musicxml/src/elements/tuplet_type.rs b/musicxml/src/elements/tuplet_type.rs
index 970af2e..d16736e 100644
--- a/musicxml/src/elements/tuplet_type.rs
+++ b/musicxml/src/elements/tuplet_type.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [TupletType] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TupletTypeAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -19,7 +19,7 @@ pub struct TupletTypeAttributes {
}
/// The [TupletType] element indicates the graphical note type of the notes for this portion of the tuplet.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("tuplet-type")]
pub struct TupletType {
/// Element-specific attributes
diff --git a/musicxml/src/elements/turn.rs b/musicxml/src/elements/turn.rs
index afbba6c..a5fb251 100644
--- a/musicxml/src/elements/turn.rs
+++ b/musicxml/src/elements/turn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Turn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TurnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -61,7 +61,7 @@ pub struct TurnAttributes {
/// The [Turn] element is the normal turn shape which goes up then down.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Turn {
/// Element-specific attributes
pub attributes: TurnAttributes,
diff --git a/musicxml/src/elements/type.rs b/musicxml/src/elements/type.rs
index 710f99a..dbd6bdb 100644
--- a/musicxml/src/elements/type.rs
+++ b/musicxml/src/elements/type.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Type] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Copy, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct TypeAttributes {
/// Specifies the symbol size to use for an editorial indication. If not specified, it is left to application defaults.
pub size: Option,
@@ -13,7 +13,7 @@ pub struct TypeAttributes {
/// The [Type] element indicates the graphic note type.
///
/// Values range from 1024th to maxima.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Type {
/// Element-specific attributes
pub attributes: TypeAttributes,
diff --git a/musicxml/src/elements/unpitched.rs b/musicxml/src/elements/unpitched.rs
index 09b1e6d..6a94b6d 100644
--- a/musicxml/src/elements/unpitched.rs
+++ b/musicxml/src/elements/unpitched.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Unpitched] element.
-#[derive(Debug, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ContentDeserialize, ContentSerialize)]
pub struct UnpitchedContents {
/// The [DisplayStep] element specifies the pitch step of the unpitched note.
pub display_step: DisplayStep,
@@ -18,7 +18,7 @@ pub struct UnpitchedContents {
///
/// If the child elements are not present, the note is placed on the middle line of the staff. This is generally used with a one-line staff.
/// Notes in percussion clef should always use an [Unpitched] element rather than a [Pitch][super::Pitch] element.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Unpitched {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/unstress.rs b/musicxml/src/elements/unstress.rs
index d46f235..bfc48fa 100644
--- a/musicxml/src/elements/unstress.rs
+++ b/musicxml/src/elements/unstress.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Unstress] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct UnstressAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -44,7 +44,7 @@ pub struct UnstressAttributes {
/// 
///
/// It is often notated using a u-shaped symbol.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Unstress {
/// Element-specific attributes
pub attributes: UnstressAttributes,
diff --git a/musicxml/src/elements/up_bow.rs b/musicxml/src/elements/up_bow.rs
index 12634fe..ac20a9e 100644
--- a/musicxml/src/elements/up_bow.rs
+++ b/musicxml/src/elements/up_bow.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [UpBow] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct UpBowAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -42,7 +42,7 @@ pub struct UpBowAttributes {
/// The [UpBow] element represents the symbol that is used both for up-bowing on bowed instruments, and up-stroke on plucked instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("up-bow")]
pub struct UpBow {
/// Element-specific attributes
diff --git a/musicxml/src/elements/vertical_turn.rs b/musicxml/src/elements/vertical_turn.rs
index 214cc28..3d56041 100644
--- a/musicxml/src/elements/vertical_turn.rs
+++ b/musicxml/src/elements/vertical_turn.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [VerticalTurn] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct VerticalTurnAttributes {
/// If yes, the trill accelerates during playback. It is no if not specified.
pub accelerate: Option,
@@ -61,7 +61,7 @@ pub struct VerticalTurnAttributes {
/// The [VerticalTurn] element has the turn symbol shape arranged vertically going from upper left to lower right.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("vertical-turn")]
pub struct VerticalTurn {
/// Element-specific attributes
diff --git a/musicxml/src/elements/virtual_instrument.rs b/musicxml/src/elements/virtual_instrument.rs
index feb4248..38243df 100644
--- a/musicxml/src/elements/virtual_instrument.rs
+++ b/musicxml/src/elements/virtual_instrument.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [VirtualInstrument] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct VirtualInstrumentContents {
/// The [VirtualLibrary] element specifies the virtual library used for the virtual instrument.
pub virtual_library: Option,
@@ -13,7 +13,7 @@ pub struct VirtualInstrumentContents {
}
/// The [VirtualInstrument] element defines a specific virtual instrument used for an instrument sound.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("virtual-instrument")]
pub struct VirtualInstrument {
/// Element-specific attributes
diff --git a/musicxml/src/elements/virtual_library.rs b/musicxml/src/elements/virtual_library.rs
index b062cd3..762ce6a 100644
--- a/musicxml/src/elements/virtual_library.rs
+++ b/musicxml/src/elements/virtual_library.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [VirtualLibrary] element indicates the virtual instrument library name.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("virtual-library")]
pub struct VirtualLibrary {
/// Element-specific attributes
diff --git a/musicxml/src/elements/virtual_name.rs b/musicxml/src/elements/virtual_name.rs
index c2300ef..d00dc17 100644
--- a/musicxml/src/elements/virtual_name.rs
+++ b/musicxml/src/elements/virtual_name.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [VirtualName] element indicates the library-specific name for the virtual instrument.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("virtual-name")]
pub struct VirtualName {
/// Element-specific attributes
diff --git a/musicxml/src/elements/voice.rs b/musicxml/src/elements/voice.rs
index 4a20ad1..f098d50 100644
--- a/musicxml/src/elements/voice.rs
+++ b/musicxml/src/elements/voice.rs
@@ -7,7 +7,7 @@ use musicxml_macros::*;
/// 
///
/// The [Voice] element is used to distinguish between multiple voices in individual parts.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Voice {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/volume.rs b/musicxml/src/elements/volume.rs
index d60f644..36477b6 100644
--- a/musicxml/src/elements/volume.rs
+++ b/musicxml/src/elements/volume.rs
@@ -6,7 +6,7 @@ use musicxml_macros::*;
/// The [Volume] element value is a percentage of the maximum ranging from 0 to 100, with decimal values allowed.
///
/// This corresponds to a scaling value for the MIDI 1.0 channel volume controller.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Copy, Clone, ElementDeserialize, ElementSerialize)]
pub struct Volume {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/wait.rs b/musicxml/src/elements/wait.rs
index a72d0c4..4dcb05e 100644
--- a/musicxml/src/elements/wait.rs
+++ b/musicxml/src/elements/wait.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Wait] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WaitAttributes {
/// Restricts the [Wait] to apply to a single player.
pub player: Option,
@@ -17,7 +17,7 @@ pub struct WaitAttributes {
///
/// This typically happens at the start of new sections or after a held note or indeterminate music. These waiting points cannot always be
/// inferred reliably from the contents of the displayed score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Wait {
/// Element-specific attributes
pub attributes: WaitAttributes,
diff --git a/musicxml/src/elements/wavy_line.rs b/musicxml/src/elements/wavy_line.rs
index e882440..6973506 100644
--- a/musicxml/src/elements/wavy_line.rs
+++ b/musicxml/src/elements/wavy_line.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [WavyLine] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WavyLineAttributes {
/// Indicates if this is the start, stop, or continuation of the wavy line. The value should be continue whenever used within a [Barline][super::Barline] element.
pub r#type: StartStopContinue,
@@ -57,7 +57,7 @@ pub struct WavyLineAttributes {
/// Wavy lines are one way to indicate trills and vibrato.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("wavy-line")]
pub struct WavyLine {
/// Element-specific attributes
diff --git a/musicxml/src/elements/wedge.rs b/musicxml/src/elements/wedge.rs
index e3e220c..967ec0e 100644
--- a/musicxml/src/elements/wedge.rs
+++ b/musicxml/src/elements/wedge.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Wedge] element.
-#[derive(Debug, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WedgeAttributes {
/// The value is crescendo for the start of a wedge that is closed at the left side, diminuendo for the start of a wedge that is closed on the right side, and stop for the end of a wedge.
pub r#type: WedgeType,
@@ -49,7 +49,7 @@ pub struct WedgeAttributes {
/// The [Wedge] element represents crescendo and diminuendo wedge symbols.
///
/// The `line_type` attribute is solid if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Wedge {
/// Element-specific attributes
pub attributes: WedgeAttributes,
diff --git a/musicxml/src/elements/with_bar.rs b/musicxml/src/elements/with_bar.rs
index be6bf0d..8a48394 100644
--- a/musicxml/src/elements/with_bar.rs
+++ b/musicxml/src/elements/with_bar.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [WithBar] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WithBarAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -43,7 +43,7 @@ pub struct WithBarAttributes {
///
/// The content of the element indicates how this should be notated. Content values of "scoop" and "dip" refer to the Standard Music Font Layout (SMuFL)
/// "guitarVibratoBarScoop" and "guitarVibratoBarDip" glyphs.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("with-bar")]
pub struct WithBar {
/// Element-specific attributes
diff --git a/musicxml/src/elements/wood.rs b/musicxml/src/elements/wood.rs
index 6061deb..aca4203 100644
--- a/musicxml/src/elements/wood.rs
+++ b/musicxml/src/elements/wood.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Wood] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WoodAttributes {
/// Distinguishes different SMuFL stylistic alternates.
pub smufl: Option,
@@ -13,7 +13,7 @@ pub struct WoodAttributes {
/// The [Wood] element represents pictograms for wood percussion instruments.
///
/// 
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Wood {
/// Element-specific attributes
pub attributes: WoodAttributes,
diff --git a/musicxml/src/elements/word_font.rs b/musicxml/src/elements/word_font.rs
index a01a0b1..70c8f61 100644
--- a/musicxml/src/elements/word_font.rs
+++ b/musicxml/src/elements/word_font.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [WordFont] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WordFontAttributes {
/// A comma-separated list of font names.
pub font_family: Option,
@@ -17,7 +17,7 @@ pub struct WordFontAttributes {
}
/// The [WordFont] element represents the default values for the word font in the score.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("word-font")]
pub struct WordFont {
/// Element-specific attributes
diff --git a/musicxml/src/elements/words.rs b/musicxml/src/elements/words.rs
index 1b6c89e..0bdfb69 100644
--- a/musicxml/src/elements/words.rs
+++ b/musicxml/src/elements/words.rs
@@ -7,7 +7,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Attributes pertaining to the [Words] element.
-#[derive(Debug, Default, PartialEq, Eq, AttributeDeserialize, AttributeSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, AttributeDeserialize, AttributeSerialize)]
pub struct WordsAttributes {
/// Indicates the color of an element.
pub color: Option,
@@ -91,7 +91,7 @@ pub struct WordsAttributes {
/// The [Words] element specifies a standard text direction.
///
/// The `enclosure` attribute is none if not specified. Left justification is used if not specified.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Words {
/// Element-specific attributes
pub attributes: WordsAttributes,
diff --git a/musicxml/src/elements/work.rs b/musicxml/src/elements/work.rs
index aae2fbd..11e3c84 100644
--- a/musicxml/src/elements/work.rs
+++ b/musicxml/src/elements/work.rs
@@ -4,7 +4,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// Contents of the [Work] element.
-#[derive(Debug, Default, PartialEq, Eq, ContentDeserialize, ContentSerialize)]
+#[derive(Debug, Default, PartialEq, Eq, Clone, ContentDeserialize, ContentSerialize)]
pub struct WorkContents {
/// The [WorkNumber] element specifies the number of the work.
pub work_number: Option,
@@ -17,7 +17,7 @@ pub struct WorkContents {
/// Works are optionally identified by number and title.
///
/// The [Work] element also may indicate a link to the [Opus] document that composes multiple scores into a collection.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
pub struct Work {
/// Element-specific attributes
pub attributes: (),
diff --git a/musicxml/src/elements/work_number.rs b/musicxml/src/elements/work_number.rs
index db31723..ca9a0a4 100644
--- a/musicxml/src/elements/work_number.rs
+++ b/musicxml/src/elements/work_number.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [WorkNumber] element specifies the number of a work, such as its opus number.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("work-number")]
pub struct WorkNumber {
/// Element-specific attributes
diff --git a/musicxml/src/elements/work_title.rs b/musicxml/src/elements/work_title.rs
index 295e96c..81a6891 100644
--- a/musicxml/src/elements/work_title.rs
+++ b/musicxml/src/elements/work_title.rs
@@ -3,7 +3,7 @@ use musicxml_internal::*;
use musicxml_macros::*;
/// The [WorkTitle] element specifies the title of a work, not including its opus or other work number.
-#[derive(Debug, PartialEq, Eq, ElementDeserialize, ElementSerialize)]
+#[derive(Debug, PartialEq, Eq, Clone, ElementDeserialize, ElementSerialize)]
#[rename("work-title")]
pub struct WorkTitle {
/// Element-specific attributes