Skip to content

feat: Convert O2Jam converter from C++ to C# with batch processing#1

Open
keyboardzxb wants to merge 1 commit intodjzmo:masterfrom
keyboardzxb:feat/csharp-o2jam-converter
Open

feat: Convert O2Jam converter from C++ to C# with batch processing#1
keyboardzxb wants to merge 1 commit intodjzmo:masterfrom
keyboardzxb:feat/csharp-o2jam-converter

Conversation

@keyboardzxb
Copy link
Copy Markdown

This commit converts the original C++ O2Jam music file converter to a modern .NET 8 C# console application and adds batch processing capabilities.

Key changes include:

  • The entire project is rewritten in C#.
  • The FMOD dependency has been replaced with the NAudio library for all audio processing and rendering, resolving environment and installation issues.
  • A full-featured command-line interface has been added using the CommandLineParser library, allowing users to specify input files/directories and output locations.
  • The application now supports batch conversion of all .ojn files within a directory and its subdirectories.
  • Includes a C# port of the original parsers for the .ojn (metadata/events) and .ojm (audio samples) file formats.
  • The custom DecodeWave decryption algorithm has been precisely ported to C# to correctly handle encrypted audio samples.
  • Uses the lame command-line tool for robust MP3 encoding.
  • Uses the TagLib-Sharp library to write song metadata to the final MP3 files.

This commit converts the original C++ O2Jam music file converter to a modern .NET 8 C# console application and adds batch processing capabilities.

Key changes include:
- The entire project is rewritten in C#.
- The FMOD dependency has been replaced with the NAudio library for all audio processing and rendering, resolving environment and installation issues.
- A full-featured command-line interface has been added using the `CommandLineParser` library, allowing users to specify input files/directories and output locations.
- The application now supports batch conversion of all `.ojn` files within a directory and its subdirectories.
- Includes a C# port of the original parsers for the `.ojn` (metadata/events) and `.ojm` (audio samples) file formats.
- The custom `DecodeWave` decryption algorithm has been precisely ported to C# to correctly handle encrypted audio samples.
- Uses the `lame` command-line tool for robust MP3 encoding.
- Uses the `TagLib-Sharp` library to write song metadata to the final MP3 files.
Copy link
Copy Markdown
Author

@keyboardzxb keyboardzxb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

111

@djzmo
Copy link
Copy Markdown
Owner

djzmo commented Sep 14, 2025

why don't you just fork it?

@keyboardzxb
Copy link
Copy Markdown
Author

keyboardzxb commented Sep 14, 2025 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants