leo wrote:I thought ID3 in WAV files was "illegal" and could cause problems with some players? Maybe that's wrong?
No - this is not true.
I'm using WMP 11, RealPlayer 10.5, QuickTime 7.6, WinAmp 5.5 and never had a problem with a WAV file (with a sub chunk called "id3 ") - they don't use it - as for other sub chunks which exist but they don't need it so they overread it.
Additional sub chunks could be defined by other programs. So "other" programs which have problems with a sub chunk "id3 " are also having problems with other new sub chunks defined by other programs. This is not related to the sub chunk "id3 "

!
(There might be problems when programs are using the same sub chunk id for their own data/application only but never heared a problem).
I've also tried other djing software and the music programs WaveLab 5 and Sony SoundForge 9 and never had a problem.
WAV is embedded in the RIFF file format.
A very basic explanation of the file format:
"RIFF"
length of following file content RIFF
- "WAV"
- length of following content WAV
- - "sub1"
- - length of following content sub 1
- - content of sub 1
- - "sub2"
- - length of following content sub 2
- - content of sub 2
- - "sub3"
- - length of following content sub 3
- - content of sub 3
- - ... (more sub chunks)
- - "id3 "
- - length of following content "id3 "
- - the content of sub "id3 " - starting with the id "ID3" - the marker as in other music file types which support ID3
- - "sub5"
- - length of following content sub 5
- - content of sub 5
- - ... (more sub chunks)
end of file
(Check ALL links in my first post above and read it carefully for all the details).
So the only one thing you have to do:
Open the WAV file, read the sub chunks (read the first, add the content length and make a new seek in the file, read the next, and so on ...) - until you have found the sub chunk "id3 ". Then the standard ID3 stream begins as in other music files with the id "ID3". From there you use the same sub routine for reading ID3 in MP3's
In
http://www.id3.org/id3v2.4.0-structure, chapter 3, read the first paragraph - and especially the part after "but".
ID3v2 is a general tagging format for audio, which makes it possible to store meta data about the audio inside the audio file itself. The ID3 tag described in this document is mainly targeted at files encoded with MPEG-1/2 layer I, MPEG-1/2 layer II, MPEG-1/2 layer III and MPEG-2.5, but may work with other types of encoded audio or as a stand alone format for audio meta data.
So - you only have to read the de-facto standard. If it's there - use & display it as you read the ID3 stream from MP3. The ID3 stream has it's own standard format. As explained above - it doesn't matter where embedded!
Ok?
leo wrote:Why not use WMA-Lossless, FLAC or Apple Lossess which are both smaller and have official tag formats? Is there something that supports WAVs with ID3s but not one of the other lossless formats?
I want to have it easy:
I only use MP3 or WAV - I don't want to use more formats. Space is not the problem. All the software I'm using might not be able to read FLAC or Apple Lossless, etc. - MP3 & WAV are defacto standards here and widly used. I don't want to change it.
I only get MP3 or WAV files promoted for download (sometimes AIFF from MAC studios but it's the same as WAV - only high/low order bytes are switch which I convert with sox in a few seconds).
When I buy music, MP3 and/or WAV is available. No convertion required
I want to us the SAME audio tagging standard - which is ID3 and works in both files (with all the software which support it and which I have).
The funny thing is - whenever I post "please support ID3 in WAV" I get a return question "Why don't you use another lossless format?" (see e.g. mp3tag.de forum).
.. if you would not support Apple Lossless and other people ask why don't you support Apple Lossless - would you ask "Why don't you use another (lossless) format?"
However - a support would be great. It's really easy to read the data out and no big overhead to find the ID3 stream ... and analyzing the ID3 stream is still programmed - use this sub routine
Cheers,
Robert
