mirror of
https://github.com/bdnugget/zig-gamedev.git
synced 2026-11-07 09:07:31 +00:00
zaudio v0.9.3 - Cross-platform audio
Zig bindings for miniaudio library. Tested on Windows, Linux and macOS but should also work on mobile/web platforms.
As an example program please see audio experiments (wgpu).
Features
Provided structs:
DeviceEngineSoundSoundGroupNodeGraphFenceContext(missing methods)ResourceManager(missing methods)Log(missing methods)DataSource(missing methods)WaveformNoise- custom data sources
NodeDataSourceNodeSplitterNodeBiquadNodeLpfNode // Low-Pass FilterHpfNode // High-Pass FilterNotchNodePeakNodeLoshelfNode // Low Shelf FilterHishelfNode // High Shelf FilterDelayNode- custom nodes
Getting started
Copy zaudio and system-sdk folders to a libs subdirectory of the root of your project.
Then in your build.zig add:
const std = @import("std");
const zaudio = @import("libs/zaudio/build.zig");
pub fn build(b: *std.Build) void {
...
const optimize = b.standardOptimizeOption(.{});
const target = b.standardTargetOptions(.{});
const zaudio_pkg = zaudio.package(b, target, optimize, .{});
zaudio_pkg.link(exe);
}
Now in your code you may import and use zaudio:
const zaudio = @import("zaudio");
pub fn main() !void {
...
zaudio.init(allocator);
defer zaudio.deinit();
const engine = try zaudio.Engine.create(null);
defer engine.destroy();
const music = try engine.createSoundFromFile(
content_dir ++ "Broke For Free - Night Owl.mp3",
.{ .flags = .{ .stream = true } },
);
defer music.destroy();
try music.start();
...
}