| Work in a browser music editor | Shared typed musical dataBrowser, Node and workers; no DOM, transport or synthesis dependency. | Use a Python workflowScore objects and analytical tools; browser integration needs an appropriate Python or service layer. | Use JavaScript directlyPure functions for notes, intervals, chords, scales, keys, sets, voicings and rhythm helpers. | Use a Python data pipelineScore/performance representations, note arrays and pianorolls for research workflows. |
| Translate musical representations | Concepts, notations and contextParse and transform sets, notes, rhythms and related values; supported bridges report assumptions/losses. Verify each path. | Rich score and pitch objectsManipulate notation, pitches, intervals and chords; broad analysis and symbolic-format support. | Focused theory conversionsNote/MIDI, interval, chord, scale, set and progression APIs. Often sufficient without another abstraction layer. | Score and performance structuresLoad MusicXML, MEI, Humdrum and MIDI; distinguish score timing from performed timing. |
| Analyze harmony beyond chord names | Sets, spaces and transformations12-TET/MIDI-centered core with pitch-class sets and note/point distributions. Not a complete microtonal model. | Tonal and post-tonal analysisIncludes Forte set classes and microtonal pitch representation; not confined to traditional tonal harmony. | Tonal theory and pitch-class setsChord/scale dictionaries, key relations, set comparisons and voice-leading functions. | Extract research featuresStructured note data and score/performance alignment support; a different focus from a theory lookup library. |
| Choose the right scope | Evaluate a specific representation bridgeLocal workspace package, not publicly published. Python is planned. No engraving, audio analysis or synthesis. | Choose score analysis and musicologyEstablished score creation/manipulation and analytical workflow; keep it when that is the problem. | Choose direct theory utilitiesPublished npm modules and browser support. Symbolic uses Tonal.js rather than replacing its useful primitives. | Choose score/performance datasetsUse for symbolic MIR, feature extraction and alignment rather than browser instrument authoring. |