Hi, The Album-iD specs are somewhat finished, and I wrote a program to generate AiD's and stick them in front of mp3's. (all+sources at http://albumheader.cjb.net) All seems to work as planned, even LAME decodes the AiD-mp3 without problems at first sight: RV> "Club System - Volume 16.mp3" already has a valid Album-iD with length 3764 RV> RV> E:\test>>lame --decode "Club System - Volume 16.mp3" RV> input: Club System - Volume 16.mp3 44.1kHz MPEG1 2 channel LayerIII RV> output: Club System - Volume 16.mp3.wav (wav format) RV> skipping initial 1104 samples (encoder + decoder delay) RV> Frame# 3764 [ 183178] 160kbs problem: I don't know how lame knows where to start decoding, but I have the idea that if, by accident, the AiD should contain a certain string, lame could start decoding halfway the header or so? To avoid this, could someone please add a piece of (C preferrably :)) code like this: RV> const header= 'AiD'+ #01; RV> RV> function checkaid (filenaam: string): word; RV> var i, numread: word; RV> s: array [1..6] of char; RV> h: string [6]; RV> f: file; RV> RV> begin RV> assign (f, filenaam); RV> reset (f); RV> seek (f, 0); {jump to fist byte in "filenaam"} RV> blockread (f, s, 1, numread); RV> h:= header; RV> if ( (numread= 1) and (s [1] = h [1] ) and (s [2] = h [2] ) and (s [3] = h [3] ) and (s [4] = h [4] ) ) then RV> begin RV> i:= Ord (s [5] ); RV> inc (i, Ord (s [6] ) * 256); RV> checkaid:= i; {return the length of AiD} RV> end RV> else checkaid:= 0; {no Album-iD found} RV> close (f); RV> end; to lame(CVS)? (excuse the pascal, but it's all I know) "checkaid(mp3filename)" would return (0)d if no file found and (the real startaddress)d if and AiD is there. It'd be great to have "lame --decode" say "Album-iD found" if one is there. (that place could be used in future to call an AiD->CUE function) many thanks! -- Best regards, Roel mailto:[EMAIL PROTECTED] -- MP3 ENCODER mailing list ( http://geek.rcc.se/mp3encoder/ )