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

_福島GamejamCRI・ミドルウェア事前セミナー資料

N/A
N/A
Protected

Academic year: 2021

シェア "_福島GamejamCRI・ミドルウェア事前セミナー資料"

Copied!
72
0
0

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

全文

(1)

ネコでもわかる

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

田中孝

2013-07-06

(2)

このワークショップでは

音の作り方

波形編集(基本)

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

Unityスクリプトとかはやりません

→ゲームジャムで実践

その前段階の

(3)

レジュメ

サウンドデザイン インタラクションデザイン サウンド再生 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分

まとめ

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

(4)

インタラクティブとは?

インタラクティブ

(5)

何と対話?双方向?

(6)

何を使って?

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

プレーヤー

プログラム

デザイン

(9)

サウンドデザイン

CRI Atom Craft

CRI Atom Craftを使って

音をデザインします

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

ツールです。

http://www.adx2le.com/

ゲームジャムでも使う

デザイン

(10)

ADX2 OSC Player

を使って

音を鳴らします。

Unityで作られたADX2LEの

プレーヤーアプリです。

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

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

プレーヤー

(11)

Processingを使って

インタラクションを実現

します

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

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

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

Processing

ProcessingのoscP5

http://www.processing.org/

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

プログラム

(12)

波形素材

波形加工

波形素材

波形加工

(13)

波形素材は

ChipTuneのものを使用

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

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

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

ゲームジャムでも使って

OK

波形素材

(14)

波形加工、録音、

wav出力

Audacityのものを使用

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

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

http://audacity.sourceforge.net/

ゲームジャムでも使える

波形加工

(15)

Audacity

で録音、加工、wav保存

(16)

録音

Audacityを起動

赤いボタンを押す

マイクの入力レベル

(17)

波形の表示調整

境界線をドラッグして高さ変更

波形加工

(18)

波形の表示調整

ルーペで横方向の拡大縮小

波形加工

(19)

ステレオをモノラルへ

いくつか録音されていたらややこしいので

いらないものを「

X」ボタンで閉じる

メニューを選択

波形加工

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

(20)

波形の入らない部分カット

入らない部分を範囲選択

波形加工

ドラッグして選択

Ctr+Xで選択した部

分がカットされる。

Ctr+Vでペーストも

可能

(21)

音を大きくする

正規化(ノーマライズ)する

波形加工

「エフェクト」メニューから「正規化

...」を選択

音が大きくなる

←みたいな波形だとあまり大きくならない

コンプレッサーなど使うと良い

(22)

ピッチを変更

正規化(ノーマライズ)する

波形加工

「エフェクト」メニューから「ピッチの変更

...」を選択

スライダーを右にす

ると高く、左にする

と低くなる

(23)

波形出力

正規化(ノーマライズ)する

波形加工

「ファイル」メニューから「書き出し

...」を選択

(24)

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

作ってみよう

(25)

テルミンから学ぶ

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

博士が作った楽器で、

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

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

します。

楽器=インタラクティブ

デザイン

(26)

テルミンの仕組み

右のアンテナに

近づくと音程が高く

離れると音程が低く

なります。

左のアンテナに

近づくと音が小さく

離れると音が大きく

なります。

デザイン

(27)

データ作成

ボリュームとピッチが

インタラクティブに

変化する音を作ります。

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

CRI Atom Craft

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

デザイン

(28)

音を鳴らすキューを作る

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

にする

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

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

す。

デザイン

(29)

CRI Atom Craft

を起動

(30)

新規プロジェクト作成

(31)

マテリアルへ

波形を追加

デザイン

波形素材

(32)

キュー作成

(33)

ボリュームつまみを再現

ボリュームは縦で

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

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

ザインする

AISACを使います

AISACはADX2LEの

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

の機能です。

デザイン

(34)

キュー選択

(35)

+ボタン押し、

AISACの追加...を選択

(36)

追加ボタンを押す

(37)

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

(38)

音を確認する

デザイン

(39)

ピッチ変化用を追加する

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

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

する

もう一つ

AISACを使います。

ピッチアンテナを再現

デザイン

(40)

+ボタン押し、

AISACの追加...を選択

(41)

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

デザイン

(42)

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

(43)

