Field note
Field note

What chainDRiVE Hoped to Support vs. What It Can Actually Do

The wish list, the reality, and the formats that taught us something.

When chainDRiVE started, the dream was simple and slightly unreasonable: open any audio file ever made, change it however you like, and write it back out in any format you want, with a player so you can hear the result first. Encode, decode and preview, for everything, running entirely on your device. Nothing uploaded.

We have gotten surprisingly close, and the places where we did not are just as interesting. This is the honest accounting: what we hoped for, what shipped, what is partial, and what turned out to be impossible, not worth it, or not ours to ship.

The dream: three things for every format

For each format we wanted three things: to read it (decode), to write it (encode), and to hear it (preview) before committing. In practice every format lands in one of four tiers.

Tier 1: the full set (read, write and preview)

These are the formats where the original ambition came true.

  • The mainstream: MP3, AAC (LC, HE v1 and v2, as .m4a or ADTS), Opus, Ogg Vorbis, WebM, FLAC, WAV in all its flavours, AIFF and AU.
  • Voice and telephony: AMR-NB and AMR-WB, A-law and μ-law, GSM 6.10, IMA and Microsoft ADPCM, OKI/VOX, G.722 and G.726.
  • Broadcast and containers: BWF, RF64, Wave64, CAF, Creative VOC and Amiga 8SVX, plus MPEG Layer I and II.
  • The audiophile lossless family: Monkey's Audio, WavPack, TTA and Apple Lossless, plus Musepack and Speex.
  • Dolby and Sony MiniDisc-era codecs: AC-3 and E-AC-3, ATRAC3 and ATRAC1.
  • Game audio you can both make and read: PlayStation XA and VAG, Nintendo DSP, CRI ADX, Yamaha ADPCM, Sierra SOL, Westwood AUD, Maxis and EA XA, LucasArts VIMA, Doom DMX, and console sample formats (SNES BRR, NES DMC, Neo Geo ADPCM-A and B, Mega Drive DAC, GBA Sappy).

Many of these we implemented ourselves from the public format descriptions, then cross-checked against ffmpeg and other independent decoders. A converter you cannot trust to agree with the rest of the world is not much use.

Tier 2: read only (import, render, preview)

For a lot of formats we hoped for both directions and ended up with one, usually because nobody outside the owner ever shipped an encoder. We would rather say so than put a button in the menu that does nothing.

  • Hi-res and lossless oddities: DSD (DSF and DSDIFF, decimated to PCM), Shorten and TAK.
  • Windows, Real and surround: WMA (including Pro, Lossless and Voice), RealAudio, DTS, and the Sony ATRAC3plus and ATRAC9 codecs.
  • Game middleware: Bink Audio and Smacker, plus several hundred game audio extensions through vgmstream (BRSTM, HCA, FSB, Wwise and more).
  • Sequenced music, rendered to audio: tracker modules (MOD, XM, S3M, IT and dozens more), MIDI and DOS-era formats (MUS, XMI, IMF, CMF, DRO) through an emulated Sound Blaster OPL3 FM chip, and console chiptune dumps (SPC, NSF, VGM, GBS and others).
  • Archives and ROMs: an “open archive, pick a sound” browser for Quake PAK, PK3, WAD, VPK, MPQ, Bethesda archives and more, and a scanner that finds samples inside console ROM images you own.

None of that is a compromise in the sense of “worse”. It is just a different promise: open it, hear it, convert it to something the rest of your tools understand.

Tier 3: the ones we tried and had to give up on

  • xHE-AAC. Attractive on paper, but our encoder could not do it cleanly across platforms. We pulled it rather than ship a broken option.
  • OptimFROG. The decoder library we use for much of this family does not support it, and there is no open decoder we could ship.
  • mp3PRO. The files open and play as plain MP3, but its high-frequency layer was never publicly documented, so you get the dull core only. Rebuilding it would be a reverse-engineering project for a format almost nobody used.
  • Writing WMA, RealAudio, DTS, Bink, ATRAC3plus and ATRAC9. The encoders are proprietary or have no open implementation we are allowed to ship.

Tier 4: supported, but we are still checking

A few formats work on every file we generated ourselves, but we have not been able to test them against real files from real games or tools: Steam GCF archives, Sierra SCI resources, LucasArts VIMA, Doom DMX, some EA XA variants, and a couple of console codecs. We would rather tell you than pretend they are bulletproof. If you have real files, we would love to hear how they behave.

What shaped the final list

  • Licensing and patents, not just code. We replaced a GPL-licensed GSM implementation with a clean one, keep every LGPL codec as its own replaceable file, and thought carefully about which codecs carry patent baggage. What we ship was decided as much by licences as by engineering.
  • Phones are not desktops. The Android app runs in a WebView with no threads and no shared memory, so every codec had to run in a plain single-thread WebAssembly module, loaded only when you use it.
  • Everything stays on your device. That ruled out any “just send it to a server” shortcut, which is how many converters cheat.
  • Preview matters. If we can write it, you should be able to hear it first, so we keep checking that every format we encode also plays back in the built-in player.

What is next

The remaining wish list is short and honest: MLP/TrueHD, the old UT99 audio packages, SID chiptune rips, and a lot more real-file testing. Proprietary encoders that nobody has opened will stay out of the menu.

If a format you love is missing or misbehaves, tell us. The best test files come from people who actually use them.

Related: The Wonderful World of Audio Codecs, chainDRiVE's Format Support Grows Up and Codec Depth, chainDRiVE, and CHAiNAMP. The product: chainDRiVE (or open the web app).