Mais conteúdo relacionado
Semelhante a ネコでもわかるインタラクティブサウンド20130706 (20)
Mais de Takashi Tanaka (10)
ネコでもわかるインタラクティブサウンド20130706
- 8. • CRI Atom Craft
ADX2LE OSC Player
processing
を使います。
サウンドデザインインタラクションデザイン
サウンド再生
ADX2LE_OSCBasicPlayer アプリケーション
/adx2/0/playcueid
OSC (udp)
localhost通信
/StremingAssets/
NewProject.acf
CueSheet_0.acb
CRI Atom Craft
ビルド
出力ファイル
差し替え
Processing
ProcessingのoscP5
インゲーム
プレビュー
作成中 最終出力
プレーヤー
プログラム デザイン13
2
8
- 9. サウンドデザイン
CRI Atom Craft
• CRI Atom Craftを使って
音をデザインします
• ADX2LEのサウンドオーサリング
ツールです。
• 下のリンクからダウンロードサイトへ行けます
http://www.adx2le.com/
ゲームジャムでも使うデザイン1
9
- 10. • ADX2 OSC Player
を使って
音を鳴らします。
• Unityで作られたADX2LEの
プレーヤーアプリです。
• 下のリンク先にセットアップ方法
など解説あります
サウンド再生
ADX2LE_OSCBasicPlayer アプリケーション
/StremingAssets/
NewProject.acf
CueSheet_0.acb
http://www53.atwiki.jp/soundtasukeai/pages/24.html
今回のワークショップでのみ使うプレーヤー2
10
- 48. ACF、ACBを利用する
• CRI Atom Craftの
データを
ADX2LE OSC Player
で再生する
サウンドデザインインタラクションデザイン
サウンド再生
ADX2LE_OSCBasicPlayer アプリケーション
/adx2/0/playcueid
OSC (udp)
localhost通信
/StremingAssets/
NewProject.acf
CueSheet_0.acb
CRI Atom Craft
ビルド
出力ファイル
差し替え
Processing
ProcessingのoscP5
インゲーム
プレビュー
作成中 最終出力
1
2
プレーヤー
デザイン1
2
48
- 53. • ADX2LE OSC Playerの「Panic!」ボタンを押す
• 0:tri(キュー名)に変化していたらOK
2
1
プレーヤー
53
- 59. import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress myRemoteLocation;
void setup()
{
size(480,240);
oscP5 = new OscP5(this,9000);
myRemoteLocation = new NetAddress("127.0.0.1",8000);
}
int playerState = 0;
int mouseState = 0;
void draw()
{
background(204);
if(mousePressed)
{
if(mouseState == 0){
if(playerState == 0){
OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0");
oscP5.send(myMessage, myRemoteLocation);
playerState = 1;
} else if(playerState == 1){
OscMessage myMessage = new OscMessage("/adx2/0/stop");
oscP5.send(myMessage, myRemoteLocation);
playerState = 0;
}
mouseState = 1;
}
} else
{
mouseState = 0;
}
if(playerState == 0){
} else {
OscMessage myMessage
= new OscMessage("/adx2/0/aisac 0 "+mouseX/480f);
oscP5.send(myMessage, myRemoteLocation);
myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f));
oscP5.send(myMessage, myRemoteLocation);
ellipse(mouseX,mouseY,60,60);
}
}
描画処理
ウィンドウを480x240で表示
背景を204色(グレー)で
楕円60x60をマウスの位置に表示
1
2
3
プログラム
59
- 60. import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress myRemoteLocation;
void setup()
{
size(480,240);
oscP5 = new OscP5(this,9000);
myRemoteLocation = new NetAddress("127.0.0.1",8000);
}
int playerState = 0;
int mouseState = 0;
void draw()
{
background(204);
if(mousePressed)
{
if(mouseState == 0){
if(playerState == 0){
OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0");
oscP5.send(myMessage, myRemoteLocation);
playerState = 1;
} else if(playerState == 1){
OscMessage myMessage = new OscMessage("/adx2/0/stop");
oscP5.send(myMessage, myRemoteLocation);
playerState = 0;
}
mouseState = 1;
}
} else
{
mouseState = 0;
}
if(playerState == 0){
} else {
OscMessage myMessage
= new OscMessage("/adx2/0/aisac 0 "+mouseX/480f);
oscP5.send(myMessage, myRemoteLocation);
myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f));
oscP5.send(myMessage, myRemoteLocation);
ellipse(mouseX,mouseY,60,60);
}
}
プログラムの流れ
起動直後一度呼ばれる
描画は毎度呼ばれる
1
2
プログラム
60
- 61. import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress myRemoteLocation;
void setup()
{
size(480,240);
oscP5 = new OscP5(this,9000);
myRemoteLocation = new NetAddress("127.0.0.1",8000);
}
int playerState = 0;
int mouseState = 0;
void draw()
{
background(204);
if(mousePressed)
{
if(mouseState == 0){
if(playerState == 0){
OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0");
oscP5.send(myMessage, myRemoteLocation);
playerState = 1;
} else if(playerState == 1){
OscMessage myMessage = new OscMessage("/adx2/0/stop");
oscP5.send(myMessage, myRemoteLocation);
playerState = 0;
}
mouseState = 1;
}
} else
{
mouseState = 0;
}
if(playerState == 0){
} else {
OscMessage myMessage
= new OscMessage("/adx2/0/aisac 0 "+mouseX/480f);
oscP5.send(myMessage, myRemoteLocation);
myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f));
oscP5.send(myMessage, myRemoteLocation);
ellipse(mouseX,mouseY,60,60);
}
}
通信処理
OSCインポート
OSCアドレスをセット
再生メッセージ
停止メッセージ
AISAC0メッセージ
AISAC1メッセージ
1
3
2
4
プログラム
61
- 62. import oscP5.*;
import netP5.*;
OscP5 oscP5;
NetAddress myRemoteLocation;
void setup()
{
size(480,240);
oscP5 = new OscP5(this,9000);
myRemoteLocation = new NetAddress("127.0.0.1",8000);
}
int playerState = 0;
int mouseState = 0;
void draw()
{
background(204);
if(mousePressed)
{
if(mouseState == 0){
if(playerState == 0){
OscMessage myMessage = new OscMessage("/adx2/0/playcueid 0");
oscP5.send(myMessage, myRemoteLocation);
playerState = 1;
} else if(playerState == 1){
OscMessage myMessage = new OscMessage("/adx2/0/stop");
oscP5.send(myMessage, myRemoteLocation);
playerState = 0;
}
mouseState = 1;
}
} else
{
mouseState = 0;
}
if(playerState == 0){
} else {
OscMessage myMessage
= new OscMessage("/adx2/0/aisac 0 "+mouseX/480f);
oscP5.send(myMessage, myRemoteLocation);
myMessage = new OscMessage("/adx2/0/aisac 1 "+(1f-mouseY/240f));
oscP5.send(myMessage, myRemoteLocation);
ellipse(mouseX,mouseY,60,60);
}
}
判定の処理
マウス押されたら
再生中なら
再生中かどうか
マウス状態
1
2
3
プログラム
62