639381fd94
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>
44 lines
1.7 KiB
Markdown
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 |
|