ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Aprende piano con las notas cayendo sobre el teclado. Sin suscripción, sin límites y sin internet.
Translation pending
EducationJavaScript · PythonGitHub @javi-molinOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Un tutor de piano con las notas cayendo sobre el teclado. Vive entero en el navegador: sin cuenta, sin suscripción, sin límite de canciones y sin internet una vez instalado.
Hecho con el pack de skills replica-skill,
a partir del mapa de funciones de una app de App Store. Clean room: se replicaron las
funciones y el recorrido, no su código, su catálogo, sus textos ni su marca.
El trabajo de reconocimiento está en replica/.
El repositorio ya trae el flujo de GitHub Pages. Solo hay que encenderlo:
main se publica solo: el flujo corre las tres suites y,
solo si pasan, despliega. Si algo falla, la versión viva se queda como estaba.Queda en https://javi-molin.github.io/piano/.
Hace falta
https. Instalarla y el modo sin conexión dependen de un service worker, y eso no funciona abriendo el archivo a pelo.
En el iPad, con Safari (no con Chrome: en iOS solo Safari sabe instalar):
Ya tienes el icono. Ábrelo desde ahí: va a pantalla completa, sin barras, y funciona en avión.
Elige si quieres los nombres de nota en Do Re Mi o en C D E, y empieza. El catálogo trae 14 piezas; la primera recomendada es la escala de Do mayor o Estrellita.
| Aprender | La canción te espera en cada nota, el tiempo que necesites. Si te adelantas, va contigo: el tempo lo pones tú. Es el modo para empezar. |
| Tocar | A tiempo, con la precisión contada pero sin presión. |
| Dominar | Con puntaje, estrellas y tres niveles de exigencia. Una pieza queda "dominada" con 90 % a velocidad real. |
| Escuchar | Solo oírla, viendo caer las notas. Para enterarte de cómo va antes de tocarla. |
Dentro del reproductor: velocidad del 25 al 200 % en vivo, manos (la que no practicas la toca la app), bucle, metrónomo. Al terminar, un mapa de calor te dice en qué compases se te escapa, y un botón te mete a practicar justo esos.
Z…M y Q…P..mid: arrastrándolo, eligiéndolo o pegando el enlace directo.
Esto es lo que hace que la biblioteca no tenga límite, y es exacto..mp3, .m4a, .wav, .ogg, .flac), uno o varios de golpe, sin
límite de peso ni de duración. La transcripción está en beta y tiene dos modos:
acordes y melodía, que saca varias notas a la vez, y solo la melodía, más rápido
y más limpio con una sola línea. El tempo lo detecta sola. Lo único que crece con la
duración es el tiempo: unos 12 segundos de análisis por minuto de audio (el triple en
modo acordes), con su barra de progreso..json desde Ajustes. Como no hay nube, esa es la
forma de llevártela a otro dispositivo o de no perderla si borras los datos de Safari.Pégale el enlace en + Añadir canción. Cascada lee el título (con el oEmbed público del servicio: sin clave y sin cuenta) y te deja en dos caminos:
Lo que no hace, y por qué: convertir el enlace solo, de un toque. Spotify no entrega audio que el navegador pueda leer, y YouTube ni permite descargarlo desde otra página ni lo autoriza. Y aunque llegara el audio, transcribir una mezcla completa con calidad necesita un modelo corriendo en un servidor. Aquí no hay servidor: ese es justo el precio de que la app sea tuya, gratis, sin cuenta y sin conexión. Así que en vez de un botón que falla, están los dos caminos que llevan a lo mismo en dos toques.
En Ajustes → Tu piano dices de cuántas teclas es: 25, 37, 49, 61, 76, 88 o sin límite. Si tu teclado no empieza en un Do, mueve la nota más grave por octavas.
Con eso puesto, lo que no entra en tu teclado se arregla como tú digas:
El detalle de cada canción te dice en una línea cuántas notas se movieron y cuántas se quitaron, para que no haya sorpresas.
En el detalle de la canción: − Octava / − Semitono / Original / + Semitono / + Octava, o el deslizador para cualquier punto entre −24 y +24 semitonos. La digitación se recalcula sola y el tono se recuerda para esa canción. Si al subir se te sale del teclado, el ajuste de tu piano lo recoge después.
14 piezas de dominio público, arregladas aquí: escala de Do y arpegios, Hanon n.º 1, Estrellita, Oda a la Alegría, Jingle Bells, Noche de paz, Minueto en Sol, estudio de arpegios, Greensleeves, Para Elisa, Canon en Re, Preludio en Do de Bach y el tema del Claro de luna. No hay nada con derechos: lo demás lo pones tú con tus MIDI.
Cero dependencias y cero compilación. Solo hace falta un servidor estático, porque los
módulos ES no cargan desde file://.
python3 -m http.server 8080 # o: npm start
# http://localhost:8080
npm test # 62 del núcleo + micrófono + tokens + despliegue (solo Node)
npm run test:e2e # 37 recorridos en Chromium (necesita playwright)
npm run icons # regenera los iconos desde los tokens
index.html una sola página, pantallas conmutadas
styles.css tokens de diseño como custom properties
sw.js service worker: todo del caché primero
src/score.js modelo musical: DSL propio, digitación, secciones, tu teclado
src/songs.js el catálogo de dominio público
src/midi.js lector y escritor de MIDI estándar, y entrada Web MIDI
src/audio.js piano sintetizado (sin un solo byte de sample)
src/pitch.js afinación: YIN en dos pasadas y FFT, compartido
src/mic.js notas por micrófono, de Mi1 a Do7, varias a la vez
src/transcribe.js audio a notas: melodía o acordes, tempo automático, grabación (beta)
src/keyboard.js geometría, dibujo y multitouch del teclado
src/roll.js el piano-roll que cae
src/player.js el tutor: modo espera, puntuación, bucle
src/store.js IndexedDB + localStorage, exportar e importar
src/ui.js, src/app.js pantallas y cableado
tools/make_icons.py genera los PNG del icono, sin librerías
tests/ núcleo, micrófono, tokens, despliegue y navegador
(con un piano simulado y un mp3 de prueba, los dos propios)
replica/ recon, arquitectura, diseño, marca, pruebas, paridad
.claude/skills/ el pack replica-skill, por si quieres repetir algún paso
Decisiones que explican casi todo lo demás:
requestAnimationFrame. rAF deriva; el audio no.Dicho antes de que lo descubras tú:
Paridad medida contra el mapa de recon: 90 / 100
(npm run parity). Lo que falta es exactamente lo de arriba.
MIT. Las obras del catálogo son de dominio público; los arreglos se escribieron aquí.