Menu

Tree [4cb0ff] main v1.0.1 /
 History

HTTPS access


File Date Author Commit
 .github 2 days ago CHENGMAN CHENGMAN [d04535] add-test-workflow
 data 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 docs 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 examples 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 src 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 test 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 tools 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 .gitignore 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 .zenodo.json 1 day ago CHENGMAN CHENGMAN [92b5c3] prepare-zenodo-release
 CITATION.cff 1 day ago CHENGMAN CHENGMAN [92b5c3] prepare-zenodo-release
 LICENSE 2 days ago CHENGMAN CHENGMAN [b440b1] initial-release
 README.md 2 days ago CHENGMAN CHENGMAN [9ca639] add-test-badge
 package.json 1 day ago CHENGMAN CHENGMAN [4cb0ff] add-package-discovery-metadata

Read Me

Browser Audio-to-Sheet-Music Kit

test

A small, dependency-free JavaScript utility for turning already-detected note events into valid MusicXML, plus reproducible browser test data from an MP3/WAV transcription workflow.

This repository is useful when you already have note events shaped like this:

{
  "pitchMidi": 69,
  "startTimeSeconds": 0,
  "durationSeconds": 1
}

It does not upload audio and it does not contain an audio-transcription model. The included converter handles the notation stage: timing quantization, rests, chords, ties across measure boundaries, clef selection, and MusicXML output.

What is included

  • src/musicxml.js — converts note events to MusicXML 3.1.
  • examples/four-note-events.json — a four-note input fixture.
  • examples/four-note-score.musicxml — generated output from that fixture.
  • data/audio-format-comparison.csv — WAV/MP3 results from the same generated four-tone source.
  • data/sheet-music-browser-runs.csv — two measured browser runs, including output sizes and elapsed times.
  • docs/browser-audio-transcription-checklist.md — a concrete pre-publication test checklist.
  • test/musicxml.test.mjs — tests for notes, rests, chords, escaping, and measure-spanning ties.

Run it

Node.js 18 or newer is sufficient; there are no runtime dependencies.

npm test
npm run generate:example

Use the converter

import { buildMusicXml } from './src/musicxml.js';

const notes = [
  { pitchMidi: 69, startTimeSeconds: 0, durationSeconds: 1 },
  { pitchMidi: 72, startTimeSeconds: 1, durationSeconds: 1 },
];

const result = buildMusicXml(notes, 120, 'Two notes');
console.log(result.xml);

buildMusicXml() returns:

  • xml: the complete MusicXML document.
  • noteCount: the number of valid input note events.
  • measureCount: the number of generated 4/4 measures.

Data notes

The CSV files contain observed results, not estimates. The WAV and MP3 rows were produced from the same generated four-second, monophonic source at 44,100 Hz. The browser-run table records one 31-second live run and one four-second live smoke test. Thresholds and source construction are documented beside the data in docs/browser-audio-transcription-checklist.md.

A live browser implementation is available at MP3 MIDI Tool.

License

MIT