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));
で書き直して解決。少なくともウチの環境では、%sが「C:\DOCUME~1\user\LOCALS~1\Temp\oct-13.wav」のようにDOS用ショートネームパスで展開されているので、これで大丈夫。
system(sprintf("wavplay %s",wavefile));
と思ったが、仕様ではsound(s[,fs])となっていて第二引数が省略できるが、上記ページから落としたsound.mではよくわからないものが書き込まれる様子なので、またこの辺は後で考えることにする。
Octaveでの作業フォルダは決まっているので、C:\Documents and Settings\user_id\.octarverc に
を書いておいた。
cd "C:\\Documents and Settings\\user_id\\My Documents\\octave_program"