ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Тренажёр нот: узнавать ноты на нотном стане в скрипичном и басовом ключе
Translation pending
EducationJavaScript · CSSGitHub @Igor-BondOnlineOwner 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
Тренажёр нот для ребёнка: узнавать ноты на нотном стане в скрипичном и басовом ключе
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Тренажёр для ребёнка: узнавать ноты на нотном стане в скрипичном и басовом ключе. Работает офлайн, ставится на главный экран как приложение. Приложение показывает одну ноту и спрашивает, как она называется. Десять вопросов — занятие, за занятие дают звёзды, неузнанные ноты можно повторить отдельно. Если нота не узнаётся, подсказка показывает ближайшую опорную ноту и предлагает посчитать от неё ступени — так ноты и учат помимо тренажёра. За три верных подряд загорается огонёк, за занятие без ошибок сыплется конфетти и играет фанфара.Read the full README ↗
Тренажёр для ребёнка: узнавать ноты на нотном стане в скрипичном и басовом ключе. Работает офлайн, ставится на главный экран как приложение.
Приложение показывает одну ноту и спрашивает, как она называется. Десять вопросов — занятие, за занятие дают звёзды, неузнанные ноты можно повторить отдельно.
Если нота не узнаётся, подсказка показывает ближайшую опорную ноту и предлагает посчитать от неё ступени — так ноты и учат помимо тренажёра. За три верных подряд загорается огонёк, за занятие без ошибок сыплется конфетти и играет фанфара.
Тема следует за системой: светлая днём, тёмная вечером. Сам нотный стан остаётся листом бумаги в любой — ноты ребёнок читает чёрными по белому.
Полное описание — docs/SPEC.md. Что и почему решали — docs/DECISIONS.md.
Рабочее целиком: семь уровней от трёх нот до двух ключей вперемешку, занятие, подсказка по опорным нотам, итог со звёздами, работа над ошибками, звук нот, прогресс между запусками, офлайн.
Не сделано: узнавание на слух, длительности и ритм, знаки альтерации, несколько детей на одном устройстве.
Приложение — набор статических файлов, сборка не нужна. Но модули ES и
сервис-воркер не работают через file://, поэтому нужен любой локальный
сервер:
powershell -ExecutionPolicy Bypass -File tools/serve.ps1
Затем открыть http://localhost:4180. Порт меняется ключом -Port.
Node в проекте не используется, но если он установлен, подойдёт и
npx serve ..
Открыть /tests/index.html на том же локальном сервере. Проверки идут в
браузере, без сборки и без установки чего-либо; зелёная полоса сверху и
галочка в заголовке вкладки означают, что всё прошло.
Работают они на отдельном ключе хранения notes.test — звёзды ребёнка при
запуске не трогаются. Сервис-воркер страница снимает сама, иначе она
показывала бы не то, что лежит в репозитории, а то, что осталось в кэше у
этого браузера. Снимает она только своё — воркер «Нот» и кэши notes-*:
на Pages у того же адреса есть соседи, и их офлайн трогать нельзя.
На каждый push и pull request те же проверки прогоняет GitHub Actions: поднимает статический сервер, открывает эту же страницу настоящим браузером и читает итог. Отдельным шагом сверяется список офлайн-кэша с деревом проекта.
index.html разметка оболочки, без стилей и скриптов
css/style.css все стили, цвета переменными в :root
sw.js кэш и офлайн; при правке файлов поднимать APP_VERSION
manifest.json описание PWA
js/main.js точка входа
js/app.js экраны и маршрутизация (#/занятие/октава)
js/version.js версия приложения
js/core/notes.js ноты, ключи, положение на стане, опоры, частоты
js/core/staff.js рисование стана, ключей и ноты
js/core/levels.js уровни и их наборы нот
js/core/drill.js движок занятия: очередь, ответы, счёт
js/core/store.js прогресс в localStorage
js/core/tone.js звук нот через Web Audio
js/core/haptics.js вибрация на ответ
js/core/actions.js делегирование событий по data-action
js/core/ui.js сборка разметки с экранированием
js/modules/home.js выбор уровня
js/modules/drill.js экран занятия
js/modules/result.js итог занятия
docs/ описание проекта и журнал решений
tests/ проверки, запускаются в браузере
tools/serve.ps1 локальный сервер для разработки
tools/make-icons.ps1 генерация значков, включая maskable
tools/check-precache.ps1 сверка списка офлайн-кэша с деревом проекта
tools/ci-tests.mjs запуск тех же проверок из CI настоящим браузером
Правила, которые важно не нарушить:
js/core/notes.js и нигде больше: ни один
экран не считает положение ноты сам;ui.esc() или
шаблон ui.html;data-action, а не onclick;sw.js и поднимать
APP_VERSION.GitHub Pages из ветки main. Файл .nojekyll обязателен — иначе Pages
игнорирует каталоги, начинающиеся с подчёркивания. Все пути в проекте
относительные, поэтому приложение работает и из подкаталога вида
/Notes/.