SlideShare une entreprise Scribd logo
1  sur  107
© historia Inc.
新しい Unreal Audio Engine で
インタラクティブサウンドコンテンツは
どこまでつくれるか!?
historia Inc.
加藤 優作
© historia Inc.
自己紹介
 加藤 優作 (エンジニア)
 開発実績
 ハネチャリ (VR Zone Shinjuku にて稼働中)
 コミュニティ活動
 Gray ちゃん 3D モデル制作
© historia Inc.
新しいオーディオ機能
 Unreal Engine 4.16 から
新しいオーディオ機能が多数追加されました!
 Unreal Audio Engine
 新しいオーディオエンジン
 サウンドエフェクト機能の追加など
 Synthesis
 音色を作成して鳴らすことができる
 Steam Audio
 物理ベースオーディオ体験の実現
© historia Inc.
発表概要
 新しいオーディオ機能の追加によって
Unreal Engine の機能だけで
どこまで面白いことができるようになったのか を
デモを作成しながら検証
 使用した各オーディオ機能について
 それを使うとどんなことができるのか
 どのように使うか
を解説
© historia Inc.
諸注意
 Unreal Audio Engine 及び Synthesis Plugin は
Early Access Preview 扱いです (UE 4.16 現在)
 今後機能や使い方が変更になる可能性があります
 なるべくわかりやすい解説にするために
内容の正確性・厳密性を犠牲にしています
 新機能以外の解説もします
 検証環境
 Unreal Engine 4.16.3
 Windows 10
© historia Inc.
デモについて
© historia Inc.
https://youtu.be/8rHPPilj9VM?t=34s
© historia Inc.
デモの解説
 インタラクティブなオーディオビジュアライザ
 キーボードを弾く “楽器演奏者” と
マウスを操作する “ゲームプレイヤー” の
2 人が必要
© historia Inc.
デモの解説
① BGM に合わせて
キーボードを弾く
© historia Inc.
デモの解説
① BGM に合わせて
キーボードを弾く
② 鍵盤エフェクトが出る
© historia Inc.
デモの解説
① BGM に合わせて
キーボードを弾く
③ 鍵盤エフェクトを
ロックオン・破壊
② 鍵盤エフェクトが出る
© historia Inc.
デモの解説
① BGM に合わせて
キーボードを弾く
④ 破片エフェクトがキーボードに当たって
BGM に合った音が鳴る
③ 鍵盤エフェクトを
ロックオン・破壊
② 鍵盤エフェクトが出る
© historia Inc.
デモの解説
① BGM に合わせて
キーボードを弾く
④ 破片エフェクトがキーボードに当たって
BGM に合った音が鳴る
③ 鍵盤エフェクトを
ロックオン・破壊
② 鍵盤エフェクトが出る
ゲームプレイが音に影響を与える
楽器演奏がゲームに影響を与える
© historia Inc.
基礎知識
(MIDI と Audio)
© historia Inc.
MIDI
 演奏データ (MIDI Event) を
機器間でやりとりするための世界共通規格
 MIDI – Wikipedia
 楽譜のようなもの
 実際の音のデータではない
 MIDI Event の例 : Note On
 どのチャンネル (楽器パート) の
 どの高さの音を
 どれくらいの強さで弾いた?
© historia Inc.
Audio
 音そのもののデータのこと
 .wav / .mp3 / .ogg
© historia Inc.
デモの機材構成
© historia Inc.
デモの機材構成 Audio MIDI
© historia Inc.
Modular Synth
Component
デモの音データの流れ Audio MIDI
MIDI Device
Support Plugin
Unreal Engine
Modular Synth
Component
© historia Inc.
Audio 新機能を使うための準備
© historia Inc.
Audio 新機能を使うための準備
 Unreal Audio Engine は
4.16 ではデフォルトで有効になっていない
 Unreal Audio Engine 開発チームの方が書いた
Forum の Thread を参考にする
 4.16 New Audio Engine: Early Access Quick-Start Guide
 https://forums.unrealengine.com/showthread.php?143974-4-16-New-
Audio-Engine-Early-Access-Quick-Start-Guide&styleid=6
 新機能の使い方もここに載っています
© historia Inc.
手順 (Windows)
1. Config (.ini) を変更する
2. コマンドラインオプションを指定してプロジェクトを開く
3. プラグインを有効にする
4. (Editor Preferences を変更する)
© historia Inc.
手順 1. Config (.ini) を変更する
 編集するファイル (どちらか一方)
 <エンジンディレクトリ>/Engine/Config/Windows/WindowsEngine.ini
 <プロジェクトディレクトリ>/Config/Windows/WindowsEngine.ini
 以下を追記する
→ これで、手順 2 で指定するコマンドラインオプションが有効に
[Audio]
AudioDeviceModuleName=AudioMixerXAudio2
© historia Inc.
手順 2. コマンドラインオプションを指定してプロジェクトを開く
 -audiomixer オプションを指定してプロジェクトを開く
 コマンドプロンプトで以下を実行する
 具体例
 .bat ファイル化を推奨
<UE4Editor.exe のパス> < .uproject のパス > –audiomixer
“C:Program FilesEpic
GamesUE_4.16EngineBinariesWin64UE4Editor.exe”
“C:Test_AudioEngineTest_AudioEngine.uproject” –audiomixer
半角スペース 半角スペース
© historia Inc.
手順 3. プラグインを有効にする
 Audio -> Sound Utilities
 Audio -> Synthesis (Synth を使う場合)
© historia Inc.
(手順 4. Editor Preferences を変更する)
※ 必須ではありません
 Editor Preferences を開き、以下の設定を変更する
 Level Editor -> Miscellaneous -> Sound
-> Allow Background Audio : ON
 エディタからフォーカスが外れてもオーディオが再生される
 Level Editor -> Miscellaneous -> Sound
-> Enable Editor Sounds : OFF
 エディタのサウンドが再生されなくなる
 Level Editor -> Play -> Play in Editor
-> Enable PIE Enter and Exit Sounds : OFF によって再生されなくなる
Play / Stop / Eject / Possess の音に加えて
Compile 時の音なども再生されなくなる
© historia Inc.
(手順 4. Editor Preferences を変更する)
※ 必須ではありません
 Editor Preferences を開き、以下の設定を変更する
 General -> Miscellaneous
-> Performance -> Use Less CPU when in Background : OFF
 エディタからフォーカスが外れても CPU 消費が少なくならない
© historia Inc.
解説
© historia Inc.
目次
 [旧] キーボードからの MIDI Event を受信する
 [新] シンセサイザーで音を鳴らす
 [旧] 曲の拍のタイミングを取得する
 [新] 音にエフェクトをかける
 [新] 現在の音の大きさを取得する
 [新] 音の高さ毎の音の大きさを取得する
© historia Inc.
[旧] キーボードからの
MIDI Event を受信する
© historia Inc.
デモでは…
 (機材の) キーボードを弾くと
(画面の) キーボードの対応するキーが光ったり
Particle が出たりする
© historia Inc.
Modular Synth
Component
Audio MIDI
Unreal Engine
Modular Synth
Component
デモの構成図上では…
ビジュアライズ
MIDI Device
Support Plugin
© historia Inc.
MIDI Device Support Plugin
 MIDI Event の受信を行うための Plugin
 Plugin の説明には
“send and receive MIDI events”
と書かれているが、送信処理が見当たらない…
© historia Inc.
MIDI Device Support Plugin の使い方
 FindMIDIDevices 関数 で 接続中の MIDI Device を列挙する
 FoundMIDIDevice 構造体 のリストから使いたい Device を判断
 Device の名前
 Device が既に使用されているかどうか
 etc...
© historia Inc.
MIDI Device Support Plugin の使い方
 CreateMIDIDeviceController 関数 で
MIDIDeviceController を作成
 MIDI Event 受信時に呼ばれる OnMIDIEvent に Event を Bind
