WavFile.rb
view maximizeVolume.rb @ 40:a324224bc098
maximize volume
| author | shokai <hashimoto@shokai.org> |
|---|---|
| date | Sat Feb 06 15:14:02 2010 +0900 (4 weeks ago) |
| parents | |
| children | 13924b2de0d6 |
line source
1 #!/usr/bin/env ruby
2 # -*- coding: utf-8 -*-
3 # wavの音量を最大に調節する
4 require File.dirname(__FILE__) + '/WavFile'
6 if ARGV.size < 2
7 puts 'ruby maximizeVolume.rb input.wav output.wav'
8 exit 1
9 end
11 in_file = ARGV.shift
12 out_file = ARGV.shift
14 format, data = WavFile::read open(in_file)
16 puts format.to_s
18 bit = 's*' if format.bitPerSample == 16 # int16_t
19 bit = 'c*' if format.bitPerSample == 8 # signed char
20 wavs = data.data.unpack(bit)
22 puts "このwav中の最大音量: #{wavs.max}"
24 volume_ratio = 32768/wavs.max.to_f if format.bitPerSample == 16
25 volume_ratio = 128/wavs.max.to_f if format.bitPerSample == 8
26 puts "補正倍率: #{volume_ratio}"
28 wavs_fixed = wavs.map{|w|
29 w *= volume_ratio
30 }
31 puts "補正されたwav中の最大音量: #{wavs_fixed.max}"
33 data.data = wavs_fixed.pack(bit)
35 open(out_file, "w"){|out|
36 WavFile::write(out, format, [data])
37 }
