JUCE
JUCE (Jules' Utility Class Extensions)を使って簡単なOSCセンドアプリを作る備忘録
JUCE使ってマルチタッチ情報をOSCで送信してみた。
ROLI-Lightpad-Block MultiTouch to OSC. https://youtu.be/ksqfD9LUVe8
JUCE使ってマルチタッチ情報をOSCで送信してみた。
— tatmos (@tatmos) 2017年10月13日
ROLI-Lightpad-Block MultiTouch to OSC. https://t.co/Cd5JBMgNt1
対象
- JUCEをインストールしたばかりの人
- OSCを送るアプリを作ってみたい人
- Macユーザーで、XCodeちょっと触れる
- C++よくわからない(またはちょっとできる)
#OSCって?
OSC(Open Sound Control)を送信するアプリがあれば
Max7とかTouchDesignerとかその他アプリ(Unityなど)とかでも
とても簡単にアプリケーション間の通信ができます。
基本的には演奏情報送信のためのものなので、結構雑な情報のやりとりになるけど、
とにかく簡単に処理が書けるのが特徴です。
手順 JUCE超入門
GUI Applicationを選択
JUCEをインストールして起動するとこんな画面なのでとりあえず左上のGUI Applicationのところを押す。
ProjectNameをつける
ここでは「OSCSendTest」って名前に変更
右下の「Create」ボタンを押す
プロジェクトができる
右上のXCodeアイコンを押すと
左上の三角の再生ボタンを押して実行すると
Hello World!
なウィンドウがでてきます。
OSCのモジュール追加
JUCEに戻って
左側のModulesをダブルクリックして、プラスボタンを押して「juce_oscを選ぶ」
OSCを飛ばすように書き換える
ヘッダーに追加
private:
//==============================================================================
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MainContentComponent)
OSCSender sender;
};
このOSCSender senderというのをここに書く。
MainContentComponent::MainContentComponent()
{
setSize (600, 400);
if(! sender.connect("127.0.0.1",9001))
printf("Error:could not connect to UDP port 9001.");
}
これで127.0.0.1 (自分のPCのIP)のポート9001に接続しようとします。失敗するとログにエラーメッセージがでます。
すでにそのポートを握っているアプリが他にあったらエラーになります。
メッセージを送る
void MainContentComponent::paint (Graphics& g)
{
// (Our component is opaque, so we must completely fill the background with a solid colour)
g.fillAll (getLookAndFeel().findColour (ResizableWindow::backgroundColourId));
g.setFont (Font (16.0f));
g.setColour (Colours::white);
g.drawText ("Hello World!", getLocalBounds(), Justification::centred, true);
if(! sender.send ("/test",(float) 123.456))
g.drawText("Error:could not connect to UDP port 9001.",20,60,200,40,true);
}
この sender.sendで送ってます。
これを実行(右上のXCodeボタン押して再生ボタン押す)すると
Maxで受け取った例。
こんな感じで、OSCが送れます。
TouchDesignerだとこんな感じ。
注意
受け取りPortが他のアプリで使われているとうまく送れないので注意。
例えば、同じIPで同じPortで受け取れるアプリは一つっぽいので、
複数アプリ起動時にうまく送れないとかある。
この場合はPortを変更するなど対応すればいい。
ここから先は
JUCE/examplesにOSC関連のサンプルがあるのでそれを動かしてみるなど。
以上
おまけ
2017年11月18日土曜にJUCEのもくもく会
「JUCE超入門」「第20回エフェクターミニハッカソン」をやる予定です。