Resource icon

ulc-codec Demonstration 20210821

Hey everyone.

I've been developing an ultra-low-complexity MDCT-based audio codec (ulc-codec), and managed to get it running on the GBA to prove the extremely low decoding complexity (verified working on real hardware).

This is mostly a proof-of-concept, as decoding 32.768kHz M/S stereo audio takes 65-70% CPU (depending on the decoding quality mode, track complexity, etc.) spread out over 2-3 frames. That said, I still thought it was pretty neat as a tech demo.

More details are available on the GitHub page, but the basics for the codec itself are:
  • Target bitrate: 32..256kbps+ (no hard limits on playback or coding rates)
  • MDCT-based coding using sine window (window switching plus overlap switching to minimize decimation)
  • Noise-fill (similar to PNS)
  • Nybble-based syntax (no entropy-code lookups)
The GitHub page contains the source code to the player as well as the tools necessary to convert your own files. Unfortunately, 32.768kHz is about the limit for stereo audio with this demo, as the visuals take around 15% CPU; if 44.1kHz was to be used for example, CPU usage would be over 100%, resulting in dropouts.

As an experiment, a flimsy (but fun-to-use) pitch shifter has been included as of the 20201024 version. Lower frequencies tend to distort pretty badly (making it useless for serious applications), but it's kinda fun to mess around with.
NOTE: As of the 20210821 version, pitch shifting tends to overload the CPU (default ROM waitstates are pretty terrible).

The track used in this demo is a slightly EQ'd version of Re-Style & Runeforce - A New Dawn (32kbps VBR @ 32.768kHz). All credit goes to them, and I am making no money off this project; this is entirely for fun and learning.

Please use hardware to judge the quality; on some environments, high frequency detail is lost during resampling from 32768Hz, resulting in excessive muffling.

The codec itself is free open-source software, under the GPLv3 license.
  • ULC Player GBA - Re-Style & Runeforce - A New Dawn.gif
    ULC Player GBA - Re-Style & Runeforce - A New Dawn.gif
    570.3 KB · Views: 152
Author
Aikku
Downloads
2,024
Views
2,024
First release
Last update
Rating
5.00 star(s) 1 ratings

More resources from Aikku

Latest updates

  1. Improved transients (ie. thicc toks), more consistent visuals

    Did some hard thinking on the window-switching logic and managed to improve transients. For the...
  2. New track, greatly improved quality, improved visualizer

    This track is encoded at 32kbps VBR, which is extremely impressive for this style of music.
  3. Improved tools and codec syntax

    ULC now supports noise-fill. Transient detection has been improved, and noise-fill allows...
General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: https://youtube.com/shorts/FdYTKAVSsXY?si=9E-2AU0JN-4hRZi3