Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

osu! Map Analyzer

Local beatmap analysis tool for .osu files built with React, TypeScript, and Vite.

It is designed for comparing map revisions, inspecting strain over time, and checking mapper-oriented timeline stats without uploading anything to an external service.

What It Does

  • Upload a local .osu file and inspect it in the browser
  • Compare the current map against the previously loaded map
  • View difficulty strain timelines under shared scaling
  • View mapper stats over time: object density, circles, sliders, timing changes, inherited points
  • Use a built-in PP calculator for osu!standard
  • Toggle stable / lazer PP behavior
  • Switch chart layout between Split and Stack
  • Persist common UI preferences: smoothing, layout mode, and PP ruleset selection

Main Views

Difficulty Timeline Comparison

Primary analysis view.

  • Uses rosu-pp-js difficulty calculation
  • Shared axes between current and previous map
  • Smoothing is adjustable and persisted
  • Supports horizontal and vertical comparison layouts

Performance

Live PP calculator for osu!standard.

  • Supports stable and lazer
  • Includes score-state controls such as misses, 100s, 50s, combo, slider ends, and slider ticks
  • Displays PP, stars, AR, OD, CS, and HP

Mapping Stats

Secondary comparison view for mapper context.

  • Fixed-window timeline analysis
  • Compares density and object mix between current and previous map
  • Includes timing-point activity overlays
  • Starts collapsed by default

Stack

  • React 19
  • TypeScript
  • Vite
  • Plotly
  • osu-parsers
  • rosu-pp-js

Getting Started

Requirements

  • Node.js 20+ recommended
  • npm

Install

npm install

Run Dev Server

npm run dev

Build

npm run build

Lint

npm run lint

Preview Production Build

npm run preview

Usage

  1. Start the app
  2. Upload a local .osu file
  3. Upload another version of the same map to compare against the previous load
  4. Use the chart layout toggle to switch between Split and Stack
  5. Use the performance panel for PP checks

Notes

  • No backend is required
  • Analysis happens locally in the browser
  • The PP calculator is currently configured for osu!standard
  • The current map is always compared against the immediately previous upload
  • rosu-pp-js is loaded via the web WASM build

Project Structure

src/
  analysis/      timeline analysis builders
  components/    shared UI and Plotly wrapper
  difficulty/    difficulty and strain calculation logic
  features/      app-facing feature panels
  lib/           small helpers and persistence utilities
  osu/           beatmap parsing and normalization
  performance/   PP preview calculation
  types/         shared app types

Limitations

  • Only one previous revision is stored for comparison
  • Some controls and displays are currently tuned specifically for standard mode
  • Large Plotly bundles make the production JS bundle heavy

Sources / Core Libraries

  • rosu-pp-js: difficulty and performance calculation
  • osu-parsers: .osu parsing
  • Plotly: interactive chart rendering

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages