Giter VIP home page Giter VIP logo

spatialaudio-unity's Introduction

Licensed under the MIT License

Introduction

This repository provides plugins and tools for integrating spatial audio into your Unity 3D applications and games

  • A cross-platform spatializer plugin (supported on Windows and Android) that uses highly efficient spatial audio DSP processing algorithms.
  • A sample Unity application that demonstrates cross-platform spatializer plugin configuration and usage.

Getting started with Spatial Audio for Unity

Cloning this repository is not required to start using the Microsoft Spatializer in your Unity project. Visit the documentation for instructions on integrating the Microsoft Spatializer into your Unity project. For a more in-depth exploration of spatial audio, check out the learning module. If you'd like to build the plugin yourself, see below.

Choosing the right spatializer

With requirements and features evolving over time, there are now 3 different Unity spatializer plugins available from Microsoft. Here's a brief description of their differences which can help decide the right plugin for a project.

This is the latest highly optimized cross-platform spatializer plugin for Windows and Android built from this repository. Although this plugin is currenly in the pre-release phase, it's being actively developed and recommended for any new projects, especially those that need to support both Windows and Android. This plugin uses the latest DSP engine that is highly optimized for both memory and CPU and fits well into Unity's audio engine architecture.

While it is recommended to switch over to the latest cross-platform spatializer plugin, the previous HoloLens 2 specific spatializer plugin version with hardware offload suppport, remains available on GitHub releases and on a UPM feed via Mixed Reality Feature Tool. This plugin can be useful for any HoloLens 2 specific projects where it can reduce the CPU usage by leveraging offloaded spatial audio DSP. This plugin utilizes Windows Spatial Audio Platform APIs that prevent the processed audio signal to flow back into Unity's audio engine which can make it cumbersome for supporting some audio design features, such as adding an environmental reverb to the spatial audio mix.

Unity MS-HRTF Plugin

This is the original spatializer plugin which is shared for historical purposes. This plugin does not utilize the multi-source mixer plugin which leads to higher compute overhead than newer plugin offerings.

Required Software

Windows Logo
Windows SDK 18362+
VS Logo
Visual Studio 2019
CMake Logo
CMake
Unity3D logo
Unity 2019+
Python Logo
Python 3+
NodeJS Logo
Node.js
Android Logo
Android NDK
Windows 10 May 2019 Update SDK to build the spatializer plugin. Visual Studio is used for code editing, deploying and building UWP app packages CMake is required for generating Visual Studio 2019 projects Unity 2019 is required to build the spatializer plugin package.
Plugin can be used on Unity 2018 LTS and higher versions.
Helper scripts for build and packaging use Python 3 and higher. For UPM packaging. Required for building Android binaries.

Branch Guide

  • This repository follows the GitFlow branching model.
  • Master branch is used for building release candidates and official releases. Direct pull requests into master are not allowed.
  • Develop branch is used for staging ongoing work for the next official release and merged with master after extensive review and testing. Direct pull requests into develop branch are not allowed.
  • Use feature branches to bring up individual features. Once a feature is ready and tested, use a pull request to merge it into the develop branch.

Clone the Repository

git clone https://github.com/microsoft/spatialaudio-unity.git --recurse-submodules

If you forget to include submodules when cloning, add them with git submodule update --init --recursive

Build Status

Build Branch Status
Release master Release Build Status
Validation develop Validation Build Status

Local Build

  • Launch "Developer Command Prompt for Visual Studio 2019".
  • Switch directory to the root of your Git enlistment.
  • Run the CMake script to generate Visual Studio 2019 projects: python3 Tools\runcmake.py
  • Run the build script to build all flavors: python3 Tools\build.py
  • To generate the Unity package: python3 Tools\unity_package.py -u "c:\Program Files\Unity\Hub\Editor\2020.3.2f1\Editor" -v 2.0.0
  • To generate the UPM package: python3 Tools\upm_package.py -v 2.0.0

Artifacts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.