audio-formats 3.0.0

Streaming decoding support for popular audio formats.


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

audio-formats

audio-formats is meant to be the easiest package to load and write sounds in D.

Features

  • ✅ Decode from WAV / QOA / MP3 / FLAC / OPUS / OGG / MOD / XM
  • ✅ Encode to WAV / QOA
  • ✅ File and memory support
  • ✅ Seeking support
  • ✅ Chunked support
  • float and double support
  • ✅ Encoding with dithering when reducing bit-depth
  • nothrow @nogc API
  • ✅ Archs: x86 / x86_64 / arm64

Changelog

🔔 audio-formats v3

  • Complete removal of exceptions. The API is now 100% nothrow @nogc. AudioFormatsException doesn't exist anymore.
  • BREAKING Instead, use .isError and .isValid to check for errors.

🔔 audio-formats v2

  • Doesn't depend upon dplug:core anymore.
  • All exceptions thrown by audio-formats are now AudioFormatsException. They must be clean-up with destroyAudioFormatException.
  • v2.1 QOA format decoding support (https://github.com/phoboslab/qoa). Note that the QOA bitstream isn't finalized, and will change.
  • v2.2 QOA format encoding support.

🔔 audio-formats v1

  • Initial release.

How to use it?

  • Add audio-formats as dependency to your dub.json or dub.sdl.
  • See the transcode example for usage.

What formats are supported exactly?

DecodingEncodingSeeking support
📀 WAVYesYesSample
📀 MP3YesNoSample
📀 FLACYesNoSample
📀 OPUSYes (LGPL)NoSample
📀 OGGYesNoSample
📀 QOAYesYesSample
📀 MODYesNoPattern+Row
📀 XMYesNoPattern+Row

Some of these decoders were originally translated by Ketmar, who did the heavy-lifting.

License

  • ⚖️ Boost license otherwise.
  • ⚖️ MIT license when including QOA.
  • ⚖️ LGPL v2.1 for OPUS. (use DUB subconfigurations) to choose, default is boost.
  • https://github.com/Zoadian/mp3decoder
  • https://github.com/rombankzero/pocketmod
  • https://github.com/Artefact2/libxm

Ultra secret options

-The following version identifiers can be used to enable/disable decoder level features | Version Identifier | Feature |

| AF_LINEAR | Use linear sampling for MOD modules instead of Amiga sampling | | | |

Bugs

  • framesRemainingInPattern is unimplemented for XM currently.
Dependencies:
none
Versions:
3.0.2 2024-Feb-11
3.0.1 2023-Sep-30
3.0.0 2023-Sep-30
2.2.1 2023-Jul-07
2.2.0 2023-Apr-16
Show all 34 versions
Download Stats:
  • 0 downloads today

  • 4 downloads this week

  • 8 downloads this month

  • 555 downloads total

Score:
1.0
Short URL:
audio-formats.dub.pm