⬤▗▚▚▚ Web-based online rhythm action game. Based on HTML5 technologies, React, Redux and Pixi.js.
Switch branches/tags
Clone or download
Latest commit eea448c Aug 8, 2018
Failed to load latest commit information.
.circleci 🚀 Configure deploy on CircleCI 2 May 18, 2018
.vscode Adjust the sections of the CHANGELOG file May 19, 2018
bin 🔧 Build on netlify with prod flags May 18, 2018
config 🐛 remove these browserslists since we use the one on package.json May 21, 2018
docs 📝 Add `lerna run prepare` step in developer guide Aug 4, 2018
packages ⬆️ ⬆️ ⬆️ bms@3.1.0-2 Jul 30, 2018
public 🚨 Fix some linter errors manually May 17, 2018
src 🎨 Add propTypes to Toolbar Aug 5, 2018
tasks Load changelog from CHANGELOG.md instead Jul 5, 2018
website 📝 Updated sidebar, FAQ + scoring page May 22, 2018
.babelrc 🔨 Let webpack bundle module and tree-shake May 18, 2018
.editorconfig fix(docs): generate PDF docs from readthedocs Mar 10, 2015
.eslintignore Setup project-wide ESLint and ignore rules May 17, 2018
.eslintrc 🔨🔨🔨 Automatically convert bms-js to ES6 modules and classes May 17, 2018
.eslintrc.config.import.js feat(~): initial implementation of Redux-based store Jun 18, 2016
.gitattributes 🔧 Mark more file types as binary May 17, 2018
.gitignore 💚 bms builds now!! May 17, 2018
.travis.yml 💚 Try to make puppeteer work on CI Dec 23, 2017
CHANGELOG.md 📝 CHANGELOG for v42 Aug 8, 2018
CONTRIBUTING.md 📝 Update commit message standard Nov 19, 2016
LICENSE Add LICENSE file. Dec 21, 2014
README.md 📝 Mention lerna May 18, 2018
appveyor.yml chore: add appveyor.yml to test building on Windows Dec 30, 2014
dangerfile.js 🐛 Stop markdown-toc from clashing with Prettier May 19, 2018
gulpfile.js chore(~): initialize karma Dec 3, 2015
karma.conf.js Use Headless Chromium with Puppeteer Dec 23, 2017
lerna.json 🔧 Activate independent mode in lerna May 17, 2018
node-environment.js 🔨 Let webpack bundle module and tree-shake May 18, 2018
package.json 🔖 42.0.0 Aug 8, 2018
tsconfig.base.json 🔧 Enable downlevelIteration May 18, 2018
tsconfig.json 💚 Run ESLint manually in danger May 18, 2018
webpack.config.resolver.js feat(test): initialize test-bed Jun 18, 2016
webpack.config.test-bed.js feat(test): initialize test-bed Jun 18, 2016
yarn.lock Remove auto fullscreen, replace with button Aug 5, 2018


Bemuse 〜beat☆music☆sequence〜

open-source web-based online rhythm game

CircleCI Code Climate Codecov twitter
Docs david-dm Dependency Status david-dm Development Dependency Status

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.


  • 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).


  • 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.


  • 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/.


  • The web application is powered by React and Redux.

  • The game engine is powered by PixiJS.


Install Node.js and Yarn.

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

# Enter the main repository
cd bemuse

# Install the dependencies

# Prepare all sub-projects
yarn lerna run prepare

# Start development server
yarn start

Note: Online ranking features are not available.


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.


AGPLv3, for now. After the project matures, it may be released into a more permissive license. Note that this license only applies to the main Bemuse project, not the sub-projects, which has its own license terms (mostly MIT).