Armonía
Construye y escucha una armonía
Crea una progresión, organízala en secciones y escucha cada evento armónico en contexto.

Objetivo
Una Armonía es una secuencia temporal de KeyScales. Puede representar una cadencia, una progresión completa o el plan armónico de una canción.
Referencias de la interfaz
- La búsqueda de texto encuentra progresiones por nombre.
- La transposición muestra las mismas relaciones desde otro centro tonal.
- Los filtros Cadencia y Progresión separan funciones cortas y formas largas.
- Etiquetas y vistas permiten pasar del catálogo a tarjetas detalladas.
Método paso a paso
- Crea una Armonía y elige su contexto tonal, visibilidad y etiquetas descriptivas.
- Añade secciones para separar introducciones, versos, estribillos, puentes o ejercicios.
- Inserta eventos armónicos, elige sus KeyScales y define su duración y orden.
- Escucha la línea temporal y reutilízala en interpretaciones, play-alongs, generadores o integraciones.
Consejos de práctica
- Empieza con cuatro eventos y revisa la conducción de voces antes de añadir complejidad.
- Usa nombres de sección claros para mantener comprensible la línea temporal.
Ejemplo guiado
Ejemplo: crea un bucle ii–V–I
Crea tres eventos en Do mayor: Re menor séptima, Sol séptima dominante y Do mayor séptima. Da un compás a cada uno, repite la sección y transpón toda la Armonía a Fa para comparar las funciones.
Documentación canónica del proyecto
Esta referencia se genera directamente desde los archivos Markdown del repositorio; no está duplicada en los fixtures.
Source: Documentation/Harmony.md
1. Overview
Harmonies serve as the "logical layer" over musical notes. While a Note represents a specific performance event, a Harmony defines the rules of the musical space at a given time.
- Analytical Labeling: Provides text labels (e.g., "C Major", "Ab7#11") on the timeline.
- UI Highlighting: Determines which lanes in the Piano Roll are colored as "in-scale."
- Geometric Visualization: Drives the active nodes in the Circle of Fifths, Tonnetz, and Network views.
3. Workspace Integration
Harmonies are consumed by performances and workspace track containers as global timeline context. A single workspace can reference multiple harmonic palettes through HARMONY global events, and each event carries the active key/scale information used by theory tools.
Harmony Event Context
Harmony context is expressed as global events with timing metadata:
tick: The point where the harmonic context starts.durationTick: The active range of the harmony.label: The display label used by timeline and theory views.keyScale: The resolved key/scale payload used by note highlighting and visualization.
Workspace loaders merge these events into the global lane feed so the piano roll, instrument views, and graphical harmony surfaces read the same harmonic timeline.
6. Rendering Best Practices
6.1 Global Timeline (Harmony Lane)
Harmonies should be rendered as "pills" or segments on the global timeline. The label (e.g., "C Major") serves as the primary text. Tapping these pills should trigger a theory assistant or scale selector.
6.2 Contextual Zebra Shading
The Piano Roll background must adapt to the active Harmony.
- In-Scale: Vertical lanes corresponding to pitch classes found in
data.keyScale.tonesreceive a subtle highlight using the providedtoneColor. - Out-of-Scale: Lanes not in the set are rendered with a desaturated, darker background.
6.3 Native Highlighting
For native components (Fretboard/Keyboard), use the tones array to guide the user. Active scale degrees should be visually distinguished from non-scale tones to assist in "follow-along" modes.
6.4 WebView for Geometric Theory
Complex theory visualizations (Circle of Fifths, Tonnetz) should remain in the WebView layer to leverage existing coordinate-to-theory mapping logic. Use the JolyNativeBridge to sync the current workspace state to these views.
Diagnóstico rápido
- Suena el acorde equivocado: revisa la KeyScale del evento exacto, no solo la fundamental de la Armonía.
- Orden confuso: define nombres de secciones y posiciones antes de añadir eventos.
- Transposición inesperada: decide si deben conservarse ortografía, alturas absolutas o grados funcionales.
Comprobación antes de terminar
- Secciones y eventos siguen un orden intencional.
- Cada evento tiene duración y KeyScale exacta.
- Has escuchado la línea temporal completa.
Pasar a la práctica
Abre la herramienta relacionada y aplica inmediatamente este método a un ejemplo sencillo.