ネコでもわかるインタラクティブサウンド20130706

72
ネコでもわかる インタラクティブサウンド 田中孝 2013-07-06 1

description

2013-07-06福島ゲームジャム事前セミナーの資料です。 サウンド制作の為の波形編集ソフト「Audacity」の使い方とインタラクティブサウンドの作り方をADX2LEを使って紹介します。 本日7/6ADX2LEのワークショップで使うデータ http://www.adx2le.com/event/fgj2013.html

Transcript of ネコでもわかるインタラクティブサウンド20130706

Page 1: ネコでもわかるインタラクティブサウンド20130706

ネコでもわかるインタラクティブサウンド

田中孝2013-07-06

1

Page 2: ネコでもわかるインタラクティブサウンド20130706

このワークショップでは

•波形編集(録音、加工、wav保存)

•インタラクティブサウンドの設計(考え方)

を紹介します。(サウンドの基本なので覚えておいて損はしません)

• Unityスクリプトとかはやりません→他のワークショップ資料やゲームジャムで実践してもらえると良いのですが・・・その前段階の導入として

2

Page 3: ネコでもわかるインタラクティブサウンド20130706

レジュメサウンドデザインインタラクションデザイン

サウンド再生

ADX2LE_OSCBasicPlayer アプリケーション

/adx2/0/playcueid

OSC (udp)localhost通信

/StremingAssets/

NewProject.acf

CueSheet_0.acb

CRI Atom Craft

ビルド出力ファイル差し替え

Processing

ProcessingのoscP5

インゲームプレビュー

作成中 最終出力

• インタラクティブとは? 5分

• ツール紹介 5分

• Audacityで録音、加工、wav保存  20分

• インタラクティブサウンドを作ってみよう 20分テルミンから学ぶ

• チャレンジ(課題) 30分簡単なアプリに音をつけてみる

• 発表 15分

• まとめこれからのサウンドデザインに求められるもの

3

Page 4: ネコでもわかるインタラクティブサウンド20130706

インタラクティブとは?

•インタラクティブ対話、双方向

4

Page 5: ネコでもわかるインタラクティブサウンド20130706

何と対話?双方向?

•コンピュータと

5

Page 6: ネコでもわかるインタラクティブサウンド20130706

何を使って?

•絵や動きやサウンドを使って

6

Page 7: ネコでもわかるインタラクティブサウンド20130706

ツール紹介

7

Page 8: ネコでもわかるインタラクティブサウンド20130706

• CRI Atom Craft ADX2LE OSC Playerprocessingを使います。

サウンドデザインインタラクションデザイン

サウンド再生

ADX2LE_OSCBasicPlayer アプリケーション

/adx2/0/playcueid

OSC (udp)localhost通信

/StremingAssets/

NewProject.acf

CueSheet_0.acb

CRI Atom Craft

ビルド出力ファイル差し替え

Processing

ProcessingのoscP5

インゲームプレビュー

作成中 最終出力

プレーヤー

プログラム デザイン13

8

Page 9: ネコでもわかるインタラクティブサウンド20130706

サウンドデザイン

CRI Atom Craft• CRI Atom Craftを使って音をデザインします

• ADX2LEのサウンドオーサリングツールです。

• 下のリンクからダウンロードサイトへ行けます

http://www.adx2le.com/

ゲームジャムでも使うデザイン1

9

Page 10: ネコでもわかるインタラクティブサウンド20130706

• ADX2 OSC Playerを使って音を鳴らします。

• Unityで作られたADX2LEのプレーヤーアプリです。

• 下のリンク先にセットアップ方法など解説あります

サウンド再生

ADX2LE_OSCBasicPlayer アプリケーション

/StremingAssets/

NewProject.acf

CueSheet_0.acb

http://www53.atwiki.jp/soundtasukeai/pages/24.html

今回のワークショップでのみ使うプレーヤー2

10

Page 11: ネコでもわかるインタラクティブサウンド20130706

• Processingを使ってインタラクションを実現します

• Processingは電子アートとビジュアルデザインの為のプログラム言語です。

• 下のリンクからダウンロードサイトへ行けます

インタラクションデザイン

Processing

ProcessingのoscP5

http://www.processing.org/

今回のワークショップでのみ使うプログラム3

11

Page 12: ネコでもわかるインタラクティブサウンド20130706

•波形素材

•波形加工

波形素材4

波形加工5

12

Page 13: ネコでもわかるインタラクティブサウンド20130706

•波形素材はChipTuneのものを使用

• チップチューンは矩形波形や三角波形、ノイズなどシンプルな波形集です。

