# Open Lyric Alignment

Open Lyric Alignment (OLA) is an open, target-neutral interchange model for
lyrics and their placements against music or recordings. It preserves a useful
standard MIDI lyric stream while adding the structure needed for automatic
alignment, note anchors, manual corrections, multiple vocal lanes, and future
bindings.

Version 0.1 is a publishable draft. The core model and JSON representation are
implemented by the dependency-free `OpenLyricAlignment` C# library. The
Standard MIDI File (SMF) profile uses the deliberately unregistered three-byte
community namespace `00 4C 41` (the mnemonic `0LA`). It is not a MIDI
Association assignment, and the specification documents that collision risk
explicitly.

## Documents

- [Overview](overview.md) explains the architecture and compatibility strategy.
- [Core model 0.1](core-v0.1.md) defines voices, lanes, lines, cues, targets,
  mappings, placements, shared note links, anchors, and boundaries.
- [JSON representation 0.1](json-v0.1.md) defines the exact codec shape,
  canonical decimal-string integers, extensions, and version behavior.
- [SMF binding 0.1](smf-v0.1.md) defines the unregistered community namespace,
  exact 88-byte `FF 7F` header, edit-detection digests, and failure behavior.
- [RP-017 portable profile 0.1](rp017-portable-v0.1.md) defines the standard
  `FF 05` compatibility projection.
- [JSON Schema](schema/ola-0.1.schema.json) validates the structural 0.1 JSON
  form.
- [Fixtures](fixtures/README.md) include original valid and invalid examples
  released under CC0.
- [License](LICENSE.md) states the license boundaries for this directory.

The words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, **SHOULD NOT**, and
**MAY** are interpreted as described by RFC 2119 and RFC 8174 when, and only
when, they appear in all capitals.

## Conformance layers

OLA deliberately separates four claims:

1. **OLA Core 0.1** — the document satisfies the semantic model.
2. **OLA JSON 0.1** — the document has the specified JSON representation.
3. **OLA-SMF 0.1** — the JSON is embedded in SMF using the specified envelope
   and has a primary standard-lyric projection.
4. **OLA RP-017 Portable 0.1** — that primary projection satisfies the strict
   ASCII syllable conventions.

An implementation may support any subset, but it must not claim a layer whose
requirements it does not meet. A coarse whole-line `FF 05` projection remains
useful but is not mislabeled as strict RP-017.

## Repository status

This directory specifies a new format. It does not standardize an alignment
algorithm, include commercial lyrics, or require Keyfire-specific data. The
fixtures use original placeholder lyrics and may be reused without attribution.
