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

Henkan

  • 6 Devlogs
  • 59 Total hours

The reliable VSRG converter. (better doc on github)

Ship #3

This update is mostly about making Henkan nicer to actually use.

The biggest change is the beatmap preview. It can now autoplay the chart when you leave it idle, with notes falling under the receptors like in osu!mania and the HUD staying centered. It makes it way easier to get a feel for a chart before exporting instead of just staring at static note columns.

Henkan is also now available in 8 languages. While adding localization, I ended up replacing i18next with a small custom system since I really didn’t need a whole library for what Henkan uses. It’s simpler, lighter, and still covers the entire app.

I also added something I’ve wanted for a while: if you import a random .osu file without its audio or background, Henkan can now try to grab the missing files from an osu! mirror automatically. So incomplete beatmap folders are a lot less annoying to deal with.

There are some smaller fixes too. Skin images are handled more reliably, previews should match the actual result better, and the updater now gets the real release notes from GitHub instead of showing a placeholder.

You can try the latest release here:
https://github.com/kaanreal/henkan/releases

Its really hard to provide screenshots or other things cause it is really niche

  • 1 devlog
  • 5h
  • 18.03x multiplier
  • 88 Stardust
Try project → See source code →
Open comments for this post

4h 52m 25s logged

Hello! I’ve kept working on Henkan, my osu!mania ↔ Etterna converter, and shipped quite a few updates since v1.5.0.The biggest new feature is a playable beatmap preview. The editor can now autoplay charts when you’re not interacting with it, notes render underneath the receptors like they do in osu!mania, and the HUD stays properly centered. It makes it much easier to get a feel for how a chart actually plays before exporting it instead of only looking at the note data.Henkan also supports 8 languages now. While adding localization, I ended up removing i18next and replacing it with a much smaller custom localization system. Henkan doesn’t really need everything i18next provides, so this keeps things simpler and lighter.I also improved importing incomplete osu! beatmaps. If you only have an .osu file and the audio or background is missing, Henkan can now automatically try to fetch the missing files from an osu! mirror.There were also a bunch of smaller conversion fixes. Skin images are handled more reliably, and previews should now be closer to what you actually see in-game. Release notes are fetched properly from GitHub instead of using the old placeholder, and config overrides now work consistently in both conversion directions.osu! exports got some fixes too. Backgrounds are included even when the source chart doesn’t directly reference them, cdtitle files are only copied when they’re actually needed, and hold notes were cleaned up to follow the normal osu!mania format with proper hitsounds and clean samples instead of creating unnecessary or broken sound files.I’ve also been trying to close the gap between the desktop and web versions. The web build now has much closer feature and export parity with the Rust/Tauri version, and CI automatically rebuilds the WebAssembly binaries whenever something is pushed to main.Keeping both versions in sync is still one of the more annoying parts of working on Henkan, since some converter changes have to be implemented separately for Rust and WebAssembly, but it’s getting a lot better.The goal is still the same: make Henkan the most reliable way to move charts and skins between osu!mania and Etterna without randomly losing important data.

0
0
13
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
  • 19.37x multiplier
  • 387 Stardust
Try project → See source code →
Open comments for this post

12h 29m 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
6
Open comments for this post

19h 51m 37s 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
7
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 44m 35s 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
8
Open comments for this post

5h 15m 29s 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
3
Open comments for this post

14h 16m 22s 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
21

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…