言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella (MF東京 8/3,4)

世界聴診器を作る。その2 - バーチャルヨーヨーを作ろう -

YoYo

前回は Arduino を利用した世界聴診器のソースコードを紹介しました。でもこれだけではどう使うのかさっぱり分からないと思うので、一つ例を挙げていかにスクイークArduino そして世界聴診器モーフの組み合わせで簡単な実世界ユーザインターフェース(?)が作れるかやってみます。

  • スクイーク: Smalltalk ベースのマルチメディアツール。今回は英語版 Squeak Etoys http://squeakland.org/ を使います。
  • 世界聴診器モーフ: マイク入力を数値に変換するツール。スクイークの英語版では標準で付属します。
  • Arduono: かんたんマイコン。今回は Arduino Duemilanove と 開発環境 0010 を使いました。他の Arduino でも動くと思うけど、センサの最高電圧が電源の電圧になるので、微妙にプログラムで使う数値が違ってきます。

ハードウェア編

P1050595

必要な材料は次の通りです。

  • Arduino 本体に前回紹介したソースコード http://d.hatena.ne.jp/propella/20081210/p1 をアップロードしておく。
  • ブレッドボード
  • 抵抗 10 KΩ(茶黒橙) センサ用
  • 抵抗 10 MΩ(茶黒青) マイク端子用(この抵抗値は耳で聞いた感じ適当に決めたのですが、正しい決め方を知ってたら是非教えてください!)
  • オーディオプラグの先をワニクリップにした物
  • 光センサ

P1050580

これを図のように接続して完成です。最後にオーディオプラグをパソコンのマイク端子に接続します。

ソフトウェア編

今回英語版のスクイークを使ったのは、たまたまこのパソコンに入ってたからです。日本語でやりたい時は世界聴診器のホームページ http://swikis.ddo.jp/WorldStethoscope/14 からダウンロードしてください。

ここでは、光センサを使ってバーチャルヨーヨーを作ります。以下 Etoys の事は良く知ってる前提で話を進めます。まずオブジェクトカタログから、マルチメディアにある世界聴診器を引っ張りだします。

where

世界聴診器を ON にして、光センサに手をかざし、光によって Sound カテゴリの中の周波数が変化している事を確認します。

ws

適当に手の絵を描いて、Hand と名付け、周波数に応じて上下するようなスクリプトを書きます。

Hand

あとはヨーヨーのリアルさをいかに追求するかが問題です。一番上の写真のようなプログラムで、かなりリアルなヨーヨーが出来ます。光センサに手を近づけると手が下に動き、遠ざけると上に動くのでまるど本当のヨーヨーの動きです。次はヨーヨーからのフィードバックが欲しい所ですね。完成品を以下に置きます(日本語版スクイークにはロード出来ないです)。

http://languagegame.org/pub/YoYo.002.pr

オマケ PureData で世界聴診器の音をモニタする。

本物の世界聴診器にはイヤホン端子が付いていて、取り込んだ信号を耳で聞けるのですが、ここでは面倒なのでそういう事はしていません。抵抗の値を小さくしてイヤホンを付ける事も出来ますが、PureData というソフトを使うと簡単にモニタ出来ます。PureData は音響系のソフトなので、なんでも音にして入力する世界聴診器の応用にはまさにぴったりでは無いかと思います。

pd

こういう風にすればマイクの音をそのまま聞く事が出来ますが、マックの場合一つ落とし穴があります。外部ヘッドセットに付属する USB マイク入力を使う時に、Preferences - Audio Settings - input device1 の channels を 1 にしないと音が入りも出もしなくなります。かなーり分かりにくいのでここに書いておきます。

audioSettings