• 下のリンクからダウンロードサイトへ行けます

http://www.criware.jp/adx2/demo/download_j.php#chiptune

ゲームジャムでも使ってOK波形素材4

13

Page 14: ネコでもわかるインタラクティブサウンド20130706

•波形加工、録音、wav出力はAudacityのものを使用

• チップチューンは矩形波形や三角波形、ノイズなどシンプルな波形集です。

• 下のリンクからダウンロードサイトへ行けます

http://audacity.sourceforge.net/

ゲームジャムでも使える波形加工5

14

Page 15: ネコでもわかるインタラクティブサウンド20130706

Audacityで録音、加工、wav保存

波形加工

15

Page 16: ネコでもわかるインタラクティブサウンド20130706

録音• Audacityを起動

•赤いボタンを押す マイクの入力レベル

波形が記録される

波形加工

16

Page 17: ネコでもわかるインタラクティブサウンド20130706

波形の表示調整•境界線をドラッグして高さ変更

波形加工

小さくしたり 大きくしたり

17

Page 18: ネコでもわかるインタラクティブサウンド20130706

波形の表示調整•ルーペで横方向の拡大縮小

波形加工

小さくしたり 大きくしたり

18

Page 19: ネコでもわかるインタラクティブサウンド20130706

ステレオをモノラルへ

• いくつか録音されていたらややこしいのでいらないものを「X」ボタンで閉じる

メニューを選択

波形加工

マイクはモノラルマイクが多いので・・・

19

Page 20: ネコでもわかるインタラクティブサウンド20130706

波形の入らない部分カット•入らない部分を範囲選択

波形加工

•ドラッグして選択

• Ctr+Xで選択した部分がカットされる。

• Ctr+Vでペーストも可能

20

Page 21: ネコでもわかるインタラクティブサウンド20130706

音を大きくする•正規化(ノーマライズ)する

波形加工

• 「エフェクト」メニューから「正規化...」を選択

• 音が大きくなる

←みたいな波形だとあまり大きくならないコンプレッサーなど使うと良い

21

Page 22: ネコでもわかるインタラクティブサウンド20130706

ピッチを変更•正規化(ノーマライズ)する

波形加工

• 「エフェクト」メニューから「ピッチの変更...」を選択

スライダーを右にすると高く、左にすると低くなる

22

Page 23: ネコでもわかるインタラクティブサウンド20130706

波形出力•正規化(ノーマライズ)する

波形加工

• 「ファイル」メニューから「書き出し...」を選択

• 「Format:」「WAV」で「Save」

23

Page 24: ネコでもわかるインタラクティブサウンド20130706

インタラクティブサウンドを作ってみよう

デザイン

24

Page 25: ネコでもわかるインタラクティブサウンド20130706

テルミンから学ぶ

•テルミンはロシアのテルミン博士が作った楽器で、アンテナに手をかざすと音が出て、かざし方によって変化します。

•楽器=インタラクティブ

デザイン

25

Page 26: ネコでもわかるインタラクティブサウンド20130706

テルミンの仕組み• 右のアンテナに近づくと音程が高く離れると音程が低くなります。

• 左のアンテナに近づくと音が小さく離れると音が大きくなります。

デザイン

26

Page 27: ネコでもわかるインタラクティブサウンド20130706

データ作成

•ボリュームとピッチがインタラクティブに変化する音を作ります。

サウンドデザインインタラクションデザイン

サウンド再生

ADX2LE_OSCBasicPlayer アプリケーション

/adx2/0/playcueid

OSC (udp)localhost通信

/StremingAssets/

NewProject.acf

CueSheet_0.acb

CRI Atom Craft

ビルド出力ファイル差し替え

Processing

ProcessingのoscP5

インゲームプレビュー

作成中 最終出力

デザイン1

27

Page 28: ネコでもわかるインタラクティブサウンド20130706

音を鳴らすキューを作る

•再生すると三角波形が鳴るようにする

•波形を追加して、キューにする

• キューはADX2LEの音を再生する機能です。

デザイン

28

Page 29: ネコでもわかるインタラクティブサウンド20130706

• CRI Atom Craftを起動

デザイン

29

Page 30: ネコでもわかるインタラクティブサウンド20130706

•新規プロジェクト作成

デザイン

30

Page 31: ネコでもわかるインタラクティブサウンド20130706

•マテリアルへ波形を追加

デザイン

波形素材

31

Page 32: ネコでもわかるインタラクティブサウンド20130706

•キュー作成

デザイン

32

Page 33: ネコでもわかるインタラクティブサウンド20130706

ボリュームつまみを再現• ボリュームは縦で

• 指揮者が腕を上げる高さに合わせて変化するようにデザインする

• AISACを使います

• AISACはADX2LEの音色パラメータをコントロールの為の機能です。

デザイン

33

Page 34: ネコでもわかるインタラクティブサウンド20130706

•キュー選択

デザイン

34

Page 35: ネコでもわかるインタラクティブサウンド20130706

•+ボタン押し、AISACの追加...を選択

1 2

デザイン

35

Page 36: ネコでもわかるインタラクティブサウンド20130706

•追加ボタンを押す

1 2

デザイン

36

Page 37: ネコでもわかるインタラクティブサウンド20130706

•グラフを右肩下がりにする

デザイン

37

Page 38: ネコでもわかるインタラクティブサウンド20130706

•音を確認する 1

23

デザイン

38

Page 39: ネコでもわかるインタラクティブサウンド20130706

•ピッチ変化用を追加する

•ピアノや弦楽器のようなイメージでカーブをデザインする

•もう一つAISACを使います。

ピッチアンテナを再現デザイン

39

Page 40: ネコでもわかるインタラクティブサウンド20130706

•+ボタン押し、AISACの追加...を選択

1 2

デザイン

40

Page 41: ネコでもわかるインタラクティブサウンド20130706

•ピッチに変更し、追加ボタンを押す

32

デザイン

41

Page 42: ネコでもわかるインタラクティブサウンド20130706

•グラフを右肩上がりにする

デザイン

42

Page 43: ネコでもわかるインタラクティブサウンド20130706

•音を確認する 1

23

デザイン

43

Page 44: ネコでもわかるインタラクティブサウンド20130706

2つのコントロールができました

•ツール上でもある程度確認できますが、2つを同時にコントロールする他のアプリで動かすため、ツールからACF,ACBというインタラクティブサウンドの元になるデータを出力します。

44

Page 45: ネコでもわかるインタラクティブサウンド20130706

「パディング使用フラグのチェックを外す

後でインゲームプレビューで波形追加などを行うため以下の操作をしておきます。

•キューシートフォルダを選択

•「パディング使...」のチェックを外しグレーにする

45

Page 46: ネコでもわかるインタラクティブサウンド20130706

•+ボタン押し、チェック確認、ビルド

3 4

546

Page 47: ネコでもわかるインタラクティブサウンド20130706

• キューシートを右クリックし、「Atomキューシートバイナリ出力先フォルダをエクスプローラで開く...」を選択

1 2

• acf、acbが作成されているのを確認

47

Page 48: ネコでもわかるインタラクティブサウンド20130706

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

48

Page 49: ネコでもわかるインタラクティブサウンド20130706

• ADX2LE OSC Playerを起動

•ブロックを解除する

•起動する

プレーヤー

49

Page 50: ネコでもわかるインタラクティブサウンド20130706

ファイルをコピーする

ファイルコピー

50

Page 51: ネコでもわかるインタラクティブサウンド20130706

•バッチを実行するC:\ADX2LE_Workshop\AtomCraftData\copy.bat

• ACF,ACBファイルをコピーしました。

ファイルコピー

C:ドライブにADX2LE_Workshopを展開していないと正しく動作しないので注意

51

Page 52: ネコでもわかるインタラクティブサウンド20130706

• ADX2LEOSCBasicPlayer_Dataを開く

• StreamingAssetsを開く

• ACB、ACFを差し替える

• 先ほどツールで出力したフォルダからinGamePreviewを開く

【参考】もしも手動でやる場合は以下のような手順になります。

ファイルコピー

プレーヤー デザイン

デザイン

52

Page 53: ネコでもわかるインタラクティブサウンド20130706

• ADX2LE OSC Playerの「Panic!」ボタンを押す

• 0:tri(キュー名)に変化していたらOK

プレーヤー

53

Page 54: ネコでもわかるインタラクティブサウンド20130706

•「♪」を押すと音が鳴る、「■」で停止

•真ん中のスライダーでピッチが変わる

•左のスライダーで音量が変わる

プレーヤー

54

Page 55: ネコでもわかるインタラクティブサウンド20130706

•いちいちバッチを実行するのは面倒なので、ビルド時に呼び出すようにします。

34

ファイルコピー

55

Page 56: ネコでもわかるインタラクティブサウンド20130706

もっと直感的に•プレーヤーでも2つコントロールができましたが、同時にコントロールしたいので、マウスの位置(たて、よこ座標)が反応するような、簡単なプログラムを用意しました。

