Files
kaiju/Assets/Util/AudioSource.cs
T

60 lines
1.6 KiB
C#

using Assets.WasapiAudio.Scripts.Core;
using UnityEngine;
[ExecuteInEditMode]
public class AudioSource : MonoBehaviour {
public WasapiCaptureType CaptureType = WasapiCaptureType.Loopback;
public int SpectrumSize = 32;
public int MinFrequency = 100;
public int MaxFrequency = 20000;
public ScalingStrategy ScalingStrategy = ScalingStrategy.Sqrt;
public WasapiAudioFilter[] Filters;
public Preferences preferences;
private WasapiAudio _wasapiAudio;
private float[] _spectrumData;
public void Start() {
CaptureType = preferences.data.useLoopback
? WasapiCaptureType.Loopback
: WasapiCaptureType.Microphone;
Debug.Log($"Pref: {preferences.data.useLoopback} {CaptureType}");
Initialise();
}
void Initialise() {
_wasapiAudio?.StopListen();
_wasapiAudio = new WasapiAudio(CaptureType, SpectrumSize, ScalingStrategy, MinFrequency, MaxFrequency, Filters, spectrumData =>
{
_spectrumData = spectrumData;
});
_wasapiAudio.StartListen();
}
public float[] GetSpectrumData() {
return _spectrumData;
}
void OnDestroy() {
_wasapiAudio?.StopListen();
}
public void ToggleCaptureType() {
if (CaptureType == WasapiCaptureType.Loopback) {
CaptureType = WasapiCaptureType.Microphone;
preferences.SetUseLoopback(false);
} else {
CaptureType = WasapiCaptureType.Loopback;
preferences.SetUseLoopback(true);
}
Initialise();
}
}