AudioLink is a system that analyzes and processes in-world audio into many different highly reactive data streams and exposes the data to VRChat Udon, world shaders, and avatar shaders.
The per-frequency audio amplitude data is first read briefly into Udon using Unity's GetOutputData. It is then sent to the GPU for signal processing and buffered into a CustomRenderTexture. Then, the CustomRenderTexture is broadcast globally (called _AudioTexture
) which can be picked up by shaders both in-world and across all avatars.
- AudioLink theme colors are now configurable via the AudioLink controller with a slick color-picker GUI. (Thanks, DomNomNom)
- Added the ability to get the time since Unix epoch in days, and milliseconds since 12:00 AM UTC. Additionally, a helper function,
AudioLinkGetTimeOfDay()
has been added, which lets you easily get the current hours, minutes and seconds of the time of day in UTC. - An editor scripting define,
AUDIOLINK
, which will be automatically added when AudioLink is included. (Thanks, Float3) - AudioLink can now compile without VRCSDK and UDON, for use outside of VRChat. This kind of usecase is still experimental at best, though. (Thanks, Float3)
- Added a few new helper methods to sample various notes of the DFT. (Thanks, Float3)
- AudioLink theme colors have been cleaned up, including a new demo in the example scene, and the ability to change the colors in realtime in the editor. (Thanks, DomNomNom)
- Changed a few default settings on the AudioLink controller to be more responsive. (Thanks, DomNomNom)
- Changed folder structure to put less clutter into user projects.
- Fix vertical UV flip of the AudioLink texture on Quest. (Thanks, Shadowriver)
- Fix error when using "Link all sound reactive objects to this AudioLink" button. (Thanks, Nestorboy)
- Add a header guard to
AudioLink.cginc
to prevent duplicate includes. (Thanks, PiMaker) - Fix various warnings in shader code. (Thanks, Float3)
- Fix NaN-propagation issue in the included video player. (Thanks, Texelsaur)
- Add a player validity check to the included video player. (Thanks, Texelsaur)
- Use
Networking.LocalPlayer.isInstanceOwner
instead ofNetworking.IsInstanceOwner
, which is broken. (Thanks, techanon) - The logos on the AudioLink controller were using point filtering, which was changed to bilinear. (Thanks, DomNomNom)
- Take note of which AudioSource you are using to feed AudioLink, this reference may be lost during upgrade.
- Install the latest VRChat SDK3 and UdonSharp (following their directions)
- Close unity
- With Windows explorer (NOT within Unity), remove the following files & folders:
- AudioLink (folder)
- AudioLink.meta
- Reopen unity
- Download and install the latest AudioLink release
- If using AudioReactiveObject or AudioReactiveLight components, you will need to manually re-enable the "Audio Data" under AudioLink "experimental" settings. This feature is now considered experimental until VRChat maybe gives us native asynchronous readback.
- In scene(s) containing old versions of AudioLink:
- Delete both AudioLink and AudioLinkController prefabs from the scene
- Re-add AudioLink and AudioLinkController to the scene by dragging the prefabs from the AudioLink folder in projects (world creators only)
- Click the "Link all sound reactive objects to this AudioLink" button on AudioLink inspector panel (world creators only)
- Drag the AudioSource you were using previously into the AudioLink audio source parameter
- NOTE: If you previously used AudioLinkInput, you are welcome to continue doing so, however now in 2.5+ AudioLink is much smarter about inputs. Try dragging it straight into the AudioLink / audio source parameter!
- VRChat SDK3 for worlds (Udon)
- UdonSharp
- CyanEmu (optional but highly recommended)
- The latest release: https://github.com/llealloo/vrc-udon-audio-link/releases/latest
- Install VRChat SDK3, UdonSharp, CyanEmu, and the latest release of AudioLInk
- Have a look at the example scene, "AudioLink_ExampleScene". It contains a lot of visual documentation of what is going on and includes several example setups. Or cut to the chase:
- Drag AudioLink into scene
- Link audio source by dragging the AudioSource gameobject into AudioLink's audio source parameter
- Drag AudioLinkController into scene and drag AudioLink into the controller's "Audio Link" parameter.
- Click the "Link all sound reactive objects..." button to link everything up.
- Import AudioLink into your avatar project
- NOTE: Do not install UdonSharp, CyanEmu or any other tools meant for worlds into your project. When testing avatars, you should import only the AudioLink package, and none of its usual dependencies.
- Drag AudioLinkAvatar prefab into scene with your avatar
- Add your favorite music track to test with to your project
- Drag your music track from the Project panel into the Hierarchy to create a new AudioSource GameObject
- Drag the AudioSource object that was created in the Hierarchy into AudioLinkAvatar/audioSource parameter
- Adjust the Gain/Bass/Treble settings on AudioLinkAvatar if necessary
- Hit play!
- Silent Cel Shading Shader by Silent
- Mochies Unity Shaders by Mochie
- Fire Lite by Rollthered
- VR Stage Lighting by AcChosen
- Poiyomi Shader by Poiyomi
- orels1 AudioLink Shader by orels1
- VRC Things by _pi_
- June Screen FX by luka
- phosphenolic for the math wizardry, conceptual programming, debugging, design help and emotional support!!!
- cnlohr for the help with the new DFT spectrogram and helping to port AudioLink to 100% shader code
- lox9973 for autocorrelator functionality and the inspirational & tangential math help with signal processing
- Texelsaur for the AudioLinkMiniPlayer and support!
- Pema for the help with strengthening the codebase and inspiration!
- Merlin for making UdonSharp and offering many many pointers along the way. Thank you Merlin!
- Orels1 for all of the great help with MaterialPropertyBlocks & shaders and the auto configurator script for easy AV3 local testing
- Xiexe for the help developing and testing
- Thryrallo for the help setting up local AV3 testing functionality
- CyanLaser for making CyanEmu
- Lyuma for helping in many ways and being super nice!
- ACIIL for the named texture check in AudioLink.cginc
- fuopy for being awesome and reflecting great vibes back into this project
- Colonel Cthulu for incepting the idea to make the audio data visible to avatars
- jackiepi for math wizardry, emotional support and inspiration
- Barry, OM3, GRIMECRAFT for stoking my fire!
- Lamp for the awesome example music and inspiration. Follow them!! https://soundcloud.com/lampdx
- Shelter, Loner, Rizumu, and all of the other dance communities in VRChat for making this
First, fork vrc-udon-audio-link into your personal github account using the github GUI, then make a new unity project called AudioLinkWork
then, check out your copy of of vrc-udon-audio-link, and move its contents, .git
included into the Assets
folder of the project you made. Once done, place the following .bat file in that Assets folder.
I recommend executing this following reup.bat
from the command line to address merge conflicts and other errors.
rem be sure you're on the `dev` branch!
git remote set-url origin https://github.com/llealloo/vrc-udon-audio-link
git pull
git remote set-url origin https://github.com/YOUR_GITHUB_USERNAME_HERE/vrc-udon-audio-link
- Update readme in both places (root and AudioLink folder)
- Check section on how to update
- Copy over changelog for the new version to readme
- Update documentation where necessary
- Update changelog
- Bump version number in AudioLink.cs
- Clean up assets in wrong folders
- Test with latest U#
- Make release GitHub release with new relevant changelog attached
- Update the live world