libaltsound
May 9, 2026 ยท View on GitHub
A cross platform compilation of altsound that is baked directly into VPinMAME.
Suitable for use by third party applications that use libpinmame, such as Visual Pinball Standalone.
Audio Engine
This library uses miniaudio for cross-platform audio processing. The library does not directly output audio to hardware. Instead, it provides mixed audio data through a callback function that you must implement. You are responsible for routing this audio data to your preferred audio output system.
Usage:
Basic Setup
#include "altsound.h"
// Audio callback function - you must implement this
void audio_callback(const float* samples, size_t frameCount, uint32_t sampleRate, uint32_t channels, void* userData)
{
}
void MyController::OnSoundCommand(int boardNo, int cmd)
{
AltSoundProcessCommand(cmd, 0);
}
// Initialize logger
AltSoundSetLogger("/Users/jmillard/altsound", ALTSOUND_LOG_LEVEL_INFO, false);
// Initialize altsound with audio configuration
AltSoundInit("/Users/jmillard/.pinmame", "gnr_300", 44100, 2, 256);
AltSoundSetHardwareGen(ALTSOUND_HARDWARE_GEN_DEDMD32);
// Set up audio callback
AltSoundSetAudioCallback(audio_callback, nullptr);
// Process sound commands
AltSoundProcessCommand(cmd, 0);
// Pause/resume playback
AltSoundPause(true);
AltSoundPause(false);
// Cleanup
AltSoundShutdown();
Building:
Windows (x64)
cmake -G "Visual Studio 18 2026" -DPLATFORM=win -DARCH=x64 -B build
cmake --build build --config Release
Windows (x86)
cmake -G "Visual Studio 18 2026" -A Win32 -DPLATFORM=win -DARCH=x86 -B build
cmake --build build --config Release
Windows MinGW / MSYS2 UCRT64 (x64)
Requires MSYS2 with UCRT64 environment. Install dependencies:
pacman -S --noconfirm \
mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-libwinpthread \
mingw-w64-ucrt-x86_64-cmake
Build (entire build runs inside the MSYS2 UCRT64 shell):
MSYSTEM=UCRT64 /c/msys64/usr/bin/bash.exe -l -c "
cd \"$(pwd)\" &&
cmake -DCMAKE_BUILD_TYPE=Release -DPLATFORM=win-mingw -DARCH=x64 -B build &&
cmake --build build -- -j\$(nproc)
"
Linux (x64)
cmake -DPLATFORM=linux -DARCH=x64 -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
Linux (aarch64)
cmake -DPLATFORM=linux -DARCH=aarch64 -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
MacOS (arm64)
cmake -DPLATFORM=macos -DARCH=arm64 -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
MacOS (x64)
cmake -DPLATFORM=macos -DARCH=x64 -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
iOS (arm64)
cmake -DPLATFORM=ios -DARCH=arm64 -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
iOS Simulator (arm64)
cmake -DPLATFORM=ios-simulator -DARCH=arm64 -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
tvOS (arm64)
cmake -DPLATFORM=tvos -DARCH=arm64 -DBUILD_SHARED=OFF -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build
Android (arm64-v8a)
cmake -DPLATFORM=android -DARCH=arm64-v8a -DCMAKE_BUILD_TYPE=Release -B build
cmake --build build