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