#!ruby -Ks # -*- mode: ruby; encoding: sjis -*- # Last updated: <2015/05/16 23:29:48 +0900> # # Rubyでwavファイルを処理する例 # wavefile を使う事例 require "rubygems" require "wavefile" IN_FILE = "input.wav" HZ_V = 48000 # サンプリング周波数 FPS = 24 / 3 # 1秒間あたりの映像のコマ数 SAMPLES_PER_BUFFER = HZ_V / FPS # WaveFile::Reader.new(IN_FILE).each_buffer(SAMPLES_PER_BUFFER) do |buffer| # puts "Read #{buffer.samples.length} samples." # end # データ部分をバッファに読み込んでみる # :mono , :stereo # :pcm_8, :pcm_16, :pcm_32, :float_32, :float_64 format = WaveFile::Format.new(:mono, :pcm_16, HZ_V) reader = WaveFile::Reader.new(IN_FILE, format) begin while true do vmin, vmax = 0, 0 buffer = reader.read(SAMPLES_PER_BUFFER) sumv = 0 buffer.samples.each do |v| vmin = v if v < vmin vmax = v if v > vmax sumv += (v > 0)? v : -v end puts "Read #{buffer.samples.length} samples. / min,max = #{vmin}, #{vmax} / sum = #{sumv}" end rescue EOFError reader.close end