音を確認する

デザイン

(44)

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

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

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

め、ツールから

ACF,ACBという

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

ます。

(45)

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

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

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

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

「パディング使

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

(46)

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

(47)

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

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

く...」を選択

acf

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

(48)

ACF

、ACBを利用する

CRI Atom Craft

データを

ADX2LE OSC Player

で再生する

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

CRI Atom Craft

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

プレーヤー

デザイン

(49)

ADX2LE OSC Playerを起動

ブロックを解除する

起動する

(50)

ファイルをコピーする

(51)

バッチを実行する

C:\ADX2LE_Workshop\AtomCraftData\copy.bat

ACF,ACBファイルをコ

ピーしました。

ファイルコピー

C:ドライブにADX2LE_Workshopを

展開していないと正しく動作しないので

注意

(52)

ADX2LEOSCBasicPlayer_Dataを開く

StreamingAssetsを開く

ACB

、ACFを差し替える

先ほど

ツールで出力したフォルダから

inGamePreviewを開く

【参考】もしも手動でやる場合は以下のよう

な手順になります。

ファイルコピー

デザイン

(53)

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

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

(54)

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

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

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

プレーヤー

(55)

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

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

ファイルコピー

(56)

もっと直感的に

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

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

マウスの位置(たて、よこ座標)が反応するような、

簡単なプログラムを用意しました。

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

ると

ります。

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

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

もしれません。

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

(57)

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

processingで

インタラクティブ

サウンドを

コントロールします。

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

CRI Atom Craft

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

プログラム

(58)

proessingが起動します

sketch_AISACXY.pdeを開く

 を押して実行

 を押して停止

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

2

3

プログラム

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

プログラムの流れ

起動直後一度呼ばれる

描画は毎度呼ばれる

2

プログラム

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

3

2

4

プログラム

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

判定の処理

マウス押されたら

再生中なら

再生中かどうか

マウス状態

2

3

プログラム

(63)

チャレンジ(課題)

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

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

(64)

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

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

ヒント

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

(65)

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

ヒント:

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

C:\ADX2LE_Workshop\processingSample

(66)

インゲームプレビュー

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

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

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

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

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

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

インゲーム接続

デザイン

(67)

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

【F10キー】を押す

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

発音数や

CPU%が変化していれば

接続

OK

デザイン

(68)

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

求められるもの

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

のも

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

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

か?

どう変化するのか?

意識してみます。

(69)

シンプルである事

なるべく

少ない操作

で、

最大の効果を求め

ます。

演奏しやすいインタラ

クティブサウンドを

デザインする事が良い

です。

難しいと練習(ルール

設定)が必要になる

(70)

音はこだわるべき

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

こだわりを捨てずに

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

(71)

サウンドデザインで

リッチに!

シンプル

プログラマを困らせな

分かりやすさ

効果的か、理論的か

客観的に判断

サウンドデザイン

ADX2を使うと楽にデ

ザインできます。

(72)

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

2013年10月頃(土日)にサウンドゲームジャム

あります。

見学も可能です。

UnityでのADX2LEの実例が見れま

す。

詳しくは

ADX2LE.comで

参照

関連したドキュメント

[r]

事故時運転 操作手順書 事故時運転 操作手順書 徴候ベース アクシデント マネジメント (AM)の手引き.

添付資料 4.1.1 使用済燃料貯蔵プールの水位低下と遮へい水位に関する評価について 添付資料 4.1.2 「水遮へい厚に対する貯蔵中の使用済燃料からの線量率」の算出について

添付資料 4.1.1 使用済燃料貯蔵プールの水位低下と遮へい水位に関する評価について 添付資料 4.1.2 「水遮へい厚に対する貯蔵中の使用済燃料からの線量率」の算出について

○関計画課長

添付資料 4.1.1 使用済燃料プールの水位低下と遮蔽水位に関する評価について 添付資料 4.1.2 「水遮蔽厚に対する貯蔵中の使用済燃料からの線量率」の算出について

福島第一原子力発電所 第3号機 原子炉建屋上部瓦礫撤去工事 使用済燃料貯蔵プール養生

 本資料作成データは、 平成24年上半期の輸出「確報値」、輸入「9桁速報値」を使用