UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

37 lines (36 loc) 1.43 kB
import { DEFAULT_CONFIG } from './config'; import { NoopLogger } from './debug'; import { DefaultFormatter, PanoramicFormatter } from './formatting'; import { MusicXMLParser, MXLParser } from './parsing'; import { Renderer } from './rendering'; export function renderMusicXML(musicXML, div, opts) { const config = { ...DEFAULT_CONFIG, ...opts?.config }; const logger = opts?.logger ?? new NoopLogger(); const parser = new MusicXMLParser({ config }); const renderer = new Renderer({ config }); let formatter; const width = config.WIDTH; const height = config.HEIGHT; if (width && height) { formatter = new DefaultFormatter({ config, logger }); } else if (width) { formatter = new DefaultFormatter({ config, logger }); } else if (height) { formatter = new PanoramicFormatter({ config, logger }); } else { formatter = new PanoramicFormatter({ config, logger }); } const document = parser.parse(musicXML); const formattedDocument = formatter.format(document); return renderer.render(div, formattedDocument); } export async function renderMXL(mxl, div, opts) { const config = { ...DEFAULT_CONFIG, ...opts?.config }; const logger = opts?.logger ?? new NoopLogger(); const parser = new MXLParser({ config }); const musicXML = await parser.raw(mxl); return renderMusicXML(musicXML, div, { config, logger }); }