• 検索結果がありません。

ネコでもわかるインタラクティブサウンド by ちゃーりー

N/A
N/A
Protected

Academic year: 2021

シェア "ネコでもわかるインタラクティブサウンド by ちゃーりー"

Copied!
60
0
0

読み込み中.... (全文を見る)

全文

(1)

ネコでもわかる

インタラクティブサウンド

田中孝

2013-05-23

(2)

レジュメ

サウンドデザイン インタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb

CRI Atom Craft

ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力

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

ツール紹介 5分

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

テルミンから学ぶ

チャレンジ(課題) 30分

簡単なアプリに音をつけてみる

発表

15分

まとめ

(3)

インタラクティブとは?

インタラクティブ

(4)

何と対話?双方向?

(5)

何を使って?

(6)
(7)

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 インゲーム プレビュー 作成中 最終出力

(8)

サウンドデザイン

CRI Atom Craft

CRI Atom Craftを使って

音をデザインします

ADX2LEのサウンドオーサリング

ツールです。

(9)

ADX2 OSC Player

を使って

音を鳴らします。

Unityで作られたADX2LEの

プレーヤーアプリです。

サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /StremingAssets/ NewProject.acf CueSheet_0.acb

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

(10)

Processingを使って

インタラクションを実現

します

Processingは電子アートとビジュアルデ

ザインの為のプログラム言語です。

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

Processing

ProcessingのoscP5

http://www.processing.org/

(11)

波形素材は

ChipTuneのものを使用

チップチューンは矩形波形や三角波形、

ノイズなどシンプルな波形集です。

(12)

インタラクティブサウンドを

作ってみよう

(13)

テルミンから学ぶ

テルミンはロシアのテルミン

博士が作った楽器で、

アンテナに手をかざすと音が

出て、かざし方によって変化

します。

楽器=インタラクティブ

(14)

テルミンの仕組み

右のアンテナに

近づくと音程が高く

離れると音程が低く

なります。

左のアンテナに

近づくと音が小さく

離れると音が大きく

なります。

(15)

データ作成

ボリュームとピッチが

インタラクティブに

変化する音を作ります。

サウンドデザイン インタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb

CRI Atom Craft

ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力

(16)

音を鳴らすキューを作る

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

にする

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

キューは

ADX2LEの音を再生する機能で

す。

(17)

CRI Atom Craft

(18)

新規プロジェクト作成

(19)

マテリアルへ

波形を追加

(20)

キュー作成

(21)

ボリュームつまみを再現

ボリュームは縦で

指揮者が腕を上げる高さに

合わせて変化するようにデ

ザインする

AISACを使います

AISACはADX2LEの

音色パラメータをコントロールの為

の機能です。

(22)

キュー選択

(23)

+ボタン押し、

AISACの追加...を選択

(24)

追加ボタンを押す

(25)

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

(26)

音を確認する

(27)

ピッチ変化用を追加する

ピアノや弦楽器のようなイ

メージでカーブをデザイン

する

もう一つ

AISACを使います。

ピッチアンテナを再現

(28)

+ボタン押し、

AISACの追加...を選択

(29)

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

(30)

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

(31)

音を確認する

(32)

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

ツール上でもある程度確認できますが、

2つを同時にコントロールする他のアプリで動かすた

め、ツールから

ACF,ACBという

インタラクティブサウンドの元になるデータを出力し

ます。

(33)

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

後でインゲームプレビューで波形追加などを行うため

以下の操作をしておきます。

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

「パディング使

...」のチェックを外しグレーにする

(34)

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

(35)

キューシートを右クリックし、

Atomキューシートバイナリ出力先フォルダをエクスプローラで開

...」を選択

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

(36)

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 インゲーム プレビュー 作成中 最終出力

(37)

ADX2LE OSC Playerを起動

ブロックを解除する

(38)
(39)

以下のバッチを実行する

C:\ADX2LE_Workshop\AtomCraftData\copy.bat

ACF,ACBファイルを

(40)

ADX2LEOSCBasicPlayer_Dataを開く

StreamingAssetsを開く

ACB、ACFを差し替える

先ほど出力したフォルダから

inGamePreviewを開く

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

(41)

ADX2LE OSC Playerを一度終了して再起動

