Soroush Neyestani

Application Developer

Software Developer

Data Scientist

Project Manager

Senior Project Manager

IT Administrator

Fullstack Developer

Android Developer

iOS Developer

MusicXML to Braille

From Structured Music Notation to Accessible Braille

Introduction

MusicXML to Braille is an accessibility-focused application that converts structured digital music notation into a Braille processing workflow. It extends the project beyond ordinary text conversion and addresses a fundamentally different problem: music is not just a sequence of characters. A score has structure, timing, hierarchy, relationships, and context. To create meaningful Braille output, that structure has to be understood before anything can be rendered.

The application therefore treats MusicXML as structured musical data rather than as plain text.

Why MusicXML?

MusicXML is one of the most widely used interchange formats for digital music notation. It allows notation software to describe a score in a machine-readable way, including information such as parts, measures, notes, rests, pitch, duration, voices, and other musical elements.

That makes MusicXML a strong input format for accessibility work. Instead of trying to infer musical meaning from a PDF, image, or visually rendered score, the application can work with the underlying musical structure directly.

A visual score might show a note on a staff, but a structured MusicXML document can describe what that note is, where it belongs, how long it lasts, which part or measure contains it, and how it relates to the rest of the score. Those relationships are exactly the kind of information a Braille conversion pipeline needs.

Why Music Braille Is Not a Character-Mapping Problem

Ordinary text conversion can sometimes be introduced with a simple example: A maps to one Braille cell, B maps to another. Music does not work like that.

A musical symbol cannot always be processed correctly in isolation. Meaning can depend on its position in the score, the current musical context, surrounding elements, timing, grouping, and the notation rules being applied. A reliable MusicXML-to-Braille system therefore needs more than a lookup table; it needs a processing pipeline.

Processing Pipeline

MusicXML → Parsing → Normalization → Musical structure analysis → Canonical internal representation → Braille rules processing → Braille output.

Each stage has a separate responsibility. This separation keeps the system maintainable and prevents Music Braille rules from becoming mixed directly into file-reading or user-interface code.

Structured Input Matters

One of the central design principles of this application is preservation of structure. A score can contain parts, measures, notes, rests, pitch information, durations, voices, and ordered musical events. If that score is flattened into a string of visible labels, much of the relationship between those elements disappears.

The application instead preserves the hierarchy of the source document. A note is not treated merely as the text “C4.” It is an element located inside a musical context. The same principle applies to measures, rests, durations, and other supported notation data. This gives the Braille layer richer information to work with and makes the architecture suitable for future extension.

1. MusicXML Input

The workflow begins with a MusicXML file. Rather than reading the file as arbitrary XML text, the parser interprets the musical document structure. The purpose of this stage is to identify the relevant musical entities and preserve their relationships.

2. Normalization

Different notation programs can produce MusicXML with variations in formatting and representation. The normalization layer reduces unnecessary variation before the data reaches the Braille engine. The goal is to create predictable input for later stages.

Normalization is especially important in standards-based software because the rules engine should not need to understand every serialization detail used by every notation editor.

3. Musical Structure Analysis

After normalization, the application analyzes the musical information as music. The system can work with concepts such as the organization of parts and measures and the ordered musical events contained within them. Musical values are interpreted in context rather than treated as unrelated strings.

This is the point where the application stops behaving like a generic XML converter and starts behaving like a music-processing component.

4. Canonical Representation

The parsed and analyzed notation is represented internally in a canonical form. This intermediate layer separates how MusicXML stores a score from how the Braille engine needs to understand that score.

As a result, the Braille rules do not have to depend directly on MusicXML tags, and the MusicXML parser does not need to know how every Braille symbol is ultimately rendered. This separation makes the system easier to test, maintain, and extend.

5. Braille Rules Processing

The canonical musical representation is passed to the Braille processing layer. Here, supported musical information can be translated according to the rules and contextual logic required by the Music Braille implementation.

The important point is that the rules engine receives structured musical meaning rather than raw XML. This allows the system to make decisions based on musical context and makes it possible to expand the rule set without redesigning the entire application.

6. Braille Output

The final stage produces Braille-oriented output that can be consumed by the surrounding Braille platform and future accessibility workflows. The architecture is intentionally designed so that output is not tied permanently to one user interface. The same core processing can later be exposed through different applications, APIs, integrations, or assistive-technology tools.

Designed as a Reusable Core, Not a One-Off Converter

A major goal of the project is reusability. It would have been possible to build a small application that opens one MusicXML file and immediately generates one specific output format. That approach would be faster initially, but it would tightly couple file parsing, Braille rules, rendering, and the user interface.

Instead, the project separates these responsibilities. The result is a foundation that can support multiple entry points in the future.

Potential Integration Targets

  • desktop or web interfaces
  • APIs
  • SDK integrations
  • Microsoft 365 related workflows where appropriate
  • accessibility platforms
  • educational tools
  • Braille production workflows
  • future hardware integrations

Accessibility Beyond Plain Text

Digital accessibility is often discussed primarily in terms of documents, websites, and ordinary text. Music introduces another dimension.

A sighted musician can inspect the spatial layout of a score and immediately recognize staves, note positions, measure boundaries, rhythmic grouping, and other visual relationships. A nonvisual workflow needs that information to be represented in a different way. This is why simply extracting visible characters from sheet music is not enough.

MusicXML provides structure, and Music Braille provides a nonvisual notation system. The application connects those two domains through a software architecture designed around semantic information rather than appearance.

