UNPKG

vexflow-musicxml

Version:

MusicXml Parser for vexflow

104 lines (76 loc) 3.42 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>JSDoc: Source: src/visitors/MeasureVisitor.js</title> <script src="scripts/prettify/prettify.js"> </script> <script src="scripts/prettify/lang-css.js"> </script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css"> </head> <body> <div id="main"> <h1 class="page-title">Source: src/visitors/MeasureVisitor.js</h1> <section> <article> <pre class="prettyprint source linenums"><code>/** * @file * @description Visitor implementation for converting MusicXML Measure to VexFlow * @author {@link mailto:neumann.benni@gmail.com|neumann.benni@gmail.com} * @version 0.1 */ /* eslint-disable class-methods-use-this */ import Vex from 'vexflow'; import { ClefVisitor, KeyVisitor, TimeSignatureVisitor } from './index'; const { Flow } = Vex; /** * This class implements a visitor used to convert MusicXML measures to VexFlow staves */ class MeasureVisitor { visit(measure) { console.log(`Part: ${measure.Part}, Number: ${measure.Number}, ${measure.StartClefs.length}`); const staveList = []; const allStaves = measure.getStaves(); for (let s = 0; s &lt; allStaves; s++) { const stave = s + 1; let staveClef = measure.getClefsByStaff(stave); if (staveClef === undefined) { staveClef = 'treble'; } else { staveClef = staveClef.accept(ClefVisitor); } const flowStave = new Flow.Stave(); staveList.push({ staff: flowStave, key: measure.Attributes.Key.accept(KeyVisitor), clef: staveClef, time: measure.Attributes.Time.accept(TimeSignatureVisitor), }); // Adding time signatures const timingChange = JSON.stringify(measure.Time) !== JSON.stringify(measure.lastMeasure.Time); if (measure.Number === 1 || timingChange) { flowStave.addTimeSignature(measure.Attributes.Time.accept(TimeSignatureVisitor)); } } return staveList; } } export const measureVisitor = new MeasureVisitor(); </code></pre> </article> </section> </div> <nav> <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-Test.html">Test</a></li></ul><h3>Classes</h3><ul><li><a href="ClefVisitor.html">ClefVisitor</a></li><li><a href="Key_Key.html">Key</a></li><li><a href="KeyVisitor.html">KeyVisitor</a></li><li><a href="Measure.html">Measure</a></li><li><a href="MeasureVisitor.html">MeasureVisitor</a></li><li><a href="MusicXmlRenderer.html">MusicXmlRenderer</a></li><li><a href="Note.html">Note</a></li><li><a href="NoteVisitor.html">NoteVisitor</a></li><li><a href="Part.html">Part</a></li><li><a href="TimeSignatureVisitor.html">TimeSignatureVisitor</a></li><li><a href="TimeVisitor.html">TimeVisitor</a></li><li><a href="XmlObject.html">XmlObject</a></li><li><a href="XmlSerializer_XmlSerializer.html">XmlSerializer</a></li></ul> </nav> <br class="clear"> <footer> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Mon Nov 20 2017 21:30:34 GMT+0100 (CET) </footer> <script> prettyPrint(); </script> <script src="scripts/linenumber.js"> </script> </body> </html>