「Adx2 LE」Unity活用編 初~中級編

Preview:

DESCRIPTION

2013年3月14日、15日に開催した「ADX2 LE」ワークショップの資料です。 http://www.adx2le.com/

Citation preview

PAGE1

ワークショップ Unity活用編 初~中級

PAGE2

株式会社CRI・ミドルウェア

PAGE3

本日のアジェンダ

CRI・ミドルウェアの自己紹介

「ADX2 LE」とは?なにができるの?

ツールの紹介

ゲームに音をつけてみよう!ワークショップ

自由時間

PAGE4

CRI・ミドルウェアの自己紹介

■■

映像・音声専門映像・音声専門ののミドルウェアミドルウェアを開発会社に提供。を開発会社に提供。-

ADX2

: オーディオ統合ソリューション-

Sofdec2

: 動画再生ミドルウェア。複数同時再生、透過、半透明ムービーなど。-

ファイルマジックPRO

: ファイル読み込み。圧縮/パッキング。ネットワーク対応。and more⋯

ミドルウェア採用累計:2,550タイトル!(2013/2/28現在)

PAGE5

とは?

・サウンドミドルウェアです。

サウンドオーサリングツール

ランタイムライブラリ(Unity用)が含まれています。

個人、学生のインディーズゲーム開発者

ゲームジャムやハッカソンなど、開発系のイベント参加者

若手サウンドプログラマー、サウンドデザイナーの育成目的

独立系サウンドスタジオや、フリーランスのサウンド制作者

に向けてつくりました。

PAGE6

ADX2 LEのサウンドオーサリングツール

• 「CRI Atom Craft」 は、波形を登録し音を管理するツール。

• 音リクエスト(プログラムからのコール)をキューと呼びます。

• 複数キューをパッキングしたものをキューシートとよび、

キューシートをACBというパックファイルに出力します。

元波形波形エディタ

キューシート

ACB

CRI Atom Craft

PAGE7

音素材の配置ボリュームやピッチの

変化をグラフで加工

エフェクトを設定

キュー

キューの中身

PAGE8

「ADX2 LE」ってなにができるの?

• 全ての開発環境サウンドの加工1.

波形を非破壊で編集、エフェクトの組み合わせが簡単に作れる。

2.

エフェクト適用をタイムラインにそってグラフィカルに編集できる。

• Unity Pro環境でランタイムライブラリを使用サウンドの圧縮が可能

独自フォーマットで高音質、低負荷再生、1/16圧縮。動的にサウンドエフェクトを使用することが可能1.

ピッチチェンジ、リバーブなど各種エフェクト

2.

複数音をタイムライン上に配置して再生

本日はコチラ!

PAGE9

「ADX2 LE」+Unity を使ってゲームに音をつける手順

1.

音素材を準備

2.

Atom Craftで音の鳴り方を設定

3.

UnityでADX2 LEから出力したパックファイルを読込み

4.

スクリプトで呼び出し or GameObjectに貼り付け

5.

「インゲームプレビュー」機能で細かい音の調整

6.

完成!

今日は2と5を体験

PAGE10

「インゲームプレビュー」とは?

ツール側で音を加工、編集した結果を「実行中」のゲームに送信し、音の鳴り方をリアルタイムに調整する技術です。

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

インゲーム接続

PAGE11

インゲームプレビュー概念図

③リアルタイムで音を調整

④調整結果をパック

ファイルに出力

ACBACF

⑤パックファイルを

更新して調整結果を

反映

①Unityエディタ上でプレビュー実行

またはexeに出力したものを実行

(いずれか片方)

②「インゲームプレビュー」機能で接続

PAGE12

• まず説明、その後作業時間を設けます。

• ツールの操作はだいたいあっていればOK パラメータの細かい点を真似る必要はありません。

もし時間が余った時は他のパラメータなどいろいろ弄って みてください。

• 不明な点がありましたら、まわりにいるサポートの人に手 を上げてお知らせください。

ワークショップの進め方

PAGE13

ワークショップで使用するサウンド素材について

• 波形編集、収録などは時間がかかるため、あらかじめ用意しました。

• 本ワークショップでは波形を指定して進行しますが、 もちろん、違う波形を選んで開発する事もできます。

