Skip to content

Arcade › Piano Pal

Piano Pal

  • music
  • piano
  • educational
  • 3d
  • ai-companion
  • creative
0
Remix it Discord

4 plays

How to play

Click the game above and it runs right here in your browser. No download, no installer, no account needed. Corbin Cruz built it with Cinevva, so it works on a phone or a tablet too.

Discussion

Nobody has said anything about Piano Pal yet. Play it, then tell Corbin Cruz what you would add next.

Make your own game

Piano Pal was built by Corbin Cruz with the Cinevva game creator: describe the game you want in chat, watch it get built, and play it in your browser minutes later.

Remix Piano Pal opens the real game in the creator and forks its actual files, chat and design doc, so you start from the code rather than from a description.

Read the build brief for Piano Pal

Cinevva's analyzer read this game's design doc and its source, then wrote the brief below. "Make your own" hands it to the game creator as your opening message, so you start from a real spec rather than a one-line idea.

Create a playable browser game titled “Piano Pal,” a playful piano-teaching experience with a stylized Three.js 3D scene and a fixed HTML HUD overlay. Show a dark navy background with fog and a round blue stage floor. In the center, build a chunky stylized piano: a near-black rectangular body, a slightly raised purple-indigo lid, and 13 playable keys spanning C4 through C5. Use white keys for C, D, E, F, G, A, B, C5 and black keys for C#, D#, F#, G#, A#; make the black keys shorter and positioned over the white-key gaps. Above/behind the piano, place a floating purple spherical AI companion with a dark face area/eyes, a thin antenna, and a glowing yellow tip. The orb gently bobs and turns, while the piano subtly sways. When notes play, animate the corresponding key downward and highlight it: player notes glow yellow/orange, AI notes have a purple outline/glow. Emit small cyan or lavender glowing ring particles from played notes that float upward and fade.

The main goal is to play notes to teach the AI songs, then have it replay and compose music. Support mouse/touch interaction with every piano key and computer-keyboard controls mapped exactly as follows: A=C4, W=C#4, S=D4, E=D#4, D=E4, F=F4, T=F#4, G=G4, Y=G#4, H=A4, U=A#4, J=B4, K=C5. Display each key’s note label and keyboard shortcut. Initialize with two learned/default songs named “Tiny Star” and “Robot Warmup.” Record player notes in order (keep the most recent 48 during input). A “Teach Song” button saves the most recent melody only if it has at least 4 notes, using the name from a nearby song-name input or an automatic Lesson name; save up to the latest 32 notes, increase AI skill, clear the recording, and show a toast/status message. If fewer than four notes were played, show a message asking for at least four notes.

Place a translucent rounded status panel at upper left with the 🎹 Piano Pal title, instructional AI message, and live stats: Songs count, integer AI skill, Practice state, and Notes heard count. Place a right-side translucent control panel with large rounded buttons: green “Teach Song,” purple “AI Plays,” orange “Make New Song,” gray “Practice While Gone,” and gray “Copy Me.” “AI Plays” should choose a learned/default song, play it back note-by-note with AI-colored key feedback and particles, and slightly increase skill. “Make New Song” should generate and save an “AI Song” by using learned note-transition patterns (Markov-like continuation with small neighboring-note jumps), increase skill, and play it.

Implement “Practice While Gone” as a toggle. While active, repeatedly have the AI perform a rotating sequence of practice styles: chord, arpeggio, riff, answer phrase, and bass pattern. Use simple triads and patterns visible/audible through the keyboard animation, append played notes to a draft composition, increase skill, and every five practice steps (once the draft is at least 18 notes) save a “Practice Song” and reset the draft. Persist the active state and last-practice timestamp. On return after elapsed real time, convert offline minutes into skill and create up to four additional Practice Songs (roughly one per three minutes), then display a welcome-back toast. The practice button should change to “Stop Practice” while active and the HUD should show the current practice style.

Implement “Copy Me” as another toggle. When active, collect a short player phrase up to 12 notes; after 700ms of silence, have the AI play back the exact phrase at a slower note-by-note pace, then invite the player to play another phrase. Allow stopping either practice or copy mode with a “stop” chat command. Add an AI Chat panel below the controls with a heading, scrollable message log, text input, and Send button. Recognize commands including help, play slower/slow down, go faster/play fast, normal speed, stop, copy me, practice, play, and chord. Persist AI tempo between 45% and 220% and show its percentage in the skill HUD. Unknown/open-ended prompts should become music rather than merely text: infer a mood from words such as sad/dark/rain (sad), spooky/scary (spooky), jazz/cool (jazzy), calm/sleep/soft (calm), or happy/bright/party/fast (bright), generate a deterministic-ish chord progression from a corresponding chord bank, save either a “Chat Song” with chord runs or a “Chord Song” made from flattened chords, report the mood and chord progression in chat, and play the generated sequence. Support prompts such as “make a spooky song out of chords,” “make a calm little song,” or “turn space into music.”

Use Tone.js for browser-safe synthesized audio initialized after the first pointer or keyboard interaction: player notes should use a triangle-wave poly synth with a short envelope, and AI notes a softer sine-wave poly synth. Persist songs, skill, note count, practice state/composition, tempo, and copy state in localStorage under “pianoPalState.” Make the layout responsive: status and controls overlay the scene, while the composer row and large playable keyboard occupy the bottom; on narrow screens stack the top panels and keep the keyboard usable for touch. Use translucent slate panels, rounded corners, subtle borders/shadows, white/light-blue text, purple/green/orange/blue control colors, and a polished friendly arcade-learning aesthetic.

More free browser games

Browse the whole Arcade →