iPhoneでテルミンを作りたかった
要件
- 音が出ること(単音)
- 手をかざして上下に動かすと音程が変化すること
AudioUnitで音出した
- コードはこちらから拝借した http://pebble8888.hatenablog.com/entry/2015/12/05/192914
- AudioUnitについてはこちらが非常に分かりやすかった http://d.hatena.ne.jp/shu223/20140506/1399406906
- おおまかな流れは以下のとおり
- プロパティセットする
- コールバック登録する
- スタートさせる
- コールバック内で音処理する
近さの取得
手をかざして上下に動かして値を操作したかったので、近さの値が欲しかった。
近接センサは2値なのでダメ
この辺ざっと見たけどデバイスの近接センサはboolean値でしか取れないっぽい
カメラ + 顔認識
とりあえず、近づけたり遠ざけたりすると値が変わる何かが取れればよかったので、カメラ+顔認識で試してみた
どうやら標準で顔認識できるっぽかったのでこの辺参考に顔の幅をとってみた
- http://dev.classmethod.jp/smartphone/iphone/swift-cifacefeature/
- http://qiita.com/ken0nek/items/4504a13bf58eb78c2538
- https://developer.apple.com/library/ios/documentation/CoreImage/Reference/CIFaceFeature/
カメラはこちらを参考にほぼコピペ
顔認識雑感
- カメラからのフレームをCIDetectorに渡すと顔認識してくれるんだけど、遠慮なしにバンバンぶち込むとメモリ足りないよエラーになって死んじゃうので、雑なフラグ作ってdetectorの処理が終わるまでは次のフレームを受け取らないようにする必要があった。
- 自分の顔は顔だと認識してくれなかった。
- 自分のどころか、いろんな顔をカメラにかざしてみたけど、一番反応が良かったのはこの画像だった