byProd, the little audio engine with big sound

byProd is an authoring tool and runtime library for interactive audio and music in games, visualizations and other applications. Originally created for the game Traction Point, it has taken on a life of its own and is now available for anyone to use!

The byProd editor showing a sound event node graph

byProd is currently in beta. While in beta, it is free to use, for commercial and non-commercial projects alike. Beta versions you have downloaded remain free to use even after the beta ends.

Node graph showing a simple sound event

Create your sounds

Build sound events as node graphs in the byProd editor. Drag and drop wave clips from your asset library into the node graph and preview the result directly in the editor.

Make simple sound effects out of .wav files, or combine and layer multiple audio sources together in a single event. Use logic nodes to delay, repeat and add variation to sounds.

Nodes reading sound event parameters

Add parameters and signals, apply filters

Dynamically adjust sound parameters like volume and playback speed using parameters, then preview directly in the editor. Send signals to your events to make them react to what is happening in the game/app.

Apply real-time filters such as reverb, distortion and pitch shifting, and control them through parameters at runtime.

The project hierarchy in the byProd editor

Manage your audio content

Organize your sound events into groups. Control volume separately for ambiance, hard sound effects, UI and music.

Assign your wave assets to sound banks based on how they are used and loaded/unloaded. Control how much audio memory your game/app uses.

Use bulk audio folders for packaging large amounts of clips, eg. voice lines, into sound banks in one go.

Source code from the basic sample program

Integrate into your game

Build the project with a single click and add the built runtime files to your game/app. Use the official SDK to drive the audio engine at runtime using a simple C-API, or use one of the community-created language wrappers.

Make the runtime work how you prefer. Use your own file I/O systems for reading audio data, and (if you want) hook up your memory allocators and job system to manage memory and async wave decode operations.

Features

  • Audio engine
    • Windows, Linux and Browsers (WASI- and Emscripten-flavored WASM supported)
    • Mono and stereo output (5.1 and 7.1 coming later if there is demand)
    • 2D and 3D sounds, velocity tracking and Doppler effects
    • Real-time audio filters (reverb, pitch, distortion, high-pass, low-pass and more)
    • Async wave asset decoding on background threads (using your job system, if you have one)
  • Node-graph architecture
    • Sources, filters, mixing and logic as freely connectable nodes
    • Delay, repeat and randomization for natural variation
    • Composite nodes for creating reusable functionality out of basic nodes
  • Parameters and signals
    • Event parameters for real-time control (float, int, wave asset)
    • Signals for reacting to things happening in the game
  • Editor
    • Desktop application for Windows and Linux
    • Sound event preview/playback directly in the editor
    • Asset library with wave preview (.wav, .ogg, .mp3)
    • Reaper DAW integration
  • Data pipeline
    • Human-readable and VCS-friendly project files (JSON)
    • Single-click runtime data build process (project runtime + sound banks)
    • Optional per-asset compression at build time
    • Bulk audio for packaging up whole folders of wave assets, eg. voice lines
    • Additive projects, for adding more audio content to an already packaged game (eg. DLC or mods)

Editor

Design your sound events and manage your audio data in the byProd editor, on Windows and Linux. The editor is designed to be easy to use, whether you are an experienced audio designer, or a solo gamedev just starting out.

The byProd editor showing a sound event node graph

You can preview your sound events in the editor as you are designing them, using parameters and signals to control them in real-time. You can also preview your wave assets (.wav, .ogg, .mp3) directly in the editor to make sure you find the correct one.

The project document, the work data the editor operates on, is a human-readable JSON file, meaning it is VCS friendly.

With a click of a button, the editor compiles the project into an efficient binary format ready to be loaded by the game. It also compiles any wave assets referenced by the project into sound bank files, optionally compressing the assets into Ogg Vorbis.

If you are using the Reaper DAW to edit your wave clips, you can drag the Reaper project (.rpp) file from the asset library directly into the node graph of a sound event. This way you only see the .rpp file and any clips it makes available to you (areas marked up for this) in byProd, hiding the raw source data files.

Runtime

The byProd runtime is a small .dll (Windows), .so (Linux) or .a (WASM) with a simple C-API, meaning it can be used from almost any programming language. The runtime is written in cross-platform C++ code with as few dependencies as possible. You can find bindings for other languages, contributed by community members, on the byProd Resources repository on GitHub.

The runtime is designed to fit into your game/engine, and do things your way. It doesn't open any files on its own, instead asking you to do that and feed it the bytes. You can make byProd allocate all dynamic memory through your own memory allocators. If you have a job system or thread pool, you can make byProd use it for async wave decode operations.

byProd uses a modified version of the open-source SoLoud audio engine to play audio. SoLoud is very powerful and byProd uses only some of its features. More things will almost certainly be exposed in the future.

Questions and answers

Who is developing byProd?

blob raising hand byProd is developed by Madrigal Ltd. Come say hi on our Discord or check out our YouTube channel!

Why is it called "byProd"?

byProd is a byproduct of another project, the video game Traction Point. During development streams and updates, people kept asking if the audio tools were publicly available, and now they are!

How much does byProd cost?

While in beta, byProd is free to use. See Licensing for more details.

Can I make commercial games using byProd?

Yes! See Licensing for more details.

Is the source code available?

Not right now, but never say never. Do you need to support an exotic platform? Or need a specific MSVC runtime? Let us know, maybe we can figure something out.

What about game consoles? macOS? Other platforms?

Are you a licensed game console developer and want to ship a game using byProd? Send an email to info@madrigalgames.com.

As for other platforms, we'd love to support everything under the sun, but for now we are focusing on Windows, Linux and browsers. Need something else? Let us know.

Where can I ask questions? Is there a community forum?

For now, the best place is the Madrigal Games Discord where we have a channel dedicated to byProd. Come say hi, we're a friendly bunch!

If there is enough demand, a proper forum might make sense at some point.

Is byProd related to "Timbre"?

Timbre is the original, internal version of the audio engine which depends on Madrigal's own Basis game engine. You can still find a bunch of videos about Timbre on Madrigal's YouTube channel. byProd is a complete, self-contained and cross-platform rewrite of both the runtime and the editor. Timbre 2.0 if you will. With more features and polish, byProd still hasn't even gotten to 1.0 though. That's how much better it is.

Licensing

byProd is currently in beta. While in beta, it is free to use, for commercial and non-commercial projects alike. Beta versions you have downloaded remain free to use even after the beta ends.

All we ask in return is a line in your credits. Applications that ship the byProd runtime must include "byProd audio engine, copyright Madrigal Ltd." in their credits, documentation, or another reasonable place.

When byProd leaves beta and reaches 1.0, we may introduce a pricing model to keep continued development and support viable. Whatever shape that takes, byProd is meant to stay affordable even for small developers, and we don't like subscriptions any more than you do.

byProd is still taking shape, so APIs and file formats may change between beta versions. We provide import and migration paths where we can, but moving to a new beta may take some porting work on your side.

If you want to stay on an old beta version and ship games with it, you are free to do so, but be aware that you do so without support of any kind.

This is an overview, not the license itself. Please read the full license text, which you can find in each downloaded package, before using byProd.

Download

Check out the byProd Resources repository on GitHub for additional samples, language bindings etc.