Installing miniaudio Library for WebAssembly Установка библиотеки miniaudio для WebAssembly

A step-by-step guide to downloading, configuring, and running the single-file miniaudio.h audio library for WebAssembly on Windows using Emscripten and CMake. Пошаговое руководство по скачиванию, настройке и запуску заголовочной аудио-библиотеки miniaudio.h для WebAssembly на Windows с помощью Emscripten и CMake.

Before proceeding, ensure you have set up your build environment on Windows using the appropriate guides: Перед началом работы убедитесь, что вы настроили среду сборки на Windows, следуя соответствующим инструкциям:

Step 1: Download Source Code Шаг 1: Скачивание исходного кода

Download the latest release zip archive directly from GitHub Releases: Скачайте zip-архив последнего релиза напрямую из GitHub Releases:

Download miniaudio Releases Скачать релизы miniaudio

Step 2: Extract the Library Шаг 2: Распаковка библиотеки

Extract the downloaded archive so that miniaudio.h is placed in your WebAssembly libraries folder: Распакуйте скачанный архив так, чтобы файл miniaudio.h находился в вашей папке WebAssembly-библиотек:

C:\libs\miniaudio-0.11.21\include\miniaudio.h

Step 3: Create Project Directory Шаг 3: Создание директории проекта

Open Command Prompt (CMD) and create a new directory for your miniaudio WebAssembly test project: Откройте Командную строку (CMD) и создайте новую директорию для вашего тестового проекта miniaudio под WebAssembly:

mkdir C:\projects\miniaudio-web-test
cd C:\projects\miniaudio-web-test

Step 4: Create Source Files (main.c & CMakeLists.txt) Шаг 4: Создание исходных файлов (main.c и CMakeLists.txt)

notepad main.c
notepad CMakeLists.txt

1. File Contents for main.c 1. Содержимое файла main.c

#define MINIAUDIO_IMPLEMENTATION
#include <miniaudio.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    ma_engine engine;
    ma_result result = ma_engine_init(NULL, &engine);
    if (result != MA_SUCCESS) {
        printf("Failed to initialize miniaudio engine.\n");
        return -1;
    }

    // Access the active backend via the device's context
    ma_device* pDevice = ma_engine_get_device(&engine);
    const char* backendName = ma_get_backend_name(pDevice->pContext->backend);

    printf("miniaudio engine initialized successfully!\n");
    printf("Active Audio Backend: %s\n", backendName);

    ma_engine_uninit(&engine);
    return 0;
}

2. File Contents for CMakeLists.txt 2. Содержимое файла CMakeLists.txt

cmake_minimum_required(VERSION 3.21)
project(miniaudio_wasm_test C)

add_executable(app main.c)

target_include_directories(app PRIVATE C:/libs/miniaudio-0.11.21/include)

# Tell Emscripten to output an HTML shell for direct testing in the browser
set_target_properties(app PROPERTIES SUFFIX ".html")

target_link_options(app PRIVATE
    "-sALLOW_MEMORY_GROWTH=1"
)

Step 5: Create Build & Execution Scripts Шаг 5: Создание скриптов сборки и запуска

config-web.bat

call emcmake cmake -G Ninja -S . -B dist/web

build-web.bat

cmake --build dist/web

run-web.bat

@echo off
emrun dist\web\app.html

First activate the Emscripten environment in Command Prompt, then run the scripts sequentially: Сначала активируйте окружение Emscripten в Командной строке, затем последовательно запустите скрипты:

call C:\emsdk\emsdk_env.bat

config-web.bat
build-web.bat
run-web.bat

Step 6: Expected Output Шаг 6: Ожидаемый результат

When launched with emrun, the browser will open and display the console output showing the Web Audio backend: При запуске через emrun откроется браузер, а в терминале и консоли страницы отобразится бэкенд Web Audio:

miniaudio engine initialized successfully!
Active Audio Backend: Web Audio

Support My Work Поддержать проект

If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.

Sberbank (Russia only) Сбербанк (только для РФ)

Sberbank SBP QR Code

Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)

+7 (917) 212-29-59

USDT TRC20

USDT TRC20 QR Code

Support via Cryptocurrency Поддержка криптовалютой

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp