Skip to content

jacbz/lisztnup

Repository files navigation

Build Stargazers Forks Issues Contributors Apache License

Liszt’n Up!

The Classical Music Guessing Game.
Play »

Liszt’n Up!

About

Liszt’n Up! is a web-based party game designed for classical music enthusiasts. Inspired by mechanics from board games like Hitster, players compete to guess composers, works, and eras, or place tracks on a timeline.

The game is built on a massive dataset of more than 10,500 works from over 900 composers sourced from MusicBrainz, totaling 27,000+ tracks (each work may contribute multiple movements/parts). Rather than manual curation, the system filters works based on the number of available recordings. Predefined tracklists are generated automatically, with only the Beginner tracklist being manually curated. Users can also create custom tracklists from the entire library.

Designed as a modern web app, Liszt’n Up! is optimized for tablet usage (ideal for placing in the center of a table during a game night) and includes a custom audio engine that performs real-time volume normalization for a consistent listening experience.

Game Modes

Timeline Buzzer Bingo Classic
Timeline Mode

Build a chronological timeline by placing tracks in the correct year order.
Buzzer Mode

Multiplayer speed round. Hit the buzzer first to answer.
Bingo Mode

Players generate unique Bingo grids on their own phones and mark off categories.
Classic Mode

Listen to a track and guess the Composer, Work, or Era. Harder categories yield more points.

Tech Stack

  • Framework: SvelteKit (Svelte 5 with Runes) + Cloudflare Pages & D1 (Analytics)
  • Language: TypeScript
  • Styling: Tailwind CSS 4
  • State Management: Svelte Stores & LocalStorage persistence
  • Audio: Web Audio API (with custom LUFS normalization implementation)
  • Icons: Lucide Svelte
  • I18n: svelte-i18n

Important

This project relies on the Deezer API for audio previews. Usage is subject to Deezer's Terms of Service. Commercial use of this application is prohibited without explicit permission from rightsholders.

Getting Started

To get a local copy up and running, follow these steps.

Prerequisites

  • Node.js (Latest LTS recommended)
  • pnpm

Installation

  1. Clone the repository:

    git clone https://github.com/jacbz/lisztnup.git
    cd lisztnup
  2. Install dependencies:

    pnpm install
  3. Start the development server:

    pnpm dev
  4. Open http://localhost:5173 in your browser.

Note

Browser Compatibility: To bypass Web Audio API autoplay restrictions on WebKit, the game automatically falls back to standard HTML5 Audio on Safari.

Dataset Generation

Unlike many trivia games with manually curated lists, Liszt’n Up! uses an algorithmic approach to generate its library, with only little manual tweaking. You can inspect the generation logic in the /data directory. The build process compiles this into a compressed lisztnup.json file served to the client.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

About

The Classical Music Guessing Game (Inspired by Hitster)

Topics

Resources

License

Stars

Watchers

Forks

Contributors