<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>If all you want to do is find the first audio frame, you don’t
necessarily need to know the ID3v2 tag length.  (If you do need the
length, it’s clearly spelled out in the spec.)  Do a search on MPEG
header and you’ll find the byte pattern which identifies the start of an
audio frame.  One location for this information is at http://www.mp3-tech.org/
in the Programmer’s Corner section.  (In writing my .NET tag editor
library, I decided to add support for MPEG data like bit rate and frequency,
and this is the page I used as a reference.)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>Mitchell S. Honnert<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'>www.UltraID3Lib.com<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'> Silas Pradetto
[mailto:silas@sonoroussound.com] <br>
<b><span style='font-weight:bold'>Sent:</span></b> Wednesday, January 25, 2006
2:22 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">id3v2@id3.org</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> [ID3 Dev] First byte of
the first frame: the inevitable byte (revised)</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<table class=MsoNormalTable border=0 cellpadding=0>
 <tr>
  <td colspan=2 style='padding:.75pt .75pt .75pt .75pt'>
  <p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
  face="Times New Roman"><span style='font-size:12.0pt'>thanks, the files
  encoded by different encoders I would consider to be different, i only want
  to detect files that i may have downloaded twice and are in different dirs,
  and someone may have changed the tag on one not the other, but the file is
  the same otherwise. thanks for the suggestion on the already-done dup
  remover, as i have no real time for writing this stuff anymore, the other
  question is how to find the length of the ID3v2 tag???<br>
  <br>
  thanks again,<br>
  <br>
  silas<o:p></o:p></span></font></p>
  </td>
 </tr>
 <tr>
  <td width=10 bgcolor=blue style='width:.1in;background:blue;padding:.75pt .75pt .75pt .75pt'>
  <p class=MsoNormal><font size=3 face="Times New Roman"><span
  style='font-size:12.0pt'> <o:p></o:p></span></font></p>
  </td>
  <td style='padding:.75pt .75pt .75pt .75pt'>
  <p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
  face="Times New Roman"><span style='font-size:12.0pt'>If you really want to
  reinvent the wheel you can -- you have to determine how long the ID3v2 tag
  is, skip that, then read the rest of the file (excepting the last 256 bytes
  if it has an ID3V1 tag). How you do this depends entirely on the library (if
  any) you use. Note that if all you do is a byte-by-byte comparison then you
  still won't detect dupes if the files were encoded by different encoders, or
  at different bitrates, or various other issues. <br>
  <br>
  If you don't want to reinvent the wheel, then go take a look at <a
  href="http://musicbrainz.org">musicbrainz.org</a> -- they've already done
  this. And taken care of the various issues I listed above.<o:p></o:p></span></font></p>
  <div>
  <p class=MsoNormal><font size=3 face="Times New Roman"><span
  style='font-size:12.0pt'>On 1/25/06, <b><span style='font-weight:bold'>Silas
  Pradetto</span></b> <<a href="mailto:silas@sonoroussound.com">silas@sonoroussound.com</a>>
  wrote:<o:p></o:p></span></font></p>
  <p class=MsoNormal><font size=3 face="Times New Roman"><span
  style='font-size:12.0pt'>I recently became added to this system of emails,
  and I am trying to write a program to find duplicates in MP3's. I wish to
  only take into consideration the actual song data, not bytes of any tags.
  Therefore, how do I find the first byte in the file of actual song data, ie
  the first byte of the first frame? I want to be able to detect duplicates
  that have different tags but are the exact same audio information. Also, to
  make the program faster, I would like to know where to find certain info such
  as bitrate, length in seconds, etc, so when I am scanning my 100000 song
  library I don't have to check bytes if the songs are obviously dissimilar.
  Thanks very much. Oh, and I mostly do VB 6, though I do know some C++, so if
  you are going to talk about file I/O stuff please refer to VB if you can. <br>
  <br>
  Silas<br>
  --------------------------------------------------------------------- To
  unsubscribe, e-mail: <img border=0 width=32 height=32 id="_x0000_i1025"
  src="data:image/bmp;base64,Qk1GAgAAAAAAADYAAAAoAAAAEAAAAAsAAAABABgAAAAAABACAADEDgAAxA4AAAAAAAAAAAAAODjaODjap6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5ODjaODjaODjaODja4uL/////////////////////////////////////////4uL/ODjaODjaODjaODjap6f54uL/////////////////////////////////4uL/p6f5ODjaODjaODjaODja4uL/p6f54uL/////////gYHygYHy////////4uL/p6f54uL/ODjaODjaODjaODja////4uL/p6f5trb/gYHyWlrpWlrpgYHytrb/p6f54uL/////ODjaODjaODjaODja////////trb/gYHyWlrpODjaODjaWlrpgYHytrb/////////ODjaODjaODjaODja////////gYHyWlrpODjatrb/trb/ODjaWlrpgYHy////////ODjaODjaODjaODja////gYHyWlrpODjatrb/////////trb/ODjaWlrpgYHy////ODjaODjaODjaODjagYHyWlrpODjatrb/////////////////trb/ODjaWlrpgYHyODjaODjaODjaODjaODjaODjatrb/////////////////////////trb/ODjaODjaODjaODjaODjaODjaODjagYHyp6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5gYHyODjaODjaODja"><a
  href="mailto:id3v2-unsubscribe@id3.org">id3v2-unsubscribe@id3.org</a> For
  additional commands, e-mail: <img border=0 width=32 height=32
  id="_x0000_i1026"
  src="data:image/bmp;base64,Qk1GAgAAAAAAADYAAAAoAAAAEAAAAAsAAAABABgAAAAAABACAADEDgAAxA4AAAAAAAAAAAAAODjaODjap6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5ODjaODjaODjaODja4uL/////////////////////////////////////////4uL/ODjaODjaODjaODjap6f54uL/////////////////////////////////4uL/p6f5ODjaODjaODjaODja4uL/p6f54uL/////////gYHygYHy////////4uL/p6f54uL/ODjaODjaODjaODja////4uL/p6f5trb/gYHyWlrpWlrpgYHytrb/p6f54uL/////ODjaODjaODjaODja////////trb/gYHyWlrpODjaODjaWlrpgYHytrb/////////ODjaODjaODjaODja////////gYHyWlrpODjatrb/trb/ODjaWlrpgYHy////////ODjaODjaODjaODja////gYHyWlrpODjatrb/////////trb/ODjaWlrpgYHy////ODjaODjaODjaODjagYHyWlrpODjatrb/////////////////trb/ODjaWlrpgYHyODjaODjaODjaODjaODjaODjatrb/////////////////////////trb/ODjaODjaODjaODjaODjaODjaODjagYHyp6f5p6f5p6f5p6f5p6f5p6f5p6f5p6f5gYHyODjaODjaODja"><a
  href="mailto:id3v2-help@id3.org">id3v2-help@id3.org</a> <o:p></o:p></span></font></p>
  </div>
  <p class=MsoNormal><font size=3 face="Times New Roman"><span
  style='font-size:12.0pt'><o:p> </o:p></span></font></p>
  </td>
 </tr>
</table>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

</body>

---------------------------------------------------------------------
To unsubscribe, e-mail: id3v2-unsubscribe@id3.org
For additional commands, e-mail: id3v2-help@id3.org
</html>