PAGE14

ワークショップのもくじ

1.

ワークショップで使うゲームを紹介

2.

CRI Atom Craftを起動&プロジェクトを開く

3.

バンパーに音をつける

4.

音の鳴り方を調整

5.

設定した音をゲームに反映

6.

状況に応じて変化する音の設計

パート1

7.

状況に応じて変化する音の設計

パート2

8.

ひとつのキューで複数の音を順番に鳴らす

9.

BGMのダッキング(REACT)

PAGE15

1.ワークショップで使うゲームを紹介

PAGE16

「ピンボールゲーム」風デモ

を使います。

初めからプログラム内に「音の呼び出し」

命令が仕込まれています。

「ADX2 LE」を使って、

あとから音をつけていきます。

ゲームは事前に用意しました

ちょっとネコっぽいデス

PAGE17

ピンボールデモの操作①

• 【Click to Start】ボタンで ゲーム開始。

• 15秒くらい放置していても 自動で開始します。

マウスクリックすると ボールの位置を

クリックした位置に移動 ます。

デバッグモードみたいな状態です。

PAGE18

ピンボールデモの操作②

【Stopper】をチェック

すると穴がふさがります。

【Pause/Resume】

でポーズできます。

【Game Speed】

ゲーム速度が変化します。

遅くするとデバッグしや

すいです。

■CAUTION■

【Multi Ball】

ボールが直ちに分裂四散し

ます。(お遊び機能)

今回は触らないように。

PAGE19

デモを起動して触ってみよう

「アクセスを許可」して下さい。やってみよう!

デスクトップのPinball.exeをダブルクリック

ひととおり触ったら、

Pauseしておきましょう。

PAGE20

2.CRI Atom Craftを起動

&プロジェクトを開く

PAGE21

CRI Atom Craftのプロジェクトを開く

「ブロックを解除」して下さい。 やってみよう!

デスクトップのPinball.atmprojをダブルクリック

PAGE22

空のキューを用意しています

作業を簡略化するため、あらかじめ以下のキューを用意しています。

これらがゲームから呼び出される音の「1単位」です。

PAGE23

3.バンパーに音をつける

これ

PAGE24

原音確認(wav再生)

マテリアル(.wav)を選択し 【F3キー】で

元波形(wav)再生 【F4キー】で

停止します。

Windows標準の機能で再生されます。

PAGE25

バンパーの音をつける①

ボールがバンパーに当たって跳ね返す時に、スクリプトでは【Bumper】キューが呼ばれます。

ツリーから【Bumper】のキューを 選択します。

PAGE26

バンパーの音をつける②

マテリアルから 【bullet1.wav】を選択し

【Bumper】キューへドロップします。

【Bumper】キューに波形が登録されます。

PAGE27

間違えて違うキューとかに ドロップしてしまったら、 【Ctr+Zキー】でUndoできます。

もし間違えたら...

間違えたら Undoすると...

キューの左側の三角が 消える

このボタンでもUndo できます。

PAGE28

ツール画面上部のボタンでも操作できます。

キューのプレビュー

この場合は、CRI Atomランタイムで 圧縮音声が再生されています。

すなわち、ゲーム中で再生される音と全く一緒。

やってみよう!

【キューを選択】し、音を出して確認できます。

【F5キー】を押すと一回エンコードした後、音が鳴ります。

【F6キー】で停止。

PAGE29

4.音の鳴り方を調整

PAGE30

バンパーの音量調整

少しうるさいのでボリュームを下げます。

PAGE31

【F5キー】を【連打】すると音が【多重で再生】されます。

F5キー連打で多重再生

Voicesで発音数が確認できます。

PAGE32

バンパーの発音数制御

【キューを選択】し【キューリミット】のチェックボックスをチェックします。

リミットをかける事で、無駄な発音を軽減できます。

ゲームでのメモリ消費、CPU負荷削減。音量増加による音割れを抑制。

やってみよう!

ここまで出来たら、

プロジェクトを上書き保存しましょう。

こまめな保存がだいじです。

PAGE33

5.設定した音をゲームに反映

PAGE34

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

【F10キー】を押す

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

PAGE35

