[作業メモ] Pure Data アンビソニック用ライブラリをコンパイルする
Pdユーザとして、Ricky Graham氏の開発したgrambiライブラリを愛用している。最近使用マシンをIntel MacからApple Siliconに変えたので、インストールの手順をメモしておく。
作業環境:
MacBook Pro Nov. 2023 M3
Pd 0.54.1
おことわり
筆者はC言語やUNIXの非専門家なので、冗長な箇所や誤解に基づく記述がある可能性があります。ご承知おきください。
GitHubからソースコードをダウンロード
grambilibのページへゆく。
今回はURLをコピーしてターミナルから落とす方法を取った。
ターミナルで下のように入力。https://以下はコピーしたURL。
% git clone --recursive https://github.com/rickygraham/grambilib.git
Macintosh HD/ユーザ/[ユーザー名]のフォルダにgrambilibがインストールされる。
適宜保存したい場所に移動させる。
(後記:ターミナルのcdコマンドで直接保存したい場所にダウンロードする方が賢い。)
今回は[ユーザー名]/書類/Pd/externalsにした。
grambilibの中身
.pd_darwinという拡張子のファイルが、それぞれのオブジェクトの(Mac用の)本体だ。
ただ、このままPdでhelpパッチ(grambi-help.pd)を開いても、grambiのオブジェクトは認識されなかった。
Cで書かれたソースコードをApple Silicon用(?)にコンパイルし直し、新しい.pd_darwinファイルを作成する必要があるらしい。
MakefileとMakefile.pdlibbuilderを用意
PdオブジェクトやライブラリをコンパイルするためにはMakefile、そしてMakefile.pdlibbuilderというファイルが必要になる。
今回はエクスターナルライブラリのサンプルholloworldから、必要なプログラムを流用した。
(後記:Makefile.pdlibbuilderは本家Gitから最新版をDLしたほうが良いだろう。)
.zip形式ではpd-lib-builderをダウンロードできないので使ってはいけない、gitを推奨する、とREADMEにある。
grambilibをダウンロードしたときと同様に、ターミナルのgitコマンドでhelloworldをダウンロード。
% git clone --recursive https://github.com/pure-data/helloworld.git
ダウンロードしたhelloworldからMakefileとpd-lib-builderをコピーし、grambilibのv1.1フォルダにペーストした。
Makefileを書き換える
grambilib/v1.1にペーストしたMakefileをXcodeで開き、下記のように書き換える。
# library name
lib.name = grambilib~
# input source file (class name == source file basename)
class.sources = grambidec~.c grambiman~.c grambipan~.c
# all extra files to be included in binary distribution of the library
datafiles = grambilib-help.pd README.md
# include Makefile.pdlibbuilder from submodule directory 'pd-lib-builder'
include pd-lib-builder/Makefile.pdlibbuilder
ソースコードの名前を変える
それぞれのオブジェクトのソースコードであるgrambidec.c、grambiman.c、grambipan.cの名前を「~(チルダ)」付きに改めた。
grambidec~.c grambiman~.c grambipan~.c
コンパイル実行
ターミナルでcdコマンドを用いて、コンパイルするコードのあるgrambilib/v1.1へ移動する。以下は私の場合。
% cd /Users/xxxx/Documents/Pd/externals/grambilib/v1.1
続けて「make」と入力。コンパイルが始まる。
% make
Warning!
複数の警告が出た。ソースコードに好ましくない記述があるらしいが、深刻なものではないだろう。長いので一部のみ抜粋↓
grambidec~.c:43:16: warning: unused variable 'APin2' [-Wunused-variable] t_sample *APin2 = (t_sample *)(w[3]); ^
完了!
警告は出たが、コンパイルそのものは完了した。
Pdオブジェクトを開く
grambilibのヘルプパッチを開く。オブジェクトは無事?生成されているようだ。
これから
Makefile.pdlibbuilderを使った外部オブジェクトは多数あるので、古くて使えないと思っていたエクスターナルオブジェクトの多くを、この方法でコンパイスすることができた。投げ出していた自作オブジェクトもいずれまた挑戦せねば…