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; private WasapiAudio _wasapiAudio; private float[] _spectrumData; public void Awake() { 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; } else { CaptureType = WasapiCaptureType.Loopback; } Initialise(); } }