インゲーム接続に成功すると

バンパーに音がつき、玉があたると音が鳴ります。

【Pause】している場合は解除します。

PAGE36

インゲームのまま波形追加

• 試しにインゲーム中のまま【Paddle】キューに【rim.wav】を追加してみ

ましょう。• データの反映には時間がかかる場合があります。数秒~10秒程。F10キー

で強制再転送します。

やってみよう!

パドル

PAGE37

インゲームプレビューの解除と自動転送

Ctrl+F10キーを押してインゲームプレビューを解除できます。プレビューウィンドウのボタンでも停止できます。

解除してもゲームは動き続けていますので、ゲームの【Pause】を押して音を止めます。

押すと停止

やってみよう!

このチェックをはずします。

変更を自動転送してくれる便利

機能ですが、本日は使いません。

PAGE38

6.状況に応じて変化する音の設計

パート1

・ボール速度に応じて音が変わる

PAGE39

ボールの音をつける

【Ball】キューに貼り付けます

マテリアルから【Tan.wav】を選択し

PAGE40

ボールの発音数

【キューリミット】のチェックボックスをチェックします。

リミットをかける事で、無駄な発音数を軽減できます。

ゲームでのメモリ消費、CPU負荷削減。音量増加による音割れを抑制するこ

とに繋がります。大事なことなのでもう一度書きました。

やってみよう!

PAGE41

ボールの速度によって音程を変えてみる

物理的にはおかしいですが、わかりやすい演出として

【速くぶつかる】音程が高くなる【ゆっくりぶつかる】音程が低くなる

AISAC機能を使って設定します。

PAGE42

AISACとは

キューやトラックに対して条件による音の変化を設定できる

距離に応じた音の減衰、残響音車の速度に応じたエンジン音の変化

変化具合をグラフで設定できる

動的に変化する音を、直感的に構築できる!

スクリプトからこのキューを鳴らすとき、0.0~1.0のパラメータを指定。

PAGE43

【トラック】の上で右クリックし、 【AISACの追加...】を選択

AISACの追加

【トラック】を選択します。

【AISACの追加】ダイアログで 【ピッチ】に変更し

【追加】ボタンを押します。

PAGE44

ボールの音程が変化するように

【右肩上がり】の【グラフ】にします。

やってみよう!

グラフが出来たら「AISACコントロール値」のバーを

左右に動かしながらF5キーでプレビューしてみましょう。

PAGE45

AISAC値について

ボールがぶつかった速度に応じて

AISAC値を変えるスクリプトをあ

らかじめ組んでいます。

ボールがぶつかった時、スクリプ

トから指定されるAISAC値はここ

で確認できます。

PAGE46

変化に【メリハリ】を付けるため、【階段状】にします。

特定の音のみに限定する

【プロパティリスト】で【数値編集】もできます。

ここで、インゲーム接続で確認すると

ボールの音がゲームに転送され、【ピッチ】が変化するようになります。

確認したら、インゲームを停止して

ゲームもPauseしておきましょう。やってみよう!

PAGE47

7.状況に応じて変化する音の設計

パート2・複数の音素材をひとつのキューで鳴らす

・エフェクトをかけてみる

PAGE48

ターゲットの音をつける

ここに当たった時の音をつけます。

ツリーから【HitTarget】の

キューを選択します。

PAGE49

ターゲットの音をつける

マテリアルから 【hajiku.wav】を選択し

【HitTarget】キューへドロ ップします。

キューを選択し 登録されているのを確認

PAGE50

ターゲットの発音数

【キューリミット】のチェックボックスをチェックします。

リミットをかける事で、無駄な発音数を軽減できます。

大事なことなので(15分ぶり3回目)

今回の音は【長めの音】なので、【3音のリミット】にしてみました。

やってみよう!

PAGE51

ピッチをランダム化

• ピッチをランダムにするには・・・

【Track_hajiku】を選択

【FX1】を選択【ピッチ】を

【縦方向】にドラッグ してランダム化

PAGE52

ローパスフィルタを選択

【 Track_hajiku

】を選択

【FX2】を選択

【バイクアッドフィルタ】の

種類を【ローパス】に変更

PAGE53

ローパスフィルタのランダム

