CSE2-tweaks/external/clownaudio
2020-12-06 12:55:21 -05:00
..
example Add externals 2020-12-06 12:55:21 -05:00
include/clownaudio Add externals 2020-12-06 12:55:21 -05:00
package Add externals 2020-12-06 12:55:21 -05:00
src Add externals 2020-12-06 12:55:21 -05:00
test Add externals 2020-12-06 12:55:21 -05:00
.gitattributes Add externals 2020-12-06 12:55:21 -05:00
.gitignore Add externals 2020-12-06 12:55:21 -05:00
clownaudio.pc Add externals 2020-12-06 12:55:21 -05:00
clownaudio.pc.in Add externals 2020-12-06 12:55:21 -05:00
clownaudioConfig.cmake Add externals 2020-12-06 12:55:21 -05:00
clownaudioConfig.cmake.in Add externals 2020-12-06 12:55:21 -05:00
CMakeLists.txt Add externals 2020-12-06 12:55:21 -05:00
LICENCE.txt Add externals 2020-12-06 12:55:21 -05:00
README.md Add externals 2020-12-06 12:55:21 -05:00

About

clownaudio is a stereo sound engine, capable of playing and mixing sounds in a variety of formats.

Supported formats include...

  • Ogg Vorbis
  • MP3
  • Opus
  • FLAC
  • WAV
  • Various tracker formats ('.it', '.xm', '.mod', etc.)
  • PxTone Music
  • PxTone Noise
  • SNES SPC

clownaudio is a 'full stack' sound engine, meaning that it handles everything from decoding to playback - the user merely has to provide it with sound data to process.

That said, clownaudio's internals are modular, meaning you can easily extract its mixer and use it as part of your own audio system if needed.

Decoding backends

In order to support a range of audio formats, clownaudio leverages numerous open-source libraries, dubbed 'decoding backends'. These libraries include...

Library Format Licence Included in-tree
libvorbis Ogg Vorbis BSD No
stb_vorbis Ogg Vorbis Public-domain/MIT-0 Yes
dr_mp3 MP3 Public-domain/MIT-0 Yes
libopus Opus BSD No
libFLAC FLAC BSD No
dr_flac FLAC Public-domain/MIT-0 Yes
dr_wav WAV Public-domain/MIT-0 Yes
libsndfile Various (includes Ogg Vorbis, FLAC, WAV, AIFF, and others) LGPL 2.1 No
libopenmpt Various (includes .mod, .it, .xm, .s3m, .mptm, and many others) BSD No
libxmp-lite .mod, .it, .xm, .s3m MIT Yes
PxTone PxTone Music/PxTone Noise Custom (appears to be permissive) Yes
snes_spc SNES SPC LGPL 2.1 Yes

clownaudio aims to be bloat-free and dependency-free: each decoding backend can be toggled at compile-time, and an effort is made to provide multiple backends for individual formats, to allow the user a choice between standard libraries (such as libvorbis), and lighter in-tree libraries (such as stb_vorbis).

Playback backends

In addition, clownaudio utilises one of the following libraries to provide audio-playback:

Library Licence Included in-tree
Cubeb ISC No
miniaudio Public-domain/MIT-0 Yes
PortAudio MIT No
SDL1.2 LGPL 2.1 No
SDL2 zlib No

Building

clownaudio is built with CMake - both shared and static libraries can be produced. Built libraries can be accessed via pkg-config and CMake's find_package.

As an alternative, CMake projects can embed clownaudio directly, using add_subdirectory.

Example Makefile and CMakeLists.txt files for a demo tool are provided: the Makefile demonstrates linking clownaudio with pkg-config, and the CMakeLists.txt file demonstrates linking with find_package and embedding with add_subdirectory.

PKGBUILD files for MSYS2 and Arch Linux are provided in the packages directory.

Licensing

clownaudio itself is under the zlib licence.

Be aware that libraries used by the various backends are subject to their own licences.