niszetの日記

10年目エンジニアが最近勉強したことを忘れないようにメモをする

read_wav 試作版できた。

課題が沢山あります。

  1. とりあえず、読みたいデータを読むだけならば、手元では動くことを確認した、wavを読むRのコードが出来ました。
    read_wav(ファイル名) で対象のwavファイルを読むのですが、
    1. Csoundはヘッダにサイズ情報がない。
    2. PrintMusic 2011で作成したwavはリニアPCMなのにヘッダが18バイトある
      …などなど、もうちょっと考えておく必要があるものがありそうです。
  2. もうひとつ、この関数はwavファイルを一気に読んでしまいます。byte単位をRのintegerに変換するのでディスク上のファイルサイズよりもメモリを食います。
  3. 44.1kでサンプリングしている場合、1秒ごとに44.1k行だけデータフレームの行が増えます。試しに4分超のファイルを読ませてplotさせようとしてみましたがRが固まりました…。よって、どこからどこまで読む、というオプションが必要そうです。
  4. 性善説で、wavじゃないものもwavとして読んでしまうので危ない。ヘッダを見て止める仕組みが必要(これは簡単)
  5. コードが長い…ここに貼れるレベルじゃない…。githubに置くためにgitの勉強しなきゃ…

という状態です。

とはいえ、少しは何か書く。

まぁ、色々課題はあるけどちょっと動くし、いちおう進んでるんですよアピールしておこうかな、と。

先日の記事、

niszet.hatenablog.com

で生成したwavファイルをC直下にsample1.wavという名前でおいてあるとします。
これを、こんな感じで

tmp <- read_wav("C:/sample1.wav")

tmp$data %>%  ggplot(aes(x=time, y=Lval))+geom_line()

こうなります。

f:id:niszet:20170607225526p:plain

とりあえず、動くところまではできたのです…。

そういえば、生成されたwavファイルの説明してなかった…。次回に。