【バイクアッドフィルタ】を 【ローパス】に変更します。

【Cof】を左くらいの設定に変 更します。

【Q】を高めにします。

やってみよう!

PAGE54

トラックを複製する

【Track_hajiku】を選択 したまま・・・

【Ctr+R】で複製

片方の【波形】を 【ドラッグ】して 再生位置をずらす

PAGE55

余韻をエフェクトで延ばす

【HitTarget】を選択し・・・

【FX1】を選択

【バスセンド1】リバーブが掛かります。

【バスセンド2】エコーが掛かります。やってみよう!

PAGE56

8.ひとつのキューで複数の音を順番に鳴らす

PAGE57

ボールロストの音をつける

ここを抜けて【ボールロスト】 した時の音をつけます。

ツリーから【BallLost】のキューを 選択します。

PAGE58

ボールロストの音をつける

マテリアルから 【yarare】フォルダ以下の

4つのwavを選択し

【BallLost】キューへ ドロップ

PAGE59

ボールロストの音をつける

ひとつのキューに

複数の音を貼り付けることができます。

スクリプト的にはキュー1音の呼び出しで、

内部的には複数音を任意のタイミングで鳴

らす・・・ということができます。

今回は

「呼び出されるたびに、順番に鳴らす」

という仕込みをします。

PAGE60

タイプを【シーケンシャル】に変更

【シーケンシャル】

に変更します。

キューの【タイプ】を

【ポリフォニック】から

やってみよう!「インゲームプレビュー」で確認します。

PAGE61

9.BGMのダッキング(REACT)

PAGE62

• キューを【カテゴリ】に割り当てる事で、

【カテゴリ】によるキューのコントロールを可能にするものです。

• プログラマが【キューの内容】を知らなくても【カテゴリ】という大まかな

要素で【ボリューム調整】や、【リミット数】指定ができます。

REACTとは

今回は3種類にカテゴリわけしてあります。

このカテゴリを使って、BallLostが再生された

ときに、BGMの音量を落として

「セリフがはっきり聞こえるように」します。

PAGE63

まず、BGMをつける

マテリアルから 【beat0.wav】を選択し

「リループ有効フラグ」を【True】に変えます。波形を強制ループさせます。

ちなみにループは任意のポイントによるループや、イントロつきループも出来ます。

【BGM】キューにbeat0.wavをドロップし

この時点でインゲームプレビューしてみます。

やってみよう!

PAGE64

カテゴリを確認

あらかじめ設定してあるカテゴリを確認キューシート

【PinballMain】 を選択

【BallLost】 が【Serif】カテゴリ

BGMは 【BGM】カテゴリ

になっています。

カテゴリ分けは好きな名前に設定することもできます。

PAGE65

REACT設定①

【変化時間】100msec

【戻り時間】300msec

と調整すると

変化のかかり方が変わります。

【REACT】から

【React_SerifOther】を選択

変化のカーブが変わる

PAGE66

REACT設定②

【BGM】カテゴリを【Serif】再生時に変化させます。

【ボリューム】が【0.25】になるように設定されています。

変化パラメータは

【ボリュームレベル】

【変化レベル値】が【0.25】

【BGM】に設定

【Serif】に設定

PAGE67

REACTを試してみる

やってみよう!

【BGM】をクリックしてF5で

プレビュー再生再生しっぱな

しにして

【BallLost】をクリッ

クしてF5

さらに、インゲームプレビューを再接続して

ゲームに反映させて確かめてみる。

PAGE68

自由時間とQ&A

いろいろなパラメータを加えてみようエコーやリバーブをかけてみよう

別の波形をあててみよう

たとえば:Ballに「uwa.wav」をあてて、ピッチを下げて、すごいエコーをかけると・・・

PAGE69

本日は以上です。

• 質問や疑問点Facebook「ADX2ユーザー助け合い所」

Twitter 彼をフォロー!→

• 作ったアプリやゲームを「配信・販売」したい場合条件等は「ADX2 LE」公式サイトにて。http://www.adx2le.com/copyright.html

• 3月以降の予定各種イベント出展も計画中・・・

PAGE70

今日のデモ、実はSDKに入っています。