© historia Inc.
MIDI Device Support Plugin の使い方
 作成した MIDIDeviceController は
変数に Set しないと GC に回収されてしまうので注意
© historia Inc.
MIDI Device Support Plugin の使い方
 Event Type で MIDI Event の種類がわかる
© historia Inc.
MIDI Device Support Plugin の使い方
 受信した MIDI Event が Note On の場合
 Controll ID = ノート番号 (中央 C = 60)
 Velocity = 音の強さ (数字が大きいほど音が強い、範囲 [0, 127])
© historia Inc.
MIDI Device Support Plugin の使い方
 受信した MIDI Event が Note Off の場合
 Controll ID = ノート番号 (中央 C = 60)
© historia Inc.
[新] シンセサイザーで音を鳴らす
© historia Inc.
デモでは…
 破片エフェクトがキーボードに当たった時の音を生成
© historia Inc.
シンセサイザー (Synthesizer / Synth) とは?
 電気的に音を合成する機器 のこと
 パラメータ変更で色々な音を作ることができる
 色々な合成方式がある
 減算合成
 加算合成
 グラニュラー
 etc...
 シンセ ≠ キーボード
 鍵盤付きシンセが多いが
音の合成機能があれば鍵盤がなくてもシンセ
The Future of Audio in Unreal Engine | GDC 2017 | Unreal Engine – YouTube より
https://www.youtube.com/watch?v=ErejaBCicds
© historia Inc.
Unreal Engine の Synth の種類と日本語情報
 Modular Synth (減算合成)
 UE4 4.16のPreview版の新Audio機能の所感など | 株式会社プラスシグナル
 https://www.plus-signal.com/single-post/2017/05/15/UE4-
416%E3%81%AEPreview%E7%89%88%E3%81%AEAudio%E6%A9%9F%E8%83%BD%E3%81%AE%E6%89
%80%E6%84%9F%E3%81%AA%E3%81%A9
 UE4 Modular Synthを触ってみる。 - UE4初心者が頑張ってるブログ
 http://mozpaca.hatenablog.com/entry/20170514/1494754900
 Granular Synth
 【UE4】Unreal Engine 4.16 PreviewのGranular Synthを触ってみる - 大福未来研究所
 http://dfkfuturelab.hatenablog.com/entry/2017/05/16/081659
 Synth Sample Player (?)
© historia Inc.
Modular Synth (減算合成)
The Future of Audio in Unreal Engine | GDC 2017 | Unreal Engine – YouTube より
https://www.youtube.com/watch?v=ErejaBCicds
波の形を決める
フィルタをかける 音量変化をコントロールする
(音としては使わない) 波などで
パラメータをコントロールする
© historia Inc.
Modular Synth の使い方
 ModularSynthComponent を追加
 NoteOn 関数 で音を再生
 引数 Duration で音が鳴る長さを指定
 負の値を入れると NoteOff までずっと鳴る
 NoteOff 関数 で音を停止
© historia Inc.
Modular Synth の使い方
 引数 Note / Velocity には
MIDI Event と同じルールで ノート番号 / 音の強さ を与える
 MIDI Event の値をそのまま Synth に渡せば
「キーボードを弾くと Unreal で音が鳴る」 ロジックが完成
© historia Inc.
Modular Synth の使い方
 音のパラメータを変更するには
Set Synth Preset 関数 を使う
 ModularSynthPreset 構造体 を作って渡せばよいが…
© historia Inc.
Modular Synth の使い方
 メンバ変数が多い!
 Preset を Asset として定義して呼び出す
→ ModularSynthPresetBank を使う
© historia Inc.
ModularSynthPresetBank を使う
 Add New -> Sounds
-> Modular Synth Preset Bank を選択
 Preset を編集
 複数の Preset を作成できる
© historia Inc.
ModularSynthPresetBank を使う
 ModularSynthPresetBank の参照変数を作成し、
そこから使用する Preset を取得する
© historia Inc.
Preset Q&A
 Q. 複数の Note を NoteOn しているのに 1 つしか鳴らない
 A. Enable Polyphony を true にしてください
 Q. 音痴になった
 A.
 Osc 1 or 2 の Semitones と Cents を 0 にしてください
 Chorus Enabled を false にしてください
© historia Inc.
[旧] 曲の拍のタイミングを取得する
© historia Inc.
デモでは…
 各小節の 1 拍目に リング状の Mesh を Spawn
 破片エフェクトが リズムに合うタイミング で
BGM のコードに合う鍵盤 に当たるように調整
© historia Inc.
OnAudioPlaybackPercent
 AudioComponent の Event
 PlaybackPercent は現在の再生率を返す
 0.0 から始まり 1.0 で Audio の最後に到達
 ループ再生すると 1 を超える
 PlayingSoundWave は現在再生中の SoundWave を返す
 SoundWave の Duration (Audio の長さ (秒)) x Playback Percent
= 現在の再生位置 (秒)
© historia Inc.
 BPM = Beats Per Minite
 1 分間における拍の数
 BPM 60 = 1 分間に 60 拍 = 1 秒で 1 拍
 60 ÷ BPM = 1 拍にかかる秒数
 現在の再生位置 ÷ 1 拍にかかる秒数 = 現在の累計拍数 (0 始まり)
 現在の累計拍数 ÷ 1 小節における拍の数 + 1 =
 現在の累計拍数 % 1 小節における拍の数 + 1 =
現在の小節数
現在の小節数・拍数の求め方
現在の拍数
© historia Inc.
現在の小節数・拍数の求め方
© historia Inc.
現在の小節数・拍数の求め方
© historia Inc.
BGM のコードに合った音の選択
 何小節目の何拍目に
何のコードになるかを
DataTable で管理
 計算で求めた現在の小節数・拍数から
コードに合った音を選定する
 例 : 21 小節目の 1 拍目に
F minor 7th のコードになる
→ コードに合った音は
F / A♭ / C / E♭
© historia Inc.
[新] 音にエフェクトをかける
© historia Inc.
デモでは…
 キーボード (文字を打つ方) の操作で
BGM に Low Pass Filter がかかり、音がこもった感じに
 Filter のかかり具合を実行時に調整
 Filter が強くかかるほど彩度が落ちるように
© historia Inc.
 サウンドエフェクトとは?
 音に対して何らかの加工を行うもの
 種類
 Delay : やまびこ効果 (やっほー やっほー)
 Low Pass Filter : 低音 (Low) を通す (Pass) → 高音をカットする
 etc...
サウンドエフェクト
エフェクター
(エフェクトをかける機材)
エフェクター
© historia Inc.
Modular Synth
Component
Audio MIDI
MIDI Device
Support Plugin
Unreal Engine
デモの構成図上では…
Modular Synth
Component
© historia Inc.
新機能 : SourceEffect
 SourceEffect
 エフェクトそのもの
 SourceEffectPreset
 SourceEffect にプリセット値を与えたもの
 同種の SourceEffect に対して複数作成できる
 SourceEffectPresetChain
 SourceEffectPreset を数珠繋ぎにしたもの
Chain
Delay エフェクトです
1 秒遅らせる
Delay エフェクトです
2 秒遅らせる
Delay エフェクトです
A
B
AC D
© historia Inc.
SourceEffect の “Source” って何?
 Source とは以下のものを指す
 SoundWave
 SoundCue
 Synth (ModularSynth など)
 Audio Component は Source ではない
 つまり、SourceEffect = 上記の要素に対してかけることができるエフェクト
 他のエフェクトとして、
SoundSubmix に対してかけることができる SubmixEffect がある
© historia Inc.
SourceEffect の使い方
1. SourceEffect を作成する (C++)
(解説後回し)
2. SourceEffectPreset を作成して
プリセット値を設定する
3. SourceEffectPresetChain を作成して
SourceEffectPreset をセットする
4. Source に
SourceEffectChain をセットする
Chain
Delay エフェクトです
1 秒遅らせる
Delay エフェクトですA
AC D
Chain
© historia Inc.
手順 2. SourceEffectPreset を作成して
プリセット値を設定する
 Content Browser
