WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Fade in and fade out an audio file (https://forum.worldviz.com/showthread.php?t=5729)

helena35 05-20-2016 01:02 PM

Fade in and fade out an audio file
 
Hi all,

I would like to create a spatial sound atmosphere. I made a script (very rudimentary) in which whenever the user turns the head 20 degrees, hears a different file (therefore I have 18 audio files in the scene, played simultaneously; one with volume =1, and the rest with volume = 0) Is there a way to made a fade out of the previous file and fade in of the new one in an overlapping sector of 10 degrees:

0-10 degrees: file 1 volume 1 (rest volume 0)
10-20: file 1 fade out, file 2 fade in (rest volume 0)
20-30: file 2 volume 1 (rest volume 0)
30-40: file 2 fade out, file 3 fade in (rest volume 0)....

Maybe a way of changing the volume gradually in these junction circular sector regarding the position of the head?

Thanks in advance

helena35 05-20-2016 01:19 PM

I forgot to say that the user will be in a fixed position within the scene, and will only have the possibility of turning 360 degrees in this fixed position without displacements.

Jeff 05-23-2016 10:29 AM

You could use the head tracker euler values to trigger custom events. There isn't built in sound fading so you would have to write a simple sound fader that reduces volume over a small period of time.

Erikvdb 05-24-2016 03:09 AM

Quote:

Originally Posted by Jeff (Post 18363)
You could use the head tracker euler values to trigger custom events. There isn't built in sound fading so you would have to write a simple sound fader that reduces volume over a small period of time.

In this case the sound shouldn't fade over time, but rather over a number of degrees. So you could write a fader that decreases the volume of file1 with 0.1 with every degree over 10 (until volume is 0), etc.

helena35 05-29-2016 02:57 PM

Quote:

Originally Posted by Erikvdb (Post 18366)
In this case the sound shouldn't fade over time, but rather over a number of degrees. So you could write a fader that decreases the volume of file1 with 0.1 with every degree over 10 (until volume is 0), etc.

Thanks both for your answers...

Any idea of how to write a fader that decreases the volume? Is there any tool with which it can be done? I am new in Vizard and I have no idea on how to make it in a simple way...

Jeff 05-30-2016 06:04 AM

You could use vizact.onupdate to register a function that's called every frame. In that function, get the viewpoint orientation and based on that value play and fade audio files. Here's an example:

Code:

#0-10 degrees: play file 1
#10-20: fade out file 1, fade in file 2
#30-40: fade out file 2, fade in file 3       
#50-60: fade out file 3, fade in file 4...       

import viz
import vizact

viz.go()

viz.addChild('piazza.osgb')

intervals = [0,10,30,50]
audioFiles = ['bells.wav','fountain.wav','conversation.wav','birds.wav']

#create a list of audio objects, set to loop mode
audioList = []
for file in audioFiles:
        audio = viz.addAudio(file)
        audio.loop()
        audioList.append(audio)

def fadeAudio():
       
        yaw = viz.MainView.getEuler()[0]
        print yaw
               
        for index,interval in enumerate(intervals):
               
                if interval < yaw <= interval + 10:
                       
                        # if first iteration only play first audio file
                        if index == 0:
                                if        audioList[0].getState() in [viz.MEDIA_STOPPED,viz.MEDIA_PAUSED]:
                                        audioList[0].play()
                       
                        # for all others play next file and apply fades
                        else:
                                if audioList[index].getState() in [viz.MEDIA_STOPPED,viz.MEDIA_PAUSED]:
                                        audioList[index].play()
                                        audioList[index].volume(0)
               
                                fadeInValue = (yaw-interval)/10
                                fadeOutValue = 1.0-fadeInValue
                                audioList[index].volume(fadeInValue)
                                audioList[index-1].volume(fadeOutValue)
                               
                                # pause audio if volume is close to 0
                                if fadeOutValue < 0.01 and audioList[index-1].getState() == viz.MEDIA_RUNNING:
                                        audioList[index-1].pause()
                               
vizact.onupdate(0,fadeAudio)

#Spin the view to 60 degrees at 2 degrees/s.
spinAction = vizact.spinto(0,1,0,60,2)
viz.MainView.runAction(spinAction)



All times are GMT -7. The time now is 06:20 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2021, vBulletin Solutions, Inc.
Copyright 2002-2018 WorldViz LLC