Lyrics3 is about as advanced a specification as ID3v1 was. It's a horrible kludge, and it's about the worst possible way to do it. (Okay, it's a little better than ID3v1 was. At least it didn't utilize fixed-length fields.)

The reason we don't like them is because they technically corrupt the mp3 files. As far as a decoder is concerned, it's trash at the end of the file, just like an ID3v1 tag is. While ID3v1 tags became a de facto standard and decoders learned to ignore them, Lyrics3 did not, and decoders did not learn to ignore them. If you're lucky, the decoder will throw it away as trash. If not, you might have the pleasure of squeaks and squawks. If you're terribly unlucky, you might end up blowing your speakers due to those squeaks.

ID3v2 avoids these problems by making itself look like an mp3 frame (or making sure it doesn't look like an mp3 frame -- I forget). Anyway, while the specification states that ID3v2 tags can appear anywhere in an mp3 file, in practice, they only ever appear at the beginning of the file, possibly following a VBR header.

However, if you want to implement the ID3v2 SYLT spec instead of (or in addition to) Lyrics3 (which, BTW, is not an ID3 spec), there exists a library you can use (id3lib), so you won't have to worry about all of that stuff.

Oh, and the Linux kernel dynamically generates all the stuff in /proc. It's not on the hard drive anywhere. Some of it can actually be written to in order to tweak parameters.
_________________________
Bitt Faulk