もう一度起動して

0:triに変化していたらOK

(42)

♪を押すと音が鳴る、

■で停止

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

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

(43)

いちいちバッチを実行するのは面倒なので、

ビルド時に呼び出すようにします。

(44)

もっと直感的に

プレーヤーでも2つコントロールができましたが、

同時にコントロールしたいので、

マウスの位置が反応するような、簡単なプログラムを

用意しました。

サウンドデザインする上で簡単なプロトタイプを作

ると

ります。

プログラムからどんな風にコントロールされるか理

解を深めると、データ作成に有利な点が見つかるか

もしれません。

(45)

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

processingで

インタラクティブ

サウンドを

コントロールします。

サウンドデザイン インタラクションデザイン サウンド再生 ADX2LE_OSCBasicPlayer アプリケーション /adx2/0/playcueid OSC (udp) localhost通信 /StremingAssets/ NewProject.acf CueSheet_0.acb

CRI Atom Craft

ビルド 出力ファイル 差し替え Processing ProcessingのoscP5 インゲーム プレビュー 作成中 最終出力

(46)

proessingが起動します

sketch_AISACXY.pdeを開く

 を押して実行

 を押して停止

(47)

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色(グレー)で

2

(48)

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

プログラムの流れ

起動直後一度呼ばれる

描画は毎度呼ばれる

2

(49)

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メッセージ

3

2

4

(50)

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

(51)

チャレンジ(課題)

30分

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

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

(52)

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

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

ヒント

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

C:\ADX2LE_Workshop\processingSample

(53)

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

ヒント:

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

C:\ADX2LE_Workshop\processingSample

(54)

インゲームプレビュー

【インゲームプレビュー】とは、

ツール側で音を加工、編集した結果を

【実行中のゲーム】に送信し、

音を即時に差し替える技術です。

ゲームを中断させる事なく音の加工を反映させる事ができ

るため、非常に細かい微調整が可能です。

インゲーム接続

(55)

インゲームプレビューの開始

F10キー】を押す

または、【プレビューメニュー】から【インゲームプレビューの開

始】を選択

(56)

これからのサウンドデザインに

求められるもの

楽器や身の周りの音のなるも

のも

デザインの参考になります。

なぜ、その音が鳴っているの

か?

どう変化するのか?

意識してみます。

(57)

シンプルである事

なるべく少ない操作

で、最大の効果を求め

ます。

演奏しやすいインタラ

クティブサウンドを

デザインする事が良い

です。

難しいと練習(ルール

設定)が必要になる

(58)

音はこだわるべき

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

こだわりを捨てずに

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

(59)

サウンドデザインで

リッチに!

シンプル

プログラマを困らせな

分かりやすさ

効果的か、理論的か

客観的に判断

サウンドデザイン

ADX2を使うと楽にデ

ザインできます。

(60)

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

2013年6月15、16(土日)にサウンドゲーム

ジャムあります。

見学も可能です。

UnityでのADX2LEの実例が見れます。

参照

関連したドキュメント

Lane and Bands Table と同様に、Volume Table と Lane Statistics Table も Excel 形式や CSV

異世界(男性) 最凶の支援職【話術士】である俺は世界最強クランを従える 5 やもりちゃん オーバーラップ 100円

■使い方 以下の5つのパターンから、自施設で届け出る症例に適したものについて、電子届 出票作成の参考にしてください。

の 立病院との連携が必要で、 立病院のケース ー ーに訪問看護の を らせ、利用者の をしてもらえるよう 報活動をする。 の ・看護 ・ケア

各サ ブファ ミリ ー内の努 力によ り、 幼小中の 教職員 の交 流・連携 は進んで おり、い わゆ る「顔 の見える 関係 」がで きている 。情 報交換 が密にな り、個

 「フロン排出抑制法の 改正で、フロンが使え なくなるので、フロン から別のガスに入れ替 えたほうがいい」と偽

理由:ボイラー MCR範囲内の 定格出力超過出 力は技術評価に て問題なしと確 認 済 み で あ る が、複数の火力

5.あわてんぼうの サンタクロース ゆかいなおひげの おじいさん リンリンリン チャチャチャ ドンドンドン シャラランラン わすれちゃだめだよ