Ejemplo n.º 1
0
    /**
     * This method is public because looping sounds like the laser fences
     * need to call it periodically to check the listener position.
     */
    public void CheckDistanceAndOcclusionToListener(AudioSource source)
    {
        bool occluded = true;

        Vector3 rayOrigin    = source.transform.position;
        Vector3 rayDirection = listener.transform.position - source.transform.position;

        float      distance = rayDirection.magnitude;
        RaycastHit hit;

        if (Physics.Raycast(rayOrigin, rayDirection, out hit, distance, layerMask))
        {
            if (hit.transform.tag == Tags.mainCamera)
            {
                occluded = false;
            }
        }

        AudioLowPassFilter lowPass = source.gameObject.GetComponent <AudioLowPassFilter>();

        if (occluded)
        {
            lowPass.cutoffFrequency = maxCutoffFrequency - ((distance / defaultMaxDistance) * maxCutoffFrequency);
            lowPass.enabled         = true;
        }
        else
        {
            lowPass.enabled = false;
        }

        source.pitch = 1 - ((distance / defaultMaxDistance) / 10);

        // Debug.
        //print("low: " + lowPass.enabled + " occl: " + occluded + " frequency: " + lowPass.cutoffFrequency + " pitch: " + source.pitch + " dist: " + distance);
    }
