def fromPCMFiles filenames
lengths = []
filenames.each do |fn|
fil = AudioFile.new fn
lengths.push(fil.frame_count*1000/fil.rate)
fil.close
end
nrTracks = lengths.length
offset = 150
frameOffsets = []
totalLength = 0
n = 0
lengths.each do |length|
frameOffsets << offset
offset += (length * 75 / 1000)
n += digitSum(length / 1000)
totalLength += length / 1000
end
discID = sprintf("%08x", ((n % 0xff)<<24) | \
(totalLength << 8) | \
nrTracks)
query = "#{discID} #{nrTracks} "
frameOffsets.each do |ofs|
query += "#{ofs} "
end
query += "#{totalLength}"
query
end