Skip to content
lor3nzoPublic

About

A generative mood radio that composes music live in your browser

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Rossi

Press play. It never repeats.

Vite TypeScript Tone.js License Version

Rossi is a generative mood radio. Pick a station and the music is composed and synthesized live in your browser. No recordings, no loops, no backend.

Live: https://osgk.com/rossi/

Rossi playing the Soft 70s disco station

Features

  • Seven stations: Zen, Piano, Piano for writing, Slooow rock, Jazzy, Electro, Soft 70s disco
  • One shared engine. A station is a block of data: keys, tempo, chord progressions, layers
  • A mixer per station: level, on/off and activity for every layer
  • Milkdrop style visuals that react to the music, with fullscreen
  • A player inspired by late 90s desktop players, sized for touch
  • Green or amber display, keyboard shortcuts, settings remembered in the browser
  • Fully static: runs on any plain web host

Requirements

  • Node.js 20 or newer (to build)
  • Any static web host (to serve)
  • A current browser. Visuals need WebGL 2; without it Rossi shows a simple spectrum

Install

git clone https://github.com/lor3nzo/rossi.git
cd rossi
npm install
npm run dev

Deploy

npm run build

Upload everything inside dist/, including the hidden .htaccess, to a folder on your host. The build uses relative paths, so it runs from any folder, for example public_html/rossi/. Serve it over HTTPS: browsers restrict audio on insecure pages.

Adding a station

Add a config to src/stations.ts. It picks voices from src/engine/voices.ts and sets the keys, tempo range, swing and progressions.

File What it holds
src/stations.ts Station configs
src/engine/harmony.ts Keys, scales, sections (the conductor)
src/engine/voices.ts The synthesized instruments
src/engine/engine.ts Mixing, reverb, limiter, station switching
src/visualizer.ts Butterchurn visuals and the fallback
src/main.ts The interface

Open the page with ?debug to get the engine as window.rossi in the console.

Security and privacy

No accounts, no tracking, no network calls after the page loads. See SECURITY.md.

Licensing

Apache License 2.0. See LICENSE. Copyright belongs to the rights holder named in NOTICE, which also lists the third party libraries.

About

Built by lor3nzo. More projects at osgk.com.

About

A generative mood radio that composes music live in your browser

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages