Files
sergio 639381fd94 feat(takiy): takiy-core — teoría musical + modelo de partitura
Pitch MIDI (clase/octava/frecuencia ET A4=440), Scale (raíz + patrón
de semitonos: mayor, menor natural, pentatónica), Chord (7 cualidades,
voicing, nombres) y un Score multipista con tempo: ScoreNote en
pulsos, Track con inserción ordenada y transposición atómica.

24 tests. Agnóstico de síntesis y UI, #![forbid(unsafe_code)].

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-20 16:45:55 +00:00

44 lines
1.7 KiB
Markdown

# modules/takiy/ — Composición musical asistida
**Propósito.** Herramienta de composición: un modelo de partitura sobre
teoría musical, con asistencia por IA y síntesis de audio. El núcleo es
agnóstico — el tiempo se mide en pulsos, no en segundos, y no conoce ni
audio ni UI.
## Crates
| crate | tipo | rol |
| ------------- | ---- | ------------------------------------------------------------ |
| `takiy-core` | lib | `Pitch`/`PitchClass`, `Scale`, `Chord`/`ChordQuality`, `Score`/`Track`/`ScoreNote` |
## Modelo
```text
PitchClass + octava ──► Pitch (MIDI, frecuencia ET A4=440)
Scale (raíz + patrón) Chord (raíz + cualidad)
ScoreNote (pulso, duración, velocidad) ──► Track ──► Score (tempo)
```
- **Altura**: número MIDI interno; clase, octava y frecuencia se derivan.
- **Tiempo en pulsos**: una partitura es independiente del tempo hasta
reproducirla (`Score::duration_seconds` aplica el bpm).
- **Transposición atómica**: si una nota se saldría del rango MIDI, la
pista entera no se altera.
## Dependencias
- `takiy-core` ← sólo `serde`. `#![forbid(unsafe_code)]`, determinista.
## Estado
`takiy-core` implementado y verde (24 tests). **Pendiente** (requieren
infra pesada, no verificables en modo desatendido):
| crate pendiente | rol |
| --------------- | ---------------------------------------------- |
| `takiy-synth` | síntesis de audio (`fundsp`) |
| `takiy-ai` | asistencia de composición (`ort`, instancia) |
| `takiy-canvas` | piano-roll / partitura visual |