@stringsync/vexml
Version:
MusicXML to Vexflow
94 lines (93 loc) • 3.43 kB
JavaScript
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),
}));
}
}