UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

94 lines (93 loc) 3.43 kB
import { ABOVE_BELOW, LINE_TYPES } from './enums'; /** * The `<articulations>` element groups together articulations and accents. * * See https://www.w3.org/2021/06/musicxml40/musicxml-reference/elements/articulations/ */ export class Articulations { element; constructor(element) { this.element = element; } /** Returns the accent articulations. */ getAccents() { return this.element.all('accent').map((element) => ({ type: 'accent', placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the strong accent articulations. */ getStrongAccents() { return this.element.all('strong-accent').map((element) => ({ type: 'strongaccent', placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the staccato articulations. */ getStaccatos() { return this.element.all('staccato').map((element) => ({ type: 'staccato', placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the tenuto articulations. */ getTenutos() { return this.element.all('tenuto').map((element) => ({ type: 'tenuto', placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the detached legato articulations. */ getDetachedLegatos() { return this.element.all('detached-legato').map((element) => ({ type: 'detachedlegato', placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the staccatissimo articulations. */ getStaccatissimos() { return this.element.all('staccatissimo').map((element) => ({ type: 'staccatissimo', placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the scoop articulations. */ getScoops() { return this.element.all('scoop').map((element) => ({ type: 'scoop', lineType: element.attr('line-type').withDefault('solid').enum(LINE_TYPES), placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the plop articulations. */ getPlops() { return this.element.all('plop').map((element) => ({ type: 'plop', lineType: element.attr('line-type').withDefault('solid').enum(LINE_TYPES), placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the doit articulations. */ getDoits() { return this.element.all('doit').map((element) => ({ type: 'doit', lineType: element.attr('line-type').withDefault('solid').enum(LINE_TYPES), placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the falloff articulations. */ getFalloffs() { return this.element.all('falloff').map((element) => ({ type: 'falloff', lineType: element.attr('line-type').withDefault('solid').enum(LINE_TYPES), placement: element.attr('placement').enum(ABOVE_BELOW), })); } /** Returns the breath mark articulations. */ getBreathMarks() { return this.element.all('breath-mark').map((element) => ({ type: 'breathmark', placement: element.attr('placement').enum(ABOVE_BELOW), })); } }