-> Add New -> Sounds
-> Source Effect Preset を選択
© historia Inc.
手順 2. SourceEffectPreset を作成して
プリセット値を設定する
 SourceEffect を選択
 デフォルトで 11 種類
© historia Inc.
手順 2. SourceEffectPreset を作成して
プリセット値を設定する
 作成した SourceEffectPreset を開き、
Details パネル
-> Audio -> Effects
-> Settings の値を設定する
© historia Inc.
手順 3. SourceEffectPresetChain を作成して
SourceEffectPreset をセットする
 Content Browser
-> Add New -> Sounds
-> Source Effect Preset Chain を選択
© historia Inc.
手順 3. SourceEffectPresetChain を作成して
SourceEffectPreset をセットする
 作成した SourceEffectPresetChain を開き、
Details パネル
-> Source Effect -> Chain に
SourceEffectPreset をセットする
© historia Inc.
手順 3. SourceEffectPresetChain を作成して
SourceEffectPreset をセットする
 エフェクトは
index 0 から順番にかかります
 順番が異なると結果も異なるので注意
 Bypass (迂回) で
エフェクトがかからないようにできる
Chain
Chain
Chain
© historia Inc.
手順 4. Source に
SourceEffectChain をセットする
 SoundWave / SoundCue / Synth Component を開き、
Details パネル -> Effects-> Source Effect Chain に
SourceEffectChain をセットする
© historia Inc.
確認方法
 SoundWave / SoundCue の場合は
Content Browser 上で再生すれば
エフェクトがかかった状態で確認できる
© historia Inc.
Blueprint でできること
 SourceEffectPresetChain に対する SourceEffectPreset の追加・削除
 SourceEffectPresetChain 内の SourceEffectPreset の Bypass 設定
© historia Inc.
Blueprint でできること
 SourceEffectPreset の Settings の変更 (エフェクトの実行時設定調整)
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 Add New -> New C++ Class を選択する
 Show All Classes のチェックをオンにして
SoundEffectSourcePreset を検索・選択し、Next を選択
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 Name に “SourceEffect<エフェクト名>” と入力
 このように命名すると、デフォルトの SourceEffect 関連クラスと命名規則が合います
 Create Class を選択
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 3 つのクラス・構造体が
自動的に作成される
 FSourceEffect~Settings
 エフェクト設定の構造体
 FSourceEffect~
 音データの処理を担当するクラス
 FSourceEffect~Preset
 上記 2 つを
Editor に公開するためのクラス
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 作成した時点で
“Volume を変更するエフェクト”
として機能する
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 ソースに手を加える部分
 FSourceEffect~Settings
 設定項目をメンバ変数として追加
 FSourceEffect~
 メンバ関数 Init を override
 Audio 処理前に呼び出される初期化用関数
 メンバ関数 OnPresetChanged を override
 Preset (Settings) の設定が変更されたときに呼び出される関数
 メンバ関数 ProcessAudio を override
 Audio 処理を行う関数
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 関数 ProcessAudio
 引数 InData.AudioFrame として渡される音の波の変位を元に計算を行い、
引数 OutData.AudioFrame に新しい変位を代入することで出力を行う
 InData, OutData 共に値の範囲は [-1.0, 1.0)
 InData はその瞬間の波の変位なので、
ある期間内の波の変位が欲しい場合は
バッファリングする必要がある
 波の変位とは?
 ある時点での波の高さの値のこと
変位 0.5
ある時点
© historia Inc.
手順 1. SourceEffect を作成する (C++)
 “Volume を変更するエフェクト” のコード例
InData.AudioFrame[Channel] = 0.5 OutData.AudioFrame[Channel] = 0.25
×
VolumeScale (例 : 0.5)
© historia Inc.
[新] 現在の音の大きさを取得する
© historia Inc.
デモでは…
 キーボードとスペクトラムビジュアライザが
BGM の音の大きさに合わせて拡大・縮小する
© historia Inc.
音波
 空気の圧力変化の波
 振幅が大きい方が音が大きい
 周波数が高い (波長が短い) 方が音が高い
音が大きくて低い 音が小さくて高い比較
© historia Inc.
音の大きさを取得する
 今の音の大きさを知りたい → 振幅を取ればよい
 ある時点での変位を見るだけでは振幅はわからない
(振幅は大きいのに)
この時点での変位は0
© historia Inc.
音の大きさを取得する
 欲しいのは変位の包絡線
→ これを取得するために EnvelopeFollower を使う
 Envelope = 包絡線、Follower = 追跡者
© historia Inc.
新機能 : EnvelopeFollower
 EnvelopeFollower は
以下の組み合わせで動作する
 通知送信側となる
SourceEffect
 通知受信側となる
ActorComponent
© historia Inc.
SourceEffectEnvelopeFollower
 通常の SourceEffect
 EnvelopeFollower
計算
→ 結果を出力に反映
入力
出力
(音が変わる)
計算
→ 結果を外部に通知
入力
出力
(音は変わらない)
受信側振幅
© historia Inc.
Modular Synth
Component
Audio MIDI
MIDI Device
Support Plugin
Unreal Engine
Modular Synth
Component
デモの構成図上では…
振幅
ビジュアライズ
Envelope
Follower
Listener
Component
Source Effect
Envelope Follower
Preset
© historia Inc.
EnvelopeFollower の使い方
 他の SourceEffect と同じように以下の手順を行う
 SourceEffectPreset を作成して
プリセット値を設定する
 SourceEffectPresetChain を作成して
SourceEffectPreset をセットする
 Source に
SourceEffectChain をセットする
© historia Inc.
EnvelopeFollower の使い方
 振幅情報を利用したい Actor の Blueprint にて
EnvelopeFollowerListenerComponent (受信側) を追加する
 SourceEffectEnvelopeFollowerPreset
型の変数を追加し、
Default 値として Preset (送信側) を設定する
© historia Inc.
EnvelopeFollower の使い方
 RegisterEnvelopeFollowerListener 関数 を使い、
受信側と送信側を結びつける
送信側
受信側
© historia Inc.
EnvelopeFollower の使い方
 EnvelopeFollowerListenerComponent の Event
OnEnvelopeFollowerUpdate を Event Graph に追加する
 この Event の Envelope Value から振幅情報を取得できる
© historia Inc.
[新] 音の高さ毎の
音の大きさを取得する
© historia Inc.
デモでは…
 スペクトル解析結果をビジュアライズ
(スペクトラムビジュアライザ)
© historia Inc.
波の分解
 複雑な波は
単純な波 (正弦波・余弦波) の足し算で
表すことができる
正弦波 (sin)
余弦波 (cos)
© historia Inc.
スペクトル解析
 複雑な波を単純な波に分解すると
各周波数における振幅がわかる
→ 音の高さ毎に音の大きさがわかる
(スペクトル解析)
低くて大きい音 高くて小さい音
+
周波数 (音の高さ)
© historia Inc.
Sound Visualizations Plugin を使う?
 関数 CalculateFrequencySpectrum で
スペクトル解析を行うことができる
© historia Inc.
Sound Visualizations Plugin の問題点
 エフェクトがかかる前の SoundWave の解析にしか対応していない
 .wav のヘッダ情報を読んで解析を行っているため
 Packaging に対応していない
 .wav のヘッダ情報を読む部分のコードが Editor only のため
 Epic の内部イベントで作られた実験的ツールであり、
開発者は今後フォローアップするつもりがない
 https://answers.unrealengine.com/questions/144483/packaging-
game-fails-with-audio-visualization-plug.html
© historia Inc.
スペクトル解析結果を通知する Source Effect の自作
 EnvelopeFollower と同じ仕組みで
