MCPcopy Index your code
hub / github.com/bemusic/bemuse

github.com/bemusic/bemuse @v54.0.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v54.0.1 ↗ · + Follow
1,912 symbols 4,352 edges 468 files 93 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Bemuse 〜beat☆music☆sequence〜

open-source web-based online rhythm game

CircleCI Codecov twitter

Quality Gate Status Maintainability Rating

Docs

Bemuse is an open-source, online, web-based rhythm game. It plays songs in BMS format (See: Introduction to BMS).

It is recommended to play this game on Google Chrome.

Table of contents:

Video Demo

Video Demo

Quick Tour

Music selection

  • You can play online songs instantly in your browser.

  • You can play custom songs by dragging a folder containing BMS files into this screen. There are over 5,000 songs published in BMS format by the community worldwide. You can find them using BMS Search.

  • There’s an online internet ranking system. You can compete with other players and see your rank online.

  • It has an insane tutorial.

Gameplay

  • Keyboard mode (7-keys). Play along the music with your keyboard.

  • Fully key-sounded. Each note has its own sound. The music will be affected by your game play.

  • Player together with friends using party mode. It helps you start the game at the exact same time.

  • Multiple difficulties. Each song has multiple difficulties to accommodate every player skill levels.

  • Adjustable speed. You can adjust the speed (spacing) of the notes to make it easy-to-sightread. This does not affect the speed of the song; lowering the speed causes notes to become more dense on-screen.

  • Scoring and grading system. Master the song to get the S grade (score over 500000).

Gameplay

  • BMS mode (7-keys + turntable). You can play using an IIDX controller or MIDI controller.

  • HD video support. Some songs will have a background animation in high-definition (720p).

  • Adjustable play area size. If the gameplay area is too long, you can adjust the cover it to make the play area more easy-to-sightread.

  • Early/Late indicator. Bemuse will tell you if you press the note too early or too late.

Options

  • Adjustable panel position. You can position the note panel on either side of the screen, or put it at the center.

  • Adjustable turntable position. You can put turntable on the left or on the right (BMS mode only).

  • Audio latency compensation. Some systems may have audio latency. Bemuse contains a calibration system to compensate for the audio latency.

Play now at https://bemuse.ninja/.

Technology

  • The web application is powered by React and Redux.

  • The game engine is powered by PixiJS.

Development

Install Node.js

# Install Rush
npm install --global @microsoft/rush

# Clone Bemuse
git clone https://github.com/bemusic/bemuse.git

# Enter the main repository
cd bemuse

# Install the dependencies
rush update

# Prepare all sub-projects
rush build --to-except bemuse

# Start development server
rush dev

For more information, check out the Developer Guide.

Note: Online ranking features are not available.

Sub-projects

This repository holds the code for other sub-projects, which are available for use on npm.

Project name Badge Description
bms npm JavaScript BMS parser
bmson npm JavaScript bmson parser
bemuse-tools npm Tools for hosting your own music server.
bemuse-indexer npm Library for scanning a directory for BMS/bmson files and generate a metadata.
bemuse-notechart npm Library for loading a notechart for use in game.

How to contribute

Our amazing contributors🌟

License

AGPLv3. Note that this license only applies to the main Bemuse project, not the sub-projects, which has its own license terms (mostly MIT).

Extension points exported contracts — how you extend this code

IResources (Interface)
(no doc) [10 implementers]
bemuse/src/resources/types.ts
ISongInfoData (Interface)
(no doc) [1 implementers]
packages/bms/src/song-info/index.ts
MusicalScoreOptions (Interface)
(no doc)
packages/bmson/src/index.ts
MusicServerIndex (Interface)
(no doc)
packages/bemuse-types/index.d.ts
NotechartInput (Interface)
(no doc)
packages/bemuse-notechart/src/types.ts
InputMeta (Interface)
(no doc)
packages/bemuse-indexer/src/index.ts
ColorDef (Interface)
(no doc)
website/src/components/color-list.tsx
IResource (Interface)
(no doc) [7 implementers]
bemuse/src/resources/types.ts

Core symbols most depended-on inside this repo

push
called by 113
bemuse/src/scene-manager/index.tsx
get
called by 93
bemuse/src/game/input/index.ts
log
called by 61
bemuse/src/coming-soon/demo/index.js
log
called by 60
bemuse/src/game/state/player-stats.ts
all
called by 40
packages/bms/src/notes/index.ts
destroy
called by 38
bemuse/src/game/input/index.ts
getNoteStatus
called by 35
bemuse/src/game/state/player-state.ts
report
called by 35
bemuse/src/progress/Progress.ts

Shape

Function 978
Method 543
Class 200
Interface 189
Enum 2

Languages

TypeScript100%

Modules by API surface

bemuse/src/previewer/NotechartPreview.ts52 symbols
packages/bemuse-notechart/src/index.ts35 symbols
bemuse/src/sampling-master/index.js35 symbols
bemuse/src/online/index.ts35 symbols
bemuse/src/custom-folder/index.ts31 symbols
bemuse/src/resources/ipfs-resources.js28 symbols
bemuse/src/game/state/player-state.ts25 symbols
bemuse/src/app/entities/Options.ts24 symbols
bemuse/src/game/display/index.js23 symbols
bemuse/src/app/ui/MusicSelectScene.tsx23 symbols
bemuse/src/game/state/player-stats.ts20 symbols
common/scripts/install-run.js19 symbols

For agents

$ claude mcp add bemuse \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact