ActionScript 3.0 , AIR , FLEXからCocoa, OpenGL
18 Dec
今回は前回のpostに引き続きscilabについて。
scilabには、コマンドラインからサウンドをならす関数である、playsndが最初から定義されていて、変数でサイン波とかを用意してplaysndに突っ込むと音がなる、という仕組みなのですが、Macの場合はなぜだかそのままでは使う事ができません。
本当は、http://science6.2ch.net/test/read.cgi/kikai/1068735555/108n-
に書いているようにすればplaysndを使えるようになるらしいのですが、僕の環境ではできなかったので、代わりに自分でplaysnd関数もどきを定義しよう、と考えました。その手順からテストするまでを記述します。
当然、Macであることを前提とします。
1 playsnd.sciを開く。
playsnd.sciはscilab.appを右クリック(Control+クリック)し、「パッケージの内容を表示」を選択、その後、「Contents/Resources/macros/sound/playsnd.sci」と進み、ファイルをテキストエディタか何かで開く。
すると、どうやらplaysndは
しばらく眺めると、12行目あたりからが怪しい、とわかります。(理由は、12行目のelseに対応するif文に、”MSDOS”と書いているから、12行目以降はWindows以外を指しているんだろうな、と検討をつける事ができます。だってMac OS XってBSDベースでしょ。)
ここを見ると、「/dev/audio」と書かれているところがあります。
![]()
が、まずこの階層は、デフォルトではないと思いますし、なんか別のアイコンが表示されていて、/devを作るのは難しいと思うので、ここでは、/audiodevというフォルダを作り、そこにオーディオファイルを作成します。
次に、なぜか僕の環境ではwavファイルを扱うsavewave, rwaveなどが使えなかったので、前回のポストでも使った、.auファイルを生成してならすことにします。
.auファイルの書き出しに関しては、まさに前回のauwriteを使うのですが、では再生はどうすれば良いでしょうか。
幸いにもシェルぽく使えるunix関数があるので、コマンドラインで音を鳴らせるプログラムと.auファイルを指定する、という方針にします。
ここではコマンドラインからオーディオファイルを鳴らすプログラムとしては、afplayをつかう事にします。
afplayに関しては、ここが詳しいです。(こちらはOctaveでの例ですね。)
で、afplayにパスを通します。(.bash_profileとかをいじって下さいね。)
これでコマンドラインからオーディオファイルを鳴らす事ができるようになりましたので、あとは独自に定義したplaysoundという関数を作成します。
それでは、playsound関数を作成しましょう。
といっても、playsnd関数をちょこっといじるだけです。
16 Dec
scilabでのオーディオファイルの書き出しについて。
Windows環境では、wavが標準なので、swaveとか、rwaveなんてコマンドがあり、このコマンドに値を渡すとファイルの書き出しやら読み込みを行えています。
書き込みを例にとると:
swave(’ファイル名’, [書き出す対象となる変数], [書き出す周波数]);
ですが、Macの場合に標準でついている関数は、.auファイルを読み書きするので、
auwrite([書き出す対象となる変数], [書き出す周波数], ‘ファイル名’); // 拡張子は当然、”.au”
となります。
引数の順番が違うのね。