Post on 02-Jul-2015
description
CRI ADX2新機能レビュー会
2012-11-07(水)19:30 ~ 20:30
アジェンダ•WEG市川チャレンジのインタラクティブミュージックの実装例(Logic Proのデータ紹介、Unityデモ、Unityコード、CRI Atom Craftデータ)19:45~20:00
•CEDEC2012ワークショップのインタラクティブミュージックの実装例(Logic Proのデータ紹介、Unityデモ、Unityコード、CRI Atom Craftデータ)20:15~20:30
•新機能レビュー(CRI Atom Craftにて)20:45~21:00
リッチな音楽演出•音楽と同期して何かしたいですよね?•切り替わる時にインパクトのある音鳴らしたいですよね?
•サウンドツールだけで手軽に実装したいですよね?
そこで
CRI ADX2
CRI ADX2のメリット•デザインツールがシンプル最小の再生データから特殊な音の再生まで、一貫して「キュー」でデザインが行える。
•後からの拡張やメンテナンスがしやすい。•プログラムがシンプルになる極力コードを書かずに、サウンドクリエータの意図した音が再生可能になる。
Unity、Android、iPhone
•大量に音を入れてもバイナリサイズやメモリが小さく済む独自の圧縮音声(CRI HCA)が使える
•ハードに依存しない為クオリティ調整が楽•ループ再生もできる(奇麗にループします)
CRI ADX2
ゲームジャムでの実装例• 2日間という短い期間で作られたゲームでのサウンドの挑戦!
• WEG市川チャレンジでのインタラクティブミュージックの実装例として(Logic Proのデータ、Unityデモ、Unity
コード、Craftデータ)を紹介します。
やったこと• ステージが変わる毎に曲のアレンジが変化して飽きがこない
• 曲の変化は区切りの良いタイミング(ビート、小節など)で気持ちよい
• 音声によるダッキングで聞き取りやすい
• 敵キャラのやられ声のランダムリクエスト、効果音のランダムピッチで、賑やかに
• エフェクトもいろいろ使って豪華に
using UnityEngine;using System.Collections;
public class SoundManager : MonoBehaviour {�� public bool soundTest = false;�
CriAtomEx.CueInfo[] cueInfoList;//キュー情報リスト�� CriAtomSource atomSourceSerif = null;� CriAtomSource atomSourceBGM = null;�� string cueSheetName = "RoboYoung";
void Start (){� acb = CriAtom.GetAcb (cueSheetName);�� �
� � if (acb != null) {� � � cueInfoList = acb.GetCueInfoList ();//キュー情報取得� � }�
//AtomSource作成� � atomSourceSerif = gameObject.AddComponent<CriAtomSource> ();� � atomSourceSerif.cueSheet = cueSheetName;� � atomSourceBGM = gameObject.AddComponent<CriAtomSource> ();� � atomSourceBGM.cueSheet = cueSheetName;� �� � if (soundTest && cueInfoList != null) {� � � string tmpStr = "";� � � foreach (CriAtomEx.CueInfo cue in cueInfoList) {� � � � tmpStr += cue.name;� � � � tmpStr += ",";� � � }
� � � Debug.Log (tmpStr);//キュー名をデバッグ出力� � }� }
public void PlayDirect (EnumCueName cueEnum)� {� � atomSourceSerif.cueName = (cueNameList [(int)cueEnum]);� � atomSourceSerif.Play ();� }�� public void PlayGameOver ()� {� � atomSourceSerif.cueName = "gameover";� � atomSourceSerif.Play ();� � atomSourceBGM.Stop ();� }
public void PlayBGM (int stageNo)� {� � if (atomSourceBGM == null) return;� � CriAtomSource.Status status = atomSourceBGM.status;� � if ((status == CriAtomSource.Status.Stop) || //停止中または再生終了時(status == CriAtomSource.Status.PlayEnd)) {� � � atomSourceBGM.cueName = "bgm0";� � � this.playbackBGM = atomSourceBGM.Play ();//再生� � } else {� � � int cur = this.playbackBGM.GetCurrentBlockIndex ();� //今のブロックID� � � this.acb.GetCueInfo ("bgm0", out this.cueInfo);//キューインフォ取得� � � cur++;//次のブロックIDに� � � //�ブロック切り替え� � � this.playbackBGM.SetNextBlockIndex (cur % this.cueInfo.numBlocks);� � �� � � currentBlockNo = cur % this.cueInfo.numBlocks;//今のブロック値を設定� � }� }
まとめ• CRI ADX2を使うと簡単にリッチな音の演出ができます。
• ゲームジャムでの試用も検討しています。• 無料試用できます。• www.cri-mw.co.jp
CRI ADX2
CEDEC2012
• 45分で音を付けるワークショップの例
• CEDEC2012ワークショップのインタラクティブミュージックの実装(Logic Pro
のデータ紹介、Unityデモ、Unityコード、CRI Atom Craftデータ)
using UnityEngine;using System.Collections;using System.Collections.Generic;
public class SoundManager : MonoBehaviour {�� private string cueSheetName = "PinballMain";� �� private List<string> cueNameList = new List<string> ();//キュー名リスト�� CriAtomSource atomSourceSe;� CriAtomSource atomSourceBall;� CriAtomSource atomSourceBgm;� CriAtomSource atomSourceBumper;
void Awake ()� {� � //ACBロード� � CriAtomExAcb acb = CriAtom.GetAcb (cueSheetName);�� � CriAtomEx.CueInfo[] cueInfoList = acb.GetCueInfoList ();� � foreach (CriAtomEx.CueInfo cueInfo in cueInfoList) {
� � � cueNameList.Add (cueInfo.name);� //キュー名取得� � }
//AtomSource作成 SE用� � atomSourceSe = gameObject.AddComponent<CriAtomSource> ();� � atomSourceSe.cueSheet = cueSheetName;� � //AtomSource作成 ボール用� � atomSourceBall = gameObject.AddComponent<CriAtomSource> ();� � atomSourceBall.cueSheet = cueSheetName;� � //AtomSource作成 バンパー用� � atomSourceBumper = gameObject.AddComponent<CriAtomSource> ();� � atomSourceBumper.cueSheet = cueSheetName;� � //AtomSource作成 BGM用� � atomSourceBgm = gameObject.AddComponent<CriAtomSource> ();� � atomSourceBgm.cueSheet = cueSheetName;� }
� void Start () {� � //エフェクト設定� � CriAtomEx.AttachDspBusSetting("DspBusSetting_0");� � //バスのレベルメータ有効� � CriAtom.SetBusAnalyzer(true);� }
float lastPlaybackBallTime = 0;� public void PlaybackBall(int index,float velocity)� {
//0.25sec以内はリクエストキャンセル(短時間多重再生防止)� � if(lastPlaybackBallTime+0.25 < Time.timeSinceLevelLoad){� � � atomSourceBall.SetAisac(0,velocity); // AISACを設定
� � atomSourceBall.Play(index); //再生� � � lastPlaybackBallTime = Time.timeSinceLevelLoad;� � }� }
まとめ• CRI ADX2を使うと簡単にリッチな音の演出ができます。
• ワークショップ、ミニゲームジャムなども開催します。
• 無料試用できます。
• www.cri-mw.co.jp
CRI ADX2
アジェンダ• 新機能レビュー(CRI Atom Craftにて)
再生確率、ランダム重み、コンボシーケンシャル、スイッチ、繰り返し機能、タイミングランダム、シーケンス再生速度調整、トラックモノ、新しくなったリスト編集、プロパティ編集、マテリアル管理他、AISACデフォルト値、REACTでAISAC駆動
• 非常に多くの機能が追加されました。
• それぞれに効果を混ぜ合わせる事が可能!
まとめ• CRI ADX2を使うと簡単にリッチな音の演出ができます。
• 機能追加はお客様の声を反映しています。
• 無料試用できます。
• www.cri-mw.co.jp
CRI ADX2
次回予告• 新機能予告多人数開発の為の改良、I3DL2リバーブ、IRリバーブ
• 上位フォルダ、カテゴリによる一括パラメータ編集
• インサーションエフェクトによるタイムストレッチ、波形のエンコード前バッチ処理(SoundForge連携)
• プロファイラー、ログ