My corrected version :


require "delegate"

class ID3Tags < DelegateClass(Struct)
  MP3_TYPE=["Blues","Classic
Rock","Country","Dance","Disco","Funk","Grunge","Hip-
Hop","Jazz","Metal","New
Age","Oldies","Other","Pop","R&B","Rap","Reggae","Rock","Techno","Industrial","Alternative","Ska","Death
Metal","Pranks","Soundtrack","Euro-Techno","Ambient","Trip-
Hop","Vocal","Jazz
+Funk","Fusion","Trance","Classical","Instrumental","Acid","House","Game","Sound
Clip","Gospel","Noise","AlternRock","Bass","Soul","Punk","Space","Meditative","Instrumental
Pop","Instrumental Rock","Ethnic","Gothic","Darkwave","Techno-
Industrial","Electronic","Pop-Folk","Eurodance","Dream","Southern
Rock","Comedy","Cult","Gangsta","Top 40","Christian Rap","Pop/
Funk","Jungle","Native American","Cabaret","New
Wave","Psychadelic","Rave","Showtunes","Trailer","Lo-
Fi","Tribal","Acid Punk","Acid Jazz","Polka","Retro","Musical","Rock &
Roll","Hard Rock","Folk","Folk-Rock","National Folk","Swing","Fast
Fusion","Bebob","Latin","Revival","Celtic","Bluegrass","Avantgarde","Gothic
Rock","Progressive Rock","Psychedelic Rock","Symphonic Rock","Slow
Rock","Big Band","Chorus","Easy
Listening","Acoustic","Humour","Speech","Chanson","Opera","Chamber
Music","Sonata","Symphony","Booty Bass","Primus","Porn
Groove","Satire","Slow
Jam","Club","Tango","Samba","Folklore","Ballad","Power
Ballad","Rhythmic Soul","Freestyle","Duet","Punk Rock","Drum Solo","A
capella","Euro-House","Dance Hall"]

  Tag=Struct.new(:song,:album,:artist,:year,:comment,:track,:genre)

  def initialize(file)
    raise "No ID3 Tag detected" unless File.size(file) > 128
    File.open(file,"r") do |f|
      f.seek(-128, IO::SEEK_END)
      tag = f.read.unpack('A3A30A30A30A4A30C1')
      raise "No ID3 Tag detected" unless tag[0] == 'TAG'
      if tag[5][-2] == 0 and tag[5][-1] != 0
	tag[5]=tag[5].unpack('A28A1C1').values_at(0,2)
      else
	tag[5]=[tag[5],nil]
      end
      super(@tag=Tag.new(*tag.flatten[1..-1]))
    end
  end

    def to_s
      members.each do |name|
	puts "#{name} : #{send(name)}"
      end
    end

    def genre
      MP3_TYPE[@tag.genre]
    end

end