jit.pix内部のfaderという変数をイジれるようになってる。
jit.pixの中身
gen subpatcherはgen @gen *** で指定。またパラメーターをイジる場合は、setparamを使用する。ちなみにparamは外部公開する変数。
gen subpatcherの中身
外部からイジるパラメーターはparamで指定。
UniOSCをUnity Asset Storeで購入し、UniOSC.Mobile Sceneを起動します。
Build SettingをiOSにし、Xcodeでビルドインストールします。iPhone6sで実行すると画面レイアウトが崩れますが、とりあえず気にしなければテストはできます。また私の環境だとなぜかIPアドレスがおかしい値になっています。が気にしなくても動きました。OSC OUT側のIPアドレスはMaxが動作しているMacやPCのIPを入力しておきます。
Max側は、OSCを送受信ですがUDPのオブジェクト使って準備しました。udpsendのIPアドレスにはiPhoneの設定画面で確認したIPアドレスを入力しておきます。また送信側のメッセージにはOSCのフォーマットに合うようにスラッシュをprependしておきます。(そうじゃないと確認できない。)
MaxのSender側のスライダーを動かすと、UniOSC appのTraceに受け取れた事が表示されます。逆にUniOSC app側のSendボタンを押せば、Max側で受信を確認できました。
Maxの標準のmetroは精度が悪いと言われております。計測したわけでは無いですが16部音符で再生すると結構気になるくらいグルーヴ感があるようです。より正確なメトロノームを生成するにはMSPを使うのが良いとの事で以前某楽器メーカーの方に教わった方法を実装してみました。
----------begin_max5_patcher----------
746.3ocyWkjaaCCEcs7oPfqcBDE0XAZuHEEAzRzNL0hxkjx0NAw.EdSW0yPG
1UfbAJxsQ.sWiJRY033JWKKGolMhfeyg26y2ev2Lv.LJcAQ.Leg4qMMLtYfg
g1jxfwl4FfD7hnoXgdY.F48oitBLr7mjjERsYbrPhkYBSI9sjz4Dd0JXYIoY
xoDod61arNCKitjxlbAmDIKudD7bqglNt5AnkqZv19bKy2rYOkGib4LR4F.f
gl.JqX6UqfFqwRA9Nyaq6mx185ExkS0mB.nLb6fApOCOMWvzTbbBQHLg0yc3
g3NJHTM3a2.pWGmgN0RZ3SBokoSlTr81wLGXflSNUe+C7mg43DhjvufvviJw
m09X89drgnNj3GRvqD6wb5bxQq3gtVORxGdZRd+NTxGkljPJt2c8B+7tu8qu
9i7O7870eIe8GyWeW95Oku9970etd2g09cG1taoQJCEPnsbFiSYxw3Hx1OsJ
aB50Za5c9WdE2NTZPtNFGs5nIJzBo4XXP4ye02Zk1+Oyi4wN53cHzWQm.cNr
.2VlIyo+imO4r2kTt0Iu8r6eN+pWtxz57VxWaWzCx2+MgEzIL7zZoMJr+E3m
oXsaaossNosG5zncP+SaR7DxpV1V1l7wNNGl0ivrIpxT5wZ4t+y01Tf1gcYa
JHu9ODe1kXQJeUqxkuwo3qE79gmlf2oCE7ixjxz1xOjMZOO50KsqsJcXG9xh
kRdFs5BTyzlGyIuKivhVdz7N.ssX2psUrZSS25yALkx18Ocpgox9icDhzLdT
EJpZ027AjFSDRJCKoEO+OrHuGslKowwD11QrwTgJHVSEqZeQdRgie+AGmF.m
cvbWhGTSvipVXegml.Gm9CNdOyvieSjOg8GdBZh+oGwSXSvS+Et2nnqdCMp+
AyggSayMWV4.Oa1bBWr4L0PonX4Uo5Rh9C0Sorxo5dK.bxbZ05czVv7hBhxh
pgY7xBTK7JaNAjjFS3rhZsp5XCT27sC9MfZHW6C
-----------end_max5_patcher-----------
"use_strict"; var tsk = new Task(repeater_function, this); var s = ""; function text(val){ s = val; var length = s.length; tsk.cancel(); tsk.interval = 200; tsk.repeat(length); } function repeater_function() { var index = tsk.iterations; outlet(0,s.slice(0,index)); }
function rgbToHsl(r, g, b){ r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, l = (max + min) / 2; if(max == min){ h = s = 0; // achromatic }else{ var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch(max){ case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } outlet(0, h, s, l); } function hslToRgb(h, s, l){ var r, g, b; if(s == 0){ r = g = b = l; // achromatic }else{ function hue2rgb(p, q, t){ if(t < 0) t += 1; if(t > 1) t -= 1; if(t < 1/6) return p + (q - p) * 6 * t; if(t < 1/2) return q; if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; return p; } var q = l < 0.5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q; r = hue2rgb(p, q, h + 1/3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1/3); } r = Math.round(r*255); g = Math.round(g*255); b = Math.round(b*255); outlet(0,r, g, b); }
#include <boost/algorithm/string.hpp> using namespace boost; int main() { string str("192.168.0.1 192.168.0.2"); list<string> list_string; split(list_string,str,is_space()); for(auto list : list_string){ ofLog() << list; } }
#includeでヘッダ読み込むだけで使えました。functionなど一部std名前空間と名前がかぶっているようなので注意する。
ofxSvgの各パスをgetBoundingBox()でゲットしようとしたのが、値が返って来ない問題がありました。この問題の解決策としては、アウトラインを取るのに線の太さが設定し、またofPathのWindingModeも適したものを選択しておく必要があります。
ofPath path; //パスを追加してください。 path.setStrokeWidth(1.0); //太さがないとアウトラインは取れない path.setPolyWindingMode(OF_POLY_WINDING_ODD); //適した auto polyLine = path.getOutline()[0]; //とりあえず0番目のアウトライン auto rect = polyLine.getBoudingBox();
0.9.0~ できるようになったというofImageへのマスク処理 setAlphaMask (参考:画像を形を指定してマスクする)を試してみました。
ofPath path; ofImage img; ofFbo fbo; void ofApp::setup(){ ofHideCursor(); //set path for(auto i = 0 ; i < 100 ; i++){ ofSetColor(255); const auto pos = ofPoint(ofRandom(float(ofGetWidth())),float(ofRandom(ofGetHeight()))); path.lineTo(pos); } //set fbo fbo.allocate(ofGetWidth(),ofGetHeight(),GL_RGBA /*GL_LUMINANCE*/); fbo.begin(); path.draw(); fbo.end(); //set img //dataフォルダに好きな画像を入れてください。 if(!img.load("mirrorboy.jpg")){ ofLog() << "image is not loaded." ; }; img.setAnchorPercent(0.5,0.5); img.getTexture().setAlphaMask(fbo.getTexture()); } void ofApp::draw(){ ofBackgroundGradient(ofColor::yellow,ofColor::gray); ofSetColor(255); img.draw(ofGetWidth()/2,ofGetHeight()/2); }