振幅の代わりに スペクトル解析結果 を外部に通知する
SourceEffect を実装すれば
スペクトラムビジュアライザが作れる
受信側スペクトル
外部に通知
音はそのまま
© historia Inc.
スペクトル解析結果を通知する Source Effect の自作
 通知の送信方法や
受信側となる ActorComponent の実装は
EnvelopeFollower のソースコードを参考にする
 /Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Classes/SourceEffects/SourceEffectEnvel
opeFollower.h
 一定期間の変位値が必要なため、バッファリングを行う
 スペクトル解析処理は
Sound Visualizations Plugin のロジックを流用
 高速フーリエ変換ライブラリ Kiss FFT が使用されている
© historia Inc.
Modular Synth
Component
Audio MIDI
MIDI Device
Support Plugin
Unreal Engine
Modular Synth
Component
デモの構成図上では…
スペクトル解析結果
ビジュアライズ
Spec
Analizer
Listener
Component
Source Effect
Spec Analizer
Preset
© historia Inc.
スペクトル解析結果を通知する Source Effect の自作
 SourceEffect の効果が反映されるスペクトラムビジュアライザが完成
 Low Pass Filter をかけると
高音のスペクトル値が小さくなることが確認できる
© historia Inc.
まとめ
© historia Inc.
まとめ
 Unreal Engine の標準オーディオ機能だけでも
多くのことができるようになりそう!
 オーディオミドルウェアを採用しないプロジェクトにおいて
音による表現を諦めずに済むケースが多くなるかと思います
 とはいえまだ Early Access Preview なので、安定性に不安が残ります
 標準オーディオ機能の他にも、オーディオミドルウェア、
Market Place の Plugin など、いろいろな選択肢があります
 機能だけでなく、ワークフロー、過去の資産、予算などを考慮した上で
適切なものを選択しましょう
© historia Inc.
ご清聴ありがとうございました!

Contenu connexe

Tendances

目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
 

Tendances (20)

UE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成についてUE4を用いたTPS制作事例 EDF:IR レベル構成について
UE4を用いたTPS制作事例 EDF:IR レベル構成について
 
猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem 猫でも分かるUE4.22から入ったSubsystem
猫でも分かるUE4.22から入ったSubsystem
 
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling-  (historia様ご講演)  #ue4ddUE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling-  (historia様ご講演)  #ue4dd
UE4 MultiPlayer Online Deep Dive 基礎編2 -Traveling- (historia様ご講演) #ue4dd
 
"有翼のフロイライン Wing of Darkness"と歩むUE4の世界
"有翼のフロイライン Wing of Darkness"と歩むUE4の世界"有翼のフロイライン Wing of Darkness"と歩むUE4の世界
"有翼のフロイライン Wing of Darkness"と歩むUE4の世界
 
UE4におけるレベル制作事例
UE4におけるレベル制作事例  UE4におけるレベル制作事例
UE4におけるレベル制作事例
 
UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計UE4におけるキャラクタークラス設計
UE4におけるキャラクタークラス設計
 
猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版猫でも分かる Control Rig UE4.25 版
猫でも分かる Control Rig UE4.25 版
 
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
 
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
 
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
UE4 コリジョン検証 -HitとOverlapイベントが発生する条件について-
 
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 
カリギュラオーバードーズにおけるUE4へのデータ移植の手引き
カリギュラオーバードーズにおけるUE4へのデータ移植の手引きカリギュラオーバードーズにおけるUE4へのデータ移植の手引き
カリギュラオーバードーズにおけるUE4へのデータ移植の手引き
 
出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと出張ヒストリア ブループリントを書くにあたって大切なこと
出張ヒストリア ブループリントを書くにあたって大切なこと
 
UE4ローカライズ事例 (UE4 Localization Deep Dive)
UE4ローカライズ事例 (UE4 Localization Deep Dive)UE4ローカライズ事例 (UE4 Localization Deep Dive)
UE4ローカライズ事例 (UE4 Localization Deep Dive)
 
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
Unreal Engineを使用した商用タイトルで のノンフォトリアルレンダリング(NPR)事例
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編60fpsアクションを実現する秘訣を伝授 基礎編
60fpsアクションを実現する秘訣を伝授 基礎編
 
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
聖剣伝説3でのUE4利用事例の紹介~Making of Mana | UNREAL FEST EXTREME 2020 WINTER
 

Similaire à 【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?

SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
IGDA Japan SIG-Audio
 
SimpleAudioEngine のカスタマイズ
SimpleAudioEngine のカスタマイズSimpleAudioEngine のカスタマイズ
SimpleAudioEngine のカスタマイズ
Akihiro Matsuura
 
モバイル×VRにおける3Dサウンド実践
モバイル×VRにおける3Dサウンド実践モバイル×VRにおける3Dサウンド実践
モバイル×VRにおける3Dサウンド実践
GREE/Art
 

Similaire à 【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!? (19)

ソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミングソフトシンセを作りながら学ぶPythonプログラミング
ソフトシンセを作りながら学ぶPythonプログラミング
 
【Unity道場スペシャル 2017札幌】超初心者向け!Unityのオーディオ機能を使ってみよう
【Unity道場スペシャル 2017札幌】超初心者向け!Unityのオーディオ機能を使ってみよう【Unity道場スペシャル 2017札幌】超初心者向け!Unityのオーディオ機能を使ってみよう
【Unity道場スペシャル 2017札幌】超初心者向け!Unityのオーディオ機能を使ってみよう
 
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
SIG-Audio#9 FINAL FANTASY XIII シリーズの音響制作から考える多様化ニーズへの対応
 
プログラミング講座
プログラミング講座プログラミング講座
プログラミング講座
 
SimpleAudioEngine のカスタマイズ
SimpleAudioEngine のカスタマイズSimpleAudioEngine のカスタマイズ
SimpleAudioEngine のカスタマイズ
 
「Adx2 LE」Unity活用編 初~中級編
「Adx2 LE」Unity活用編 初~中級編「Adx2 LE」Unity活用編 初~中級編
「Adx2 LE」Unity活用編 初~中級編
 
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
 
Unreal Engine 4 Education 3 シーケンサーでリアルタイム映像作成
Unreal Engine 4 Education 3 シーケンサーでリアルタイム映像作成Unreal Engine 4 Education 3 シーケンサーでリアルタイム映像作成
Unreal Engine 4 Education 3 シーケンサーでリアルタイム映像作成
 
iOSサウンドTIPS〜作成から再生まで
iOSサウンドTIPS〜作成から再生までiOSサウンドTIPS〜作成から再生まで
iOSサウンドTIPS〜作成から再生まで
 
重い音楽と軽い音楽 欧米と日本のゲーム音楽の違いについて
重い音楽と軽い音楽 欧米と日本のゲーム音楽の違いについて重い音楽と軽い音楽 欧米と日本のゲーム音楽の違いについて
重い音楽と軽い音楽 欧米と日本のゲーム音楽の違いについて
 
モバイル×VRにおける3Dサウンド実践
モバイル×VRにおける3Dサウンド実践モバイル×VRにおける3Dサウンド実践
モバイル×VRにおける3Dサウンド実践
 
Unity サウンドTips 2019
Unity サウンドTips 2019Unity サウンドTips 2019
Unity サウンドTips 2019
 
音にこだわる! ネイティブアプリだからできる 快適なサウンド演出
音にこだわる! ネイティブアプリだからできる 快適なサウンド演出音にこだわる! ネイティブアプリだからできる 快適なサウンド演出
音にこだわる! ネイティブアプリだからできる 快適なサウンド演出
 
ソーシャルゲームサウンドMeetup_vol.1_SQUARE ENIX編
ソーシャルゲームサウンドMeetup_vol.1_SQUARE ENIX編ソーシャルゲームサウンドMeetup_vol.1_SQUARE ENIX編
ソーシャルゲームサウンドMeetup_vol.1_SQUARE ENIX編
 
