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.
  • S @ salazarcosplay:
    hunter x hunter
  • S @ salazarcosplay:
    he has not allowed anyone to continue it for him for example
  • Xdqwerty @ Xdqwerty:
    @salazarcosplay, theres a dragon ball af mod for budokai 3
  • Xdqwerty @ Xdqwerty:
    updated ship of harkinian, gonna install some hd texture pack
  • Xdqwerty @ Xdqwerty:
    I might download rayman revolution for my ps3
  • BigOnYa @ BigOnYa:
    I may try the new ram site, and download more RAM to my Switch. Not sure if ddr3 is the right ram
    for it tho. Edit- no it uses floppy Ram, just like @AncientBoi
    +1
  • Xdqwerty @ Xdqwerty:
    aeiou
  • BigOnYa @ BigOnYa:
    And sometimes Z
  • SylverReZ @ SylverReZ:
    @K3Nv2, MAGA supporters be wearing tin foil hats lol.
    +1
  • Xdqwerty @ Xdqwerty:
    @SylverReZ, whats maga?
  • BigOnYa @ BigOnYa:
    It stands for Maniacs Against General Acceptance
    +1
  • Xdqwerty @ Xdqwerty:
    @BigOnYa, people rejecting general consensus about stuff?
    +1
  • BigOnYa @ BigOnYa:
    Yup, nuh its really just Trump followers
  • Xdqwerty @ Xdqwerty:
    @BigOnYa, im not american so i dont care about trump
    +1
  • Xdqwerty @ Xdqwerty:
    or us elections
  • BigOnYa @ BigOnYa:
    Me niether, us north Koreans don't care
  • Xdqwerty @ Xdqwerty:
    good night
  • BakerMan @ BakerMan:
    i don't care either, even if i'm american
  • BakerMan @ BakerMan:
    truth be told, i agree with psi, i dislike both candidates, but i'd probably vote trump simply because the economy was better during his presidency
  • AngryCinnabon @ AngryCinnabon:
    Just be careful, if trump ends up winning and using project 2025 America might really change...for the worse.
  • AngryCinnabon @ AngryCinnabon:
    I'm not american and even that sends shivers down my spine.
  • AngryCinnabon @ AngryCinnabon:
    anything that offers trump an opportunity to become an actual dictator
    is bad in my book, i could care less if it wasn't for that...
  • K3Nv2 @ K3Nv2:
    Canada: America's Russia
  • NinStar @ NinStar:
    people are so dramatic that I can't even tell if they are being serious
    NinStar @ NinStar: people are so dramatic that I can't even tell if they are being serious