You are browsing as a guest. Sign up (or log in) to start making projects!

Henkan

  • 5 Devlogs
  • 51 Total hours

The reliable VSRG converter. (better doc on github)

Ship #2

Hello, I’ve continued working on Henkan, my osu!mania ↔ Etterna converter, and released several major updates since my first ship.

The biggest addition is full skin conversion. Henkan can now convert osu!mania skins into Etterna noteskins and convert Etterna noteskins back into osu!mania skins. This required handling lane textures, sprite sheets, high-resolution assets, Lua files, metrics, redirects, and the different ways both games structure their skins.

I also added customizable difficulty name presets. Exported charts can automatically use information such as the title, artist, creator, original difficulty name, or calculated MSD. Users can also change the column width when exporting to osu!mania.

Several conversion issues were fixed, including problems with extreme BPM values, export filenames, media files, and configuration support. The web version now behaves much more like the desktop app, with matching exports and features across Rust, Tauri, and WebAssembly.

I also improved the project outside of the main application. Windows builds now use NSIS installers, Henkan is available through the AUR, the documentation has been expanded, the CI workflows have been cleaned up, and I added an end-to-end test for the skin converter.

Keeping the desktop and web versions consistent is still one of the hardest parts of the project, since converter changes often need separate implementations for Rust and WebAssembly. My goal is still to make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without losing important data.

  • 2 devlogs
  • 32h
Try project → See source code →
Open comments for this post

12h 27m 40s logged

Henkan Devlog (v1.3.1 → v1.5.0)

v1.4.0 (July 20-23)

This update was mainly about skin conversion. I added support for converting osu!mania skins to Etterna noteskins and back. It ended up being much bigger than I expected, with over 1,600 lines of code just for the converter.

I also added difficulty name presets with placeholders like title, artist, creator, difficulty, and MSD, fixed an issue with extreme BPM values, and added a column width setting for osu!mania exports.

Outside of the app, I improved CI, switched Windows installers to NSIS, added AUR support, improved the documentation, and wrote a full end-to-end test for skin conversion.

v1.5.0 (July 24-26)

This update focused on making the web version behave the same as the desktop app.

I fixed export names, media handling, and config support so browser exports now match Tauri. I also fixed a spacebar shortcut bug, made update notes render as Markdown, and cleaned up the CI workflows.

Keeping the web and desktop versions in sync is still one of the hardest parts since every converter change has to work in both Rust and WASM.

0
0
4
Open comments for this post

19h 18m 10s logged

Devlog — Countdown fix + WASM sync

Fixed countdown being on by default when converting Etterna to osu. Added
Countdown: 0 to the [General] section in the converter, the dummy diff
generator, and the TypeScript equivalent.

Discovered the web version was using a stale pre-built WASM binary that
didn’t have any of the Rust fixes. Created wasm-core/ — a new crate that
builds WASM from the same Rust source via #[path] references. No code
duplication.

Added npm run build:wasm for local rebuilds and a CI job that auto-rebuilds
WASM on push to main so it never goes stale again

0
0
5
Ship #1

Hello, I made an osu!mania ↔ Etterna converter called Henkan (変換).

I started the project because I noticed that most existing converters didn’t preserve maps correctly. Timing would drift, BPM changes would be lost or simplified, and long notes would often break during conversion. I wanted to build a converter that focused on accuracy instead of quick conversions.

Henkan converts beatmaps between osu!mania (.osu / .osz) and Etterna/StepMania (.sm) while preserving the original chart as closely as possible. It keeps millisecond-accurate note timing, supports multiple BPM changes, correctly converts long notes, preserves metadata such as title, artist, creator, difficulty, and preview point, and keeps background references.

The application is written as a native desktop app using Rust, Tauri, and React, making it lightweight and fast on Windows, macOS, and Linux. It also supports converting entire packs, allowing users to process many maps at once instead of converting them individually.

One limitation is that scroll velocity (SV) is not converted from osu!mania to StepMania because the .sm format does not have an equivalent representation for osu!’s green-line SV changes.

My goal with Henkan is to provide a reliable converter that players can trust to preserve their charts accurately instead of introducing timing errors or losing important map information.

Try project → See source code →
Open comments for this post

1h 39m 16s logged

Hello, today I polished and finished the newest version of Henkan! This version is now the most stable version that also introduced an web based app.

0
0
6
Open comments for this post

5h 12m 9s logged

Hello, today I fully worked on making my project available for the web via Vercel! I had to solve many issues like permission issues , timing issues , upload issues and more , I eventually fixed it and can say that it’s working stable now! Now I have to sleep…

0
0
1
Open comments for this post

12h 47m logged

Hello, this is my first log! I have to admit that my project is kinda niche but it fills the gaps of the rhythm game community. Short introduction : Im making an advanced osu!mania ↔ Etterna beatmap converter to simplify the mapping and playing of maps. I really depend on making it high performance and feature rich, for example: I had to go through many issues like fixing timing issues , conversion logic , or other things, but I learned from it and fixed them in a way that sets other converters in the ground. I started my project a few days before I found out about stardance hack club so im kinda sad that this time doesn’t count :(. Anyways, im happy to share my progress from now on. Today I focused on developing the CLI for my project and polishing some things, I think it turned out great

0
0
19

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…