[WIP]Leap MotionとRubyで遊ぶ

↑ leap motionのデモアプリで遊んでいる図


今年の2月にorderしたLeap Motionが先日(7/21)届いたので、
ここ数日アプリをダウンロードしたりして遊んでいる。
(長時間姿勢を維持する必要があるアプリは結構疲れる)

せっかくなので自分でも何か作ろうと思ってDeveloperページを見ると、
今のところ公式にSDKが存在するのは

の5つ(6つ?)で、残念ながらRubyのSDKは無かった。

ということで、以下Leap MotionをRubyで使うためにやったことの雑記

gemを探す

ちょっと探したところ、

glejeune/ruby-leap-motion "Ruby interface to the Leap Motion Controller"

というのを見つけた。最終更新が2ヶ月前なので最新のSDKには対応していないのかもしれないけど、とりあえずこれを使ってみた

SWIG?

このruby-leap-motionSWIGというのを使っているらしかった。

SWIG - Wikipedia
SWIG (Simplified Wrapper and Interface Generator) は、 C/C++ で書かれたプログラムやライブラリを、Tcl/Tk、Perl、Python、Ruby、PHP、Lua などのスクリプト言語や、Java、C#、Scheme、Ocaml などの言語に接続するためのオープンソースのツールである。

ruby-leap-motion/ext/swig/Leap.i at master · glejeune/ruby-leap-motion

にはRuby用の設定が含まれているけど、最新のSDKの中のLeap.iには無かった。glejeuneさんが自分で追加したのだろうか。とりあえず今は保留。

座標を取得

とりあえず何らかの座標が取得できないと始まらないので(ジェスチャー認識もあるけど)、

ruby-leap-motion/ext/swig/Leap.i at master · glejeune/ruby-leap-motion

これを見て試行錯誤して、指先の座標を取得することができた。

テルミンつくろう

画面を描写するのは大変そうだし、音だけ出ればいいやと思ってテルミン作ることにした。
先人↓

テルミンの演奏法を調べる

テルミン演奏法の説明

右手を右に移動させると音が高くなって、左手を上に移動させると音が大きくなるらしい

どうやって音鳴らそう?

Windowsならbeepとか使えた気がするけど、Macで音を出すプログラム書いた事なかったので困った。

nagachika/ruby-coreaudio

ちょっと調べて↑これを使わせてもらうことにした。

とりあえず動くようにした

fukayatsu/leap-motion-sandbox

↑録音してみた

SDKを~/Development/LeapSDKに置いた場合はこんな感じで実行できるかもしれない(※後述)↓

$ git clone git@github.com:fukayatsu/leap-motion-sandbox.git
$ cd leap-motion-sandbox
$ bundle config build.leap-motion --with-leap-lib=~/Development/LeapSDK/lib --with-leap-include=~/Development/LeapSDK/include
$ bundle
$ bundle exec ruby theremin.rb

既知の問題

今後について