using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioSplitter : MonoBehaviour { public AudioSource audioSource; public int sampleWindow = 256; public float loudness; // Update is called once per frame void Update() { loudness = GetLoudnessFromAudioClip(audioSource, sampleWindow); //Debug.Log("Loudness: " + loudness); } public float GetLoudnessFromAudioClip(AudioSource source, int sampleWindow) { if (source.clip == null) { return 0; } float[] clipData = new float[sampleWindow]; int position = source.timeSamples; source.clip.GetData(clipData, position); float sum = 0; for (int i = 0; i < sampleWindow; i++) { sum += clipData[i] * clipData[i]; } float rmsValue = Mathf.Sqrt(sum / sampleWindow); return rmsValue; } }