42 lines
949 B
C#
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;
|
|
}
|
|
|
|
|
|
}
|