about mxj~ MSPBuffer poke method (and VBR mp3 lengths)


    Oct 13 2007 | 5:16 am
    A long long long long long long time ago, Ali Momeni wanted to play with mp3's and mxj.
    There http://www.synthesisters.com/hypermail/max-msp/Nov05/34373.html He wrote : "however, i'm having trouble setting the length of a buffer because the getFrameLength() method of an AudioInputStream seems to always return -1 (!@#$)."
    And there were no answers. I wanted to give you the result of my searches about this specific subject:
    1- Indeed, normal getFrameLength() does not give the length of an audiostream coming from an mp3. It exists a trick to calculate the mp3 length from the file information. However this is useless because you will anyway get problems with VBR mp3s...
    2- It _seems_ (not 100% sure) the real trick is to use javazoom.jl.decoder.* ( http://www.javazoom.net/javalayer/ sources.html ) as follow :
    import javazoom.jl.decoder.*; ...........
    int nTotalMS = 0;
    try { Bitstream m_bitstream = new Bitstream(new FileInputStream (your_file)); Header m_header = m_bitstream.readFrame();
    int mediaLength = (int)encodedFile.length();
    if (mediaLength != AudioSystem.NOT_SPECIFIED) { nTotalMS = Math.round(m_header.total_ms(mediaLength)); } post("Length in ms: " + nTotalMS); } catch(Exception e) { e.printStackTrace(); } }
    Best, O./

    • Oct 13 2007 | 7:45 am
      Moving this topic to the Java forum, please reply to the java list.