PureDataのexternalを作ってみた(前編)

はじめに

MacPureDataのオーディオexternal objectを作ってみたメモ。日本語で書かれた情報が少なかったので、「無いよりはマシ」程度で書き残しておきます。いろいろと間違いがあると思います。指摘していただければ幸いです。

まず参考にしたのはPd-externals-HOWTOです。この文書では4つのexternを説明してくれます。

  1. bangが来たらhelloを表示するもの。内部に状態を保存しない、とても単純なオブジェクトの例。
  2. 内部に数を保存するカウンターの例。bangがやってきたら、1を加算して返す。と同時に新しい(1が加算された)数を保存しておく。
  3. カウンターの機能を拡張して、下限・上限の設定、加算する数の変更、カウンター数値を下限値にリセット、などを可能にする例。可変個数のメッセージが来た時の対応や、インレットを増やす方法などを説明。
  4. オーディオ信号の加工をする例。2つのオーディオ信号が入ってきて、それらのミックスバランスを変化させられるextern。(筆者は「pan~」と呼んでるけど「mixer~」のほうが良かったと思う)

今回はこれらとは少し違う、「osc~」のような「周波数の数値入力に対して正弦波をオーディオ信号として出力するオブジェクト」を作ってみます。正弦波(sin波)を生成(generate)するので、名前は「singen~」とします。最終的にはこんな感じで使いたい。

続きを読む

Pure DataのexternalをMacでビルドするシェルスクリプト

MacでPure Dataの拡張オブジェクト(external object)をビルドする方法はいくつかあり、下記のMakefileを使うものなどが便利だったりします。(永野さん提案の、Xcodeを使う方法もあります)

参考:Pure Data の拡張オブジェクトを作る gcc on Mac OS X 版 - ruby trunk changes

ただ、Makefileを作るほどでもないんだよなー、というときもあります(ない?) 僕は上記ページを参考にした次のようなシェルスクリプトを使っています。

#!/bin/sh
cc -g -DMACOSX -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \
   -Wno-unused -Wno-parentheses -Wno-switch -I. \
   -o $1.pd_darwin_o -c $1.c
cc -bundle -undefined suppress -flat_namespace -lm \
   -o $1.pd_darwin $1.pd_darwin_o
rm $1.pd_darwin_o

これをmakepdext.shのようなファイルに保存しておき、例えばpd-externals-HOWTOhelloworld.cがあったとして、

$ ./makepdext.sh helloworld

とするとhelloworld.pd_darwinができあがります。やってることは永野さんのMakefileと同じですが、ちょろっとコンパイルしたいだけの時にどうぞ。

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2016-02-13 6714.7 2.96 108.78 49.26 2.21
2016-04-03 6847.3 2.57 108.95 51.60 2.11
2016-04-10 7025.7 3.42 111.99 52.16 2.15
2016-05-18 7113.8 1.68 108.93 52.44 2.08
2016-06-01 7286.3 3.28 114.94 52.59 2.19
2016-06-15 7464.2 2.65 118.11 67.13 1.76
2016-07-24 7579.7 2.54 107.87 45.47 2.37

相模湖までの中距離ツーリングの途中で給油。どうしたのだ燃費!

MFiゲームコントローラはほぼ全てがアナログ入力

iPhoneに接続できるMFiゲームコントローラを探していて、Horipad Ultimateが良さそうだったので購入。Macに接続して調べてみたら、メニューボタン以外の全ボタンがアナログ入力に対応していた。十字キーまでとは驚き。

MFi要件がそうなっているのだろうか。気になって開発者向けのドキュメントを読んでみたら、「ボタン、トリガー、スティック、方向キーは感圧( アナログ)にすべし」と書かれていた。ポーズボタンについてはアナログの記載なし。ほぅほぅ。

ANSI Common Lispの規格書(に近いもの)のPDFを入手する【改】

ANSI Common Lispの規格書(に近いもの)のPDFを入手する』を自分の環境で試してみました(元記事に感謝!)。OS X 10.11.5、MacTeX 2016むけに、いくつか変更。ファイルのダウンロードにwgetではなくcurlを使用。PDF結合ツールとしてpdftkではなくpdfjamを使用。また、デフォルト設定だとA4版ができてしまったので、レター版を作るためにDVI→PDF変換にdvipdfmを使用してレター版を明示。

curl -O http://www.cs.cmu.edu/afs/cs/Web/Groups/AI/lang/lisp/doc/standard/ansi/dpans/dpans3.tgz
curl -O http://www.cs.cmu.edu/afs/cs/Web/Groups/AI/lang/lisp/doc/standard/ansi/dpans/dpans3r.tgz
tar xvf dpans3.tgz
tar xvf dpans3r.tgz
mv dpANS3R/* dpANS3/
cd dpANS3
gunzip *.dvi.Z
for f in chap-*.dvi;do dvipdfm -p letter $f;done
pdfjam --paper letter --outfile ../dpANS3-15.17.pdf chap-0.pdf \
       chap-1.pdf chap-2.pdf chap-3.pdf chap-4.pdf chap-5.pdf \
       chap-6.pdf chap-7.pdf chap-8.pdf chap-9.pdf chap-10.pdf \
       chap-11.pdf chap-12.pdf chap-13.pdf chap-14.pdf \
       chap-15.pdf chap-16.pdf chap-17.pdf chap-18.pdf \
       chap-19.pdf chap-20.pdf chap-21.pdf chap-22.pdf \
       chap-23.pdf chap-24.pdf chap-25.pdf chap-26.pdf chap-a.pdf

ときどき参照するときのためにiPadに放り込んでおこうっと。

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2016-02-13 6714.7 2.96 108.78 49.26 2.21
2016-04-03 6847.3 2.57 108.95 51.60 2.11
2016-04-10 7025.7 3.42 111.99 52.16 2.15
2016-05-18 7113.8 1.68 108.93 52.44 2.08
2016-06-01 7286.3 3.28 114.94 52.59 2.19
2016-06-15 7464.2 2.65 118.11 67.13 1.76

過去最高の燃費を記録! そして1 kmあたりの単価も初めて2円を下回りました。ここ2週間は長距離しか乗らなかったからかなぁ。オドメーターの記録間違いということもなさそうだし、その他のデータはガソリンスタンドのレシート記載のものから計算しているので、そこが間違っているわけでもなさそう。燃費が良すぎて逆にびびる。

Arai CT-Zを購入

いま使っているバイク用ヘルメットはShoeiMultitecです。いわゆるシステムヘルメットというもので、チンガード全体がシールドのように跳ね上げられる構造になっています。信号待ちで水分補給できるなど便利です。しかし、これは2007年にバイクの新車購入とともに買ったもので、すでに8年ほど使っています。本来3年と言われるヘルメット寿命の3倍近くの期間使用し続けていたので色々と不安があったものの、「買い換えないと」と思ってからだらだらと2シーズンが過ぎていました。

http://www.arai.co.jp/jpn/openface/images/ctz_g2_01.jpg

で、満を持した感じで5月に注文していたヘルメットが今日届きました。とりあえず白バイっぽいのが欲しかったので、Arai CT-Zにしました。色も白に。以前より気になっていたピンロックシートも導入したので、快適なライディング生活を期待しています!(まだ着用して乗れてないのです……)