ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Hum into a track and hear it come back as music.
EducationTypeScript · JavaScriptGitHub @DanDiaz123OnlineOwner 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
Learn music by humming it. HumStudio turns your voice into editable multitrack arrangements, explains keys and chords with Gemini, and exports MIDI. Built for HackRU Fall 2026.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Learn music by humming it.
A music learning and composition sketchpad built for HackRU Fall 2026 · Education Track. Hum a melody, see it become editable notes, build an instrumental arrangement, and explore the theory behind your music.
You can know a melody by ear without knowing its notes, rhythm, or chords. HumStudio connects the sound you make to those ideas through a simple loop:
Hum → See your notes → Experiment → Listen → LearnRead the full README ↗Learn music by humming it.
A music learning and composition sketchpad built for HackRU Fall 2026 · Education Track. Hum a melody, see it become editable notes, build an instrumental arrangement, and explore the theory behind your music.
Try the live demo · Run locally · License
You can know a melody by ear without knowing its notes, rhythm, or chords. HumStudio connects the sound you make to those ideas through a simple loop:
Hum → See your notes → Experiment → Listen → Learn
Live pitch feedback, labeled notes, and chord overlays make music theory visible. Editing and playback let you hear what changes when you move a note, adjust its timing, or add another instrument. The Gemini theory agent explains the current progression in plain language and suggests variations to explore.
Use desktop Chrome or Edge with a microphone. Demo hum provides a clearly labeled synthetic example when a microphone is unavailable.
| Feature | What you can do |
|---|---|
| Five instrument tracks | Build Melody, Bass, Keys, Drums, and Strings parts across eight bars of 4/4. |
| Hum-to-notes | Record a short phrase with live pitch feedback and a spectrogram, then edit the generated notes. |
| Learn mode | Explore note names, solfège, scale degrees, key, chord symbols, and Roman numerals. Follow the active chord during playback. |
| Gemini theory agent | Get plain-language explanations of your chord progression and ideas for alternative chords and voicings. |
| Independent track settings | Choose a sound, Low/Medium/High sensitivity, and Snap Off/1/4/1/8/1/16 for each instrument. |
| Piano-roll editing | Add, move, resize, delete, copy regions, repeat phrases, and undo or redo changes. |
| Five drum lanes | Work with Kick, Snare, Closed hat, Open hat, and Crash while keeping every lane visible. |
| Playback controls | Play, pause, stop, rewind, change tempo, mute or solo tracks, and use a metronome and count-in. |
| Save and export | Autosave in your browser, save/open .humstudio.json projects, and export a multitrack .mid file. |
Selected sounds for all five instruments load automatically when the app opens. Downloads have retry and synth fallback support; playback starts after a user gesture.
The recording workflow is designed for clear, one-note-at-a-time humming in a reasonably quiet room. Harmony inference and AI explanations can be imperfect; you can edit notes and select a different key.
| Area | Technology |
|---|---|
| Application | Next.js 16, React 19, TypeScript |
| Microphone and pitch | Web Audio API, Pitchy |
| Note generation | Local DSP segmentation, rule-based harmony, quantization |
| Instrument playback | Tone.js 15, smplr sampled presets with synth fallback |
| Theory agent | Gemini streaming REST API through a Next.js Route Handler |
| MIDI | @tonejs/midi |
| Persistence | Browser localStorage and versioned JSON project files |
| Interface | Custom CSS, Archivo typography, canvas spectrogram |
localhost in development or HTTPS for microphone access on a hosted deployment.npm ci
Create a Gemini API key in Google AI Studio. Add it to .env.local in the repository root:
GEMINI_API_KEY=your-key-here
The file is ignored by Git. Keep the key server-side and do not give it a NEXT_PUBLIC_ prefix. For hosted deployments, set the same variable in the server environment.
The default model is gemini-3.5-flash-lite. Set GEMINI_MODEL to override it. Restart the development server after changing environment variables. If the key is missing, the Explain dialog shows a configuration message.
npm run dev
Open http://localhost:3000. The studio starts at 120 BPM, 1/4 Snap, and Medium sensitivity, with labeled sample parts on Keys and Drums.
On Windows PowerShell, use npm.cmd and npx.cmd if execution policy blocks the script wrappers.
| Action | Control |
|---|---|
| Play / pause | Space |
| Record / stop recording | R |
| Open an instrument | 1–5 |
| Return to all tracks / cancel a copy preview | Escape |
| Mute / solo the open track | M / S |
| Toggle Learn / metronome | L / K |
| Undo / redo | Ctrl+Z / Ctrl+Shift+Z |
| Save project | Ctrl+S |
| Show all shortcuts | ? |
Copy a region: open a track, press Ctrl+C (Cmd+C on macOS), and drag a rectangle over notes. Drag the highlighted group horizontally to insert copies, or use Ctrl+V at the playhead. Copying supports chords and multiple drum rows within the same instrument. Each successful paste is one Undo step; collisions and placements outside the song are rejected together.
Adjust a take: each track retains its own sensitivity and Snap settings. The latest unedited take can be regenerated after Save/Open. Hand-edited notes remain intact when sensitivity changes. Project files use schema v3 and support v1/v2 imports.
Regression suites cover pitch segmentation, harmony, playback, sound loading, editing, project validation, MIDI, and theory-agent helpers. Browser suites cover studio interactions, startup sounds, per-track settings/copy, and persistence boundaries.
To check implementation changes:
npm run lint
npx tsc --noEmit
npm test
npm run build
Browser suites use an existing Playwright installation and Microsoft Edge. For example, with the development server running:
node src/tests/browser/studio-interactions.mjs <path-to-playwright-package> [http://localhost:3000]
Related suites: startup sounds, per-track settings and copy, and persistence boundaries. Results are written to ignored .test-build/. Synthetic microphone tests exercise the recording pipeline; human listening and learner feedback require separate checks.
HumStudio's original source code is licensed under the MIT License. Third-party libraries and sampled sounds retain their own licenses. smplr is MIT-licensed; sound sources include CC BY 3.0, CC0, and public-domain samples. See sound credits and license notices and the smplr MIT notice.
Event: HackRU Fall 2026 · Track: Education · License: MIT.