•サウンドデザインする上で簡単なプロトタイプを作ると捗ります。プログラムからどんな風にコントロールされるか理解を深めると、データ作成に有利な点が見つかるかもしれません。

動作確認用のシンプルなもの

56

Page 57: ネコでもわかるインタラクティブサウンド20130706

音以外のインタラクションを作る

• processingでインタラクティブサウンドをコントロールします。

サウンドデザインインタラクションデザイン

サウンド再生

ADX2LE_OSCBasicPlayer アプリケーション

/adx2/0/playcueid

OSC (udp)localhost通信

/StremingAssets/

NewProject.acf

CueSheet_0.acb

CRI Atom Craft

ビルド出力ファイル差し替え

Processing

ProcessingのoscP5

インゲームプレビュー

作成中 最終出力

プログラム3

57

Page 58: ネコでもわかるインタラクティブサウンド20130706

• proessingが起動します

• sketch_AISACXY.pdeを開く

3• を押して実行

• を押して停止

58

Page 59: ネコでもわかるインタラクティブサウンド20130706

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をマウスの位置に表示

2

3

プログラム

59

Page 60: ネコでもわかるインタラクティブサウンド20130706

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); }}

プログラムの流れ

起動直後一度呼ばれる

描画は毎度呼ばれる

2

プログラム

60

Page 61: ネコでもわかるインタラクティブサウンド20130706

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

Page 62: ネコでもわかるインタラクティブサウンド20130706

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); } }

判定の処理マウス押されたら

再生中なら再生中かどうか

マウス状態

2

3

プログラム

62

Page 63: ネコでもわかるインタラクティブサウンド20130706

チャレンジ(課題)

•内容: 絵にあった変化を音に加えてみる。

•どちらか好きなものを選んで音をデザインしてみる。

•分からない事があれば、質問も受け付けます。

63

Page 64: ネコでもわかるインタラクティブサウンド20130706

• 内容:どんな音の変化があるか動かしながら考えてみる。

• ヒント:残響を増やすにはバスセンドを使う

• ヒント2:バスセンドは閉じるのみのコントロール

• C:\ADX2LE_Workshop\processingSample\sketch_test1\ sketch_test1.pde

64

Page 65: ネコでもわかるインタラクティブサウンド20130706

• どんな音の変化があるか動かしながら考えてみる。

• ヒント: 2つの音をクロスフェードするにはボリュームを使う

• C:\ADX2LE_Workshop\processingSample\sketch_test2\sketch_test2.pde

65

Page 66: ネコでもわかるインタラクティブサウンド20130706

インゲームプレビュー• 【インゲームプレビュー】とは、ツール側で音を加工、編集した結果を【実行中のゲーム】に送信し、音を即時に差し替える技術です。

• ゲームを中断させる事なく音の加工を反映させる事ができるため、非常に細かい微調整が可能です。

インゲーム接続

66

デザイン

66

Page 67: ネコでもわかるインタラクティブサウンド20130706

インゲームプレビューの開始【F10キー】を押すまたは、【プレビューメニュー】から【インゲームプレビューの開始】を選択

発音数やCPU%が変化していれば接続OK

67

デザイン

67

Page 68: ネコでもわかるインタラクティブサウンド20130706

これからのサウンドデザインに求められるもの

•楽器や身の周りの音のなるものもデザインの参考になります。

•なぜ、その音が鳴っているのか?どう変化するのか?意識してみます。

68

Page 69: ネコでもわかるインタラクティブサウンド20130706

シンプルである事

•なるべく少ない操作で、最大の効果を求めます。

•演奏しやすいインタラクティブサウンドをデザインする事が良いです。

•難しいと練習(ルール設定)が必要になる

69

Page 70: ネコでもわかるインタラクティブサウンド20130706

音はこだわるべき

•めっちゃ【凝って】良い。

•こだわりを捨てずに

•気持ちよい音を探求する。

•それが面白さや、楽しさに繋がる。

70

Page 71: ネコでもわかるインタラクティブサウンド20130706

サウンドデザインでリッチに!

•シンプルプログラマを困らせない

•分かりやすさ効果的か、理論的か客観的に判断

•サウンドデザイン

• ADX2を使うと楽にデザインできます。

71

Page 72: ネコでもわかるインタラクティブサウンド20130706

サウンドゲームジャムあります

•2013年10月頃(土日)にサウンドゲームジャムあります。

•見学も可能です。UnityでのADX2LEの実例が見れます。

•詳しくはADX2LE.comで

72