130622-gcs2013-presentation-c
130622-gcs2013-presentation-c130622-gcs2013-presentation-c
130622-gcs2013-presentation-c
 
Gcm#3 グリーモバイルサウンドの歩み・変遷
Gcm#3 グリーモバイルサウンドの歩み・変遷Gcm#3 グリーモバイルサウンドの歩み・変遷
Gcm#3 グリーモバイルサウンドの歩み・変遷
 
Unityで音を制す
Unityで音を制すUnityで音を制す
Unityで音を制す
 
SIG-Audio #14 GDC Audio報告会「最先端のInteractive Musicとその未来」
SIG-Audio #14 GDC Audio報告会「最先端のInteractive Musicとその未来」SIG-Audio #14 GDC Audio報告会「最先端のInteractive Musicとその未来」
SIG-Audio #14 GDC Audio報告会「最先端のInteractive Musicとその未来」
 
SIG-Audio#13 GDC2016オーディオ報告会「日本語翻訳されないサウンドデザイン技術を求めて」
SIG-Audio#13 GDC2016オーディオ報告会「日本語翻訳されないサウンドデザイン技術を求めて」SIG-Audio#13 GDC2016オーディオ報告会「日本語翻訳されないサウンドデザイン技術を求めて」
SIG-Audio#13 GDC2016オーディオ報告会「日本語翻訳されないサウンドデザイン技術を求めて」
 

Plus de historia_Inc

Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~
Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~
Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~
historia_Inc
 
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
historia_Inc
 
実戦投入事例! Niagaraで地球の風をビジュアライズ!
実戦投入事例! Niagaraで地球の風をビジュアライズ!実戦投入事例! Niagaraで地球の風をビジュアライズ!
実戦投入事例! Niagaraで地球の風をビジュアライズ!
historia_Inc
 
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
historia_Inc
 
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
historia_Inc
 
【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見
【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見
【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見
historia_Inc
 
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
historia_Inc
 
映像屋さんのためのリアルタイムBG制作
映像屋さんのためのリアルタイムBG制作映像屋さんのためのリアルタイムBG制作
映像屋さんのためのリアルタイムBG制作
historia_Inc
 
【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション
【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション
【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション
historia_Inc
 
