-- For example, we have a short chime that we want to play every time a new avatar joins the scene.
hostObject = Space.Host.ExecutingObject
function welcomeSound ()
hostObject.Audio.Play()
end
Space.Scene.OnPlayerJoin(welcomeSound)
Stop
void Stop ()
Stops playing the audio clip.
Space.Host.ExecutingObject.Audio.Stop()
hostObject = Space.Host.ExecutingObject;
function audioOnOff ()
if hostObject.Audio.IsPlaying then
hostObject.Audio.Stop();
else
hostObject.Audio.Play();
end
Space.Log(hostObject.Audio.IsPlaying);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(audioOnOff);
-- Now, we can make the sound play or stop playing just by clicking the object.
Pause
void Pause ()
Pauses the audio clip.
Space.Host.ExecutingObject.Audio.Pause()
hostObject = Space.Host.ExecutingObject;
function pauseOnOff ()
if hostObject.Audio.IsPlaying then
hostObject.Audio.Pause();
else
hostObject.Audio.UnPause();
end
Space.Log(hostObject.Audio.IsPlaying);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(pauseOnOff);
-- Now, every time an object is clicked, the sound clip is paused/unpaused
UnPause
void UnPause ()
Pauses the audio clip.
Space.Host.ExecutingObject.Audio.UnPause()
hostObject = Space.Host.ExecutingObject;
function pauseOnOff ()
if hostObject.Audio.IsPlaying then
hostObject.Audio.Pause();
else
hostObject.Audio.UnPause();
end
Space.Log(hostObject.Audio.IsPlaying);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(pauseOnOff);
-- Now, every time an object is clicked, the sound clip is paused/unpaused
PlayOneShot
Plays the audio clip just ones at a desired volume.
hostObject = Space.Host.ExecutingObject;
function playOnce ()
hostObject.Audio.PlayOneShot(Space.Resources[0],0.5);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(playOnce);
-- Now, every time the object is clicked, a sound clip we have in Scripting Runtime Resources is played at half the volume.
-- This happens regardless if the audio clip in the AudioClip property is playing or not.
hostObject = Space.Host.ExecutingObject;
function audioOnOff ()
hostObject.Audio.Enabled = not hostObject.Audio.Enabled;
Space.Log(hostObject.Audio.Enabled);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(audioOnOff);
-- When the host object is clicked, the Audio Source component gets enabled, if it was disabled,
-- or disabled, if it was enabled, and its new state is printed to the console.
Loop
bool Loopgetset
Is looping of the sound clip enabled?
Space.Host.ExecutingObject.Audio.Loop = true
--the below script will make the object toggle it's Loop option OnClick
--[Add "audio" reference to the Scripting Runtime component]
thisGameObject = Space.Host.ExecutingObject
audio = Space.Host.GetReference("audio").Audio
OnClick = function()
audio.Loop = not audio.Loop
end
thisGameObject.AddClickable()
thisGameObject.Clickable.OnClick(OnClick)
DopplerLevel
float DopplerLevelgetset
The Doppler level of the Audio Source. (See: Doppler Effect)
--the below script will make a slider change the Audio Source's Doppler Level
--[Add "slider" and "audio" references to the Scripting Runtime component]
thisGameObject = Space.Host.ExecutingObject
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.DopplerLevel = slider.Value * 5 --0 to 5
end
slider.OnValueChanged(OVC)
Volume
float Volumegetset
The Volume level of the Audio Source.
Space.Host.ExecutingObject.Audio.Volume = 0.5
hostObject = Space.Host.ExecutingObject;
Space.Log(hostObject.Audio.Volume);
-- 1 by default
function audioVolumeDecr ()
if hostObject.Audio.Volume > 0 then
hostObject.Audio.Volume = hostObject.Audio.Volume - 0.2;
end
Space.Log(hostObject.Audio.Volume);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(audioVolumeDecr);
-- Now, every time we click this object, the Volume level is decreased by 0.2, until it reaches 0.
Pitch
float Pitchgetset
The Pitch level for the Audio Source.
Space.Host.ExecutingObject.Audio.Pitch = 0.5
hostObject = Space.Host.ExecutingObject;
Space.Log(hostObject.Audio.Pitch);
-- 1 by default
function audioPitchChange ()
if hostObject.Audio.Pitch < 3 then
hostObject.Audio.Pitch = hostObject.Audio.Pitch + 0.5;
end
Space.Log(hostObject.Audio.Pitch);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(audioPitchChange);
-- Now, every time we click this object, the Pitch level is increased by 0.5, until it reaches 3.
Time
float Timegetset
Playback position in seconds.
Space.Host.ExecutingObject.Audio.Time = 10
--the below script will make a slider set Audio Source's playback position (using seconds)
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.Time = slider.Value * audio.Length -- from 0 to Length of clip
end
slider.OnValueChanged(OVC)
TimeSamples
int TimeSamplesgetset
Playback position in PCM samples.
Space.Host.ExecutingObject.Audio.TimeSamples = 5
--the below script will make a slider set Audio Source's playback position (using PCM Samples)
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.TimeSamples = slider.Value * audio.Samples -- from 0 to number of samples
end
slider.OnValueChanged(OVC)
--the below script will make a slider set Audio Source's playback position (using seconds)
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.Time = slider.Value * audio.Length -- from 0 to Length of clip
end
slider.OnValueChanged(OVC)
--the below script will make a slider set Audio Source's playback position (using PCM Samples)
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.TimeSamples = slider.Value * audio.Samples -- from 0 to number of samples
end
slider.OnValueChanged(OVC)
--this script will play a looping sound only if someone is using the seat
--and will stop the sound if someone is not
--(Example: carnival game )
--[Object must contain a Seat component and AudioSource component]
thisGameObject = Space.Host.ExecutingObject
OnUpdate = function()
if thisGameObject.Seat.InUse then
if not thisGameObject.Audio.IsPlaying then
thisGameObject.Audio.Play()
end
else
if thisGameObject.Audio.IsPlaying then
thisGameObject.Audio.Stop()
end
end
end
thisGameObject.Audio.Loop = true
thisGameObject.SubscribeToEvents()
thisGameObject.OnUpdate(OnUpdate)
PanStereo
float PanStereogetset
Pans the sound to the left or right. Values range from -1 to 1: 0 is the middle, -1 is full left, 1 is full right.
Space.Host.ExecutingObject.Audio.PanStereo = -1
--the below script will make a slider set the Stereo Pan
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.PanStereo = (slider.Value * 2) - 1 --(from -1 left to +1 right)
end
slider.OnValueChanged(OVC)
SpatialBlend
float SpatialBlendgetset
The level of impact 3D effects make on the AudioSource. 0 - no impact (full 2D sound), 1 - maximum impact (full 3D sound).
Space.Host.ExecutingObject.Audio.SpatialBlend = 1
hostObject = Space.Host.ExecutingObject;
function spBlendChange ()
if hostObject.Audio.SpatialBlend < 1 then
hostObject.Audio.SpatialBlend = hostObject.Audio.SpatialBlend + 0.2;
else
hostObject.Audio.SpatialBlend = 0;
end
Space.Log(hostObject.Audio.SpatialBlend);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(spBlendChange);
-- Spatial Blend is increased by 0.2 every time the object is clicked, until it reaches 1.
-- Then with the next click, it resets back to 0.
--the below script will make the object toggle it's Spatialize Post Effects feature OnClick
--[Add "audio" reference to the Scripting Runtime component]
thisGameObject = Space.Host.ExecutingObject
audio = Space.Host.GetReference("audio").Audio
OnClick = function()
audio.SpatializePostEffects = not audio.SpatializePostEffects
end
thisGameObject.AddClickable()
thisGameObject.Clickable.OnClick(OnClick)
ReverbZoneMix
float ReverbZoneMixgetset
The level at which the audio coming from this Audio Source will be mixed into the global reverb of the scene (accomplished with Reverb Zones).
exa--the below script will make a slider set the Reverb Zone Mix value
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.ReverbZoneMix = (slider.Value * 1.1) --(from 0.0 to 1.1)
end
slider.OnValueChanged(OVC)
BypassEffects
bool BypassEffectsgetset
When true, none of global sound effects (reverbs, filters, etc.) are applied to the audio from this Audio Source.
--the below script will make the object toggle it's Bypass Reverb Zones feature OnClick
--[Add "audio" reference to the Scripting Runtime component]
thisGameObject = Space.Host.ExecutingObject
audio = Space.Host.GetReference("audio").Audio
OnClick = function()
audio.BypassReverbZones = not audio.BypassReverbZones
end
thisGameObject.AddClickable()
thisGameObject.Clickable.OnClick(OnClick)
Spread
float Spreadgetset
The angle of spread of the audio channels in the 3D space (only works for stereo and multichannel audio). 0 by default - all channels are concentrated at the same speaker location, making it "mono".
Space.Host.ExecutingObject.Audio.Spread = 10.0
hostObject = Space.Host.ExecutingObject;
function increaseSpread ()
if hostObject.Audio.Spread < 360 then
hostObject.Audio.Spread = hostObject.Audio.Spread + 90;
end
Space.Log(hostObject.Audio.Spread);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(increaseSpread);
-- Every time an object is clicked, the spread increases by 90 degrees - compare the sound at different angles of spread!
Priority
int Prioritygetset
The priority of this Audio Source: when there are more Audio Sources playing than channels available, Priority defines which channels will be discarded in favour of those with a higher priority. 0 is the highest priority, 255 - the lowest.
Space.Host.ExecutingObject.Audio.Priority = 50
hostObject = Space.Host.ExecutingObject;
function changePriority ()
if hostObject.Audio.Priority == 0 then
hostObject.Audio.Priority = 255;
else
hostObject.Audio.Priority = 0;
end
Space.Log(hostObject.Audio.Priority);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(changePriority);
-- Now the Audio Source alternates between the highest and the lowest priorities.
-- This can be useful, for example, in a scene with an ambient sound set at Priority 128, where we have a speaker, which plays a certain looped audio nonstop.
-- When we want to hear the audio, we change it to the highest priority, so it blocks the ambient sound.
-- When we don't, we change it to the lowest, and the ambient sound dominates the scene again.
Mute
bool Mutegetset
Is the audio muted? If True, the Volume is set to 0. If False, the Volume is restored to the original level.
Space.Host.ExecutingObject.Audio.Mute = true
hostObject = Space.Host.ExecutingObject;
function muteOnOff ()
hostObject.Audio.Mute = not hostObject.Audio.Mute;
Space.Log(hostObject.Audio.Mute);
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(muteOnOff);
-- Now clicking the object works like the Mute button.
MinDistance
float MinDistancegetset
At which distance from the Audio Source the sound will begin ceasing? The sound will be heard at its maximum volume within this distance. (Spatial Blend should not be equal to 0 for this property to take effect.)
--the below script will make a slider set the Minimum Distance
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.MinDistance = (slider.Value * 20) + 10 --(from 10 to 30)
end
slider.OnValueChanged(OVC)
MaxDistance
float MaxDistancegetset
At which distance from the Audio Source the sound will no longer be heard? (Spatial Blend should not be equal to 0 for this property to take effect.)
--the below script will make a slider set the Maximum Distance
--[Add "slider" and "audio" references to the Scripting Runtime component]
slider = Space.Host.GetReference("slider").UISlider
audio = Space.Host.GetReference("audio").Audio
OVC = function()
audio.MaxDistance = (slider.Value * 40) + 60 --(from 60 to 100)
end
slider.OnValueChanged(OVC)
AudioClip
The audio clip that is or will be played by this Audio Source.
-- In this example, there are 3 audio clips in Scripting Runtime Resources
hostObject = Space.Host.ExecutingObject;
local nextTrack = 0;
function changeTrack ()
hostObject.Audio.AudioClip = Space.Resources[nextTrack];
hostObject.Audio.Play();
Space.Log(Space.Resources[nextTrack].Name);
if nextTrack == 2 then -- replace 2 with n-1, where n is the amount of audio clips you have added to Resources
nextTrack = 0;
else
nextTrack = nextTrack + 1;
end
end
hostObject.SubscribeToEvents();
hostObject.OnMouseDown(changeTrack);
-- Now, every time the object is clicked, the next audio clip is played.
-- What's more, the list is looped (the index resets back to 0 when it gets to the end of the list)!
GameObject
Returns a reference to the GameObject of this component.