Skip to main content

AudioLink 🎻

June has various ways to read from AudioLink. If you are unfamiliar with AudioLink, I suggest reading the Github here. TL;DR: AudioLink allows for real-time and dynamic (aka not baked like animations) audio reactivity among materials. This section is for using AudioLink through a script attached to a material with June.

Material vs Script

Because June offers two ways to control the shader through AudioLink, each has its own pros and cons. The pros of this section, controlling by script, is that you can control each property individually (for instance, make only the colour of a blur change to music) rather than just controlling the entire shader. This is useful for more complex scenarios, but is more work to set up.

The pros of using a material-based approach is that it is easy, fast, and just works. The cons are that you will simply control different parts of the entire shader and not target individual properties.

The script will work on Worlds, while the material will work on Avatars AND Worlds.

Please refer to the Effects -> AudioLink 🎻 for the scripting portion of AudioLink.

Using The Script Generator

When you open June's AudioLink Generator, whether through the UI or the toolbar (June -> Version -> AudioLink), you will get a new window with a few options. There is a compatability panel that detects if you have AudioLink installed. If the compatability panel says that you don't have the VRChat World SDK - but you are certain you do - you can safely ignore that warning (they sometimes change how the SDK is installed, so detection may be outdated).

Script Settings

Because this is a script that generates another script (an AudioLink one), you'll need to pick where your new .cs file will be saved. Somewhere in your Unity project is best, but you can theoretically save it anywhere.

June Settings

You will need to provide a June material for the script to work with. While this doesn't have to be the same material that will control it, it uses it as a sort-of index to look up property names. Once you add a material, you can then add as many Properties as you want.

What's In A Property?

A Property is an individual setting you see in the June UI - so, for instance, the value for Blur Power is a property. There are two types of properties: Float and Vector4. A Float is a single number, while a Vector4 is a four-part vector (x, y, z, w). You can use the Vector4 type to control things like colours or anything else that you see has four options in the UI.

In the Property field, enter the name of your property - for instance, _BlurPower. Please see below to find properties easily.

In the Waveform Target field, you will be able to choose whether you want this property to be controlled by Bass, Low Mid, High Mid, or Treble. This is the same as the AudioLink material settings.

In the Clamp Floor and Clamp Max settings, you will control what the property will be at its lowest point (example, if you choose Bass, what it will be when there is NO bass at all) and highest point (example, if you choose Bass, what it will be when there is a lot of bass).

Finally, you can control the Intensity of the property. The higher intensity means it will be more reactive to the music.

Search For Properties

There is a little search bar in the script to help you. Once you have a reference material selected, you can type something such as "Blur" and it will result in various properties (ex. _BlurPower). You can use this to search for the effect you want and then find the specific property name you want to control. Property names are a bit technical because they are what is used in the code, so I apologise it is a bit hard to figure out at first, but I hope the search helps!

Generating Your Script

When you're done, hit the Generate button and don't forget to add your script to your object that holds your June material! Again, it doesn't have to be the same material you used as a reference, but make sure whatever material you use has the effects you want enabled.