diff --git a/Packages/com.llealloo.audiolink/Runtime/Scripts/AudioLink.cs b/Packages/com.llealloo.audiolink/Runtime/Scripts/AudioLink.cs index fef317b5..6a78421d 100755 --- a/Packages/com.llealloo.audiolink/Runtime/Scripts/AudioLink.cs +++ b/Packages/com.llealloo.audiolink/Runtime/Scripts/AudioLink.cs @@ -830,14 +830,21 @@ public void SendAudioOutputData() #if UNITY_WEBGL && !UNITY_EDITOR - if (audioSource.isPlaying) - { - audioLinkWebPeer.WaveformSamplesLeft = FetchAnalyzerLeft(WebALID, new float[4096], 4096); - audioLinkWebPeer.WaveformSamplesRight = FetchAnalyzerRight(WebALID, new float[4096], 4096); - } + if (audioSource.isPlaying) + { + audioLinkWebPeer.SyncLeft((leftSamples) => + { + FetchAnalyzerLeft(WebALID, leftSamples, 4096); + }); + + audioLinkWebPeer.SyncRight((rightSamples) => + { + FetchAnalyzerRight(WebALID, rightSamples, 4096); + }); + } - _audioFramesL = audioLinkWebPeer.WaveformSamplesLeft; - _audioFramesR = audioLinkWebPeer.WaveformSamplesRight; + _audioFramesL = audioLinkWebPeer.GetWaveformLeft(); + _audioFramesR = audioLinkWebPeer.GetWaveformRight(); #else diff --git a/Packages/com.llealloo.audiolink/Runtime/Scripts/WebALPeer.cs b/Packages/com.llealloo.audiolink/Runtime/Scripts/WebALPeer.cs index 072e621b..07e98715 100644 --- a/Packages/com.llealloo.audiolink/Runtime/Scripts/WebALPeer.cs +++ b/Packages/com.llealloo.audiolink/Runtime/Scripts/WebALPeer.cs @@ -9,13 +9,32 @@ namespace AudioLink public class WebALPeer : MonoBehaviour { const int SAMPLES_COUNT = 4096; - [HideInInspector][NonSerialized] - public float[] WaveformSamplesLeft, WaveformSamplesRight; + private float[] _waveformSamplesLeft, _waveformSamplesRight; public WebALPeer() { - WaveformSamplesLeft = new float[SAMPLES_COUNT]; - WaveformSamplesRight = new float[SAMPLES_COUNT]; + _waveformSamplesLeft = new float[SAMPLES_COUNT]; + _waveformSamplesRight = new float[SAMPLES_COUNT]; + } + + public float[] GetWaveformLeft() + { + return _waveformSamplesLeft; + } + + public float[] GetWaveformRight() + { + return _waveformSamplesRight; + } + + public void SyncLeft(Action FetchSamplesLeft) + { + FetchSamplesLeft(_waveformSamplesLeft); + } + + public void SyncRight(Action FetchSamplesRight) + { + FetchSamplesRight(_waveformSamplesRight); } }