60 lines
1.6 KiB
C#
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();
|
|
}
|
|
}
|
|
|