Why Not Convert from PDF or an Image?

PDFs and images are visual representations. They are useful for printing and viewing, but they usually do not expose the same structured musical information as MusicXML. Converting a scanned or rendered score first requires a separate recognition problem: the software has to determine what the notation means from pixels or page geometry.

MusicXML avoids much of that ambiguity because it starts with machine-readable notation. For this reason, MusicXML is an excellent source format when the original structured score is available. This application focuses on that structured path rather than trying to solve optical music recognition at the same time.

Separation of Concerns

Parser isolation — the MusicXML parser is responsible for understanding the source format, not Braille rendering.

Canonical data model — musical information is normalized into a stable internal representation before rule processing.

Rule-driven conversion — Braille behavior belongs in the Braille rules layer rather than being scattered through XML parsing code.

Testability — each layer can be tested independently: parsing, normalization, canonical representation, rule processing, and output.

Extensibility — additional musical rules and supported MusicXML structures can be added without replacing the entire pipeline.

Portability — the processing core can be reused behind different interfaces.

From Music Notation to Braille

At a high level, the application answers a simple question: how can a structured digital score become structured Braille output without throwing away the musical information in between?

The answer is not “extract the text and replace characters.” It is “preserve the score, understand its structure, normalize the musical information, apply the Braille rules, and then produce the output.” That difference defines the project.

Example Concept

A simplified MusicXML fragment might describe a note with data such as pitch step, octave, duration, measure position, and part membership. Instead of converting the XML tag names themselves, the application interprets those values as a musical event.

Internally, the system can represent the event in a clean, format-independent form and then let the Braille layer decide how that musical event should be encoded. This makes the conversion semantic rather than textual.

Integration with the Wider Braille Platform

MusicXML to Braille is part of a broader architecture in which Braille processing is handled by reusable core components. That is important because Music Braille should not become an isolated codebase with its own duplicate infrastructure.

Where possible, common concerns such as normalization strategy, canonical data handling, validation, SDK exposure, and output integration can follow the same architectural principles used elsewhere in the Braille platform. At the same time, music remains its own domain.

Text Braille and Music Braille have different rule systems, different kinds of context, and different semantic structures. The architecture therefore shares infrastructure without pretending that musical notation is simply another alphabet.

For Developers

From a development perspective, one of the most important properties of the application is the boundary between source format and Braille logic.

MusicXML is an input adapter. The Braille engine is the domain layer. The internal representation sits between them.

This allows future input formats to be added without rewriting the Braille engine, provided they can be normalized into the same musical model. It also allows different outputs and integrations to consume the processed Braille result.

In architectural terms: Input Adapter → Domain Model → Rules Engine → Output Adapter.

Potential Future Extensions

  • broader coverage of MusicXML notation constructs
  • richer Music Braille rule coverage
  • additional validation and conformance suites
  • import workflows for more notation applications
  • export formats optimized for embossing or refreshable Braille displays
  • educational interfaces for students and teachers
  • API access for third-party applications
  • SDK support for accessibility developers
  • integration with Braille hardware and production workflows
  • conversion previews and structured diagnostics

Quality and Validation

A structured conversion engine needs predictable behavior. For that reason, the project is designed around deterministic processing and testable rules. When a musical structure is parsed and normalized, the same supported input should produce the same internal representation and the same rule decisions.

This helps with regression testing, debugging, standards review, future conformance work, reproducible builds, and safer extension of the rule set. It also makes errors easier to locate: a problem can be identified as a parsing issue, normalization issue, domain-model issue, rule issue, or output issue instead of being hidden inside one large conversion function.

Who Is It For?

Blind and visually impaired musicians — the long-term purpose is to make digital music notation more usable in Braille-oriented workflows.

Music educators — structured conversion can support more accessible preparation of learning material.

Schools and accessibility services — institutions often receive source scores in digital notation formats and need repeatable accessibility workflows.

Music publishers and notation-tool developers — a reusable API or SDK can make it easier to integrate Braille support into existing systems.

Accessibility developers — the architecture can provide a foundation for applications that need structured music-to-Braille processing without implementing the entire rules engine themselves.

Braille production workflows — structured output can eventually support downstream processes such as embossing and other tactile-output systems.

Current Status

The MusicXML-to-Braille application has reached its completed project milestone within the current development roadmap.

The key achievement is not simply that a MusicXML file can enter the system. The important result is that music notation now has a dedicated structured path into the Braille architecture.

This extends the project beyond natural-language text and demonstrates that the same overall platform can support a fundamentally different accessibility domain while keeping the domain logic properly separated.

A Small App with a Larger Architectural Role

On the surface, the feature can be described in one line: Convert MusicXML to Braille.

Underneath that line is a more important architectural idea: accessibility conversion should preserve meaning.

For plain text, meaning is carried largely by language and context. For spreadsheets, meaning can also be carried by rows, columns, and cell structure. For music, meaning is carried by notes, timing, measures, voices, and relationships inside the score.

The software therefore has to understand the structure of the source before it can produce trustworthy accessible output. That principle is at the center of MusicXML to Braille.

Conclusion

MusicXML to Braille creates a structured bridge between digital music notation and Braille processing.

It does not treat MusicXML as a block of XML text and it does not reduce a score to a list of visible symbols. Instead, it preserves musical structure, normalizes it into a canonical internal model, and passes that model into a rule-driven Braille workflow.

The result is a cleaner and more extensible foundation for Music Braille accessibility.

From music notation to Braille — with the structure in between preserved.