- Apple.Core
See the Quick-Start Guide for general installation instructions.
This plug-in includes a sample scene with SoundEvents, scripts, prefabs and audio assets.
The sample can be imported via the Window > Package Manager. In the packages list view, select Apple.PHASE and in the Samples section cilck the Import button.
DemoScene.unity contains a PHASESource that rotates around a PHASEListener and PHASEOccluder. Additional example SoundEvents can be used by setting the SoundEvent field on the PHASESource.
The Crowd and Footsteps SoundEvents have accompanying scripts (AmbienceBlender.cs and FootstepTrigger.cs respectively) to control MetaParameter values. These are most easily used by dragging the Crowd or Footsteps prefab into the active scene. They may then be controlled via the exposed UI elements in the Inspector.
Please note that in order to use the StereoPopcorn SoundEvent, the Popcorn_Panned.wav file must be copied manually from the source repository into your project. It can be found at plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/StreamingAssets.
Please find an introduction to using the PHASE Unity Plug-in below. For an overview of the PHASE.framework, please see PHASE Developer Documentation
For documentation of PHASE's C# API see PHASEHelpers.
- 1. Create a PHASEListener
- 2. Create a PHASESource
- 3. Create a PHASESoundEvent
- 4. Create a PHASEOccluder
- 5. Control a PHASESoundEvent via script
- 6. Change global reverb setting via script
Create a PHASEListener by adding the PHASEListener component to any existing Unity GameObject.
There can only be one PHASEListener per Unity scene.
The PHASEListener represents the "ears" of the simulation and all the 3D rendering will be based on this objects transformation. It also controls the default global reverb setting that effects the rendering of early reflections and late reverberation.
The PHASESource represents a sound source in the virtual scene and can playback PHASESoundEvent assets. A PHASESource can either be a volumetric or point source.
Create a PHASESource by adding the PHASESource component to any existing Unity GameObject. If the GameObject has a Mesh Filter component, that will be used to define the geometry of a volumetric source. If there is no Mesh Filter, the PHASESource will be treated as a point source.
- Sound Event: The sound event asset to be triggered by this source.
- Source Mode: A choice between volumetric or point source. Volumetric sources require a mesh on the
GameObject, if none is provided, a point source will be created. - Direct Path Send: A linear value representing the level of send for the Direct Path acoustic simulation.
- Early Reflections: Send A linear value representing the level of send for the Early Reflections acoustic simulation.
- Late Reverb Send: A linear value representing the level of send for the Late Reverb acoustic simulation.
- Play on Awake: Should this source start playing as soon as the scene loads
- You can create a new
SoundEventvia the menu dropdownAssets > Create > Apple > PHASE > SoundEventor by right-clicking in the Project Tab. - Double-click the new
SoundEventasset to open theSound Event Composerwindow. - Create a new
PHASESoundEventNodeby right-clicking in theSound Event Composerwindow. - You can connect two
PHASESoundEventNodes by dragging from theChild Nodeport of one to theParentport of another. - To move the view, right-click on an empty space in the Sound Event Composer and drag. To zoom in/out use the mouse wheel.
- You can delete nodes by selecting them and pressing the Delete key, or by right-clicking and selecting
Remove.
For descriptions of each node see Sound Event Nodes
Create a PHASEOccluder by adding a PHASEOccluder component to an existing GameObject that contains a Mesh Filter.
The PHASEOccluder uses the Mesh of the object to which it belongs to occlude sound sources.
When created, the PHASEOccluder component will automatically register the object's Mesh for optimal use with PHASE occlusion tracing.
- Material: The material used for the absorption and scattering characteristics of this object.
PHASESoundEvents can be triggered via C# scripts.
using Apple.PHASE:
// A PHASESource component should be attached to a GameObject that emits sound.
public PHASESource source;
source = gameObject.GetComponent<PHASESource>();
source.Play():
// Stop playback.
if (source.IsPlaying())
{
source.Stop();
}PHASEMetaParameters can also be updated via C# script, impacting the playback of a PHASESoundEvent.
A PHASESoundEventParameter should be connected to a PHASESoundEventNode (i.e. Switch or Random node), and that PHASESoundEvent should be associated with the PHASESource that calls the method below.
source.SetMetaParameterValue("parameter", "value");See FootstepTrigger.cs for an example.
The global reverb settings for PHASE are set via the PHASEListener, and can be changed dynamically via C# script.
using Apple.PHASE;
// A PHASEListener component should be attached to a GameObject that acts as the "ears" of the scene.
PHASEListener listener;
listener = gameObject.GetComponent<PHASEListener>();
listener.SetReverbPreset(Helpers.ReverbPresets.LargeHall);The PHASESoundEventSamplerNode plays an AudioClip through its associated Mixer.
- Is Streaming Asset Indicates that the asset is in the
StreamingAssetsdirectory. - Audio Clip The associated
AudioClip. - Calibartion Mode Select a loudness correction strategy.
- Level Reference level for above calibration mode.
- Looping Indicates if the
AudioClipis looping. - Mixer The type of mixer that the Sampler Node will use. See Mixers for more details.
The PHASESoundEventBlendNode smoothly fades between the audio of its child nodes.
- Full Gain At High The playback level of audio when the blend node is at High Value.
- High Value The high value threshold.
- Low Value The low value threshold.
- Full Gain At Low The playback level of audio when the blend node is at low value.
- Blend Mode The selected blend mode. Parameter or Auto Distance.
- Parameter The blend value is controlled by a
PHASESoundEventParameterDouble. - Auto Distance The blend value is automatically determined by a
PHASESpatialMixer.
- Parameter The blend value is controlled by a
See the Crowd asset in Demos/SoundEvents for an example on how this can be used.
The PHASESoundEventContainerNode plays all of its child nodes at the same time.
The PHASESoundEventSwitchNode plays one of its child nodes depending on the value of its associated PHASESoundEventParameterString.
- SwitchValue: A string value for every child node.
- Parameter: A
PHASESoundEventParameterStringthat controls which child node is played. If the value ofParameteris the same as theSwitchValueof a child node, that child node will be played when this node is triggered.
The PHASESoundEventRandomNode plays one of its child nodes by random selection.
- Weight: The likelihood that this child node will be selected. Minimum value of 1 is least-likely while higher values are more likely.
A PHASESpatialMixer plays audio with 3D position, orientation, and environmental effects. Use this mixer to take advantage of occlusion, reverb modelling and cull distance.
- Direct Path Modeler Enables Direct Path Modeling for this Mixer. Direct Path refers to sound traveling directly from source to listener without reflections.
- Early Reflections Modeler Enables Early Reflections Modeling for this Mixer. Early Reflection refers to the earlier echoes along the duration of sound resonance.
- Late Reverb Modeler Enables Late Reverb Modeling for this Mixer. Late Reverb refers to the later echoes along the duration of sound resonance.
- Cull Distance The distance beyond which the framework doesn't process a sound source. To disable culling, set to 0.
- Listener Directivity Properties The directivity properties to apply to the
PHASEListenerthat "hears" this mixer. - Source Directivity Properties The directivity properties to apply to any
PHASESourcethat uses this mixer.
For more information see Spatial Mixing.
A PHASEChannelMixer plays audio in a specific channel layout mode.
- Channel Layout: The channel layout of the mixer:
Mono,Stereo,5.1,7.1
For more information see PHASEChannelMixerDefinition.
A PHASEAmbientMixer plays audio with a specific 3D orientation. The 3D orientation is determined by the pitch, yaw and roll values.
- Pitch Pitch of the mixer's orientation.
- Yaw Yaw of the mixer's orientation.
- Roll Roll of the mixer's orientation.
- Channel Layout The channel layout of the mixer:
Mono,Stereo,5.1,7.1
For more information see PHASEAmbientMixerDefinition.