CornellJam

A browser music session where players join by QR code, send instrument controls from phones, and hear synchronized audio synthesized on the host device.

Top 10 · LotusHacks · 20 March 2026

Problem and Context

Group music software often requires installation, specialist equipment, or buffered audio streams. We built CornellJam for nearby players using ordinary browsers and one shared speaker.

User Flow

  1. A host creates a session from a laptop and shares its code or QR link.
  2. Players join from mobile browsers without installing an application.
  3. Each player chooses drums, bass, melody, or effects and taps performance pads.
  4. The server assigns inputs to beats and relays them to the host.
  5. The host controls tempo and transport while mixing the shared speaker output.

Capabilities

The prototype includes anonymous QR joining, four instruments, tempo and playback controls, beat indicators, player state, local preview sounds, server quantization, and host mixing. Melodic inputs map to a C major pentatonic scale. Only control messages cross the network; audio is not streamed between players.

Architecture

React 19, TypeScript, Vite, Tailwind CSS, and Framer Motion provide the browser interfaces. Node.js, Express, tRPC, and Socket.IO manage sessions and real time events. The server maintains the beat clock and session state in memory; MySQL or TiDB with Drizzle stores session metadata. The host uses the Web Audio API to synthesize and mix oscillator and noise sounds.

Status

The repository contains runnable prototype source, an event protocol, architecture notes, local and Docker setup, and Vitest tests. It is designed for a shared local network with one host output device and nearby phone browsers.

Team

Built by Đàn Trần, Lê Bách Nhân Nguyễn, and Richard Lee.

Return to Projects