タグ

waveに関するPinkのブックマーク (4)

  • wavファイルのフォーマットを読み込む - 橋本詳解

    http://d.hatena.ne.jp/shokai/20091028/1256680676 でファイルヘッダを読み込んだので、続けてフォーマットチャンク部分を読み込んだ。 この、Cで書かれてるけどわかりやすいから参考にした。 readHeader.rb #!/usr/bin/env ruby # -*- coding: utf-8 -*- 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) data_size = file.read(4).unpack('V')[0] puts "#{data_size} (bytes)" puts wave = file.read(4) i

    wavファイルのフォーマットを読み込む - 橋本詳解
  • wavファイルのフォーマットを書き換えて倍速再生にする - 橋本詳解

    前:wavファイルのフォーマットを読み込む - 橋詳解 wavのDSPをやる準備が整った。 wavヘッダをメモリに読み込んでrubyの変数として扱って、バイナリに書き戻せるようになった。dataチャンクの中の波形をいじれば音を変えれる。 まずは波形ではなくwavヘッダの周波数とbpsの値をいじって、倍速再生のwavファイルを作る例。 かなりバイナリをすんなり扱えるラッパーができた。 (後述のWavFile.rbを使う) test.rb #!/usr/bin/env ruby require 'WavFile' if ARGV.size < 2 puts 'ruby test.rb input.wav output.wav' exit 1 end f = open(ARGV.shift) format, chunks = WavFile::readAll(f) # Format, Arra

    wavファイルのフォーマットを書き換えて倍速再生にする - 橋本詳解
  • WAVEフォーマット解析 - while(1)って恐くね?

    どうもbchunkを騙して使うのはスマートでない感があるので、bin2wavくらいは自力で実装出来るようにWAVEフォーマットについて調べてみた。 http://ccrma.stanford.edu/courses/422/projects/WaveFormat/を参考にすると、ソースをCDDAに限定した場合はNumChannels=2、SampleRate=44100、BitsPerSample=16と定まるので、WAVEヘッダはChunkSizeとSubchunk2Size以外のフィールドが完全に固定された44バイトになることが分かる。 固定されていないChunkSizeとSubchunk2Sizeも、Subchunk2Size=(data=生PCM=binファイル)の大きさ、ChunkSize=32+Subchunk2Sizeのようなので、WAVEヘッダを生成するのに必要なデータはb

    WAVEフォーマット解析 - while(1)って恐くね?
    Pink
    Pink 2009/08/14
  • Waveファイルを作る - mamamotoの日記

    44100Hz、8bit、モノラルで2秒間、ノコギリウェーブを鳴らします。 ノコギリウェーブって言葉の響きが面白い。 音程は適当。えーと周期が256サンプルだから(44100/256)Hzになるのかな。 しかしWaveファイルって結構簡単に作れるのね。 open("b.wav", 'w'){|f| rate = 44100 #Hz sample = 8 #bit ch = 1 sec = 2 speed = rate*sample*ch/8 #bytes per sec size = speed * sec fileSize = size + 36 fmtSize = 16 f.print("RIFF", [fileSize].pack('V'), "WAVE", "fmt ", [fmtSize].pack('V'), [1].pack('v'), #pcm [ch].pack('v')

    Waveファイルを作る - mamamotoの日記
  • 1