Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Soundquest

Soundquest is a browser-based roguelike music-production adventure. Players progress through quests, earn notes, instruments, and effects, and compose loops with the bundled Strudel runtime.

Play Soundquest: soundquest-e5v.pages.dev

Development

Requirements: Node.js 22 and npm.

npm ci
npm run dev

The supported release checks are:

npm run typecheck
npm run lint
npm test
npm run test:e2e
npm run build

npm run verify runs the complete sequence. Application checks deliberately exclude deploy/strudel/, which is a vendored Git subtree with its own upstream test suite and release process.

Architecture

  • src/components/game/: game UI and Strudel integration
  • src/data/: version-controlled game content and progression rules
  • src/hooks/useGameState.ts: run state and progression
  • src/lib/runShare.ts: bounded, non-executable shared-run format
  • src/lib/runStorage.ts: local run metadata and IndexedDB audio persistence
  • deploy/strudel/: modified vendored Strudel source

The game is a static client application. Hash routing is implemented locally in src/App.tsx; no backend or routing service is required.

Audio assets

Production builds do not include developer sample caches. They load only the pinned piano and VCSL manifests declared in src/lib/runtimeConfig.ts. Deployments may override those URLs with a controlled asset origin:

VITE_STRUDEL_SAMPLES_BASE_URL=https://assets.example.com/dough
VITE_STRUDEL_VCSL_BASE_URL=https://assets.example.com/vcsl
VITE_STRUDEL_TR808_BASE_URL=https://assets.example.com/clean/tr808
VITE_STRUDEL_FLBASS_BASE_URL=https://assets.example.com/clean/flbass
VITE_STRUDEL_CBOW_BASE_URL=https://assets.example.com/clean/cbow
VITE_STRUDEL_UKULELE_BASE_URL=https://assets.example.com/clean/ukulele

npm run sync:strudel downloads the pinned assets and checksums into .cache/strudel/ for inspection or preparation of a separate offline distribution. The cache is never copied into a normal Vite build. An offline release must deliberately publish the cache beneath /strudel, retain its notices, and set VITE_OFFLINE_MODE=true.

The production artifact verifier rejects cached Strudel content and distributions larger than 30 MiB.

tidalcycles/Dirt-Samples is deliberately not used because the collection does not provide sufficiently complete license and provenance information for redistribution. New sample banks must be added individually, pinned to an immutable revision, and documented with their source, creator, and explicit sample license in THIRD_PARTY_NOTICES.md. A collection's name or umbrella repository is not treated as a license for its dependencies.

Sharing and local data

Shared links contain a small versioned inventory document. They never contain or execute the sender's free-form Strudel code. Legacy compressed links are intentionally unsupported.

Run metadata is stored in localStorage. Recorded microphone audio is stored separately as bounded PCM Blob data in IndexedDB. Nothing is uploaded by this repository. See PRIVACY.md.

Release

Follow RELEASE.md before publishing.

License

Soundquest is free software licensed under the GNU Affero General Public License, version 3 or later. A deployed version must provide users access to the complete corresponding source for that exact version. Third-party components and media retain their respective licenses; see THIRD_PARTY_NOTICES.md.

About

A roguelike music-production adventure powered by Strudel.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages