ADX2LE_OSC

「ADX2LE_OSC」の編集履歴(バックアップ)一覧はこちら

ADX2LE_OSC - (2013/05/24 (金) 15:06:59) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

*ADX2LEとOSC(Open Sound Control) ADX2LEをOpenSoundControlでコントロールすることで、 Unity Proユーザー以外の方でもADX2LEのインタラクティブサウンドを実現する事ができるようになります。 例) Processingでは扱いが面倒になりそうな以下のような事が、CRI Atom Craftで設定できます。 - Processingの背景音にブロック再生やAISACによるインタラクティブサウンド、カテゴリによるダッキング、ADX2LEのDSPエフェクト等、ゲームで使われているインタラクティブオーディオ処理が扱える。 - 大量の波形管理(圧縮音声、ループ音、ストリーム、複数トラック再生)の利用、ブロックによる連結再生、  ランダムパラメータ再生、シーケンス再生、  シャッフル、コンボシーケンシャル、ランダムノーリピートなど複数音の切り替え再生など  専用ツールで管理する事で、比較的楽に実装可能になる。 - 音声の発音数や優先度処理、カテゴリによるバランス調整などが行える。 - インゲームプレビューによるツールと連動した調整が可能。 - これらのデータをそのままUnity用のゲームやその他プラットフォーム用のデータとして再利用可能 Processingでプロトタイプ(スケッチ)をし、実際の作業はUnityやネイティブコードで行うといった流れができます。 OSCはMax/mspやPureDataなどからも簡単に呼び出す事が可能で、インスタレーションや ライブパフォーマンス、独自楽器のテーブル作成など、インタラクティブオーディオが活躍する場での活用が考えられます。 ここでは、ちゃーりーが独自に作成しているフォーマットを公開しています。 理由は、OSCは自由な書き方でコントロールができるのですが、 これをある程度、標準化することで、様々な用途での再利用性を高める目的があります。 ※これらの仕様は突然変わる可能性があります。 *2013-05-12 初版(暫定) ADX2LE OSCの対応は、段階をおって進化させる予定です。最初は【Basic】で基本的な再生部分をかためていくことにします。 *ADX2LE_BasicPlayerAppの動作仕様 *【Basic】 - 発音数 64音(多め)HCAのみ。 - AISAC使える - Play,Stop,Pause - Reset - Player 32(多め) *【Basic OSCフォーマット】 |再生 |/adx2/XXX/playcueid |[cueId(int:0~65535)]|キューIDで再生| |再生 |/adx2/XXX/playcuename |[cueName(string)]|キュー名で再生| |停止 |/adx2/XXX/stop ||プレーヤを停止| |ポーズ |/adx2/XXX/pause |[pauseFlag(int:0 or 1)]|プレーヤをポーズ/ポーズ解除| |AISAC |/adx2/XXX/aisac |[aisacId(int:0~15)] [aisacValue(float:0.0~1.0)]|AISACIDでAISACコントロール| |AISAC |/adx2/XXX/aisacname |[aisacName(string)] [aisacVaue(float:0.0~1.0)]|AISAC名でAISACコントロール| |リセット |/adx2/XXX/reset ||プレーヤをリセット| /adx2/XXX/ 2番目のXXXは PlayerId (0~31) として機能します。 例:/adx2/0/stop 0番目のプレーヤを停止 idや名前が存在しない場合無視されます。 - 特殊コマンド |再起動|/adx2/restart ||OSCプレーヤ全体を再起動| *各アプリケーションのやりとり ADX2LEは無料なのですが UnityPro版でなければならないなど導入の敷居が高いのがネック。 [[ADX2LEでpinballデモ>http://www.slideshare.net/tatmos/20120821-cedec-sound-workshop]]などでインゲーム接続によるインタラクティブサウンド制作体験もできますが、 インタラクティブなサウンドはピンボールだけではありません。 Processingは無料で手に入れる事ができ、コンピュータプログラムを学ぶのに手頃です。 サウンドクリエータの方でプログラムが苦手な方でもHTML程度の知識で簡単なプログラムを書く事ができます。 ここからスタートすることで、実現したいインタラクティブサウンドをすぐに再生して確認しながら作って行くことができ、 同時にプログラムからのコントロールも学べるようになります。 #ref(p5toadx2le.png) *【ADX2LE OSC プレーヤダウンロード】 [[ADX2LE OSC Basic Player for Mac>http://ux.getuploader.com/tatmos_iroiro/download/18/Mac_ADX2LE_OSCBasicPlayer.zip]] 2013-05-23更新 [[ADX2LE OSC Basic Player for Win>http://ux.getuploader.com/tatmos_iroiro/download/17/Win_ADX2LE_OSCBasicPlayer.zip]] 2013-05-23更新  &bold(){[Windowsの場合]}  XPの場合デスクトップ等では動作しない(起動しても何も表示されない)時は、Cドライブ直下などにフォルダを移動して起動してみて下さい。 *【ツールダウンロード】 CRI Atom CraftはADX2LEパッケージに含まれているWindows用ツールです。 ADX2LEのダウンロード→[[http://www.adx2le.com/download/index.html]] *サンプルアプリの紹介 Processing + ADX2LE (OSC) という組み合わせのサンプルを作成してみました。まだ作り始めたばかりですが、 うまく作れたらばOSCサポートしているゲームエンジンとかアプリケーション間でいろいろ捗りそうな予感がしています。 OSC詳しくないのでつっこみよろしくお願いします。 &youtube(http://youtu.be/4CeOcYN7i6c){425,350} ここでは、以下のようなサンプルアプリを想定しています。 #ref(p5app.png) ADX2LEはUnityProでしか動作しませんが、アプリケーション化した場合は、Windows/Mac上で動作します。 ADX2LEBasicPlayerOSCというアプリケーションを作成し、サウンド処理をバックグラウンドで行うようにします。 これにより、OSCをもつ環境から自由にADX2LEをコントロールするのが目標となります。 *Processingからの呼び出し まだ一部しか対応していません。 oscP5の使い方などはこちらを参考にしています。 - ProcessingでOSCを使う方法&br()[[http://tokyomax.jp/?p=923>http://tokyomax.jp/?p=923]] Processingからの呼び出しは以下のような感じになります。 import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; PImage img; void setup() { size(480,240); img = loadImage("background.png"); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int toggle = 0; void draw() { //background(204); image(img,0,0); if(mousePressed) { if(toggle == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid"); myMessage.add(10); // cueId oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } toggle = 1; } } else { toggle = 0; } if(playerState == 0){ fill(255); } else { fill(0); OscMessage myMessage = new OscMessage("/adx2/0/aisac"); myMessage.add(0); // aisacId myMessage.add(mouseX/480f); // aisacValue oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac"); myMessage.add(1); // aisacId myMessage.add(mouseY/240f); // aisacValue oscP5.send(myMessage, myRemoteLocation); } ellipse(mouseX,mouseY,60,60); fill(127); text("0",mouseX-4,mouseY-4); } void oscEvent(OscMessage theOscMessage) { /* print the address pattern and the typetag of the received OscMessage */ print("### received an osc message."); print(" addrpattern: "+theOscMessage.addrPattern()); println(" typetag: "+theOscMessage.typetag()); } *【Processing関連のダウンロード】 Processingのダウンロード→[[http://www.processing.org/>http://www.processing.org/]] - Processing本体です。 ProcessingのoscP5ダウンロード→[[http://www.sojamo.de/libraries/oscP5/index.html]] - oscP5はOSC通信のライブラリで、インストール方法は、  &bold(){[Windowsの場合]}  processingを一度起動すると、マイドキュメントフォルダに\Processing\libraries\というフォルダができるので、  oscP5フォルダをこのフォルダへ置く。  &bold(){[Macの場合]}  processingを一度起動すると、書類フォルダに\Processing\libraries\というフォルダができるので、  oscP5フォルダをこのフォルダへ置く。 [[ADX2LE OSC Processingサンプルスケッチ集>http://ux.getuploader.com/tatmos_iroiro/download/3/Processing_ADX2LE_OSC.zip]] - processingからOSCを使ってADX2LEOSCPlayerをコントロールするパッチ集です。 *Maxサンプル #ref(max6toadx2le.png) udpsendを使って通信しています。Korg nanoPad2を使って操作できます。 *【Max6関連のダウンロード】 Max Runtimeのダウンロード→[[http://cycling74.com/downloads/]] [[ADX2LE OSC Max6サンルパッチ>http://ux.getuploader.com/tatmos_iroiro/download/10/ADX2LEOSC.maxpat]] 2013-05-16更新 *【Max + ADX2LE OSC + CRI Atom Craft(In-GamePreview)】 &youtube(http://youtu.be/tfy-oPoqzuk){425,350} *PureDataサンプル sendOSCを使って通信しています。Korg nanoPad2を使って操作できます。 #ref(pdtoadx2le.png) *【PureData関連のダウンロード】 PureDataのダウンロード→[[http://puredata.info/downloads/pd-extended]] [[ADX2LE OSC PureDataサンルパッチ>http://ux.getuploader.com/tatmos_iroiro/download/9/ADX2LE_OSC.pd]]2013-05-16新規追加 *参考情報 - UnityでOSCを使う方法&br()[[http://www.nullpointer.co.uk/content/generative-av/>http://www.nullpointer.co.uk/content/generative-av/]] - PureDataでOSC&br()[[http://reg.s63.xrea.com/tutorial-latest/html/stepup-osc.htm]] *今後の予定 【Basic+】 |ブロック指定|/adx2/XXX/blockindex |[blockIndex(int)] |ブロックを指定する | |再生開始位置指定|/adx2/XXX/settime |[time_ms(int)] |開始時刻を指定する | |ACBロード|/adx2/loadacb |[acbPath(string)] |ACBをパス指定でロードする。ロードできるACBは1つのみ | 【Advance】 - GetTime - GetState - Category - GetPlayerState ACFは固定でNewProject.acf。 ACBは任意数持てるが、無指定でCueSheet_0.acbを使用する。 決められたフォルダ(/streamingAssets/)にファイルを置くのみ。 【Basic】は一方通行のみ。状態取得はできない。 関数は独自でプレーヤ識別用ID playerId(0~31)を引数追加した形になる。
*ADX2LEとOSC(Open Sound Control) ADX2LEをOpenSoundControlでコントロールすることで、 Unity Proユーザー以外の方でもADX2LEのインタラクティブサウンドを実現する事ができるようになります。 例) Processingでは扱いが面倒になりそうな以下のような事が、CRI Atom Craftで設定できます。 - Processingの背景音にブロック再生やAISACによるインタラクティブサウンド、カテゴリによるダッキング、ADX2LEのDSPエフェクト等、ゲームで使われているインタラクティブオーディオ処理が扱える。 - 大量の波形管理(圧縮音声、ループ音、ストリーム、複数トラック再生)の利用、ブロックによる連結再生、  ランダムパラメータ再生、シーケンス再生、  シャッフル、コンボシーケンシャル、ランダムノーリピートなど複数音の切り替え再生など  専用ツールで管理する事で、比較的楽に実装可能になる。 - 音声の発音数や優先度処理、カテゴリによるバランス調整などが行える。 - インゲームプレビューによるツールと連動した調整が可能。 - これらのデータをそのままUnity用のゲームやその他プラットフォーム用のデータとして再利用可能 Processingでプロトタイプ(スケッチ)をし、実際の作業はUnityやネイティブコードで行うといった流れができます。 OSCはMax/mspやPureDataなどからも簡単に呼び出す事が可能で、インスタレーションや ライブパフォーマンス、独自楽器のテーブル作成など、インタラクティブオーディオが活躍する場での活用が考えられます。 ここでは、ちゃーりーが独自に作成しているフォーマットを公開しています。 理由は、OSCは自由な書き方でコントロールができるのですが、 これをある程度、標準化することで、様々な用途での再利用性を高める目的があります。 ※これらの仕様は突然変わる可能性があります。 *2013-05-12 初版(暫定) ADX2LE OSCの対応は、段階をおって進化させる予定です。最初は【Basic】で基本的な再生部分をかためていくことにします。 *ADX2LE_BasicPlayerAppの動作仕様 *【Basic】 - 発音数 64音(多め)HCAのみ。 - AISAC使える - Play,Stop,Pause - Reset - Player 32(多め) *【Basic OSCフォーマット】 |再生 |/adx2/XXX/playcueid |[cueId(int:0~65535)]|キューIDで再生| |再生 |/adx2/XXX/playcuename |[cueName(string)]|キュー名で再生| |停止 |/adx2/XXX/stop ||プレーヤを停止| |ポーズ |/adx2/XXX/pause |[pauseFlag(int:0 or 1)]|プレーヤをポーズ/ポーズ解除| |AISAC |/adx2/XXX/aisac |[aisacId(int:0~15)] [aisacValue(float:0.0~1.0)]|AISACIDでAISACコントロール| |AISAC |/adx2/XXX/aisacname |[aisacName(string)] [aisacVaue(float:0.0~1.0)]|AISAC名でAISACコントロール| |リセット |/adx2/XXX/reset ||プレーヤをリセット| /adx2/XXX/ 2番目のXXXは PlayerId (0~31) として機能します。 例:/adx2/0/stop 0番目のプレーヤを停止 idや名前が存在しない場合無視されます。 - 特殊コマンド |再起動|/adx2/restart ||OSCプレーヤ全体を再起動| *各アプリケーションのやりとり ADX2LEは無料なのですが UnityPro版でなければならないなど導入の敷居が高いのがネック。 [[ADX2LEでpinballデモ>http://www.slideshare.net/tatmos/20120821-cedec-sound-workshop]]などでインゲーム接続によるインタラクティブサウンド制作体験もできますが、 インタラクティブなサウンドはピンボールだけではありません。 Processingは無料で手に入れる事ができ、コンピュータプログラムを学ぶのに手頃です。 サウンドクリエータの方でプログラムが苦手な方でもHTML程度の知識で簡単なプログラムを書く事ができます。 ここからスタートすることで、実現したいインタラクティブサウンドをすぐに再生して確認しながら作って行くことができ、 同時にプログラムからのコントロールも学べるようになります。 #ref(p5toadx2le.png) *【ADX2LE OSC プレーヤダウンロード】 [[ADX2LE OSC Basic Player for Mac>http://ux.getuploader.com/tatmos_iroiro/download/18/Mac_ADX2LE_OSCBasicPlayer.zip]] 2013-05-23更新 [[ADX2LE OSC Basic Player for Win>http://ux.getuploader.com/tatmos_iroiro/download/17/Win_ADX2LE_OSCBasicPlayer.zip]] 2013-05-23更新  &bold(){[Windowsの場合]}  XPの場合デスクトップ等では動作しない(起動しても何も表示されない)時は、Cドライブ直下などにフォルダを移動して起動してみて下さい。 *【ツールダウンロード】 CRI Atom CraftはADX2LEパッケージに含まれているWindows用ツールです。 ADX2LEのダウンロード→[[http://www.adx2le.com/download/index.html]] *サンプルアプリの紹介 Processing + ADX2LE (OSC) という組み合わせのサンプルを作成してみました。まだ作り始めたばかりですが、 うまく作れたらばOSCサポートしているゲームエンジンとかアプリケーション間でいろいろ捗りそうな予感がしています。 OSC詳しくないのでつっこみよろしくお願いします。 &youtube(http://youtu.be/4CeOcYN7i6c){425,350} ここでは、以下のようなサンプルアプリを想定しています。 #ref(p5app.png) ADX2LEはUnityProでしか動作しませんが、アプリケーション化した場合は、Windows/Mac上で動作します。 ADX2LEBasicPlayerOSCというアプリケーションを作成し、サウンド処理をバックグラウンドで行うようにします。 これにより、OSCをもつ環境から自由にADX2LEをコントロールするのが目標となります。 *Processingからの呼び出し まだ一部しか対応していません。 oscP5の使い方などはこちらを参考にしています。 - ProcessingでOSCを使う方法&br()[[http://tokyomax.jp/?p=923>http://tokyomax.jp/?p=923]] Processingからの呼び出しは以下のような感じになります。 import oscP5.*; import netP5.*; OscP5 oscP5; NetAddress myRemoteLocation; PImage img; void setup() { size(480,240); img = loadImage("background.png"); oscP5 = new OscP5(this,9000); myRemoteLocation = new NetAddress("127.0.0.1",8000); } int playerState = 0; int toggle = 0; void draw() { //background(204); image(img,0,0); if(mousePressed) { if(toggle == 0){ if(playerState == 0){ OscMessage myMessage = new OscMessage("/adx2/0/playcueid"); myMessage.add(10); // cueId oscP5.send(myMessage, myRemoteLocation); playerState = 1; } else if(playerState == 1){ OscMessage myMessage = new OscMessage("/adx2/0/stop"); oscP5.send(myMessage, myRemoteLocation); playerState = 0; } toggle = 1; } } else { toggle = 0; } if(playerState == 0){ fill(255); } else { fill(0); OscMessage myMessage = new OscMessage("/adx2/0/aisac"); myMessage.add(0); // aisacId myMessage.add(mouseX/480f); // aisacValue oscP5.send(myMessage, myRemoteLocation); myMessage = new OscMessage("/adx2/0/aisac"); myMessage.add(1); // aisacId myMessage.add(mouseY/240f); // aisacValue oscP5.send(myMessage, myRemoteLocation); } ellipse(mouseX,mouseY,60,60); fill(127); text("0",mouseX-4,mouseY-4); } void oscEvent(OscMessage theOscMessage) { /* print the address pattern and the typetag of the received OscMessage */ print("### received an osc message."); print(" addrpattern: "+theOscMessage.addrPattern()); println(" typetag: "+theOscMessage.typetag()); } *【Processing関連のダウンロード】 Processingのダウンロード→[[http://www.processing.org/>http://www.processing.org/]] - Processing本体です。 ProcessingのoscP5ダウンロード→[[http://www.sojamo.de/libraries/oscP5/index.html]] - oscP5はOSC通信のライブラリで、インストール方法は、  &bold(){[Windowsの場合]}  processingを一度起動すると、マイドキュメントフォルダに\Processing\libraries\というフォルダができるので、  oscP5フォルダをこのフォルダへ置く。  &bold(){[Macの場合]}  processingを一度起動すると、書類フォルダに\Processing\libraries\というフォルダができるので、  oscP5フォルダをこのフォルダへ置く。 [[ADX2LE OSC Processingサンプルスケッチ集>http://ux.getuploader.com/tatmos_iroiro/download/3/Processing_ADX2LE_OSC.zip]] - processingからOSCを使ってADX2LEOSCPlayerをコントロールするパッチ集です。 *Processing ADX2LEOSCPlayer AtomCraftでのワークフロー [[2つのワークフロー.jpg]] &ref(2つのワークフロー.jpg) *Maxサンプル #ref(max6toadx2le.png) udpsendを使って通信しています。Korg nanoPad2を使って操作できます。 *【Max6関連のダウンロード】 Max Runtimeのダウンロード→[[http://cycling74.com/downloads/]] [[ADX2LE OSC Max6サンルパッチ>http://ux.getuploader.com/tatmos_iroiro/download/10/ADX2LEOSC.maxpat]] 2013-05-16更新 *【Max + ADX2LE OSC + CRI Atom Craft(In-GamePreview)】 &youtube(http://youtu.be/tfy-oPoqzuk){425,350} *PureDataサンプル sendOSCを使って通信しています。Korg nanoPad2を使って操作できます。 #ref(pdtoadx2le.png) *【PureData関連のダウンロード】 PureDataのダウンロード→[[http://puredata.info/downloads/pd-extended]] [[ADX2LE OSC PureDataサンルパッチ>http://ux.getuploader.com/tatmos_iroiro/download/9/ADX2LE_OSC.pd]]2013-05-16新規追加 *参考情報 - UnityでOSCを使う方法&br()[[http://www.nullpointer.co.uk/content/generative-av/>http://www.nullpointer.co.uk/content/generative-av/]] - PureDataでOSC&br()[[http://reg.s63.xrea.com/tutorial-latest/html/stepup-osc.htm]] *今後の予定 【Basic+】 |ブロック指定|/adx2/XXX/blockindex |[blockIndex(int)] |ブロックを指定する | |再生開始位置指定|/adx2/XXX/settime |[time_ms(int)] |開始時刻を指定する | |ACBロード|/adx2/loadacb |[acbPath(string)] |ACBをパス指定でロードする。ロードできるACBは1つのみ | 【Advance】 - GetTime - GetState - Category - GetPlayerState ACFは固定でNewProject.acf。 ACBは任意数持てるが、無指定でCueSheet_0.acbを使用する。 決められたフォルダ(/streamingAssets/)にファイルを置くのみ。 【Basic】は一方通行のみ。状態取得はできない。 関数は独自でプレーヤ識別用ID playerId(0~31)を引数追加した形になる。

表示オプション

横に並べて表示:
変化行の前後のみ表示: