{"id":30906094,"url":"https://github.com/dtaralla/rrise","last_synced_at":"2025-09-09T11:25:17.372Z","repository":{"id":40045033,"uuid":"476516456","full_name":"dtaralla/rrise","owner":"dtaralla","description":"A Rust binding for Wwise","archived":false,"fork":false,"pushed_at":"2023-01-04T16:18:59.000Z","size":18552,"stargazers_count":16,"open_issues_count":2,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-05T21:40:03.985Z","etag":null,"topics":["gamedev","rust","wwise"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dtaralla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-01T00:04:39.000Z","updated_at":"2025-06-21T16:49:35.000Z","dependencies_parsed_at":"2023-02-02T18:32:48.721Z","dependency_job_id":null,"html_url":"https://github.com/dtaralla/rrise","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/dtaralla/rrise","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaralla%2Frrise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaralla%2Frrise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaralla%2Frrise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaralla%2Frrise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dtaralla","download_url":"https://codeload.github.com/dtaralla/rrise/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dtaralla%2Frrise/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274095405,"owners_count":25221433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gamedev","rust","wwise"],"created_at":"2025-09-09T11:25:12.172Z","updated_at":"2025-09-09T11:25:17.300Z","avatar_url":"https://github.com/dtaralla.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rrise\n\n[![Crates.io](https://img.shields.io/crates/v/rrise.svg)](https://crates.io/crates/rrise)\n[![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg)](./LICENSE)\n[![Crates.io](https://img.shields.io/crates/d/rrise.svg)](https://crates.io/crates/rrise)\n\n## What is Rrise?\nRrise is a Rust binding for [Wwise](https://www.audiokinetic.com/en/products/wwise). It is _not_ and *does not want* to \nbe a complete game engine integration, but rather a starting point for other crates leveraging the binding.\n\nThe end goal is to provide game engines written in Rust like [Bevy](https://github.com/bevyengine/bevy) with a safe \nWwise API, without having to tinker with the FFI world.\n\n### About your expectations...\nThis is planned to become a rather advanced crate, that paves the way for exciting sound engine work in established Rust\ngame engines. That said, I'm definitely not the most proficient in Rust. If you notice some questionable implementation \nor architectural choices, please reach out to improve the crate. Pull requests are more than welcome: **they are \nencouraged**!\n\nIn order to use this crate, you should check the [system requirements](#Requirements) below.\n\n## Capabilities\n- Build \u0026 run on Windows 10+\n- Build \u0026 run on WSL[^0]/Linux (on distros where Wwise is supported)\n- (AD)PCM, Vorbis \u0026 Opus playback\n- Initialize/Update/Terminate sound \u0026 music engines\n- Post simple events (with support for callbacks as functions pointers or closures)\n- Set source position\n- RTPCs, switches, states and triggers\n- Default streaming manager leveraging Wwise's sample streaming manager\n- Profiling from the Wwise authoring tool\n- Dynamic \u0026 static linking of Wwise plugins through cargo features\n\n[^0]: WSL2 on Windows 11 is required to run the `bevy_music_visualizer` example\n\n### Logging\nRrise uses the [log](https://docs.rs/log/latest/log/index.html) crate for all its logging needs. Refer to `log`'s\ndocs for how to use it.\n\n### Wwise project identifiers\nCheckout the [rrise-headers](/rrise-headers) crate to automatically generate your Wwise project structure as namespaced\nRust constants!\n\n### Examples\n- Minimal example showcasing how to initialize the sound engine, start a moving source and terminate it\n- Doppler effect example showcasing RTPCs\n- Music engine example with frequency visualizer \u0026 event callbacks\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.youtube.com/watch?v=W_GUGTm2BcA\" title=\"Music engine example with frequency visualizer\" rel=\"noreferrer noopener\" target=\"_blank\"\u003e\n    \u003cimg src=\"images/bevy_music_visualizer.png\" alt=\"Bevy visualizer in video (click to play)\" style=\"max-width: 100%;\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Configuration\n\n### Config flags\nYou can set the following `cfg` flags through the `RUSTFLAGS` environment variable before building to chose which \nconfiguration of Wwise you wish to link against:\n\n|                           | Flag                               | `AK_OPTIMIZED` | Comms | Description                                        |\n|---------------------------|------------------------------------|:--------------:|:-----:|----------------------------------------------------|\n| **Debug**                 | `--cfg wwdebug`                    |       ✕        |   ✔   | Useful to debug with AudioKinetic support folks    |\n| **Profile**\u003cbr/\u003e(default) | `--cfg wwprofile`\u003cbr/\u003e(or nothing) |       ✕        |   ✔   | That's what you should be using during development |\n| **Release**               | `--cfg wwrelease`                  |       ✔        |   ✕   | Optimized for final retail builds                  |\n\nIf **Comms** are disabled, it means you can't connect to the running game from Wwise Authoring app.\n\nFor more info, check the [AudioKinetic docs](https://www.audiokinetic.com/library/edge/?source=SDK\u0026id=goingfurther_builds.html#wwise_sdk_build_config).\n\n### Wwise Plugins\nYou can [choose](https://www.audiokinetic.com/library/edge/?source=SDK\u0026id=soundengine_integration_plugins.html) to \neither link statically or dynamically to the Wwise plugins.\n\nNote that some plugins like _AkMeter_, _AkVorbisDecoder_ and _AkOpusDecoder_ can only be statically linked and are not \navailable for dynamic linking.\n\nSee [this page](https://www.audiokinetic.com/library/edge/?source=SDK\u0026id=goingfurther_builds.html#wwise_sdk_lib_dependency_requirements_plugins)\nfor a list of plugins supported by Wwise, per platform.\n\n#### Dynamic linking\nThis is the default behavior. Wwise plugins like _AkRoomVerb_, _AkParametricEQ_, _Motion_ etc. will be loaded at \nruntime from their respective shared library as needed.\n\nAny project relying on dynamic linking for some plugins needs to also deploy their respective *licensed* shared \nlibraries along the final executable (you can do this with a \n[build script](https://doc.rust-lang.org/cargo/reference/build-scripts.html) for instance).\n\nYou can find these shared libraries in `$WWISESDK/[platform]/[config]/bin`.\n\n#### Static linking\nYou might want to statically link some Wwise plugins instead of loading them at runtime from a shared libary. In \nthis case, you can leverage Rrise's cargo features to enable static linking of such plugins.\n\nFor example, if you want to statically link the _AkRoomVerb_ plugin, just build with the `AkRoomVerbFX` feature \nenabled. When your project runs, you can check that the static version of the plugin was loaded in the debug log:\n```\nAkRoomVerbFX has been statically loaded successfully\n```\n**Note:** If you already built your project once, you need to make Rrise's build script rerun to enable static \nlinking of your features. You can change the value of the `RRISE_RERUN_BUILD` environment variable before building to \nforce a rerun of Rrise's build script. You can also force a full rebuild with `cargo clean \u0026 cargo build \n--features=The,Plugin,List`. \n\n## Known issues \u0026 limitations\n- If you dynamically link Wwise effect plugins (default behavior), there is an issue on Windows where if the path given\nto `AkInitSettings::with_plugin_dll_path` contains spaces, the DLLs in that folder won't be discoverable by Wwise.\n- On Linux, when connecting the profiler, you will get those messages in the console (they seem totally harmless):\n```\n.../SDK/Linux_x64/Profile/bin/libDefaultConversions.so: cannot open shared object file: No such file or directory\n.../SDK/Linux_x64/Profile/bin/libAkSoundEngineDLL.so: cannot open shared object file: No such file or directory\n```\n\n## Requirements\n- Rust 1.61.0+\n- The `bindgen` crate [requirements](https://github.com/rust-lang/rust-bindgen/blob/master/book/src/requirements.md)\n- A licensed (free, trial, commercial,...) version of Wwise installed\n  - Tested Wwise versions:\n    - 2021.1.7\n    - 2021.1.9\n    - 2021.1.10\n  - Wwise SDK (C++)\n- **On Windows: `MSVC`**[^1]\n  - Windows 10 SDK\n  - Build tools (same as Rust, for the `cc` crate)\n  - Wwise support for Visual Studio 2015 (14.0), 2017 (15.0), 2019 (16.0), 2022 (17.0)[^2] deployment platform\n  - Make sure the `WWISESDK` environment variable is set to the SDK folder of your Wwise installation\n- **On Linux: `clang`**\n  - `g++` (for `libstdc++`)\n  - Copy the SDK folder from a Windows[^3] install of Wwise on your Linux workstation (for instance in /opt/wwise)\n    - Make sure the `WWISESDK` environment variable is set to that folder\n\n[^1]: Not tested on other compilers like MinGW or Clang\n\n[^2]: Only Wwise 2021.1.10+ supports VS2022. Trying to compile this crate with VS2022 and a version of Wwise older than\n2021.1.10 will fail.\n\n[^3]: Audiokinetic doesn't provide direct downloads to their SDK: you can only install it through their launcher. \nHowever, this launcher being only available on Windows and MacOS, you'll need to install it on a VM or similar before \nyou can work with this crate on Linux.\n\n## Short-term roadmap\n- Spatial module basic API and example\n- Review/Improve architecture\n\n### Legal stuff\nWwise and the Wwise logo are trademarks of Audiokinetic Inc., registered in the U.S. and other countries.\n\nThis project is in no way affiliated to Audiokinetic.\n\nYou still need a licensed version of Wwise installed to compile and run this project. You need a valid Wwise license \nto distribute any project based on this crate.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtaralla%2Frrise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdtaralla%2Frrise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdtaralla%2Frrise/lists"}