Skip to content

SWDevelopments/ITTool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ITTool V3 (Rust)

By @BN_LOS

WAV ↔ OGG Vorbis converter built from scratch in pure Rust. Custom binary-level handlers for WAV, OGG, and Vorbis — zero dependencies, zero FFI, std only.


Origin

This tool was first created to convert WAV voice files to OGG for Ready or Not's update which changed in-game voice usage from WAV to OGG format. It has since been completely rewritten in Rust with a custom Vorbis codec, supporting conversion in both directions with zero quality loss.


Features

Feature Detail
Pure Rust No crates, no FFI, no C — std only
Custom codec Full Vorbis I encoder + decoder
Bidirectional WAV → OGG and OGG → WAV
Multi-channel Supports 1–8 channels
Lossless path Sum/difference coupling, no point-stereo degradation
Verify mode Internal round-trip verification (encode → decode → RMS comparison)
Single binary ~500 KB .exe with embedded icon

Usage

ittool.exe                              Encode wavs/ -> oggs/
ittool.exe --decode                     Decode oggs/ -> wavs_out/
ittool.exe --verify                     Round-trip verify all files
ittool.exe --file "path.wav"            Single file encode
ittool.exe -i inputdir -o outputdir     Custom directories

Architecture

Library Description
wavlib RIFF WAV parser + writer (PCM, IEEE float, WAVEFORMATEXTENSIBLE, 8/16/24/32-bit)
ogg_reader OGG page decoder — sync buffer, CRC32 verify, packet reassembly across pages
ogg_writer OGG page encoder — segment lacing, BOS/EOS flags, one-page lookahead
vorbislib Vorbis I codec — MDCT, floor1, residue VQ, Huffman coding, channel coupling

Vorbis Codec Pipeline

Encode:  PCM → window → MDCT → floor1 analysis → residue VQ → couple → bitpack
Decode:  bitpack → floor → residue → decouple → IMDCT → overlap-add → PCM

Verification

100/100 test files pass round-trip verification with 0.1%–1.8% RMS difference.


Credits & Sources

This project was implemented against the official specifications and reference implementations:

Source URL
Xiph.org Vorbis I Specification https://xiph.org/vorbis/doc/Vorbis_I_spec.html
xiph/ogg (official reference) https://github.com/xiph/ogg
ruuda/hound (WAV patterns) https://github.com/ruuda/hound
OxideAV/oxideav-vorbis (codec design) https://github.com/OxideAV/oxideav-vorbis
RustAudio/ogg (OGG patterns) https://github.com/RustAudio/ogg
OxideAV/oxideav-ogg (muxer patterns) https://github.com/OxideAV/oxideav-ogg
emoose/re4-research (WAV handling) https://github.com/emoose/re4-research
coreynguyen/RE4_Utility (WAV handling) https://github.com/coreynguyen/RE4_Utility
Python wave module https://docs.python.org/3/library/wave.html
WAV file format spec https://docs.fileformat.com/audio/wav/

Older Versions

Version Path Language Description
V2.1 old/main.py Python Original WAV→OGG converter using soundfile + numpy
V2 old/OLD.FILES/ Python First release archive
V3 this repo Rust Full rewrite — zero dependencies, custom codec

License

MIT — free to use, modify, and distribute.

About

A tool to convert wav files to ogg and the opposite.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors