musicxml 1.1.2

MusicXML parsing, manipulation, and export library
Documentation
use super::{Chromatic, Diatonic, Double, OctaveChange};
use alloc::{string::String, vec::Vec};
use musicxml_internal::*;
use musicxml_macros::*;

/// Contents of the [PartTranspose] element.
#[derive(Debug, PartialEq, Eq, 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<Diatonic>,
  /// The [Chromatic] element specifies the number of chromatic steps up or down from the written key signature.
  pub chromatic: Chromatic,
  /// The [OctaveChange] element specifies the number of octaves up or down from the written key signature.
  pub octave_change: Option<OctaveChange>,
  /// The [Double] element specifies the number of double accidentals up or down from the written key signature.
  pub double: Option<Double>,
}

/// The child elements of the [PartTranspose] element have the same meaning as for the [Transpose][super::Transpose] element.
///
/// However that meaning applies to a transposed part created from the existing score file.
///
/// 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)]
#[rename("part-transpose")]
pub struct PartTranspose {
  /// Element-specific attributes
  pub attributes: (),
  #[flatten]
  /// Element-specific content
  pub content: PartTransposeContents,
}