wav

wavファイルのdata chunkを取り出す

WavFile.rbでは今まで全chunksを配列で取り出していたが、よく考えたらformat chunkとdata chunk以外は捨てても構わない情報なので chunk配列からdata chunkだけを取り出す関数を追加した。 readDataChunk.rb http://shokai.org/projects/ruby-wavfile/index…

wavファイル同士を重ねて合成する

音の合成は、波なので足すだけでいい。ただし16bitを越えてしまうので2で割るなりして音量を下げる必要がある。 base.wavを元として、sound.wavを1、3.3、8秒目に置いてresult.wavとして書き出す例。 ruby compositeWav.rb base.wav sound.wav 1 3.3 8 resul…

wavファイルの波形を見てみる

改行区切りテキストで吐き出してExcelでグラフにすると見れる ruby dumpWav.rb sound.wav dump.txt pbcopy < dump.txtmacはpbcopyでファイルをクリップボードに読み込める dumpWav.rb http://shokai.org/projects/ruby-wavfile/index.cgi/file/0971a11a4fd6/…

wavファイルを左チャンネルのみ、右チャンネルのみにする

wavファイルをrubyでいじって、左チャンネルだけ消して右だけ聞こえるようにする。右を消して左だけにしたファイルも書き出す。 http://d.hatena.ne.jp/shokai/20091102/1257189122 のWavFile.rbを使う。 splitChannelWav.rb #!/usr/bin/env ruby # -*- codi…

逆再生するwavを作る

dataチャンクから配列として波形を取り出せるか試してみた。Rubyはunpackで取り出してpackでバイナリに戻せる(しかもけっこう高速に)のでこれを使っていこうかな。 nameがdataのchunkのデータ部分が波形データなので、wav formatを見て16bitか8bitか確かめて…

wavファイルを複数つなげる

前の記事に書いたWavFile.rbは、dataチャンクを増やした時にファイルフォーマットや各チャンクのsize値も更新するようになっているので、こんな風に複数wavを接続するのも簡単にできる。 ただしformat chunkが同じwavファイル同士のみ。formatが違うとデータ…

wavファイルのフォーマットを書き換えて倍速再生にする

前:wavファイルのフォーマットを読み込む - 橋本詳解 wavのDSPをやる準備が整った。 wavヘッダをメモリに読み込んでrubyの変数として扱って、バイナリに書き戻せるようになった。dataチャンクの中の波形をいじれば音を変えれる。 まずは波形ではなくwavヘッ…

wavファイルのフォーマットを読み込む

http://d.hatena.ne.jp/shokai/20091028/1256680676 でファイルヘッダを読み込んだので、続けてフォーマットチャンク部分を読み込んだ。 この本、Cで書かれてるけどわかりやすいから参考にした。 readHeader.rb #!/usr/bin/env ruby # -*- coding: utf-8 -*-…

wavファイルのヘッダを読み込む

参考 http://moonrock.jp/~don/d/200202.html#d07_t1 readHeader.rb #!/usr/bin/env ruby if ARGV.size < 1 puts 'ruby readHeader.rb input.wav' exit 1 end File.open(ARGV.first){|file| file.binmode puts riff = file.read(4) puts data_size = file.re…