void LoadData() { if (!string.IsNullOrEmpty(filepath) && File.Exists(filepath)) { audioStream = AudioManager.LoadStream(filepath); lock (dataLock) { _length = audioStream.ChannelLengthInSeconds(); } long trackLengthInBytes = audioStream.ChannelLengthInBytes(); const float FRAME_TIME = 0.002f; long frameLengthInBytes = audioStream.ChannelSecondsToBytes(FRAME_TIME); int NumFrames = (int)System.Math.Round(1f * trackLengthInBytes / frameLengthInBytes); lock (dataLock) { _data = new float[NumFrames * 2]; } float[] levels = new float[2]; for (int i = 0; i < _data.Length && !stop; i += 2) { lock (dataLock) { audioStream.GetChannelLevels(ref levels, FRAME_TIME); float average = (levels[0] + levels[1]) / 2.0f; _data[i] = -average; _data[i + 1] = average; } } if (!stop) { Debug.Log("Sample length: " + _data.Length); } else { lock (dataLock) { _data = new float[0]; } } } }