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);

option -クリックで QTZ をダウンロード(ブラウザ内では動作しません)

option -クリックで QTZ をダウンロード(ブラウザ内では動作しません)

本当はiSight でQR コードを読みたいのですが、、、

どこかにないでしょうか?

FizzBuzz Questions

6月 4, 2009

FizzBuzz 問題とは、2年前にちょっと流行ったお遊びです。

→Wikipedia 参照

これは偽プログラマを判定するテストです。Quartz Composer でやってみましょう。

QC は「If 文もFor 文もない」のでそこをどうするかが問題です。私はConditional patch とIterator を使いました。

結果は、、、イテレータ2段で書いて18分。リアルにダサい。

FB18min

表示する10×10のマスを用意するだけで5分以上かかってしまいました。

イテレータを1段にして少し整形したものを添付します(ついでにナベアツ問題も)。今回は他言語ユーザーの方が興味を持つ可能性が0では無いので、ソースコードに相当する画面を掲示します。

FizzBuzz-QuartzComposer

実行動画:(音声はAppleScript です。しかしネタが古い。)


FizzBuzz-result

option -クリックで ZIP をダウンロード

説明:

かなり横道ですが、先日のAppleScript に関連して、リモートアップルイベントについて。ネットワーク越しにAppleScript でマシンを操作できます。AppleScript 関係の日本語の情報は古いものが多かったので書いてみます。

Apple Event とは

Wiki Pedia 参照

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 の設定

システム環境設定 > 共有 > リモートアップルイベント

を「入」にします。

as-share

・操作するアプリケーションを起動しておきます。

・AppleScript を記述します。


tell application "iTunes" of machine "eppc://192.168.0.50"
playpause
end tell
as-remote
・実行

実行時に認証ダイアログが出ます。

as-auth

以上。

説明:

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行ずつ渡す

as-multiargs

3. “Standard In” にスクリプトを入力する

as-stdinput

複数行のスクリプトを”Standard In” に送るには、String Printer Patch を使うと便利です。

as-stringprinter

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 など、他のアプリのコントローラーを作ることができます。

option -クリックで ZIP をダウンロード

option -クリックで ZIP をダウンロード

説明:

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 が赤字で表示されます(まだ作られていません)

before-complile

・「ビルド」ボタンを押します

・CommandLineTool.plugin が黒字で表示されます(作られました)

3. 所定の場所に移動する

・同じフォルダ内に作られる、「build/Debug」フォルダの中に「CommandLineTool.plugin」があります。

Xcode のファイル上で右クリックし、「Finder に表示」を選択するのも良いでしょう。

open-in-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

先日うまくいかなかった、iPhone OSC 送信アプリによるQuartz Composer の操作ができました。

使用しているソフトは iOSC です。350円なので、Arduino+Ethernet Shilrd の1/20で買えます。

3つのボタンで4つのモードを切り替えるため、1つは各ボタンをOFF にしたときに割り当てています。

説明:

簡単なAppleScript の説明と、コマンドラインから実行する方法について解説します。

Apple Script とは

Mac に標準でインストールされ、ほとんど全てのアプリを操作することができる、パワフルで簡単な、、、あんまり流行ってない言語です。自然言語に近づけた、ちょっと回りくどい文法が特徴です。

コマンドラインとは

ターミナル.app(またはそれに準ずるもの)からアクセスできる、CUI (Character-based User Interface) です。Linux 等からOS X に入った方で、Mac のコマンドラインに馴染みの無い方は、

$say hello

とかやるとビックリするかも。

$open .

とかね。

AppleScript プチ入門:

1. アプリケーションフォルダにある、スクリプトエディタ.appを起動します。

ScriptEditorIcon

2. 次の3行を入力します。


tell app "itunes"
play
end tell

AppleScript-Editor

3.実行ボタンを押します。

(app がapplication に、itunes がiTunes に、自動で修正されます。)

4.実行できることが確認できたら、デスクトップにテキスト形式で保存します。

(フォーマット:テキスト 改行:Unix (LF) )

テキストファイルなので、テキストエディタでも作成出来ます。

AppleScript は他のアプリケーションを操作するために使われることがほとんどです。そのため、対象となるアプリケーションがどのようなコマンドで受け付けるのか、調べる必要があります。

スクリプトエディタのファイルメニューにある「用語説明を開く…」から、使いたいアプリケーションを選択するか、アプリケーションのアイコンをスクリプトエディタのアイコンにドラッグ&ドロップすれば、用語説明が開きます。(説明を書いていて気づいたのですが、スクリプトエディタ.app は自分自身をドラッグ&ドロップで開くことができますね。)

iTunes の用語説明を開いてください。用語説明の内容は難しいので詳しい説明はしません。

AppleScript-Dictionary

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

説明:

DTMF (Dual-Tone Multi-Frequency) のデコードとQC による表示。デコーダは専用IC を使い、結果をOSC で飛ばしています。

動画では以前作った秋月のキットを使用していますが、今回はマイコンも液晶も不要、デコーダIC とCR 部品、マイクだけが必要なので、500円以下で揃うと思います。

手頃なのでシールド化してみようと思っていますが、使い道が思い浮かばない、、、

DTMF 音もQC で出しています。コンポジッションは後日公開予定です。

説明:

Arduino + Ethernet Shield でOSC sender というのが前回のネタです。今回はもう一歩踏み込んで、OSC でiTunes をコントロールします。手順が複雑なので、本日は動画のみ。今後順を追って解説していく予定です。

Arduino (OSC sender) > Quartz Composer (OSC reciever) > Command Line Tool (QC plug-in) > osascript (AppleScript) > iTunes で繋がっています。

・AppleScript > iTunes の部分の解説

・Quartz Composer > Command Line Tool > osascript の部分の解説

説明:

フェーダーの出力を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 で上手く行きました。こちらに記事があります。

option -クリックで ZIP をダウンロード

option -クリックで ZIP をダウンロード