Snack インストール

Snack Sound Toolkit をソースからインストールした記録です。VMware Player/Ubuntu Linux 上に入れました。

Tcl/Tk のインストール

Snack は Tcl/Tk のライブラリとして提供されるので、最初に Tcl/Tk をインストールしておく必要があります。今回は Tcl/Tk もソースからインストールすることにしました。
まず、http://www.tcl.tk/software/tcltk/ から tcl8.4.14-src.tar.gz と tk8.4.14-src.tar.gz をダウンロードします。
以下、コマンドのログです。

### パッケージの確認
$ cd ~/proj/Tcl/src/
$ ls ../arc/
tcl8.4.14-src.tar.gz  tk8.4.14-src.tar.gz

### Tcl のメイク
$ tar zxvf ../arc/tcl8.4.14-src.tar.gz
$ cd tcl8.4.14/unix
$ ./configure --prefix=$HOME/proj/Tcl --enable-shared
$ make
$ make install

### PATH の設定
$ echo export PATH=\${HOME}/proj/Tcl/bin:\${PATH} >> ~/.bashrc
$ source ~/.bashrc

### tclsh の実行確認
$ which tclsh8.4
/home/USERNAME/proj/Tcl/bin/tclsh8.4
$ tclsh8.4
% puts $tcl_library
/home/USERNAME/proj/Tcl/lib/tcl8.4
% puts $tcl_pkgPath
/home/USERNAME/proj/Tcl/lib
% exit

### Tk のメイク
$ cd ../../; tar zxvf ../arc/tk8.4.14-src.tar.gz
$ cd tk8.4.14/unix/
$ ./configure --prefix=$HOME/proj/Tcl --enable-shared
$ make
$ make install

### wish (Tk) の実行確認
$ which wish8.4
/home/USERNAME/proj/Tcl/bin/wish8.4
$ wish8.4  (ウィンドウがひとつ出れば OK です)

Tcl の組み込み変数 ($tcl_pkgPath など) については、もっとTcl/Tk - Tclの変数 に詳しいです。
また、上記のログには載せていませんが、Tk のメイク中に「Xlib.h が無い」と言われてビルドが失敗しました。これについては、Synaptic パッケージマネージャで xlibs-dev パッケージを入れてから再度メイクすると、今度は成功しました。

Snack のインストール

つづいて、http://www.speech.kth.se/snack/download.html から snack2.2.10.tar.gz をダウンロードします。
以下、またコマンドのログを載せます。

### パッケージの確認
$ cd ~/proj/Tcl/src/
$ ls ../arc/
snack2.2.10.tar.gz  tcl8.4.14-src.tar.gz  tk8.4.14-src.tar.gz

### Snack のメイク
$ tar zxvf ../arc/snack2.2.10.tar.gz
$ cd snack2.2.10/unix/
$ ./configure (--prefix オプションなしでも、下記のように [tcl|tk]Config.sh を勝手に見付けてくれました)
checking for Tcl configuration... found /home/USERNAME/proj/Tcl/src/tcl8.4.14/unix/tclConfig.sh
checking for Tk configuration... found /home/USERNAME/proj/Tcl/src/tk8.4.14/unix/tkConfig.sh
...
$ make
$ make install
Making directory /lib/snack2.2
mkdir: ディレクトリ `/lib/snack2.2' を作成できません: 許可がありません
chmod: cannot access `/lib/snack2.2': そのようなファイルやディレクトリはありません
make: *** [install] エラー 1

make install で /lib にディレクトリを作ろうとしますが、root 権限が無いので失敗してしまいます。こちらの意図としては ~/proj/Tcl/lib あたりにインストールして欲しいので、Makefile を以下のように書き換えました。

# SNACK_INSTALL_PATH = ${exec_prefix}/lib   (修正前)
SNACK_INSTALL_PATH = ${HOME}/proj/Tcl/lib   (修正後)

configure のときに、./configure -prefix=~/proj/Tcl --exec-prefix=~/proj/Tcl と指定してみたのですが、これでもうまくいかなかったため、上記のような Makefile 自体の修正で対応しました。
さて、ログの続きです。

$ make install

### Snack の実行確認
$ tclsh8.4
% package require snack
2.2
% package require sound
2.2
% exit

どうやら、大丈夫のようです。
Snack の確認のために、snack2.2.10/demos/tcl に入っている generator.tcl や formant.tcl を試してみてもよいかもしれません。(左記ディレクトリで $ wish8.4 formant.tcl などとして実行してください)

VMware/Ubuntu 上での snack::filter generator

generator.tcl を試してみたところ、

$ cd proj/Tcl/src/snack2.2.10/demos/tcl
$ wish8.4 generator.tcl

ジリジリというノイズが載ってしまいました。サウンドのエミュレーションがうまくいっていないのか、ホスト PC のパワー不足か、ちょっと不明です。