922ad1f86b
La Fase 11 dio al userspace un reloj; la Fase 12, una voz. Hasta hoy renaser solo sabía dibujar para llamar la atención. - Driver `drivers/altavoz`: el canal 2 del PIT como generador de onda cuadrada + la compuerta del puerto 0x61. El canal 0 —latido del kernel— no se toca. `tono(hz)` es su única vía; un 0 la silencia. - Capacidad `sys_tono(frecuencia_hz)` — la undécima función del host. La bocina es un recurso único: pertenece a la ventana ENFOCADA, como el teclado desde la Fase 8c. Al cambiar el foco, el compositor la calla; la nueva dueña la reclama en su próximo fotograma. - App nueva `tonada` (`apps/tonada/`, wasm32): toca una escala de Do mayor y la dibuja como una escalera de barras. Junta el reloj (`sys_tiempo_mono`) y la bocina (`sys_tono`). - `GENESIS` crece de 6 a 7 apps; `tonada` es la maestra del escritorio. Verificado en QEMU. Visual: la escalera de `tonada` recorre la escala con el tiempo. Sonido: con la bocina enrutada a un WAV, el PCM capturado es una onda cuadrada oscilante de ~375 Hz — la frecuencia media de la escala de Do mayor. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
30 lines
1.1 KiB
TOML
30 lines
1.1 KiB
TOML
# =============================================================================
|
|
# renaser :: apps/tonada — Fase 12 :: una melodia visual para estrenar la bocina
|
|
# -----------------------------------------------------------------------------
|
|
# Un modulo WebAssembly puro que toca una escala —y la dibuja— gobernandose por
|
|
# dos capacidades del host: el reloj monotono (`sys_tiempo_mono`, Fase 11) que
|
|
# le marca el compas, y la bocina (`sys_tono`, Fase 12) por la que suena. Tiene
|
|
# su propio `[workspace]`: queda fuera del espacio de trabajo del kernel.
|
|
# =============================================================================
|
|
|
|
[package]
|
|
name = "tonada"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "renaser :: app WASM — una melodia visual: reloj del host + bocina"
|
|
|
|
[workspace]
|
|
|
|
# `cdylib` produce un modulo `.wasm` que exporta funciones — el formato que
|
|
# wasmi instancia. La aplicacion solo habla con el kernel por funciones del host.
|
|
[lib]
|
|
crate-type = ["cdylib"]
|
|
|
|
[profile.dev]
|
|
panic = "abort"
|
|
|
|
[profile.release]
|
|
panic = "abort"
|
|
opt-level = "s"
|
|
lto = true
|