ddf / Minim

A Java audio library, designed to be used with Processing.
http://code.compartmental.net/tools/minim
GNU Lesser General Public License v3.0
668 stars 136 forks source link

Glitchy sound when playing from URL #126

Open Master-chan opened 5 months ago

Master-chan commented 5 months ago

When initializing FilePlayer or AudioPlayer from URL stream it sounds very glitchy and gets worse over time, eventually resulting in this exception:

Exception in thread "Thread-0" java.lang.StringIndexOutOfBoundsException: String index out of range: 74
    at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
    at java.base/java.lang.String.charAt(String.java:1517)
    at javazoom.spi.mpeg.sampled.file.tag.IcyInputStream.parseInlineIcyTags(IcyInputStream.java:358)
    at javazoom.spi.mpeg.sampled.file.tag.IcyInputStream.readMetadata(IcyInputStream.java:322)
    at javazoom.spi.mpeg.sampled.file.tag.IcyInputStream.read(IcyInputStream.java:268)
    at java.desktop/javax.sound.sampled.AudioInputStream.read(AudioInputStream.java:287)
    at java.base/java.io.BufferedInputStream.fill(BufferedInputStream.java:244)
    at java.base/java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
    at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:343)
    at java.base/java.io.FilterInputStream.read(FilterInputStream.java:132)
    at java.base/java.io.PushbackInputStream.read(PushbackInputStream.java:182)
    at javazoom.jl.decoder.Bitstream.readFully(Bitstream.java:529)
    at javazoom.jl.decoder.Bitstream.readFrameData(Bitstream.java:429)
    at javazoom.jl.decoder.Header.read_header(Header.java:173)
    at javazoom.jl.decoder.Bitstream.nextFrame(Bitstream.java:298)
    at javazoom.jl.decoder.Bitstream.readNextFrame(Bitstream.java:286)
    at javazoom.jl.decoder.Bitstream.readFrame(Bitstream.java:251)
    at javazoom.spi.mpeg.sampled.convert.DecodedMpegAudioInputStream.execute(DecodedMpegAudioInputStream.java:175)
    at org.tritonus.share.TCircularBuffer.read(TCircularBuffer.java:101)
    at org.tritonus.share.sampled.convert.TAsynchronousFilteredAudioInputStream.read(TAsynchronousFilteredAudioInputStream.java:157)
    at ddf.minim.javasound.JSBaseAudioRecordingStream.readBytes(JSBaseAudioRecordingStream.java:226)
    at ddf.minim.javasound.JSBaseAudioRecordingStream.mRead(JSBaseAudioRecordingStream.java:767)
    at ddf.minim.javasound.JSBaseAudioRecordingStream.read(JSBaseAudioRecordingStream.java:742)
    at ddf.minim.javasound.JSAudioOutput.readStream(JSAudioOutput.java:128)
    at ddf.minim.javasound.JSAudioOutput.run(JSAudioOutput.java:75)

Changing buffer size doesn't help.