前回のライブは実際のビー玉の動きにあわせて音や映像を付けていたので今度は仮想的なものを動かしてそれに音や映像を動かしてみよう、ということが11/2の目標でした。
Leap Motion、openFrameworks(ofxBox2d,ofxOpenCV,ofxUGen)、赤外線カメラを使用。
指の位置でbox2dの重力、指の本数でオシレータの種類、ofxOpenCVで手の形を検出。
Beyond Interactionがなかったらやっていなかったでしょう。これから約3年半くらい。まだまだだなぁと思います。
11/14 12:02
Leap Motion→openFrameworks→arduino→サーボモーター→蓄光マーブル
Leap MotionのZ軸でモーターを動かし(Firmata使用)、赤外線LEDで照らした蓄光マーブルの揺れをビデオカメラのナイトショットカメラモードで撮ってofxOpenCVのcontourFinderで位置検出→ofxUGenで音をつけた感じです。一本指だとサイン波、二本指だと低音、三本指だとホワイトノイズ…など指の数に応じてオシレータやモーターの数、y軸で音量などを割り当ててます。
参考…
Leap Motion→oF http://gndo.blogspot.jp/2013/07/leap-motion-openframeworks.html
ビー玉 蓄光マーブル25mm 40粒入
→通常の光ではあまり蓄光できていない(contourFinderで判別が難しい)ので赤外線LEDを下からあてました。
SONY HDD30GB搭載 デジタルビデオカメラ DCR-SR100
先週のライブ時の映像
この日は手の動きを見せるために赤外線カメラで手を撮ってもう一台のプロジェクターで手の動きを見せています。
きっかけは
http://atelieromoya.jp/ps.html
実際に動くビー玉の位置検出して音や映像を追加できたらもっと楽しくなるのかな、というのが出発点。まだ改良の余地ありですが…。
10/27 17:38
openFrameworksのサンプルで英語で発音できていたので日本語でも発音できないのかな〜と思ったら普通に出来ました。
testApp.h
#pragma once
#include "ofMain.h"
#include "ofxTrueTypeFontUC.h" // https://github.com/hironishihara/ofxTrueTypeFontUC
// ---------------------------------------------
class testApp : public ofBaseApp, public ofThread {
public:
void setup();
void draw();
void exit();
void threadedFunction();
ofxTrueTypeFontUC font;
vector <string> words;
int step;
string voice;
};
testApp.cpp
#include "testApp.h"
//--------------------------------------------------------------
void testApp::setup() {
font.loadFont("ヒラギノ明朝 ProN W3.otf", 34); //日本語対応フォントを ./bin/data下に
voice = "Kyoko"; //http://veadardiary.blog29.fc2.com/blog-entry-3854.html参照
// load the lyrics from a text file and split them
// up in to a vector of strings
string lyrics = ofBufferFromFile("lyrics.txt").getText(); //適当な文章を。区切りたいところに半角スペースを入れる
step = 0;
words = ofSplitString(lyrics, " ");
// we are running the systems commands
// in a sperate thread so that it does
// not block the drawing
startThread();
}
//--------------------------------------------------------------
void testApp::threadedFunction() {
while (isThreadRunning()) {
// call the system command say
#ifdef TARGET_OSX
string cmd = "say -v "+voice+" "+words[step]+" "; // create the command
system(cmd.c_str());
#endif
#ifdef TARGET_WIN32
string cmd = "data\\SayStatic.exe "+words[step]; // create the command
cout << cmd << endl;
system(cmd.c_str());
#endif
// step to the next word
step ++;
step %= words.size();
// slowdown boy
ofSleepMillis(10);
}
}
//--------------------------------------------------------------
void testApp::draw() {
// center the word on the screen
float x = (ofGetWidth() - font.stringWidth(words[step])) / 2;
float y = ofGetHeight() / 2;
// draw the word
ofSetColor(0);
font.drawString(words[step], x, y);
}
//--------------------------------------------------------------
void testApp::exit() {
// stop the thread on exit
waitForThread(true);
}
元は↓の歌詞でした。
Benny Benassi – Satisfaction
09/03 17:19