home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 November / Chip_2002-11_cd1.bin / zkuste / delphi / unity / d56 / DW / DW10242.ZIP / MP3Works.pas < prev    next >
Pascal/Delphi Source File  |  2002-04-21  |  3KB  |  82 lines

  1. (*--------------------------------MP3Works.pas---------------------------
  2.  V1.0.1 - 05.04.2001 current release
  3. *------------------------------------------------------------------------*)
  4. unit MP3Works;
  5.  
  6. interface
  7.  
  8. uses Classes, SysUtils;
  9.  
  10. type
  11.   TID3V1Tag = record
  12.     ID: string[3];
  13.     Titel: string[30];
  14.     Artist: string[30];
  15.     Album: string[30];
  16.     Year: string[4];
  17.     Comment: string[30];
  18.     Genre: Byte;
  19.   end;
  20.  
  21. const
  22.  MP3_Genres : array[0..146] of string =
  23.     ('Blues','Classic Rock','Country','Dance','Disco','Funk','Grunge',
  24.     'Hip- Hop','Jazz','Metal','New Age','Oldies','Other','Pop','R&B',
  25.     'Rap','Reggae','Rock','Techno','Industrial','Alternative','Ska',
  26.     'Death Metal','Pranks','Soundtrack','Euro-Techno','Ambient',
  27.     'Trip-Hop','Vocal','Jazz+Funk','Fusion','Trance','Classical',
  28.     'Instrumental','Acid','House','Game','Sound Clip','Gospel','Noise',
  29.     'Alternative Rock','Bass','Punk','Space','Meditative','Instrumental Pop',
  30.     'Instrumental Rock','Ethnic','Gothic','Darkwave','Techno-Industrial','Electronic',
  31.     'Pop-Folk','Eurodance','Dream','Southern Rock','Comedy','Cult','Gangsta',
  32.     'Top 40','Christian Rap','Pop/Funk','Jungle','Native US','Cabaret','New Wave',
  33.     'Psychadelic','Rave','Showtunes','Trailer','Lo-Fi','Tribal','Acid Punk',
  34.     'Acid Jazz','Polka','Retro','Musical','Rock & Roll','Hard Rock','Folk',
  35.     'Folk-Rock','National Folk','Swing','Fast Fusion','Bebob','Latin','Revival',
  36.     'Celtic','Bluegrass','Avantgarde','Gothic Rock','Progressive Rock',
  37.     'Psychedelic Rock','Symphonic Rock','Slow Rock','Big Band','Chorus',
  38.     'Easy Listening','Acoustic','Humour','Speech','Chanson','Opera',
  39.     'Chamber Music','Sonata','Symphony','Booty Bass','Primus','Porn Groove',
  40.     'Satire','Slow Jam','Club','Tango','Samba','Folklore','Ballad',
  41.     'Power Ballad','Rhytmic Soul','Freestyle','Duet','Punk Rock','Drum Solo',
  42.     'Acapella','Euro-House','Dance Hall','Goa','Drum & Bass','Club-House',
  43.     'Hardcore','Terror','Indie','BritPop','Negerpunk','Polsk Punk','Beat',
  44.     'Christian Gangsta','Heavy Metal','Black Metal','Crossover','Contemporary C',
  45.     'Christian Rock','Merengue','Salsa','Thrash Metal','Anime','JPop','SynthPop');
  46.  
  47.   function ReadID3V1Tag(FileName: string): TID3V1Tag;
  48.   function GenreByteToName(const Genre: Byte): String;
  49.  
  50. implementation
  51.  
  52. function ReadID3V1Tag(FileName: string): TID3V1Tag;
  53. var
  54.   FS: TFileStream;
  55.   Buffer: array [1..128] of Char;
  56. begin
  57.   FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  58.   try
  59.     FS.Seek(-128, soFromEnd);
  60.     FS.Read(Buffer, 128);
  61.     with Result do
  62.     begin
  63.       ID      := Copy(Buffer, 1, 3);
  64.       Titel   := Copy(Buffer, 4, 30);
  65.       Artist  := Copy(Buffer, 34, 30);
  66.       Album   := Copy(Buffer, 64, 30);
  67.       Year    := Copy(Buffer, 94, 4);
  68.       Comment := Copy(Buffer, 98, 30);
  69.       Genre   := Ord(Buffer[128]);
  70.     end;
  71.   finally
  72.     FS.Free;
  73.   end;
  74. end;
  75.  
  76. function GenreByteToName(const Genre: Byte): String;
  77. begin
  78.    result:= MP3_Genres[Genre];
  79. end;
  80.  
  81. end.
  82.