Teoría musical

Explora acordes y escalas

Encuentra KeyScales exactas, escucha sus notas, compara relaciones y lleva el resultado a tu instrumento.

JolyMusic — Explora acordes y escalas
Captura real de la interfaz de JolyMusic descrita en esta guía.

Objetivo

El catálogo de acordes y escalas conecta una tonalidad raíz con una estructura de escala o acorde.

Referencias de la interfaz

  • Signature elige la fundamental escrita y la ortografía de las alteraciones.
  • Tipo limita el catálogo a escalas, acordes o ambos.
  • La búsqueda encuentra nombres, alias y tonalidades; los controles cambian la vista.
  • Run y Voicing convierten el resultado en un patrón tocable, no solo en una definición.

Método paso a paso

  1. Busca por tonalidad, nombre, alias, notas o tipo musical.
  2. Abre un resultado para examinar tonos, intervalos, alias y KeyScales relacionadas.
  3. Usa la reproducción para escuchar la colección ascendente, descendente o como acorde.
  4. Abre la vista instrumentada para ubicar el mismo material en un piano, diapasón u otro instrumento.

Consejos de práctica

  • Compara colecciones mayores y menores paralelas desde la misma fundamental.
  • Canta cada grado antes de tocarlo para conectar oído y teoría.

Ejemplo guiado

Ejemplo: compara Do mayor con Do séptima dominante

Filtra Do, abre la escala mayor y nombra cada intervalo. Vuelve al catálogo, abre C7 e identifica la séptima modificada. Escucha el arpegio y elimina la fundamental para oír cómo sobrevive la función.

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/KeyScale.md

Overview

The KeyScale is not a standalone entity. It is a computed projection built from a Scale, a Key, and the key's interval mapping. The main API variants are:

  1. KeyScaleOutput DTO: The full projection used by /api/key_scales.
  2. KeyScaleSelectOutput DTO: The compact projection used by /api/key_scales/select.
  3. KeyScaleProvider: The state provider that builds the full projection.
  4. KeyScaleSelectProvider: The state provider that builds the selector/autocomplete projection.
  5. Scale::getTonesData(Key $key): The resolver that computes the tone rows for a scale in a given key.

KeyScaleProvider State Provider

The KeyScaleProvider is a custom API Platform state provider that generates KeyScaleOutput DTOs.

File Location: src/State/KeyScaleProvider.php

Core Logic

  1. Fetching Data: The provider delegates entity loading to the standard Doctrine item/collection providers.
  2. Key Context: It uses a keyId filter to determine the Key context. If the filter is absent or invalid, it resolves a default C natural key first, then falls back to other neutral keys if needed.
  3. Visibility Rules: It only exposes scales the current viewer can access:
  • public scales
  • private scales owned by the viewer
  • private team scales shared with one of the viewer's teams
  1. DTO Transformation: It maps each visible Scale to a KeyScaleOutput DTO. This includes:
  • copying basic scale metadata
  • computing keySlug, scaleSlug, and canonicalPath
  • calling Scale::getTonesData() to resolve tone rows
  • resolving keyBassInterval when bassIntervalId is supplied
  • building fullName, including slash-bass notation when applicable
  • optionally computing contains[] and containedIn[] relationships for item requests when relationships=true

Diagnóstico rápido

  • Ortografía inesperada: revisa la tonalidad seleccionada antes de considerar incorrecta la colección.
  • No hay resultados: borra filtros de tipo y etiquetas y busca un alias más corto.
  • La reproducción suena turbia: elige una disposición abierta o arpegio antes de cambiar el acorde.

Comprobación antes de terminar

  • Fundamental, tipo y ortografía son intencionales.
  • Puedes nombrar o cantar cada intervalo mostrado.
  • Has escuchado y ubicado la colección en un instrumento.

Pasar a la práctica

Abre la herramienta relacionada y aplica inmediatamente este método a un ejemplo sencillo.

Explorar acordes y escalas →