QR Code Generator
7月 1, 2009
JavaScript でQR コードを生成するスクリプトを公開している方を見つけたので、QC で使ってみました。(→作者様サイト)
Javascrit Patch の中に丸ごと取り込み、最下部に値の入出力と呼び出し用のコードを付け加えました。
QR コードのサイズ(バージョン)はバージョン1(21 x 21 dot) 〜 バージョン10 (41 x 41 dot) が生成出来るようです。
(サイズによって埋め込める文字列の長さが変わります。)
必要に応じて呼び出し部の数字を変えてください。
var qr = new QRCode(4, QRErrorCorrectLevel.H);
本当はiSight でQR コードを読みたいのですが、、、
どこかにないでしょうか?
FizzBuzz Questions
6月 4, 2009
FizzBuzz 問題とは、2年前にちょっと流行ったお遊びです。
これは偽プログラマを判定するテストです。Quartz Composer でやってみましょう。
QC は「If 文もFor 文もない」のでそこをどうするかが問題です。私はConditional patch とIterator を使いました。
結果は、、、イテレータ2段で書いて18分。リアルにダサい。
表示する10×10のマスを用意するだけで5分以上かかってしまいました。
イテレータを1段にして少し整形したものを添付します(ついでにナベアツ問題も)。今回は他言語ユーザーの方が興味を持つ可能性が0では無いので、ソースコードに相当する画面を掲示します。
実行動画:(音声はAppleScript です。しかしネタが古い。)
Remote Apple Event (AppleScript)
5月 22, 2009
説明:
かなり横道ですが、先日のAppleScript に関連して、リモートアップルイベントについて。ネットワーク越しにAppleScript でマシンを操作できます。AppleScript 関係の日本語の情報は古いものが多かったので書いてみます。
Apple Event とは
AppleScript はアプリケーション間でApple Event をやりとりするための言語です。ネットワーク越しにApple Event を送る方法については ADC のAppleScript Language Guide、Remote Applications の項を参照してください。
リモートマシンはeppc-style で書くそうです。(何だそれ?)
An eppc-style specifier takes the following format:
eppc://[user[:password]@]IP_address
具体例(※Mac OS X、Leopard 版)
・相手(リモート)のMac の設定
システム環境設定 > 共有 > リモートアップルイベント
を「入」にします。
・操作するアプリケーションを起動しておきます。
・AppleScript を記述します。
tell application "iTunes" of machine "eppc://192.168.0.50"
playpause
end tell
・実行
実行時に認証ダイアログが出ます。
以上。
UNIX Command – execute in Quartz Composer
5月 21, 2009
説明:
Quartz Composer でUNIX コマンドを実行する方法について、osascript コマンドでAppleScript を実行する例を用いて説明します。
・CommandLineTool Plug-in を使用します。
・プラグインの使い方はこちらを、AppleScript についてはこちらを参照してください。
Command Line Tool Patch の使い方:
“Path” に実行するコマンドのパスを入力します。
パスを調べるコマンドは
$ which osascript
osascript のパスは
/usr/bin/osascript
です。
AppleScript (osascript) の実行:
osascript でAppleScript を実行するには3つの方法があります。
1. Argument として、スクリプトファイルのパスを渡す
2. Argument として、-e オプションでスクリプトを1行ずつ渡す
3. “Standard In” にスクリプトを入力する
複数行のスクリプトを”Standard In” に送るには、String Printer Patch を使うと便利です。
Settings パネルの中で改行するには「option + return」を押します。
他のエディタからコピー&ペーストすることもできます。
注意点:
Command Line Tool Patch は、出力が接続されていないと実行されません。今回はAppleScript から何も表示が無いので、Output Status を表示するのが良いと思います。
以上で、QC からUNIX コマンドを実行、osascript を経由したAppleScript の実行を習得しました。
これにOSC パッチを組合わせて、iTunes Controller が完成します。原因が分からないのですが、Command Line Tool の表示が化ける事があるので、2つに分けています。メインのiTunes コントローラ(OSC-Reciever-for-iTunes.qt) と、OSC sender (OSC-Sender-for-iTunes.qtz) になります。
sender はArduino でもiPhone でも何でも構いません。
別のMac でOSC-Sender-for-iTunes.qtz を開いてコントロールすることも可能です。
AppleScript を変更すれば、DVD プレーヤーやSafari など、他のアプリのコントローラーを作ることができます。
Plug-in を使う (Using Plug-ins)
5月 20, 2009
説明:
Plug-in を使うと、Quartz Composer に新たなパッチを追加することができます。今回は標準で付属するサンプルPlug-in(※Leopard 版)の使い方(ビルド&インストール)を説明します。
/Developer/Examples/Quartz Composer/Plugins/
この中には、多数のサンプルPlug-in(のソースコード)があります。
本来は自分のカスタムプラグインを作るための雛形ですが、そのまま使えるものもあります。私は「CommandLineTool」、「ImageWriter」、「iPatch」をお勧めします。
「CommandLineTool」を例に手順を説明します。
1. 「CommandLineTool Test.qtz」を開く
必要なPlug-in がないため、エラーが出ます。試しにやってみてください。
2.「CommandLineTool.xcodeproj」を開く
・Xcode が起動します
・CommandLineTool.plugin が赤字で表示されます(まだ作られていません)
・「ビルド」ボタンを押します
・CommandLineTool.plugin が黒字で表示されます(作られました)
3. 所定の場所に移動する
・同じフォルダ内に作られる、「build/Debug」フォルダの中に「CommandLineTool.plugin」があります。
Xcode のファイル上で右クリックし、「Finder に表示」を選択するのも良いでしょう。
移動する場所は
ホーム/ライブラリ/Graphics/Quartz Composer Plug-Ins/
または
/Library/Graphics/Quartz Composer Plug-Ins/
どちらでも結構です。該当するフォルダがなければ作ってください。
4. Quartz Composer を再起動
起動時にPlug-in を読み込むので、Quartz Composer を一度終了します。
5.「CommandLineTool Test.qtz」を開く
エラーが出なくなりました。
このPlug-In は所謂 UNIX コマンドを実行することができます。ターミナル.app で出来ることが、QC 上で出来てしまうので、取り扱いには十分注意してください。
サンプルの「CommandLineTool Test.qtz」は「ls -l /」(ルートディレクトリをリストする)コマンドです。
他のPlug-in も使い方は同様です。「FreeFrameHost」のみ、「Quartz Composer Plug-Ins」と同じ場所に「FreeFrame Plug-Ins」というフォルダを用意して、FreeFrame Plug-In を入れておく必要があります。(付属する「Solarize FreeFrame Plug-In.zip」を解凍してフォルダごと入れてください)このパッチは「FreeFrame Plug-In」をQC で使うためのPlug-In です。
お勧めの「Image Writer」はImage をPNG ファイルで保存するパッチです。
もう一つの「iPatch」はiString を作るパッチです。くだらないので是非試してみてください。
OSC – send by iPhone
5月 19, 2009
AppleScript – execute from Command Line
5月 19, 2009
説明:
簡単なAppleScript の説明と、コマンドラインから実行する方法について解説します。
Apple Script とは
Mac に標準でインストールされ、ほとんど全てのアプリを操作することができる、パワフルで簡単な、、、あんまり流行ってない言語です。自然言語に近づけた、ちょっと回りくどい文法が特徴です。
コマンドラインとは
ターミナル.app(またはそれに準ずるもの)からアクセスできる、CUI (Character-based User Interface) です。Linux 等からOS X に入った方で、Mac のコマンドラインに馴染みの無い方は、
$say hello
とかやるとビックリするかも。
$open .
とかね。
AppleScript プチ入門:
1. アプリケーションフォルダにある、スクリプトエディタ.appを起動します。
2. 次の3行を入力します。
tell app "itunes"
play
end tell
(app がapplication に、itunes がiTunes に、自動で修正されます。)
4.実行できることが確認できたら、デスクトップにテキスト形式で保存します。
(フォーマット:テキスト 改行:Unix (LF) )
テキストファイルなので、テキストエディタでも作成出来ます。
AppleScript は他のアプリケーションを操作するために使われることがほとんどです。そのため、対象となるアプリケーションがどのようなコマンドで受け付けるのか、調べる必要があります。
スクリプトエディタのファイルメニューにある「用語説明を開く…」から、使いたいアプリケーションを選択するか、アプリケーションのアイコンをスクリプトエディタのアイコンにドラッグ&ドロップすれば、用語説明が開きます。(説明を書いていて気づいたのですが、スクリプトエディタ.app は自分自身をドラッグ&ドロップで開くことができますね。)
iTunes の用語説明を開いてください。用語説明の内容は難しいので詳しい説明はしません。
iTunes Suite の中にある[back track / next track / pause / play / stop]等を確認してください。これらは引数が要らないので説明も簡単です。
コマンドラインからの実行:
osascript というコマンドがあります。デスクトップに itunes-play.applescript という名前で保存した場合の実行例
(先頭の$ はコマンドプロンプト)
$cd ~/Desktop
$osascript itunes-play.applescript
第一引数にファイル名を渡すだけです。あるいは、標準入力にパイプして
$cat itunes-play.applescript | osascript
というやり方もできます。
osascript コマンドは OSA (Open Scripting Architechture) に対応したスクリプトを実行するコマンドですが、デフォルトでAppleScript が指定されています。詳しくは、
$man osascript
を読んでください。
-e オプションでスクリプトを1行渡すことができます。
-e オプションは複数つけることができます。
$osascript -e 'tell app "iTunes"' -e 'playpause' -e 'end tell'
この3行の AppleScript は、1行にまとめることができます。
$osascript -e 'tell app "iTunes" to next track'
これで、AppleScript をコマンドラインから実行することができるようになりました。次回はQuatz Composer からコマンドを呼ぶ方法について説明します。
DTMF -> OSC (Arduino)
5月 18, 2009
iTunes Controller (via Ethernet)
5月 16, 2009
説明:
Arduino + Ethernet Shield でOSC sender というのが前回のネタです。今回はもう一歩踏み込んで、OSC でiTunes をコントロールします。手順が複雑なので、本日は動画のみ。今後順を追って解説していく予定です。
Arduino (OSC sender) > Quartz Composer (OSC reciever) > Command Line Tool (QC plug-in) > osascript (AppleScript) > iTunes で繋がっています。
OSC (Open Sound Control)
5月 15, 2009
説明:
フェーダーの出力をOSC で飛ばします。
OSC とは
OSC はMIDI (Musical Instrument Digital Interface) の現代版のような規格です。IP ベース(UDP が主流)でメッセージを送信します。
Quartz Composer ではOSC Sender とOSC Reciever というパッチがあり、送受信ともに対応しています。
送信先IP アドレスはデフォルトではブロードキャストアドレス(0.0.0.0) が指定されており、ローカルネットワーク内であれば設定しなくても動作します。
OSC に対応したソフト、ハードがあれば、Quratz Composer と連携させることができます。
動画
前半:今回配布するコンポジットです
後半:Arduino + Ethernet Shield で、OSC を送信します
Arduino でOSC を扱うクラスファイルは、こちらのものを使わせて頂きました。付属するサンプルスケッチ「IO_test_arduino」をほぼそのまま(アドレス等を設定しただけ)使用しています。
アナログ入力ポートに接続したボリュームの値をADコンバータ で読み、変化があれば値をOSC で送信します。
Ethernet Shield を入手した当日にここまで出来るとは思いませんでした。Quartz Composer とArduino の連携という目標も達成です。
※iPhone でOSC を送信するアプリを複数試したのですが、上手くいきませんでした。設定が悪いのか、QC との相性なのか、、? 良いアプリが見つかれば改めて紹介します。
→コメントにあるように、iOSC で上手く行きました。こちらに記事があります。