[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦
[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦
[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦
historia_Inc
 

Plus de historia_Inc (20)

電撃! ゲリラ的ゲームプロデュース論
電撃! ゲリラ的ゲームプロデュース論電撃! ゲリラ的ゲームプロデュース論
電撃! ゲリラ的ゲームプロデュース論
 
Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~
Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~
Caligula2 フィールド開発事例 ~遊びの設計から、ゲームの世界の完成まで~
 
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
UE5制作事例 “The Market of Light” ~Nanite/Lumenへの挑戦~
 
実戦投入事例! Niagaraで地球の風をビジュアライズ!
実戦投入事例! Niagaraで地球の風をビジュアライズ!実戦投入事例! Niagaraで地球の風をビジュアライズ!
実戦投入事例! Niagaraで地球の風をビジュアライズ!
 
コンテンツサンプルを楽しむ"超"初心者の為のNiagara
コンテンツサンプルを楽しむ"超"初心者の為のNiagaraコンテンツサンプルを楽しむ"超"初心者の為のNiagara
コンテンツサンプルを楽しむ"超"初心者の為のNiagara
 
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
Megascansを使った効率化と楽しい絵作り ~Cutting-Edge Test Drive制作事例~
 
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
ゲーム開発を乗りこなせ! ヒストリア流ゲーム開発マネジメント手法
 
【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見
【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見
【出張ヒストリア2019】Oculus Quest フリーロームVRを実現するための技術的知見
 
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメントヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
ヒストリア HelixCore(Perforce) 運用レギュレーションドキュメント
 
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
「Helix Core」導入事例紹介 『小~中規模事例 "Unreal Engine 4 × Helix Core ヒストリア運用レギュレーション紹介"』
 
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
【出張ヒストリア2019】COLORSプロジェクトフォトグラメトリに挑戦してみた!
 
映像屋さんのためのリアルタイムBG制作
映像屋さんのためのリアルタイムBG制作映像屋さんのためのリアルタイムBG制作
映像屋さんのためのリアルタイムBG制作
 
【出張ヒストリア2018】モーションキャプチャーを取り入れるには?
【出張ヒストリア2018】モーションキャプチャーを取り入れるには? 【出張ヒストリア2018】モーションキャプチャーを取り入れるには?
【出張ヒストリア2018】モーションキャプチャーを取り入れるには?
 
【出張ヒストリア2018】Caligula Overdose 開発ワークフロー アラカルト
【出張ヒストリア2018】Caligula Overdose 開発ワークフロー アラカルト【出張ヒストリア2018】Caligula Overdose 開発ワークフロー アラカルト
【出張ヒストリア2018】Caligula Overdose 開発ワークフロー アラカルト
 
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
【出張ヒストリア2018】Caligula OverdoseでのUIデザインアプローチ
 
【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション
【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション
【出張ヒストリア2017】 建てる前に体験する時代到来! Enlightenを使用した建築ビジュアライゼーション
 
[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦
[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦
[UNREAL FEST EAST 2017] VRゲームairtone制作事例 - VRを活かす3つのゲームデザイン的挑戦
 
【出張ヒストリア2017】 Art of airtone
【出張ヒストリア2017】 Art of airtone【出張ヒストリア2017】 Art of airtone
【出張ヒストリア2017】 Art of airtone
 
【出張ヒストリア2017】 想像と違ってた! VRUI作りのコツ
【出張ヒストリア2017】 想像と違ってた! VRUI作りのコツ【出張ヒストリア2017】 想像と違ってた! VRUI作りのコツ
【出張ヒストリア2017】 想像と違ってた! VRUI作りのコツ
 
VR音ゲー最前線! WwiseとUE4で実現Airtone
VR音ゲー最前線! WwiseとUE4で実現AirtoneVR音ゲー最前線! WwiseとUE4で実現Airtone
VR音ゲー最前線! WwiseとUE4で実現Airtone
 

【出張ヒストリア2017】新しいUnreal AudioEngineでインタラクティブサウンドコンテンツはどこまでつくれるか!?

  • 1. © historia Inc. 新しい Unreal Audio Engine で インタラクティブサウンドコンテンツは どこまでつくれるか!? historia Inc. 加藤 優作
  • 2. © historia Inc. 自己紹介  加藤 優作 (エンジニア)  開発実績  ハネチャリ (VR Zone Shinjuku にて稼働中)  コミュニティ活動  Gray ちゃん 3D モデル制作
  • 3. © historia Inc. 新しいオーディオ機能  Unreal Engine 4.16 から 新しいオーディオ機能が多数追加されました!  Unreal Audio Engine  新しいオーディオエンジン  サウンドエフェクト機能の追加など  Synthesis  音色を作成して鳴らすことができる  Steam Audio  物理ベースオーディオ体験の実現
  • 4. © historia Inc. 発表概要  新しいオーディオ機能の追加によって Unreal Engine の機能だけで どこまで面白いことができるようになったのか を デモを作成しながら検証  使用した各オーディオ機能について  それを使うとどんなことができるのか  どのように使うか を解説
  • 5. © historia Inc. 諸注意  Unreal Audio Engine 及び Synthesis Plugin は Early Access Preview 扱いです (UE 4.16 現在)  今後機能や使い方が変更になる可能性があります  なるべくわかりやすい解説にするために 内容の正確性・厳密性を犠牲にしています  新機能以外の解説もします  検証環境  Unreal Engine 4.16.3  Windows 10
  • 8. © historia Inc. デモの解説  インタラクティブなオーディオビジュアライザ  キーボードを弾く “楽器演奏者” と マウスを操作する “ゲームプレイヤー” の 2 人が必要
  • 9. © historia Inc. デモの解説 ① BGM に合わせて キーボードを弾く
  • 10. © historia Inc. デモの解説 ① BGM に合わせて キーボードを弾く ② 鍵盤エフェクトが出る
  • 11. © historia Inc. デモの解説 ① BGM に合わせて キーボードを弾く ③ 鍵盤エフェクトを ロックオン・破壊 ② 鍵盤エフェクトが出る
  • 12. © historia Inc. デモの解説 ① BGM に合わせて キーボードを弾く ④ 破片エフェクトがキーボードに当たって BGM に合った音が鳴る ③ 鍵盤エフェクトを ロックオン・破壊 ② 鍵盤エフェクトが出る
  • 13. © historia Inc. デモの解説 ① BGM に合わせて キーボードを弾く ④ 破片エフェクトがキーボードに当たって BGM に合った音が鳴る ③ 鍵盤エフェクトを ロックオン・破壊 ② 鍵盤エフェクトが出る ゲームプレイが音に影響を与える 楽器演奏がゲームに影響を与える
  • 15. © historia Inc. MIDI  演奏データ (MIDI Event) を 機器間でやりとりするための世界共通規格  MIDI – Wikipedia  楽譜のようなもの  実際の音のデータではない  MIDI Event の例 : Note On  どのチャンネル (楽器パート) の  どの高さの音を  どれくらいの強さで弾いた?
  • 16. © historia Inc. Audio  音そのもののデータのこと  .wav / .mp3 / .ogg
  • 19. © historia Inc. Modular Synth Component デモの音データの流れ Audio MIDI MIDI Device Support Plugin Unreal Engine Modular Synth Component
  • 20. © historia Inc. Audio 新機能を使うための準備
  • 21. © historia Inc. Audio 新機能を使うための準備  Unreal Audio Engine は 4.16 ではデフォルトで有効になっていない  Unreal Audio Engine 開発チームの方が書いた Forum の Thread を参考にする  4.16 New Audio Engine: Early Access Quick-Start Guide  https://forums.unrealengine.com/showthread.php?143974-4-16-New- Audio-Engine-Early-Access-Quick-Start-Guide&styleid=6  新機能の使い方もここに載っています
  • 22. © historia Inc. 手順 (Windows) 1. Config (.ini) を変更する 2. コマンドラインオプションを指定してプロジェクトを開く 3. プラグインを有効にする 4. (Editor Preferences を変更する)
  • 23. © historia Inc. 手順 1. Config (.ini) を変更する  編集するファイル (どちらか一方)  <エンジンディレクトリ>/Engine/Config/Windows/WindowsEngine.ini  <プロジェクトディレクトリ>/Config/Windows/WindowsEngine.ini  以下を追記する → これで、手順 2 で指定するコマンドラインオプションが有効に [Audio] AudioDeviceModuleName=AudioMixerXAudio2
  • 24. © historia Inc. 手順 2. コマンドラインオプションを指定してプロジェクトを開く  -audiomixer オプションを指定してプロジェクトを開く  コマンドプロンプトで以下を実行する  具体例  .bat ファイル化を推奨 <UE4Editor.exe のパス> < .uproject のパス > –audiomixer “C:Program FilesEpic GamesUE_4.16EngineBinariesWin64UE4Editor.exe” “C:Test_AudioEngineTest_AudioEngine.uproject” –audiomixer 半角スペース 半角スペース
  • 25. © historia Inc. 手順 3. プラグインを有効にする  Audio -> Sound Utilities  Audio -> Synthesis (Synth を使う場合)
  • 26. © historia Inc. (手順 4. Editor Preferences を変更する) ※ 必須ではありません  Editor Preferences を開き、以下の設定を変更する  Level Editor -> Miscellaneous -> Sound -> Allow Background Audio : ON  エディタからフォーカスが外れてもオーディオが再生される  Level Editor -> Miscellaneous -> Sound -> Enable Editor Sounds : OFF  エディタのサウンドが再生されなくなる  Level Editor -> Play -> Play in Editor -> Enable PIE Enter and Exit Sounds : OFF によって再生されなくなる Play / Stop / Eject / Possess の音に加えて Compile 時の音なども再生されなくなる
  • 27. © historia Inc. (手順 4. Editor Preferences を変更する) ※ 必須ではありません  Editor Preferences を開き、以下の設定を変更する  General -> Miscellaneous -> Performance -> Use Less CPU when in Background : OFF  エディタからフォーカスが外れても CPU 消費が少なくならない
  • 29. © historia Inc. 目次  [旧] キーボードからの MIDI Event を受信する  [新] シンセサイザーで音を鳴らす  [旧] 曲の拍のタイミングを取得する  [新] 音にエフェクトをかける  [新] 現在の音の大きさを取得する  [新] 音の高さ毎の音の大きさを取得する
  • 30. © historia Inc. [旧] キーボードからの MIDI Event を受信する
  • 31. © historia Inc. デモでは…  (機材の) キーボードを弾くと (画面の) キーボードの対応するキーが光ったり Particle が出たりする
  • 32. © historia Inc. Modular Synth Component Audio MIDI Unreal Engine Modular Synth Component デモの構成図上では… ビジュアライズ MIDI Device Support Plugin
  • 33. © historia Inc. MIDI Device Support Plugin  MIDI Event の受信を行うための Plugin  Plugin の説明には “send and receive MIDI events” と書かれているが、送信処理が見当たらない…
  • 34. © historia Inc. MIDI Device Support Plugin の使い方  FindMIDIDevices 関数 で 接続中の MIDI Device を列挙する  FoundMIDIDevice 構造体 のリストから使いたい Device を判断  Device の名前  Device が既に使用されているかどうか  etc...
  • 35. © historia Inc. MIDI Device Support Plugin の使い方  CreateMIDIDeviceController 関数 で MIDIDeviceController を作成  MIDI Event 受信時に呼ばれる OnMIDIEvent に Event を Bind
  • 36. © historia Inc. MIDI Device Support Plugin の使い方  作成した MIDIDeviceController は 変数に Set しないと GC に回収されてしまうので注意
  • 37. © historia Inc. MIDI Device Support Plugin の使い方  Event Type で MIDI Event の種類がわかる
  • 38. © historia Inc. MIDI Device Support Plugin の使い方  受信した MIDI Event が Note On の場合  Controll ID = ノート番号 (中央 C = 60)  Velocity = 音の強さ (数字が大きいほど音が強い、範囲 [0, 127])
  • 39. © historia Inc. MIDI Device Support Plugin の使い方  受信した MIDI Event が Note Off の場合  Controll ID = ノート番号 (中央 C = 60)
  • 40. © historia Inc. [新] シンセサイザーで音を鳴らす
  • 41. © historia Inc. デモでは…  破片エフェクトがキーボードに当たった時の音を生成
  • 42. © historia Inc. シンセサイザー (Synthesizer / Synth) とは?  電気的に音を合成する機器 のこと  パラメータ変更で色々な音を作ることができる  色々な合成方式がある  減算合成  加算合成  グラニュラー  etc...  シンセ ≠ キーボード  鍵盤付きシンセが多いが 音の合成機能があれば鍵盤がなくてもシンセ The Future of Audio in Unreal Engine | GDC 2017 | Unreal Engine – YouTube より https://www.youtube.com/watch?v=ErejaBCicds
  • 43. © historia Inc. Unreal Engine の Synth の種類と日本語情報  Modular Synth (減算合成)  UE4 4.16のPreview版の新Audio機能の所感など | 株式会社プラスシグナル  https://www.plus-signal.com/single-post/2017/05/15/UE4- 416%E3%81%AEPreview%E7%89%88%E3%81%AEAudio%E6%A9%9F%E8%83%BD%E3%81%AE%E6%89 %80%E6%84%9F%E3%81%AA%E3%81%A9  UE4 Modular Synthを触ってみる。 - UE4初心者が頑張ってるブログ  http://mozpaca.hatenablog.com/entry/20170514/1494754900  Granular Synth  【UE4】Unreal Engine 4.16 PreviewのGranular Synthを触ってみる - 大福未来研究所  http://dfkfuturelab.hatenablog.com/entry/2017/05/16/081659  Synth Sample Player (?)
  • 44. © historia Inc. Modular Synth (減算合成) The Future of Audio in Unreal Engine | GDC 2017 | Unreal Engine – YouTube より https://www.youtube.com/watch?v=ErejaBCicds 波の形を決める フィルタをかける 音量変化をコントロールする (音としては使わない) 波などで パラメータをコントロールする
  • 45. © historia Inc. Modular Synth の使い方  ModularSynthComponent を追加  NoteOn 関数 で音を再生  引数 Duration で音が鳴る長さを指定  負の値を入れると NoteOff までずっと鳴る  NoteOff 関数 で音を停止
  • 46. © historia Inc. Modular Synth の使い方  引数 Note / Velocity には MIDI Event と同じルールで ノート番号 / 音の強さ を与える  MIDI Event の値をそのまま Synth に渡せば 「キーボードを弾くと Unreal で音が鳴る」 ロジックが完成
  • 47. © historia Inc. Modular Synth の使い方  音のパラメータを変更するには Set Synth Preset 関数 を使う  ModularSynthPreset 構造体 を作って渡せばよいが…
  • 48. © historia Inc. Modular Synth の使い方  メンバ変数が多い!  Preset を Asset として定義して呼び出す → ModularSynthPresetBank を使う
  • 49. © historia Inc. ModularSynthPresetBank を使う  Add New -> Sounds -> Modular Synth Preset Bank を選択  Preset を編集  複数の Preset を作成できる
  • 50. © historia Inc. ModularSynthPresetBank を使う  ModularSynthPresetBank の参照変数を作成し、 そこから使用する Preset を取得する
  • 51. © historia Inc. Preset Q&A  Q. 複数の Note を NoteOn しているのに 1 つしか鳴らない  A. Enable Polyphony を true にしてください  Q. 音痴になった  A.  Osc 1 or 2 の Semitones と Cents を 0 にしてください  Chorus Enabled を false にしてください
  • 52. © historia Inc. [旧] 曲の拍のタイミングを取得する
  • 53. © historia Inc. デモでは…  各小節の 1 拍目に リング状の Mesh を Spawn  破片エフェクトが リズムに合うタイミング で BGM のコードに合う鍵盤 に当たるように調整
  • 54. © historia Inc. OnAudioPlaybackPercent  AudioComponent の Event  PlaybackPercent は現在の再生率を返す  0.0 から始まり 1.0 で Audio の最後に到達  ループ再生すると 1 を超える  PlayingSoundWave は現在再生中の SoundWave を返す  SoundWave の Duration (Audio の長さ (秒)) x Playback Percent = 現在の再生位置 (秒)
  • 55. © historia Inc.  BPM = Beats Per Minite  1 分間における拍の数  BPM 60 = 1 分間に 60 拍 = 1 秒で 1 拍  60 ÷ BPM = 1 拍にかかる秒数  現在の再生位置 ÷ 1 拍にかかる秒数 = 現在の累計拍数 (0 始まり)  現在の累計拍数 ÷ 1 小節における拍の数 + 1 =  現在の累計拍数 % 1 小節における拍の数 + 1 = 現在の小節数 現在の小節数・拍数の求め方 現在の拍数
  • 58. © historia Inc. BGM のコードに合った音の選択  何小節目の何拍目に 何のコードになるかを DataTable で管理  計算で求めた現在の小節数・拍数から コードに合った音を選定する  例 : 21 小節目の 1 拍目に F minor 7th のコードになる → コードに合った音は F / A♭ / C / E♭
  • 59. © historia Inc. [新] 音にエフェクトをかける
  • 60. © historia Inc. デモでは…  キーボード (文字を打つ方) の操作で BGM に Low Pass Filter がかかり、音がこもった感じに  Filter のかかり具合を実行時に調整  Filter が強くかかるほど彩度が落ちるように
  • 61. © historia Inc.  サウンドエフェクトとは?  音に対して何らかの加工を行うもの  種類  Delay : やまびこ効果 (やっほー やっほー)  Low Pass Filter : 低音 (Low) を通す (Pass) → 高音をカットする  etc... サウンドエフェクト エフェクター (エフェクトをかける機材) エフェクター
  • 62. © historia Inc. Modular Synth Component Audio MIDI MIDI Device Support Plugin Unreal Engine デモの構成図上では… Modular Synth Component
  • 63. © historia Inc. 新機能 : SourceEffect  SourceEffect  エフェクトそのもの  SourceEffectPreset  SourceEffect にプリセット値を与えたもの  同種の SourceEffect に対して複数作成できる  SourceEffectPresetChain  SourceEffectPreset を数珠繋ぎにしたもの Chain Delay エフェクトです 1 秒遅らせる Delay エフェクトです 2 秒遅らせる Delay エフェクトです A B AC D
  • 64. © historia Inc. SourceEffect の “Source” って何?  Source とは以下のものを指す  SoundWave  SoundCue  Synth (ModularSynth など)  Audio Component は Source ではない  つまり、SourceEffect = 上記の要素に対してかけることができるエフェクト  他のエフェクトとして、 SoundSubmix に対してかけることができる SubmixEffect がある
  • 65. © historia Inc. SourceEffect の使い方 1. SourceEffect を作成する (C++) (解説後回し) 2. SourceEffectPreset を作成して プリセット値を設定する 3. SourceEffectPresetChain を作成して SourceEffectPreset をセットする 4. Source に SourceEffectChain をセットする Chain Delay エフェクトです 1 秒遅らせる Delay エフェクトですA AC D Chain
  • 66. © historia Inc. 手順 2. SourceEffectPreset を作成して プリセット値を設定する  Content Browser -> Add New -> Sounds -> Source Effect Preset を選択
  • 67. © historia Inc. 手順 2. SourceEffectPreset を作成して プリセット値を設定する  SourceEffect を選択  デフォルトで 11 種類
  • 68. © historia Inc. 手順 2. SourceEffectPreset を作成して プリセット値を設定する  作成した SourceEffectPreset を開き、 Details パネル -> Audio -> Effects -> Settings の値を設定する
  • 69. © historia Inc. 手順 3. SourceEffectPresetChain を作成して SourceEffectPreset をセットする  Content Browser -> Add New -> Sounds -> Source Effect Preset Chain を選択
  • 70. © historia Inc. 手順 3. SourceEffectPresetChain を作成して SourceEffectPreset をセットする  作成した SourceEffectPresetChain を開き、 Details パネル -> Source Effect -> Chain に SourceEffectPreset をセットする
  • 71. © historia Inc. 手順 3. SourceEffectPresetChain を作成して SourceEffectPreset をセットする  エフェクトは index 0 から順番にかかります  順番が異なると結果も異なるので注意  Bypass (迂回) で エフェクトがかからないようにできる Chain Chain Chain
  • 72. © historia Inc. 手順 4. Source に SourceEffectChain をセットする  SoundWave / SoundCue / Synth Component を開き、 Details パネル -> Effects-> Source Effect Chain に SourceEffectChain をセットする
  • 73. © historia Inc. 確認方法  SoundWave / SoundCue の場合は Content Browser 上で再生すれば エフェクトがかかった状態で確認できる
  • 74. © historia Inc. Blueprint でできること  SourceEffectPresetChain に対する SourceEffectPreset の追加・削除  SourceEffectPresetChain 内の SourceEffectPreset の Bypass 設定
  • 75. © historia Inc. Blueprint でできること  SourceEffectPreset の Settings の変更 (エフェクトの実行時設定調整)
  • 76. © historia Inc. 手順 1. SourceEffect を作成する (C++)  Add New -> New C++ Class を選択する  Show All Classes のチェックをオンにして SoundEffectSourcePreset を検索・選択し、Next を選択
  • 77. © historia Inc. 手順 1. SourceEffect を作成する (C++)  Name に “SourceEffect<エフェクト名>” と入力  このように命名すると、デフォルトの SourceEffect 関連クラスと命名規則が合います  Create Class を選択
  • 78. © historia Inc. 手順 1. SourceEffect を作成する (C++)  3 つのクラス・構造体が 自動的に作成される  FSourceEffect~Settings  エフェクト設定の構造体  FSourceEffect~  音データの処理を担当するクラス  FSourceEffect~Preset  上記 2 つを Editor に公開するためのクラス
  • 79. © historia Inc. 手順 1. SourceEffect を作成する (C++)  作成した時点で “Volume を変更するエフェクト” として機能する
  • 80. © historia Inc. 手順 1. SourceEffect を作成する (C++)  ソースに手を加える部分  FSourceEffect~Settings  設定項目をメンバ変数として追加  FSourceEffect~  メンバ関数 Init を override  Audio 処理前に呼び出される初期化用関数  メンバ関数 OnPresetChanged を override  Preset (Settings) の設定が変更されたときに呼び出される関数  メンバ関数 ProcessAudio を override  Audio 処理を行う関数
  • 81. © historia Inc. 手順 1. SourceEffect を作成する (C++)  関数 ProcessAudio  引数 InData.AudioFrame として渡される音の波の変位を元に計算を行い、 引数 OutData.AudioFrame に新しい変位を代入することで出力を行う  InData, OutData 共に値の範囲は [-1.0, 1.0)  InData はその瞬間の波の変位なので、 ある期間内の波の変位が欲しい場合は バッファリングする必要がある  波の変位とは?  ある時点での波の高さの値のこと 変位 0.5 ある時点
  • 82. © historia Inc. 手順 1. SourceEffect を作成する (C++)  “Volume を変更するエフェクト” のコード例 InData.AudioFrame[Channel] = 0.5 OutData.AudioFrame[Channel] = 0.25 × VolumeScale (例 : 0.5)
  • 83. © historia Inc. [新] 現在の音の大きさを取得する
  • 84. © historia Inc. デモでは…  キーボードとスペクトラムビジュアライザが BGM の音の大きさに合わせて拡大・縮小する
  • 85. © historia Inc. 音波  空気の圧力変化の波  振幅が大きい方が音が大きい  周波数が高い (波長が短い) 方が音が高い 音が大きくて低い 音が小さくて高い比較
  • 86. © historia Inc. 音の大きさを取得する  今の音の大きさを知りたい → 振幅を取ればよい  ある時点での変位を見るだけでは振幅はわからない (振幅は大きいのに) この時点での変位は0
  • 87. © historia Inc. 音の大きさを取得する  欲しいのは変位の包絡線 → これを取得するために EnvelopeFollower を使う  Envelope = 包絡線、Follower = 追跡者
  • 88. © historia Inc. 新機能 : EnvelopeFollower  EnvelopeFollower は 以下の組み合わせで動作する  通知送信側となる SourceEffect  通知受信側となる ActorComponent
  • 89. © historia Inc. SourceEffectEnvelopeFollower  通常の SourceEffect  EnvelopeFollower 計算 → 結果を出力に反映 入力 出力 (音が変わる) 計算 → 結果を外部に通知 入力 出力 (音は変わらない) 受信側振幅
  • 90. © historia Inc. Modular Synth Component Audio MIDI MIDI Device Support Plugin Unreal Engine Modular Synth Component デモの構成図上では… 振幅 ビジュアライズ Envelope Follower Listener Component Source Effect Envelope Follower Preset
  • 91. © historia Inc. EnvelopeFollower の使い方  他の SourceEffect と同じように以下の手順を行う  SourceEffectPreset を作成して プリセット値を設定する  SourceEffectPresetChain を作成して SourceEffectPreset をセットする  Source に SourceEffectChain をセットする
  • 92. © historia Inc. EnvelopeFollower の使い方  振幅情報を利用したい Actor の Blueprint にて EnvelopeFollowerListenerComponent (受信側) を追加する  SourceEffectEnvelopeFollowerPreset 型の変数を追加し、 Default 値として Preset (送信側) を設定する
  • 93. © historia Inc. EnvelopeFollower の使い方  RegisterEnvelopeFollowerListener 関数 を使い、 受信側と送信側を結びつける 送信側 受信側
  • 94. © historia Inc. EnvelopeFollower の使い方  EnvelopeFollowerListenerComponent の Event OnEnvelopeFollowerUpdate を Event Graph に追加する  この Event の Envelope Value から振幅情報を取得できる
  • 95. © historia Inc. [新] 音の高さ毎の 音の大きさを取得する
  • 96. © historia Inc. デモでは…  スペクトル解析結果をビジュアライズ (スペクトラムビジュアライザ)
  • 97. © historia Inc. 波の分解  複雑な波は 単純な波 (正弦波・余弦波) の足し算で 表すことができる 正弦波 (sin) 余弦波 (cos)
  • 98. © historia Inc. スペクトル解析  複雑な波を単純な波に分解すると 各周波数における振幅がわかる → 音の高さ毎に音の大きさがわかる (スペクトル解析) 低くて大きい音 高くて小さい音 + 周波数 (音の高さ)
  • 99. © historia Inc. Sound Visualizations Plugin を使う?  関数 CalculateFrequencySpectrum で スペクトル解析を行うことができる
  • 100. © historia Inc. Sound Visualizations Plugin の問題点  エフェクトがかかる前の SoundWave の解析にしか対応していない  .wav のヘッダ情報を読んで解析を行っているため  Packaging に対応していない  .wav のヘッダ情報を読む部分のコードが Editor only のため  Epic の内部イベントで作られた実験的ツールであり、 開発者は今後フォローアップするつもりがない  https://answers.unrealengine.com/questions/144483/packaging- game-fails-with-audio-visualization-plug.html
  • 101. © historia Inc. スペクトル解析結果を通知する Source Effect の自作  EnvelopeFollower と同じ仕組みで 振幅の代わりに スペクトル解析結果 を外部に通知する SourceEffect を実装すれば スペクトラムビジュアライザが作れる 受信側スペクトル 外部に通知 音はそのまま
  • 102. © historia Inc. スペクトル解析結果を通知する Source Effect の自作  通知の送信方法や 受信側となる ActorComponent の実装は EnvelopeFollower のソースコードを参考にする  /Engine/Plugins/Runtime/Synthesis/Source/Synthesis/Classes/SourceEffects/SourceEffectEnvel opeFollower.h  一定期間の変位値が必要なため、バッファリングを行う  スペクトル解析処理は Sound Visualizations Plugin のロジックを流用  高速フーリエ変換ライブラリ Kiss FFT が使用されている
  • 103. © historia Inc. Modular Synth Component Audio MIDI MIDI Device Support Plugin Unreal Engine Modular Synth Component デモの構成図上では… スペクトル解析結果 ビジュアライズ Spec Analizer Listener Component Source Effect Spec Analizer Preset
  • 104. © historia Inc. スペクトル解析結果を通知する Source Effect の自作  SourceEffect の効果が反映されるスペクトラムビジュアライザが完成  Low Pass Filter をかけると 高音のスペクトル値が小さくなることが確認できる
  • 106. © historia Inc. まとめ  Unreal Engine の標準オーディオ機能だけでも 多くのことができるようになりそう!  オーディオミドルウェアを採用しないプロジェクトにおいて 音による表現を諦めずに済むケースが多くなるかと思います  とはいえまだ Early Access Preview なので、安定性に不安が残ります  標準オーディオ機能の他にも、オーディオミドルウェア、 Market Place の Plugin など、いろいろな選択肢があります  機能だけでなく、ワークフロー、過去の資産、予算などを考慮した上で 適切なものを選択しましょう