feat(renaser): Fase 15 — la voz del sistema (acorde + eventos)
La bocina pertenecía al app enfocado (Fase 12), pero el kernel necesita hablar también. Ahora tiene voz propia, prioritaria. - `altavoz`: cola `SECUENCIA: Mutex<VecDeque<(u32,u32)>>` (freq, ms) + reloj `FIN_NOTA: AtomicU64`. `agendar(&[...])` encola; `atender()` (tarea del compositor cada fotograma) avanza la secuencia y silencia al acabar; `kernel_sonando()` gatea a los apps — mientras el kernel suena, `sys_tono` no-op. - Catálogo: VOZ_BIENVENIDA (Do5-Mi5-Sol5, 500 ms), VOZ_LANZAR (700→1050 Hz), VOZ_CERRAR (900→520 Hz), VOZ_DESALOJO (180 Hz). - Hitos: `kernel_main` agenda el acorde antes de `ejecutor.run`; `nacer_ventana` (Alt+N), `cerrar` (Alt+Q), `desalojar` (falla) agendan al hacer su trabajo. - De paso: las pestañas de la barra de tareas calculan su tinta por brillo del fondo (ITU-R BT.601); la pestaña crema del desalojo por memoria, que llevaba texto blanco invisible, ahora luce su nombre en tinta oscura. Verificado en QEMU con `-audiodev wav -machine pcspk-audiodev=spk`: el PCM crudo trae, en orden, el acorde de bienvenida (~520, 630, 760 Hz), un brevísimo 180 Hz (las balizas de discola/glotona desalojadas) y después la escala de Do mayor de tonada. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1008,3 +1008,41 @@ barra al pie con la lista de quien vive en la casa.
|
||||
enfocada, índigo), las desalojadas en sus colores de baliza. Un clic
|
||||
sobre `pulso` cambia el foco al instante: el borde índigo del compositor
|
||||
deja la maestra y envuelve a `pulso`, y la pestaña `pulso` se ilumina.
|
||||
|
||||
## Fase 15 — La voz del sistema — 2026-05-23
|
||||
|
||||
La bocina pertenecía a la ventana enfocada (Fase 12), pero el kernel necesita
|
||||
hablar también: un acorde al abrir la casa, un repique al recibir un inquilino
|
||||
nuevo, un bajo al echar a uno que se rompió. La Fase 15 le da al sistema su
|
||||
propia voz, prioritaria sobre las de los apps.
|
||||
|
||||
### Añadido
|
||||
- **`altavoz::SECUENCIA`** — una `VecDeque<(u32, u32)>` (frecuencia, duración
|
||||
ms) que el kernel encola con `altavoz::agendar(&[(...)])`. `FIN_NOTA` (un
|
||||
`AtomicU64`) recuerda el milisegundo del reloj monótono en que la nota
|
||||
actual debe terminar.
|
||||
- **`altavoz::atender()`** — invocada por la tarea del compositor cada
|
||||
fotograma; si la nota actual ya terminó, saca la siguiente de la cola y la
|
||||
toca; si la cola está vacía, silencia.
|
||||
- **`altavoz::kernel_sonando()`** — `true` mientras `FIN_NOTA` esté en el
|
||||
futuro. `sys_tono` lo consulta y, en ese caso, ignora la llamada del app:
|
||||
el kernel no se interrumpe a sí mismo.
|
||||
- **Catálogo de voces**: `VOZ_BIENVENIDA` (Do5-Mi5-Sol5 ascendente, 500 ms),
|
||||
`VOZ_LANZAR` (repique 700→1050 Hz), `VOZ_CERRAR` (descendente 900→520 Hz),
|
||||
`VOZ_DESALOJO` (bajo 180 Hz, 260 ms).
|
||||
- **Hitos sonoros**: `kernel_main` agenda `VOZ_BIENVENIDA` justo antes de
|
||||
`ejecutor.run()`. `nacer_ventana` agenda `VOZ_LANZAR`. `cerrar` agenda
|
||||
`VOZ_CERRAR`. `desalojar` agenda `VOZ_DESALOJO`.
|
||||
|
||||
### Cambiado
|
||||
- Las pestañas de la barra de tareas calculan su tinta por brillo del fondo
|
||||
(ITU-R BT.601): la pestaña amarilla pálida del desalojo por memoria, que
|
||||
llevaba texto blanco invisible, ahora luce su nombre en tinta oscura.
|
||||
|
||||
### Verificado
|
||||
- QEMU con `-audiodev wav -machine pcspk-audiodev=spk`. El PCM crudo revela,
|
||||
en orden, las tres notas del acorde de bienvenida (≈520, 630, 760 Hz),
|
||||
inmediatamente un brevísimo bajo de 180 Hz (la baliza de discola/glotona
|
||||
desalojadas), y después la escala de `tonada` tomando la bocina.
|
||||
- Captura: la pestaña de `glotona` (crema) muestra ahora su nombre legible
|
||||
en tinta oscura; la de `discola` (púrpura) sigue clara, como antes.
|
||||
|
||||
Reference in New Issue
Block a user