Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/21-bbe36483

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Jetしようぜ!④JetPlayer後編

JetPlayer後編です。前編はこちら
今回は、音楽をループさせてみましょう。

前回のソースのこのへんを
// 再生したいセグメントをキューに入れる
mJetPlayer.queueJetSegment(
		0,				// 再生するセグメントのID
		-1,				// DLSのID (使用しないなら-1)
		0,				// ループ回数 (-1で無限ループ)
		0,				// 音程変更 (-12~12まで)
		0,				// 特定のトラックをミュートにする場合のフラグ
		(byte) 0);		// 任意に割り当てられるID (イベントを使用する場合に必要になる)
こうします。
// 再生したいセグメントをキューに入れる
mJetPlayer.queueJetSegment(
		0,
		-1,
		-1,				// -1にする
		0,
		0,
		(byte) 0);
簡単ですね。終わりです。

というのは嘘です。
もちろんこれでもループ再生できますが、
今回はもうちょっと変わったループをさせてみましょう。

よくゲームのBGMで、イントロがあって、そのあとのパートがループするみたいなのってありますよね。あれに挑戦します。
まず、MIDIに仕込みをします。
このへんは、MIDIシーケンサを触ったことがないとわかりづらいと思います。
CherryでMIDIを開きました。
12.png

赤枠の部分が、このトラックの初期設定です。
まあほとんどCherry先生が勝手に作ってくれたものですが・・・。

このうち、自分で設定を変更した、Program、Volume、Panpotの3つのイベントをコピーします。
(他のイベントも設定したならそれもコピーしてください)

で、普通イントロ部が最初にきますね。
コピーしたイベントは、ループ部の小節の0拍子0チック目にペーストしてください。
サンプルのMIDIはCherryでいうと18小節目からがループ部分なので、18小節目にコピーしています。
13.png

この設定を、メロディのある全てのトラックについて行ってください。
めんどいけどがんばって><

設定が終わったら、JetCreatorを起動します。
「Open」だと前回作ったデータに上書きしちゃうかもしれないので、「New」のほうがいいかもです。

「Add」を押してセグメントを追加しましょう。
まずは、test.midのイントロ部分のセグメントを作ります。
14.png

ここでポイントになるのは、赤枠の「Ending M/B/T」の値です。
先ほどのMIDIの設定で、18小節目に細工をしたので、ここを「19/0/0」を指定します。
(+1するのは、CherryとJetCreatorで、カウント開始小節が違うからです)

次に2つめのセグメントを作ります。
同様にtest.midを参照して、「Starting M/B/T」と「Ending M/B/T」を設定します。
前者は、イントロとなるセグメントで設定した「Ending M/B/T」を設定し、後者は、ループ部分いっぱいまでを指定します。
右にある「Play Segment」ボタンで試聴できるので、うまく合わせてください。
(特に変拍子の曲の場合はズレたりするので。)

セグメントを作るとこのようになります。
16.png

「Start」と「End」の値が違いますね。
このJetファイルを保存して、プロジェクトのres/rawフォルダにコピーしてください。

ソースを書き換えます。


変更したのは、onResume()の中身だけです。

どうでしょう?イントロは一度だけ再生して、ループパートだけがループされましたか?
再生順としては、0をイントロ、1をループのセグメントIDとして、
0 → 1 → 1 → 1 → 1 → 1 …
と再生されています。

曲全体をループするよりも、ゲームっぽくなりましたね。

(投稿者 Ushi)
この記事にトラックバックする(FC2ブログユーザー)
http://garlicg.blog92.fc2.com/tb.php/21-bbe36483

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。