ProjectSquareBall/Assets/Scripts/AudioSplitter.cs
2024-06-23 21:12:22 +05:30

42 lines
949 B
C#

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;
}
}