Ejemplo n.º 2
0
        private void SetOcclusion()
        {
            VariationUpdater.UpdateCachedObjects();
            var doesGroupUseOcclusion = UsesOcclusion;

            if (!doesGroupUseOcclusion)
            {
                return;
            }

            // set occlusion default
            if (LowPassFilter == null)
            {
                _lpFilter = GetComponent <AudioLowPassFilter>();
                if (_lpFilter == null)
                {
                    _lpFilter = gameObject.AddComponent <AudioLowPassFilter>();
                }
            }
            else
            {
                _lpFilter = GetComponent <AudioLowPassFilter>();
            }

            // ReSharper disable once PossibleNullReferenceException
            LowPassFilter.cutoffFrequency = AudioUtil.MinCutoffFreq(VariationUpdater);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Applies the audio effect.
        /// </summary>
        /// <param name="soundEmittingObject">The GameObject on which the effect is to be applied.</param>
        public void ApplyEffect(GameObject soundEmittingObject)
        {
            if (!isActiveAndEnabled)
            {
                return;
            }

            AudioSource audioSource = soundEmittingObject.GetComponent <AudioSource>();

            if (audioSource == null)
            {
                Debug.LogWarning("The specified emitter does not have an attached AudioSource component.");
                return;
            }

            // Audio occlusion is performed using a low pass filter.
            AudioLowPassFilter lowPass = soundEmittingObject.GetComponent <AudioLowPassFilter>();

            if (lowPass == null)
            {
                lowPass = soundEmittingObject.AddComponent <AudioLowPassFilter>();
            }
            lowPass.enabled = true;

            // In the real world, chaining multiple low-pass filters will result in the
            // lowest of the cutoff frequencies being the highest pitches heard.
            lowPass.cutoffFrequency = Mathf.Min(lowPass.cutoffFrequency, CutoffFrequency);

            // Unlike the cutoff frequency, volume pass-through is cumulative.
            audioSource.volume *= VolumePassThrough;
        }
Ejemplo n.º 4
0
    void AssignmentsAndComponentsSetup()
    {
        ReferenceCop();

        // Register Checkpoint Locations:
        atmosphereCheckpointLocation   = atmosphere.transform.position;
        waterSurfaceCheckpointLocation = waterSurface.transform.position;
        seaFloorCheckpointLocation     = seaFloor.transform.position;

        // Retrieve AudioSource Components:
        atmosphereAudioSource   = atmosphere.GetComponent <AudioSource>();
        waterSurfaceAudioSource = waterSurface.GetComponent <AudioSource>();
        seaFloorAudioSource     = seaFloor.GetComponent <AudioSource>();

        // Get Audio Clips For Splashes:
        submergeSplashClip  = submerge.GetComponent <AudioSource>().clip;
        resurfaceSplashClip = resurface.GetComponent <AudioSource>().clip;

        // Set AudioSource RollOff Modes To Linear:
        atmosphereAudioSource.rolloffMode   = AudioRolloffMode.Linear;
        waterSurfaceAudioSource.rolloffMode = AudioRolloffMode.Linear;
        seaFloorAudioSource.rolloffMode     = AudioRolloffMode.Linear;
        submerge.GetComponent <AudioSource>().rolloffMode  = AudioRolloffMode.Linear;
        resurface.GetComponent <AudioSource>().rolloffMode = AudioRolloffMode.Linear;

        // Generate & Disable Underwater Low Pass Filters For Later Use In Update:
        waterSurfaceBGM_LPF = waterSurface.AddComponent <AudioLowPassFilter>();
        SubmergingSplashLPF = submerge.AddComponent <AudioLowPassFilter>();

        waterSurfaceBGM_LPF.enabled = false;
        SubmergingSplashLPF.enabled = false;
    }
Ejemplo n.º 5
0
        public override bool AttachToObject(GameObject gameObject, ArdenAudioFilterInstance instance)
        {
            if (instance.IsAttached(gameObject))
            {
                return(true);
            }

            //Detect filter is already added
            if (gameObject.GetComponent <AudioLowPassFilter>())
            {
                return(false);
            }

            AudioLowPassFilter filter = gameObject.AddComponent <AudioLowPassFilter>();

            filter.cutoffFrequency   = cutoffFrequency;
            filter.lowpassResonanceQ = lowpassResonanceQ;

            instance.Attach(gameObject, new List <Component> {
                filter
            });
            RegisterInstance(gameObject, instance);

            return(true);
        }
 /// <summary>
 /// Add effects knobs to panel.  Attempts to recycle existing filters.
 /// </summary>
 /// <param name="select">Select multiple knobs via logical OR.
 /// e.g. Knobs.distortion | Knobs.reverb</param>
 /// <remarks>TODO Figure out a way to make filters chain (lowpass LAST).</remarks>
 public void AddKnobs(Knobs select)
 {
     if ((select & Knobs.distortion) == Knobs.distortion)
     {
         distortion = gameObj.GetComponent <AudioDistortionFilter>();
         if (distortion == null)
         {
             Log.dbg("Adding distortion filter");
             distortion = gameObj.AddComponent <AudioDistortionFilter>();
         }
     }
     if ((select & Knobs.reverb) == Knobs.reverb)
     {
         reverb = gameObj.GetComponent <AudioReverbFilter>();
         if (reverb == null)
         {
             Log.dbg("Adding reverb filter");
             reverb = gameObj.AddComponent <AudioReverbFilter>();
         }
     }
     if ((select & Knobs.lowpass) == Knobs.lowpass)
     {
         lowpass = gameObj.GetComponent <AudioLowPassFilter>();
         if (lowpass == null)
         {
             Log.dbg("Adding low-pass filter");
             lowpass = gameObj.AddComponent <AudioLowPassFilter>();
         }
         lowpass.lowpassResonaceQ = 0f;
     }
 }
Ejemplo n.º 7
0
 // Use this for initialization
 void Start()
 {
     filter = gameObject.AddComponent <AudioLowPassFilter>();
     filter.cutoffFrequency = startCutoff;
     source        = GetComponent <SoundEvent>();
     source.volume = startVolume;
 }
Ejemplo n.º 8
0
 public void SetChar(CharacterComponent myChar)
 {
     this.audioChar     = myChar;
     this.myAudioSource = this.audioChar.GetAudioSource(CharacterComponent.AudioSourceType.Character);
     highPassFilter     = this.myAudioSource.gameObject.GetComponent <AudioHighPassFilter>();
     lowPassFilter      = this.myAudioSource.gameObject.GetComponent <AudioLowPassFilter>();
     distortion         = this.myAudioSource.gameObject.GetComponent <AudioDistortionFilter>();
     if (!highPassFilter)
     {
         highPassFilter = this.myAudioSource.gameObject.AddComponent <AudioHighPassFilter>();
     }
     if (!lowPassFilter)
     {
         lowPassFilter = this.myAudioSource.gameObject.AddComponent <AudioLowPassFilter>();
     }
     if (!distortion)
     {
         distortion = this.myAudioSource.gameObject.AddComponent <AudioDistortionFilter>();
     }
     highPassFilter.cutoffFrequency  = Main.ruVoiceSettings.highPassFilterValue;
     lowPassFilter.cutoffFrequency   = Main.ruVoiceSettings.lowPassFilterValue;
     lowPassFilter.lowpassResonanceQ = Main.ruVoiceSettings.lowpassResonanceQValue;
     highPassFilter.cutoffFrequency  = Main.ruVoiceSettings.highPassFilterCutoffFrequencyValue;
     distortion.distortionLevel      = Main.ruVoiceSettings.distortionFilterValue;
     this.SetAudioPitch();
     this.SetAudioVolume();
 }
 public void SetNextTarget(GameObject nextTarget)
 {
     cursorPosition = Cursor.transform.position;
     NextBox        = nextTarget;
     audioSource    = NextBox.GetComponent <AudioSource>();
     lowPassFilter  = NextBox.GetComponent <AudioLowPassFilter>();
     lowPassFilter.cutoffFrequency = CalculateCutoffFrequency(Camera.main.transform.forward.y * 2, NextBox.transform.position.y); //Using Camera.main.transform.forward.y * 2 here because we want to approximate the height the úser is looking at at an distance of z=2 to be equal to the boxes position (z=2)
     if (Camera.main.transform.forward.z * NextBox.transform.position.z < 0)                                                      //Case when Box is behind the User (+*+>0 & -*->0 & +*-.<0 & -*+<=)
     {
         audioSource.volume = 0.0f;
         float crossProduct = Vector3.Cross(cursorPosition, NextBox.transform.position - cursorPosition).y;
         LineRenderer.material.color = Color.red;
         DirectionIndicatorObject.GetComponent <SpriteRenderer>().material.color = Color.red;
         targetBehind  = true;
         middlePoint   = NextBox.transform.position;
         middlePoint.z = 0;
         if (crossProduct <= 0 && cursorPosition.z > 0 || crossProduct > 0 && cursorPosition.z < 0) //Target left in global space
         {
             middlePoint.x = -1.5f;
         }
         else //Target right in global space
         {
             middlePoint.x = 1.5f;
         }
         middlePoint.y       = (middlePoint.y + cursorPosition.y) / 2;
         middlePointToTarget = NextBox.transform.position - middlePoint; //Vector between NextBox and middlePoint
     }
     else //Box in front
     {
         LineRenderer.material.color = Color.green;
         DirectionIndicatorObject.GetComponent <SpriteRenderer>().material.color = Color.green;
     }
 }
Ejemplo n.º 10
0
    public TreeNode <Room> BuildRoom(GameObject go)
    {
        Room roomVal = go.GetComponent <Room>();

        if (go.GetComponent <Room>().sound.clip != null)
        {
            AudioSource source = go.AddComponent <AudioSource>();
            source.playOnAwake = false;
            source.volume      = 0;
            source.clip        = roomVal.sound.clip;
            source.loop        = true;
            source.priority    = 0;
            AudioLowPassFilter lowPassFilter = go.AddComponent <AudioLowPassFilter>();
            lowPassFilter.cutoffFrequency   = this.defaultCutoffFrequency;
            lowPassFilter.lowpassResonanceQ = 0.5f;
        }
        TreeNode <Room> room = new TreeNode <Room>(roomVal);

        room.Value.roomName = go.name;
        for (int i = 0; i < go.transform.childCount; i++)
        {
            room.AddTreeNodeChild(BuildRoom(go.transform.GetChild(i).gameObject));
        }
        return(room);
    }
Ejemplo n.º 11
0
 // pauses all in-game audio except for UI and Music
 public void PauseInGameAudio()
 {
     pauseFilter = Camera.main.GetComponent <AudioLowPassFilter>();
     if (!pauseFilter)
     {
         pauseFilter = Camera.main.gameObject.AddComponent <AudioLowPassFilter>();
     }
     // loop through all audio sources
     pausedSources = Object.FindObjectsOfType(typeof(AudioSource)) as AudioSource[];
     for (int i = 0; i < pausedSources.Length; i++)
     {
         // if audiosource is game Music, slap a low pass filter on it
         if (pausedSources[i].GetComponentInParent <AudioListener>() != null)
         {
             pauseFilter.enabled = true;
             pauseFilter.GetComponentInParent <AudioSource>().volume *= 0.5f;
         }
         else if (pausedSources[i] == UISoundSource)
         {
             // if the source is a UI sound, ignore it.
         }
         else
         {
             // otherwise, pause it
             pausedSources[i].Pause();
         }
     }
 }
 private void Start()
 {
     listener       = GameObject.Find("CenterEyeAnchor");
     lowPassFilter  = listener.GetComponent <AudioLowPassFilter>();
     highPassFilter = listener.GetComponent <AudioHighPassFilter>();
     reverbFilter   = listener.GetComponent <AudioReverbFilter>();
 }
Ejemplo n.º 13
0
 // Use this for initialization
 void Start()
 {
     audioSource      = GetComponent <AudioSource>();
     lowFilter        = GetComponent <AudioLowPassFilter>();
     audioSource.clip = backgroundMusics[musicIndex];
     audioSource.Play();
 }
 private void OnTransformParentChanged()
 {
     if (transform.parent != null)
     {
         Filter = transform.parent.gameObject.AddComponent <AudioLowPassFilter>();
     }
 }
Ejemplo n.º 15
0
 private void Awake()
 {
     audioSource = this.GetComponent <AudioSource>();
     if (!audioSource)
     {
         audioSource = this.gameObject.AddComponent <AudioSource>();
     }
     audioSource.spatialBlend = 1;
     audioSource.playOnAwake  = false;
     audioSource.spatialize   = true;
     lowPassFilter            = this.GetComponent <AudioLowPassFilter>();
     if (!lowPassFilter)
     {
         lowPassFilter = this.gameObject.AddComponent <AudioLowPassFilter>();
     }
     lowPassFilter.enabled = false;
     highPassFilter        = this.GetComponent <AudioHighPassFilter>();
     if (!highPassFilter)
     {
         highPassFilter = this.gameObject.AddComponent <AudioHighPassFilter>();
     }
     highPassFilter.enabled = false;
     reverbFilter           = this.GetComponent <AudioReverbFilter>();
     if (!reverbFilter)
     {
         reverbFilter = this.gameObject.AddComponent <AudioReverbFilter>();
     }
     reverbFilter.reverbPreset = AudioReverbPreset.Off;
     reverbFilter.enabled      = false;
 }
        public override void SetupOn(AudioSource source)
        {
            AudioLowPassFilter orMakeFilterOn = SoundFilter.GetOrMakeFilterOn <AudioLowPassFilter>(source);

            orMakeFilterOn.cutoffFrequency   = this.cutoffFrequency;
            orMakeFilterOn.lowpassResonanceQ = this.lowpassResonaceQ;
        }
Ejemplo n.º 17
0
 // Use this for initialization
 void Start()
 {
     listener    = FindObjectOfType <AudioListener>();
     source      = GetComponent <AudioSource>();
     lowpass     = GetComponent <AudioLowPassFilter>();
     distanceMax = source.maxDistance;
 }
Ejemplo n.º 18
0
 private void Start()
 {
     camShake    = Camera.main.gameObject.GetComponent <CameraShake>();
     musicObject = transform.Find("Music").gameObject;
     reverb      = musicObject.GetComponent <AudioReverbFilter>();
     lowPass     = musicObject.GetComponent <AudioLowPassFilter>();
 }
Ejemplo n.º 19
0
    void Awake()
    {
        noteObjectList = new List <NoteObject>();

        camera = Camera.main;

        audio         = GetComponent <AudioSource>();
        lowPassFilter = GetComponent <AudioLowPassFilter>();

        Transform beatDetectorObject = transform.GetChild(0);

        if (RuntimeData.useCustomMusic)
        {
            beatDetector   = beatDetectorObject.GetComponent <BeatDetection>();
            detectionAudio = beatDetectorObject.GetComponent <AudioSource>();
        }
        else
        {
            beatDetectorObject.gameObject.SetActive(false);
        }

        //noteSpawnPosYMultiplier = Mathf.Tan(camera.fieldOfView / 2 * Mathf.Deg2Rad) * defaultNoteSpawnDistance;
        //noteSpawnPosXMultiplier = noteSpawnPosYMultiplier * camera.aspect;

        noteDestroyDistance = missDistance;

        noteSpawnPosXMultiplier = defaultNoteSpawnDistance / -camera.transform.position.z * noteSpawnDispersion;
        //noteSpawnPosYMultiplier = defaultNoteSpawnDistance / -noteDestroyDistance * noteSpawnDispersion;

        noteSpawnAdvanceTime = defaultNoteSpawnDistance / defaultNoteSpeed;
    }
Ejemplo n.º 20
0
    // Use this for initialization
    void Start()
    {
        //Find the player/listener
        listener    = GameObject.Find("FirstPersonCharacter");
        lpFilter    = GetComponent <AudioLowPassFilter> ();
        hpFilter    = GetComponent <AudioHighPassFilter> ();
        sphereSound = GetComponent <AudioSource> ();

        /*
         * 1. Make our Collider a trigger
         * 2. Make it in same place as our source
         * 3. Audio Sources are Circular thus 3D curve is radius. thus size should be 2 * Radius (Essentially the diameter)
         */
        TriggerBox.isTrigger          = true;
        TriggerBox.transform.position = transform.position;
        TriggerBox.size = new Vector3((maxAudioDistance * 2f), (maxAudioDistance * 2f), (maxAudioDistance * 2f));

        //Play the sound file, loop it, and specify volume. Change at will
        sphereSound.loop = true;

        //High Pass filter will kick in for the last 1/3rd distance away (as compared to max 3D Audio attenuation Curve)
        //Also Change .3f to whatever you wish.
        hpfdist      = maxAudioDistance * .3f;
        hpfstartdist = maxAudioDistance - hpfdist;
    }
Ejemplo n.º 21
0
 // Update is called once per frame
 void Update()
 {
     if (fade)
     {
         filter.cutoffFrequency        += (Time.deltaTime / transitionTime) * (endCutoff - startCutoff);
         source.externalVolumeModifier += (Time.deltaTime / transitionTime) * (endVolume - startVolume);
         if (filter.cutoffFrequency >= endCutoff && source.externalVolumeModifier >= endVolume)
         {
             fade = false;
             print("custom fade complete");
             Destroy(this);
         }
     }
     if (!source)
     {
         print("Sound Event = null");
         source = gameObject.GetComponent <SoundEvent>();
         source.externalVolumeModifier = startVolume;
     }
     if (!filter)
     {
         print("filter = null");
         filter = gameObject.AddComponent <AudioLowPassFilter>();
         filter.cutoffFrequency = startCutoff;
     }
 }
Ejemplo n.º 22
0
    void OnTriggerEnter(Collider e)
    {
        if (e.tag != "Player")
        {
            return;
        }

        print("trigger ");
        for (int i = 0; i < triggerCube.Length; i++)
        {
            lowPass = triggerCube [i].GetComponent <AudioLowPassFilter> ();
            if (lowPass == null)
            {
                //print ("add component because colliding with ");
                triggerCube [i].AddComponent <AudioLowPassFilter> ();
            }
            else
            {
                triggerCube [i].GetComponent <AudioLowPassFilter> ().enabled = true;
            }


            lowPass = triggerCube [i].GetComponent <AudioLowPassFilter> ();
            lowPass.cutoffFrequency = frequency;
        }
    }
    private void Awake()
    {
        source = GetComponent <AudioSource>();
        if (source == null)
        {
            source = gameObject.AddComponent <AudioSource>();
        }

        lowPassFilter = GetComponent <AudioLowPassFilter>();
        if (lowPassFilter == null)
        {
            lowPassFilter = gameObject.AddComponent <AudioLowPassFilter>();
        }

        source.loop = loop;
        source.ignoreListenerPause = ignorePause;

        if (playOnAwake && audioClips.Length != 0)
        {
            foreach (var _clip in audioClips)
            {
                if (_clip != null)
                {
                    PlayClip(_clip); break;
                }
            }
        }
    }
Ejemplo n.º 24
0
    void Start()
    {
        freqs   = new float[1024];
        samples = new float[16];
        temp    = new float[16];

        trackCutoffs    = new float[playlist.Length];
        trackCutoffs[0] = 20000f;
        for (int i = 1; i < playlist.Length; i++)
        {
            trackCutoffs[i] = 770f;
        }

        onBeat = true;

        t_src = treble.GetComponent <AudioSource>();
        t_lp  = treble.GetComponent <AudioLowPassFilter>();

        b_src = bass.GetComponent <AudioSource>();
        b_lp  = bass.GetComponent <AudioLowPassFilter>();

        trackNumber = Random.Range(0, playlist.Length);
        t_src.clip  = playlist[trackNumber].Treble;
        b_src.clip  = playlist[trackNumber].Bass;

        t_lp.cutoffFrequency = 1400f;
        b_lp.cutoffFrequency = 160f;

        spectrum();

        StartCoroutine(SyncPlayNextTrack(t_src, t_lp, playlist[trackNumber]));
        StartCoroutine(RefreshSpectrum());
    }
Ejemplo n.º 25
0
    // Use this for initialization
    void Start()
    {
        m_filter        = GetComponent <AudioLowPassFilter>();
        m_defaultCutoff = m_filter.cutoffFrequency;

        Glitch();
    }
    public void Deafness()
    {
        AudioLowPassFilter filter = earObject.GetComponent <AudioLowPassFilter>();

        activeAudioDisorders.Add(filter);
        filter.enabled = true;
    }
    // Use this for initialization
    void Start()
    {
        audioSource = GetComponent <AudioSource> ();
        audioFilter = GetComponent <AudioLowPassFilter> ();

        //open = 0;
    }
Ejemplo n.º 28
0
        private void HandleLowPassFilter()
        {
            AudioCurveWrapper audioCurve = m_AudioCurves[kLowPassCurveID];

            // Low pass filter present for all targets?
            AudioLowPassFilter[] filterArray = new AudioLowPassFilter[targets.Length];
            for (int i = 0; i < targets.Length; i++)
            {
                filterArray[i] = ((AudioSource)targets[i]).GetComponent <AudioLowPassFilter>();
                if (filterArray[i] == null)
                {
                    m_LowpassObject      = null;
                    audioCurve.curveProp = null;
                    // Return if any of the GameObjects don't have an AudioLowPassFilter
                    return;
                }
            }

            // All the GameObjects have an AudioLowPassFilter.
            // If we don't have the corresponding SerializedObject and SerializedProperties, create them.
            if (audioCurve.curveProp == null)
            {
                m_LowpassObject      = new SerializedObject(filterArray);
                audioCurve.curveProp = m_LowpassObject.FindProperty("lowpassLevelCustomCurve");
            }
        }
Ejemplo n.º 29
0
    public void Start()
    {
        var listenerObject = GameObject.FindGameObjectWithTag("Listener");

        targetLowPassFilter  = listenerObject.GetComponent <AudioLowPassFilter>();
        targetHighPassFilter = listenerObject.GetComponent <AudioHighPassFilter>();
    }
    void Awake()
    {
        sampling_frequency = AudioSettings.outputSampleRate;

        lowPassFilter = GetComponent <AudioLowPassFilter>();
        Update();
    }