このページは古いです。→新しいページ
ーーー
ADX2 LE情報(facebook
ADX2ユーザー助け合い所からコピー)
検索にひっかかるようにwikiにADX2LEでのスクリプトのヒント集をwikiにまとめてみました。
■効果音を作りたい
http://www.slideshare.net/tatmos/adx2le-ggj13/33 |
↑チップチューン風の音が作れます。
■初期化手順
UnityでPluginをインストールした後に以下の手順でシーンに最低限必要なオブジェクトを作成します。 |
■CriAtomSouceコンポーネントの追加
atomSourceSe = gameObject.AddComponent
(); atomSourceSe.cueSheet = cueSheetName; //キューシート名指定 |
AtomSouceコンポーネントをスクリプトで作りたい場合はStart()内などに上記のスクリプトで追加すると、
実行時にCriAtomSourceが追加されます。複数のAtomSouceをつけたい場合など上記のようなやり方もできるという例になります。
■再生/停止/ポーズ/ポーズ解除
atomSourceSe.Play(4); //
キューID指定再生
|
再生関数には、番号(ID)指定と名前(ラベル)指定の二種類があり、どちらでも好みのものを利用できます。
■Pitch/Volume変更
atomSourceSe.pitch = 100; //
cent(100で半音) atomSourceSe.volume = 1.0f; // 1.0で原音と同じ振幅レベル ピッチやボリュームは変更してすぐには反映せず、次の再生時に反映します。再生中の音にすぐに反映させたい場合はピッチベンドの項目を参考にしてみてください。 |
■AISAC変更
atomSourceSe.SetAisac(aisac_id,value);//AISACコントロールID指定 |
AISACはゲームの状況を音に影響させたい場合に使います。ピッチやボリューム変更と同じようなコントロール値という0.0~1.0の値で、ツールで作成したAISAC変化をプログラムから呼び出す事ができます。
持続音などの変化(エンジン音)やBGM、環境音に対するフィルター処理など様々な用途に使う事ができます。
カテゴリボリューム変更
CriAtom.SetCategoryVolume("BGM",bgmVolume); |
カテゴリはツールでキューに設定しておくことができます。キューに適切にカテゴリを設定することで、ゲーム中のサウンドコンフィグとして使う事ができます。
■バスセンド(リバーブ量変化等)
float depth = 1.0f;
|
【状態取得】
■再生時刻の取得
GUILayout.Label(atomSourceBgm.time.ToString());
|
上記のはOnGUI()なっで呼ぶと再生時刻を表示します。
■再生状態の取得
CriAtomSource.Status status =
atomSourceBgm.status;
|
上記の例では停止かエンド時に再度トリガーします。
■キュー情報一括取得
string cueSheetName = “Pinball”;
|
キューにはツールで設定された様々な情報があります。これを再生前に取得する場合上記の関数を使います。名前やID、ユーザーデータ、カテゴリやAISAC使用有無、キューの長さなど取り出す事ができます。
■振幅レベルをとりだす(ピークメータ、口パク等)
void Start () { |
8個あるバスのうちバス0はマスターアウトのバスで、全ての音がそのバスを経由します。
特定の音のみの振幅を検出したい場合は、専用のバスへもセンドして検出する事も可能。(声専用バス等)
【ブロック再生】
■再生中のブロックインデックスの取得(ブロック再生)
CriAtomExPlayback playbackBGM; |
↑再生中のブロック番号を確認する方法。
■再生中のブロックインデックスの指定(ブロック再生)
playbackBGM.SetNextBlockIndex(cur %
this.cueInfo.numBlocks); |
再生中のブロックを含むキューに対して上記の関数を呼ぶと、ツールでブロックをクリックした時と同じような動作になります。
■再生開始前にブロックをセットして再生(ブロック再生)
atomSourceBgm.cueName =
"mainBgm"; |
再生開始前にセットする方法。
■スクリプトでのacb解放の仕方
if(GUILayout.Button("Remove")){ ACBを動的に切り替えたい(DLCなど)の特殊用途。 |
■BGMのビートを取り出す(ビート同期する処理)
void Start () { void Update () { |
再生時間を元楽曲のテンポ(あらかじめ知っている)で割って拍を取り出し、デリゲートを使ってビートに合わせる処理。
拍に合わせた処理をする(音ゲーなど)に使えるかも。
■XYでAISACを変更する(カオシレータ風)
// TapPos(new Vector2(x/Screen.width,y/Screen.height)); static public void TapPos(Vector2
tapPos) |
AISACを2つ使って音を面(2軸)で操作する。AISACは一つのキューで最大8個まで別のコントロールを持たせる事ができる。
■MIDIノートNoから音程を設定
static public void SetMidiNote(float
note) |
セント値への変換
■MIDIベロシティから音量を設定
static public void VelocityToVoluem(float
velocity) |
■周波数からピッチ(MIDIノート)の変換
static public float Ftom(float
freq) |
■ピッチ(MIDIノート)から周波数の変換
static public float Mtof(float
note) { return (440f * Mathf.Exp(.057762265f * (note - 69f))); } |
■ピッチから再生速度へ変換
static public float PitchToSpeed(float
pitch) { return Mathf.Pow(2,pitch/12.0f); } |
Unityの標準再生などの再生速度指定系でピッチを指定したい場合に使います。ADX2LEでは再生速度指定AISACなどで使うかも。
■iOSなどバックグラウンドになった時にBGMを一時停止/復帰する
void OnApplicationPause(bool
pause) |
iOSなどスプリングボードへ移動する瞬間などの若干のフェードアウトしている間も音は再生されています。これを使うことでほんの少し抑制できます。
■キューブをクリックすると再生/停止をする
-
CubeにCriAtomSourceをつけて、cri/unity/samples/criatom/script/Unity3Project/ScriptSample01_ClickToPlay/Assets/Scripts/PlayAndStopSoundOnClick.csを使う。
void Update () { if (Physics.Raycast(clkRay, out
rh, 20)) { // Play Cue |
■AtomSourceからCriAtomExPlayerを得る(CriAtomExPlayerを呼び出す改良)
Plugins/CriWare/CriWare/CriAtomSource.csに以下の行を追加
public CriAtomExPlayer Player { get { return player; } } |
CriAtomExPlayerはpitchの変更やtimeの設定など低レベルな隠されたリアルタイム処理を使用する場合に取得します。
■シークして再生(シーク再生)
atomSourceSe.Player.SetStartTime((long)settime); atomSourceSe.Stop(); atomSourceSe.Play(cueNo); |
CriAtomExPlayerのSetStartTimeを呼び出すため、CriAtomExPlayerを呼び出す改良を施しておいて下さい。SetStartTimeには開始msecを指定します。次回再生時に指定時刻から再生します。
CriAtomExPlayback playback; void Playback(int cueNo) { playback = atomSourceSe.Play(cueNo); } void PitchBend(float pitch){ atomSourceSe.Player.SetPitch(pitch); atomSourceSe.Player.Update(playback); } |
CriAtomExPlayerのSetPitchを呼び出すため、CriAtomExPlayerを呼び出す改良を施しておいて下さい。SetPitchにはcent値(100で半音、1200で1オクターブ)を指定します。
playbackを取得して、Updateしたタイミングで再生中の音に反映します。
■
・・的な事は出来ますか?Assets以下のフォルダにあるACBをロードして、再生するサンプルの動画作ってみました。
ここでは、今日のワークショップのとは無関係なゲームジャムのELISEのacbを読み込んで再生しています。http://www.youtube.com/watch?v=DyhujH43ozI&feature=youtu.be
#comment()