cri¥unity¥samples¥criatom¥script¥Unity3Project¥GameSample_Pinball

に入っています。色々触ってみて下さい。

(※収録されているサウンドやポリゴンデータはフリー素材ではありません。)

PAGE71

エクストラステージ1BGMをインタラクティブ化

PAGE72

• 音を追加する。

• BGMを変化(遷移)させてみる。

• 遷移変化をはっきりさせる。

BGMをインタラクティブ化?

BGMがゲームの状況に合わせて、 自然に変化するようにしてみます。

今回は、ボールがロストすると変化するようにします。

「ブロック再生」機能を使います。

PAGE73

• キューを縦方向のブロック(楽章、小節、フレーズ)に分割します。• ブロックの遷移は、ブロックの終端や、ブロックの分割位置から遷移し

ます。

• プログラムの即時反応ではなく、ブロックが切り替わるタイミングをデ ータ側に持たせる事ができます。

• 再生時刻や繋がる音の再生タイミングなどは「ADX2 LE」側で制御する ので、プログラムで細かい指定をせずに綺麗に連結再生ができます。

• さらに、遷移する時だけ鳴るトラックや、遷移時初回のみ再生するトラ ックを指定できます。

ブロック再生とは

PAGE74

波形を【ループ】から【ワンショット】に

【bgm0.wav】を選択

【リループタイプ】を【ループ】

【リループ設定の有効フラグ】

【True】

にします。

ブロック再生には、ループ波形は相性が悪いです。

→【ブロックでループ】するため、ループ波形が多重リクエストされてしまう。ワンショットに変更します。

PAGE75

BGMをブロック化

キューの右横の余白を【右クリック】し、

【ブロックを作成】を選択します。

【ブロック】が追加されます。

PAGE76

ブロックをループに変更

【タイムライン上】で

【ブロック】を

【右クリック】し

【プロパティリスト】を表示

【ブロック】を選択し

【ブロックループ回数】を

【-1】に指定。

PAGE77

ブロックを追加

【beat0.wav】を【BGM】キュー にドロップします。

【Block...】が追加されます。

選択しループ回数を-1にします。

PAGE78

• ボールロストするとブロックが切り替わります。• 変化が【ブロックエンド】だと【反応が悪い】ので、より細か

い単位【指定分割】で遷移するように変更します。

ブロックの遷移を変更

【ブロック分割数】を【4】に【ブロック遷移タイプ】

を【指定分割で】

PAGE79

ブロックの遷移を変更

【ブロック】に【区切り線】が追加されました。

この【タイミング】でも遷移するように変化しました。

PAGE80

ブロックの切り替わりを派手に

【ブロック】が【切り替わる時のみ】 【ドラムのフィルイン】が鳴るようにしてみ

ましょう。

【drumfill.wav】を追加しま す。

それぞれブロックの区切り前に設定

PAGE81

ブロックの切り替わりを派手に

【トラック】の【ブロック遷移発音タイプ】を 【遷移時発音】に

これで、遷移時のみドラムが鳴ります。

PAGE82

ブロック再生をもっと知りたい

• 【もっと凝ったデータ】を知りたい場合は 【おまけ】の章を参考

• YouTubeで「adx2 ブロック再生」と検索• 【ヘルプ】メニューから【デモのダウンロード】

PAGE83

BGMのブロック再生

再生して【ブロック】を 選択で切り替わります。

遷移時のみ

遷移初回時 のみ再生

PAGE84

DSPバス設定のパラメータ

他のエフェクタを追加して みたり

【DSPバス設定】から 【DspBusSetting_0】を選択

PAGE85

エクストラステージ2調整結果をビルドしてアプリに入れる

PAGE86

アプリに変更を反映

CRI Atom Craftでビルドしたデータ(acf,acb)を C:/Pinball_workshop/Pinball_Data/StreamingAssets

以下にコピーします。

PinballMainが選択されている事を確

認。

この場所のPublic/以下データ

(acf,acb)が出力されます。

なお、Public/inGamePreview/以下の

データ(acf,acb)を使う事でインゲームプ

レビューが可能なデータとなります。

「デフォルトパス」を押す事で

プロジェクト直下に出力されます。

Recommended