9 releases

0.2.8 May 21, 2024
0.2.7 Jan 17, 2023
0.2.5 Sep 4, 2022
0.2.4 Aug 29, 2022
0.1.0-alpha.1 Dec 23, 2020

#73 in Audio

Download history 1273/week @ 2024-07-24 1324/week @ 2024-07-31 1843/week @ 2024-08-07 1568/week @ 2024-08-14 1398/week @ 2024-08-21 1427/week @ 2024-08-28 1455/week @ 2024-09-04 1442/week @ 2024-09-11 1296/week @ 2024-09-18 1396/week @ 2024-09-25 912/week @ 2024-10-02 570/week @ 2024-10-09 992/week @ 2024-10-16 1100/week @ 2024-10-23 1303/week @ 2024-10-30 941/week @ 2024-11-06

4,604 downloads per month
Used in 5 crates (3 directly)

MIT/Apache

1MB
2.5K SLoC

quad-snd

High-level, light-weight, and opinionated audio library.

  • Web: WebAudio
  • Android: OpenSLES
  • Linux: Alsa
  • macOS: CoreAudio
  • Windows: Wasapi
  • iOS: CoreAudio

Being high-level enough allows quad-snd to use very different approaches to each backend. For example, for WebAudio all the playback and mixing is based on Audio nodes, while in OpenSLES quad-snd itself is responsible for mixing.

quad-snd lacks lots of features and the best way to use the library - either fork a repo and fine-tune it for your needs or just copy-paste some code from certain audio backends.

Biggest difference from any other sound library in rust:
quad-snd is small. Each backend implementation is ~300LoC code and is self sufficient - you can copy-paste the whole thing and run it, (almost)no common code, dependencies or anything like that would be required.

The only dependency is audrey. audrey helps backends that do not have file parsing functionality (all the platforms but web) to get bytes out of encoded .wav/.ogg. When web is not required - getting rid of audrey and use anything else(or nothing at all) for audio decoding is a super easy fix.

Attribution

While building quad-snd I looked into the implementation of the following libraries:

https://github.com/floooh/sokol/blob/master/sokol_audio.h
https://github.com/norse-rs/audir
https://github.com/unrust/uni-snd

Dependencies