WindowsのOctave3.0.1でsound()を使ってみた

UNIX系の環境でなければsound()で音が鳴らないようです。Webで検索すると「ディジタル・サウンド処理入門」のページでwindowsでも使えるsound.mを配布している模様で、そのほかwavplay.exeとtest01.mをダウンロード。ただし、Octave3.0.1ではWindowsで使えるwavread.mとwavwrite.mが入っているので、このページからダウンロードする必要はない。

しかし、sound.mの中のunwind_protect_cleanupでsyntax errorになる。試行錯誤の末、その前の行の


system(sprintf('wavplay \'%s\'',wavefile));

system(sprintf("wavplay %s",wavefile));
で書き直して解決。少なくともウチの環境では、%sが「C:\DOCUME~1\user\LOCALS~1\Temp\oct-13.wav」のようにDOS用ショートネームパスで展開されているので、これで大丈夫。

と思ったが、仕様ではsound(s[,fs])となっていて第二引数が省略できるが、上記ページから落としたsound.mではよくわからないものが書き込まれる様子なので、またこの辺は後で考えることにする。

Octaveでの作業フォルダは決まっているので、C:\Documents and Settings\user_id\.octarverc に


cd "C:\\Documents and Settings\\user_id\\My Documents\\octave_program"
を書いておいた。