From 27452d50ac854b0af395405a07e3c7a83c875418 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sat, 1 Jan 2022 12:31:21 +1000 Subject: [PATCH] Update website. --- docs/api/index.html | 2 +- docs/examples/custom_backend.html | 2 +- docs/examples/custom_decoder.html | 2 +- docs/examples/custom_decoder_engine.html | 2 +- docs/examples/data_source_chaining.html | 2 +- docs/examples/duplex_effect.html | 2 +- docs/examples/engine_advanced.html | 2 +- docs/examples/engine_effects.html | 2 +- docs/examples/engine_hello_world.html | 2 +- docs/examples/engine_steamaudio.html | 2 +- docs/examples/fixed_size_callback.html | 2 +- docs/examples/index.html | 2 +- docs/examples/node_graph.html | 2 +- docs/examples/resource_manager.html | 2 +- docs/examples/resource_manager_advanced.html | 2 +- docs/examples/simple_capture.html | 2 +- docs/examples/simple_duplex.html | 2 +- docs/examples/simple_enumeration.html | 2 +- docs/examples/simple_loopback.html | 2 +- docs/examples/simple_looping.html | 2 +- docs/examples/simple_mixing.html | 15 +- docs/examples/simple_playback.html | 2 +- docs/examples/simple_playback_sine.html | 2 +- docs/index.html | 2 +- docs/manual/index.html | 2 +- img/platforms/android/android.svg | 1 + img/platforms/apple/apple-black.svg | 11 + img/platforms/bsd/freebsd.svg | 8 + img/platforms/linux/linux.svg | 405 +++++++++++++++++++ img/platforms/web/html5.svg | 14 + img/platforms/windows/windows-10.svg | 53 +++ index.html | 316 ++++++++++----- 32 files changed, 732 insertions(+), 139 deletions(-) create mode 100644 img/platforms/android/android.svg create mode 100644 img/platforms/apple/apple-black.svg create mode 100644 img/platforms/bsd/freebsd.svg create mode 100644 img/platforms/linux/linux.svg create mode 100644 img/platforms/web/html5.svg create mode 100644 img/platforms/windows/windows-10.svg diff --git a/docs/api/index.html b/docs/api/index.html index cf069ddb..137aa811 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -259,7 +259,7 @@ Coming soon...
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/custom_backend.html b/docs/examples/custom_backend.html index f6517a36..108698f9 100644 --- a/docs/examples/custom_backend.html +++ b/docs/examples/custom_backend.html @@ -1005,7 +1005,7 @@ Main program starts here.
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/custom_decoder.html b/docs/examples/custom_decoder.html index 3f7ad179..8c2d5400 100644 --- a/docs/examples/custom_decoder.html +++ b/docs/examples/custom_decoder.html @@ -534,7 +534,7 @@ The onInitFile, - Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com diff --git a/docs/examples/custom_decoder_engine.html b/docs/examples/custom_decoder_engine.html index b97e566c..e1567c49 100644 --- a/docs/examples/custom_decoder_engine.html +++ b/docs/examples/custom_decoder_engine.html @@ -489,7 +489,7 @@ example (via libopus).

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/data_source_chaining.html b/docs/examples/data_source_chaining.html index 817d950d..28572bd1 100644 --- a/docs/examples/data_source_chaining.html +++ b/docs/examples/data_source_chaining.html @@ -430,7 +430,7 @@ done_decoders:
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/duplex_effect.html b/docs/examples/duplex_effect.html index 5305b70e..494257f1 100644 --- a/docs/examples/duplex_effect.html +++ b/docs/examples/duplex_effect.html @@ -408,7 +408,7 @@ done0: ma_device_uninit(&device);
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/engine_advanced.html b/docs/examples/engine_advanced.html index 731fb908..576403cc 100644 --- a/docs/examples/engine_advanced.html +++ b/docs/examples/engine_advanced.html @@ -517,7 +517,7 @@ might be a local co-op multiplayer game where each player has their own headphon
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/engine_effects.html b/docs/examples/engine_effects.html index d3ab3aa5..4f4a16d1 100644 --- a/docs/examples/engine_effects.html +++ b/docs/examples/engine_effects.html @@ -367,7 +367,7 @@ sound file, you need multiple ma_sound
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/engine_hello_world.html b/docs/examples/engine_hello_world.html index 543b251f..4900aa84 100644 --- a/docs/examples/engine_hello_world.html +++ b/docs/examples/engine_hello_world.html @@ -295,7 +295,7 @@ This will play the sound specified on the command line.

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/engine_steamaudio.html b/docs/examples/engine_steamaudio.html index bf68d855..9c1c6007 100644 --- a/docs/examples/engine_steamaudio.html +++ b/docs/examples/engine_steamaudio.html @@ -682,7 +682,7 @@ MA_API ma_result ma_steamaudio_binaural_node_
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/fixed_size_callback.html b/docs/examples/fixed_size_callback.html index ec218dfc..a46a32be 100644 --- a/docs/examples/fixed_size_callback.html +++ b/docs/examples/fixed_size_callback.html @@ -407,7 +407,7 @@ of data movement.

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/index.html b/docs/examples/index.html index 9d6c65c9..e32dc71d 100644 --- a/docs/examples/index.html +++ b/docs/examples/index.html @@ -260,7 +260,7 @@ without gaps. - Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid -
mackron@gmail.com diff --git a/docs/examples/node_graph.html b/docs/examples/node_graph.html index 20fca7ee..f3fae9d3 100644 --- a/docs/examples/node_graph.html +++ b/docs/examples/node_graph.html @@ -527,7 +527,7 @@ cleanup_graph:
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/resource_manager.html b/docs/examples/resource_manager.html index 8ca5dfef..9a309032 100644 --- a/docs/examples/resource_manager.html +++ b/docs/examples/resource_manager.html @@ -423,7 +423,7 @@ set, each sound will have their own formats and you'll need to do the necess
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/resource_manager_advanced.html b/docs/examples/resource_manager_advanced.html index 44467f38..c22001d9 100644 --- a/docs/examples/resource_manager_advanced.html +++ b/docs/examples/resource_manager_advanced.html @@ -595,7 +595,7 @@ MA_API ma_result ma_data_source_read_pcm_fram
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_capture.html b/docs/examples/simple_capture.html index 46253ec8..1a11c7c8 100644 --- a/docs/examples/simple_capture.html +++ b/docs/examples/simple_capture.html @@ -336,7 +336,7 @@ data received by the microphone straight to a WAV file.

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_duplex.html b/docs/examples/simple_duplex.html index e93efcfd..9819d194 100644 --- a/docs/examples/simple_duplex.html +++ b/docs/examples/simple_duplex.html @@ -333,7 +333,7 @@ sample rate conversion for you automatically.

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_enumeration.html b/docs/examples/simple_enumeration.html index 8c39ff71..cc3fe207 100644 --- a/docs/examples/simple_enumeration.html +++ b/docs/examples/simple_enumeration.html @@ -316,7 +316,7 @@ If you use device enumeration, you should explicitly specify the same context yo
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_loopback.html b/docs/examples/simple_loopback.html index ee5f9c5f..8d397f82 100644 --- a/docs/examples/simple_loopback.html +++ b/docs/examples/simple_loopback.html @@ -346,7 +346,7 @@ properties. The output buffer in the callback will be null whereas the input buf
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_looping.html b/docs/examples/simple_looping.html index 601c380b..52bc63bf 100644 --- a/docs/examples/simple_looping.html +++ b/docs/examples/simple_looping.html @@ -336,7 +336,7 @@ decoder straight into ma_data_source_read_p
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_mixing.html b/docs/examples/simple_mixing.html index b7b85a63..41448a6a 100644 --- a/docs/examples/simple_mixing.html +++ b/docs/examples/simple_mixing.html @@ -300,21 +300,22 @@ For simplicity, this example requires the device to use floating point samples. contents of the output buffer by simply adding the samples together. You could also clip the samples to -1..+1, but I'm not doing that in this example. */
+ ma_result result; float temp[4096]; ma_uint32 tempCapInFrames = ma_countof(temp) / CHANNEL_COUNT; ma_uint32 totalFramesRead = 0; while (totalFramesRead < frameCount) { - ma_uint32 iSample; - ma_uint32 framesReadThisIteration; + ma_uint64 iSample; + ma_uint64 framesReadThisIteration; ma_uint32 totalFramesRemaining = frameCount - totalFramesRead; ma_uint32 framesToReadThisIteration = tempCapInFrames; if (framesToReadThisIteration > totalFramesRemaining) { framesToReadThisIteration = totalFramesRemaining; } - framesReadThisIteration = (ma_uint32)ma_decoder_read_pcm_frames(pDecoder, temp, framesToReadThisIteration, NULL); - if (framesReadThisIteration == 0) { + result = ma_decoder_read_pcm_frames(pDecoder, temp, framesToReadThisIteration, &framesReadThisIteration); + if (result != MA_SUCCESS || framesReadThisIteration == 0) { break; } @@ -323,9 +324,9 @@ For simplicity, this example requires the device to use floating point samples. pOutputF32[totalFramesRead*CHANNEL_COUNT + iSample] += temp[iSample]; } - totalFramesRead += framesReadThisIteration; + totalFramesRead += (ma_uint32)framesReadThisIteration; - if (framesReadThisIteration < framesToReadThisIteration) { + if (framesReadThisIteration < (ma_uint32)framesToReadThisIteration) { break; /* Reached EOF. */ } } @@ -460,7 +461,7 @@ For simplicity, this example requires the device to use floating point samples.
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_playback.html b/docs/examples/simple_playback.html index dfa56c1b..c35a04a7 100644 --- a/docs/examples/simple_playback.html +++ b/docs/examples/simple_playback.html @@ -337,7 +337,7 @@ the simple_mixing example for how best to do this.

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/examples/simple_playback_sine.html b/docs/examples/simple_playback_sine.html index f44ff42e..0ba169d3 100644 --- a/docs/examples/simple_playback_sine.html +++ b/docs/examples/simple_playback_sine.html @@ -356,7 +356,7 @@ This example works with Emscripten.

- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/index.html b/docs/index.html index 18187035..51322e7c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -258,7 +258,7 @@ a.doc-navigation-l4 {
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/docs/manual/index.html b/docs/manual/index.html index 21fbbfea..404c0bac 100644 --- a/docs/manual/index.html +++ b/docs/manual/index.html @@ -6143,7 +6143,7 @@ When compiling with VC6 and earlier, decoding is restricted to files less than 2
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com
diff --git a/img/platforms/android/android.svg b/img/platforms/android/android.svg new file mode 100644 index 00000000..b9d3848f --- /dev/null +++ b/img/platforms/android/android.svg @@ -0,0 +1 @@ +Android robot \ No newline at end of file diff --git a/img/platforms/apple/apple-black.svg b/img/platforms/apple/apple-black.svg new file mode 100644 index 00000000..2e7254d2 --- /dev/null +++ b/img/platforms/apple/apple-black.svg @@ -0,0 +1,11 @@ + + + + + diff --git a/img/platforms/bsd/freebsd.svg b/img/platforms/bsd/freebsd.svg new file mode 100644 index 00000000..4516c4e3 --- /dev/null +++ b/img/platforms/bsd/freebsd.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/img/platforms/linux/linux.svg b/img/platforms/linux/linux.svg new file mode 100644 index 00000000..16317683 --- /dev/null +++ b/img/platforms/linux/linux.svg @@ -0,0 +1,405 @@ + +image/svg+xml \ No newline at end of file diff --git a/img/platforms/web/html5.svg b/img/platforms/web/html5.svg new file mode 100644 index 00000000..0171e29c --- /dev/null +++ b/img/platforms/web/html5.svg @@ -0,0 +1,14 @@ + + HTML5 Logo + + + + + + + + + + + + diff --git a/img/platforms/windows/windows-10.svg b/img/platforms/windows/windows-10.svg new file mode 100644 index 00000000..1f42364a --- /dev/null +++ b/img/platforms/windows/windows-10.svg @@ -0,0 +1,53 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/index.html b/index.html index 1d2567ce..1aafec01 100644 --- a/index.html +++ b/index.html @@ -250,7 +250,7 @@ a.doc-navigation-l4 {
-
A single file audio playback and capture library.
+
An audio playback and capture library for C and C++.
Download miniaudio.h
@@ -259,14 +259,14 @@ a.doc-navigation-l4 {
- miniaudio is a single file audio playback and capture library written in C. Written from scratch, it has no - external dependencies with the exception of the C standard library and necessary platform-specific backends. + miniaudio is an audio playback and capture library for C and C++. It's made up of a single source + file, has no external dependencies and is released into the public domain.
+ + + + + + + +
-
Works Out of the Box
+
Simple Build System
Just add to your source tree and go. There's no need to install any dependencies or development packages, nor are there any build systems to waste time on. @@ -280,117 +280,217 @@ a.doc-navigation-l4 {
-
Simple
+
Simple API
- miniaudio has a simple, yet flexible low-level API that gets out of your way. Just initialize a - device and start sending audio data via a callback. + miniaudio has a simple, flexible and modular API that gets out of your way. +
+
+
Open Source
+
+ miniaudio is open source with a permissive license of your choice of public domain or + MIT No Attribution. +
+
+
Detailed Documentation
+
+ miniaudio has some of the best documentation + of any open source audio library and includes a suite of examples. +
+
+
And Much More
+
+ Built-in decoders, advanced mixing and effect processing, resource management, 3D spatialization, + filters, data conversion and more. +
+
+
+ +
+
Major Features
+ + + + + + + + + + + + + + +
+
Flexible and Modular API
+
+ miniaudio gives you complete flexibility. With the low level API, just initialize a connection + to the device and send or receive raw audio data. The modular design of miniaudio allows you to + use the low level API without compromising your ability to make use of other features like the + node graph and resource manager. +
+
+
Advanced Mixing and Effect Processing
+
+ miniaudio's node graph system gives you an easy way to set up advanced mixing and effect + graphs. Each node sends it's output to another node, and so on and so forth to produce all + kinds of effects. You can even implement your own custom nodes and plug them in however you + like. Plug multiple nodes into the same input node for mixing and use the splitter node for + complex routing. +
+
+
Resource Management
+
+ The resource manager is used for simplifying the hassle of dealing with the loading and management + of your audio resources. It will reference count files so they're only loaded once and handles + streaming of large audio sources to save on memory. It can even load files asynchronously and + exposes it's job system so you can handle resource management jobs from your existing job + infrastructure. +
+
+
High Level Audio Engine
+
+ The high level audio engine in miniaudio encapsulates the resource manager and node graph to give + you an easy to use API to manage sounds within a 3D scene with spatialization. The engine is a + node graph, and each sound in the scene is a node within that graph which means you can take + advantage of miniaudio's graph based effect processing and routing infrastructure.
- -
- And best of all, it's free and open-source! -
-
- You can find miniaudio on GitHub -
-
-
Features
- +
+
Platforms
+
+ + + + + + + + + + + + + + + + - - - -
+ + + + + + + + + +
+ Windows + + macOS / iOS + + Linux + + FreeBSD / + OpenBSD / + NetBSD + + Android +
-
    -
  • Supports playback, capture, full-duplex and loopback (WASAPI only).
  • -
  • Device enumeration for connecting to specific devices, not just defaults.
  • -
  • Connect to multiple devices at once.
  • -
  • Shared and exclusive mode on supported backends.
  • -
  • Backend-specific configuration options.
  • -
  • Device capability querying.
  • -
  • Automatic data conversion between your application and the internal device.
  • -
  • Sample format conversion with optional dithering.
  • -
  • Channel conversion and channel mapping.
  • -
  • Resampling with support for multiple algorithms. -
      -
    • Simple linear resampling with anti-aliasing.
    • -
    • Optional Speex resampling (must opt-in).
    • -
    -
  • -
  • Filters. -
      -
    • Biquad
    • -
    • Low-pass (first, second and high order)
    • -
    • High-pass (first, second and high order)
    • -
    • Second order band-pass
    • -
    • Second order notch
    • -
    • Second order peaking
    • -
    • Second order low shelf
    • -
    • Second order high shelf
    • -
    -
  • -
  • Waveform generation. -
      -
    • Sine
    • -
    • Square
    • -
    • Triangle
    • -
    • Sawtooth
    • -
    -
  • -
  • Noise generation. -
      -
    • White
    • -
    • Pink
    • -
    • Brownian
    • -
    -
  • -
  • Decoding (requires external single-file libraries). -
      -
    • WAV
    • -
    • FLAC
    • -
    • MP3
    • -
    • Vorbis via stb_vorbis (not built in - must be included separately).
    • -
    -
  • -
  • Encoding (requires external single-file libraries). -
      -
    • WAV
    • -
    -
  • -
  • Lock free ring buffer (single producer, single consumer).
  • -
-
-
    -
  • Your choice of either public domain or MIT No Attribution.
  • -
  • Entirely contained within a single file for easy integration into your source tree.
  • -
  • No external dependencies except for the C standard library and backend libraries.
  • -
  • Written in C and compilable as C++, enabling miniaudio to work on almost all compilers.
  • -
  • Supports all major desktop and mobile platforms, with multiple backends for maximum compatibility. -
      -
    • WASAPI (Windows Vista+)
    • -
    • DirectSound (Windows XP+)
    • -
    • WinMM (Windows)
    • -
    • Core Audio (macOS, iOS)
    • -
    • ALSA (Linux)
    • -
    • PulseAudio (Cross platform, disabled on Windows, BSD and Android)
    • -
    • JACK (Cross platform, disabled on BSD and Android)
    • -
    • sndio (OpenBSD)
    • -
    • audio(4) (NetBSD, OpenBSD)
    • -
    • OSS (FreeBSD)
    • -
    • AAudio (Android 8+)
    • -
    • OpenSL|ES (Android API level 16+)
    • -
    • Web Audio (Web, via Emscripten)
    • -
    • Null (Cross platform, not used on Web)
    • -
    -
  • -
  • Supports custom backends.
  • -
-
-
+ + WASAPI
+ DirectSound
+ WinMM + + + Core Audio + + + ALSA
+ PulseAudio
+ JACK + + + OSS
+ sndio
+ audio(4) + + + AAudio
+ OpenSL | ES + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Web + + + + + + + + + + + + + + + + + + Emscripten / WebAudio + + + + + + + + + +
@@ -402,7 +502,7 @@ a.doc-navigation-l4 {
- Copyright © 2021 David Reid
+ Copyright © 2022 David Reid
Developed by David Reid - mackron@gmail.com