Quantcast
Channel: Answers for "How do i make Unity seamlessly loop my background music?"
Viewing all articles
Browse latest Browse all 12

Answer by Untherow

$
0
0
Maybe this is not relevant anymore since Unity can compress WAV files directly to very compact seamlessly looping OGG files and can't see any benefit using MP3s nowadays, but I actually were able to loop MP3 files surprisingly well with a script I wrote. :) /// /// Trims silence from both ends in an AudioClip. /// Makes mp3 files seamlessly loopable. /// /// /// /// AudioClip trimSilence(AudioClip inputAudio, float threshold = 0.05f) { // Copy samples from input audio to an array. AudioClip uses interleaved format so the length in samples is multiplied by channel count float[] samplesOriginal = new float[inputAudio.samples * inputAudio.channels]; inputAudio.GetData(samplesOriginal, 0); // Find first and last sample (from any channel) that exceed the threshold int audioStart = Array.FindIndex(samplesOriginal, sample => sample > threshold), audioEnd = Array.FindLastIndex(samplesOriginal, sample => sample > threshold); // Copy trimmed audio data into another array float[] samplesTrimmed = new float[audioEnd - audioStart]; Array.Copy(samplesOriginal, audioStart, samplesTrimmed, 0, samplesTrimmed.Length); // Create new AudioClip for trimmed audio data AudioClip trimmedAudio = AudioClip.Create(inputAudio.name, samplesTrimmed.Length / inputAudio.channels, inputAudio.channels, inputAudio.frequency, false); trimmedAudio.SetData(samplesTrimmed, 0); return trimmedAudio; }

Viewing all articles
Browse latest Browse all 12

Latest Images





Latest Images