def initialize(filename)
open(filename) do|f|
raise "RIFF tag not found in #{filename}" unless f.read(4)=='RIFF'
size = f.read(4).unpack('V')[0]
raise "WAVE tag not found in #{filename}" unless f.read(4)=='WAVE'
raise "Format tag not found in #{filename}" unless f.read(4)=='fmt '
tableSize = f.read(4).unpack('V')[0]
raise "Bad table size in #{filename}: found #{tableSize} expected 16" unless tableSize==16
raise "Unknown or compressed format for #{filename}" unless f.read(2).unpack('v')[0]==1
@channels = f.read(2).unpack('v')[0]
@rate = f.read(4).unpack('V')[0]
f.seek(6, IO::SEEK_CUR)
@bps = f.read(2).unpack('v')[0]
raise "Data tag not found in #{filename}" unless f.read(4)=='data'
@bytes = f.read(4).unpack('V')[0]
@data = f.read(@bytes)
@data = @data.unpack("v*").pack("S*") if @bps==16 and RUBY_PLATFORM =~ /powerpc/
end
end