マジックトリョフ

ねすちの個人サークル「Magic Troffle」の告知やら何やらです。

ゲームギア音源おぼえ書きその2

5/17(日)の「僕らのラブライブ!8」おつかれさまでした(だいぶ時間経ってる)。

コミケ以外のイベントでサークル参加するのは初めてでしたが、楽しかったです。

また行きたいです。

 

ゲームギアで曲作る時のアレコレについて、制作中に壁へブチ当たったり、ツイッターで教えてもらったりしました。ありがたいです。

というわけで思い出せる限り書きます。

 

再生できないsmsファイルを再生できるようにする

最初のゲームギア音源おぼえ書き(http://ness1943.hatenablog.com/entry/2015/03/27/200441)で、生成したSMSファイルが再生できないことがあるって書きました。

そしたらツイッター上でこれにまつわる会話がなされ、RTにて流れてきました。

 

 

ありがとうございます(ありがとうございます)。

さっそく、バイナリエディタを用いてsmsファイルを書き換えましょう。

WindowsXPなのは気にしないで欲しいです(オフラインでしか使わない)。

 

f:id:NESS1943:20150608224120j:plain

1.$7fffを「$7f」に書き換えて…

 

f:id:NESS1943:20150608224127j:plain

2.128キロバイト(131072バイト)までゼロ埋めします。

 

見事、これで鳴ってくれました! 今まで鳴らなかったsmsファイルも救われることでしょう。助かりました。

 

smsファイルが128キロバイトを超えている場合は?

 高速アルペジオを多用していたり、楽曲が長い場合にはsmsファイルが128キロバイトを超えていることがあります。しかも鳴らなかった場合、どうすればいいのか?

実際困ってて、僕ラブのサークルスペースでバイナリいじってたら売り子さんから

「7fって127だよね。ファイルサイズの指定か何かかな」

というお言葉をいただきました。

 それじゃん!?って具合で、思いつきにより$7fffの値を「ff(255)」に書き換えて256キロバイトになるまでゼロ埋めしてみました。

 

f:id:NESS1943:20150608224131j:plain

1.ffに書き換え

 

f:id:NESS1943:20150608224135j:plain

2.256キロバイト(262144バイト)までゼロ埋めする。

 

見事、鳴ってくれました!ありがたや。256キロバイトを超えた場合はどうするのかな、という疑問はまだありますけどとりあえずOKです。そこまで容量がかさむことは無いと思いますし…。

 

 と思ったんだけど全然違った。

下記ページに、ROMサイズについて書いてありました。というかリージョンコードについても書いてありました。

ROM Header - Development - SMS Power!

Region code (0x7fff, 0.5 bytes)

The high 4 bits of the 16th byte of the header give the region and system for which the cartridge is intended:

 
ValueSystem/region
$3 SMS Japan
$4 SMS Export
$5 GG Japan
$6 GG Export
$7 GG International

Only the export SMS BIOS actually checks this.

 

ROM size (0x7fff, 0.5 bytes)

The final 4 bits give the ROM size, which may be used by the BIOS to determine the range over which to perform the checksum. Values are:

 
ValueRom sizeComment
$a 8KB Unused
$b 16KB Unused
$c 32KB  
$d 48KB Unused, buggy
$e 64KB Rarely used
$f 128KB  
$0 256KB  
$1 512KB Rarely used
$2 1MB Unused, buggy

 

 ほんとは256キロバイトまでなら後ろを0にすれば良く、512キロバイトまでなら1にすればいいみたいです。それより大きくなることは避けた方が良さそう(バグがあるっぽい)。

 $ffにしたときは何で鳴ってくれたんでしょーかね。

 

ゲームギア実機で鳴らすとパンが効かない(モノラルになる)

これはまだ実問題として遭遇してないのですが、osoumenさん曰く

 

 

 適したリージョンコードを設定してあげれば良いとのことです。

と、思ったんですが、.ggファイルで生成する場合はvgmplayer本体をいじる必要があるらしく…

とのことでした(ありがとうございます)。何をどう直してビルドしなおしたかは自分で調べようかなって………それでも分からなかったら聞いちゃうかも。なおソース読んでもちんぷんかんぷんだった模様。

vgmplayerのバイナリおよびソースは下記からダウンロードできます。

VGM Player - SMS Software - Maxim’s World of Stuff

 

 

連符表現内でオクターブ変更できない(未解決)

たぶんXPMCKの問題。たとえば下記のように連符表現内でオクターブ変更しても、

 {ab>cdefgab>cdefgab}4

実際には下記のように鳴ってしまいます。

 {abcdefgabcdefgab}4

o4、o5記述でオクターブ変更しても同様。というか連符内だとコマンド類が使えない?

解決策か代替案を考えたいところです。

 

 @qコマンドをはちゃめちゃ使うとテンポがおかしくなる

Dチャンネルでボコボコ@qコマンド使ってたら、再生中にDチャンネルだけテンポがおかしくなりました。

 そのときのDチャンネル部分だけ別で保存してたのですが

D t135

D l8 v13

/*よつうち2拍*/$4{@q8v13dv10@q1cv13@q8dv10@q1c@q4v13}

/*Love&Peace 144行目*/
D dr4ddr4d@q4 [$4()@q8v13dv10@q1cv13@q8cv10@q1cv13@q4]8
/*ズレる*/

 これ単体でコンパイル→再生してもテンポはおかしくなりません。

他のチャンネルとの兼ね合いとかそういうヤツでしょうか。あとでちゃんと検証したいと思います…。

 

 

今回はとりあえずこんな感じ!

僕らのラブライブ!8告知

いつも告知に使ってるケロログ、たまにログインできなくなるので激おこです。

 

ラブライブ!ゲームギア音源カバー第三弾!

 

2015年5月17日(日) 僕らのラブライブ!

ライ17「Magic Troffle」にて頒布

 

-----------------

f:id:NESS1943:20150516071338j:plainf:id:NESS1943:20150516071425p:plain

TITLE

ギアライブ!3

 

頒布価格:500円

 

トラックリスト

1.それは僕たちの奇跡
2.No brand girls
3.SENTIMENTAL StepS
4.Oh, Love&Peace!
5.どんなときもずっと

 

COVER:ねすち [ TwitterID : NESS1943 ]

DESIGNER:みつぷ [ TwitterID : mitpu ]

 

JASRAC許諾番号:R-1540874

試聴↓

 

-----------------

 

よろしくお願いいたします。

 

 

ゲームギア音源おぼえ書き

 ケロログの方(http://www.voiceblog.jp/ness1943/)を使っているのですが、長文を書くのには向いてないので、はてなブログつくりました。

 

 最近ゲームギア音源を用いたアレンジ曲を作って同人誌即売会で頒布しています。機会があったのでどう作ってるのかおぼえ書き程度に記述することになりました。自分がド忘れしてもこれを読めばきっと大丈夫。

「自分はこうしてます」という内容で記述していきます。『こういう作り方もあるよ!』とか『こういうソフトウェアもあるよ!』とかありましたら教えていただけると嬉しいです。

 

 準備→手順→その他情報って順で書いてます。 いちど全体を読んだ方が良いでしょう(構成下手(あとで直したい))

 

 あと、WindowsXPWindows7辺りを使ってることが前提です。macLinuxだとどうするんだろう…。

 

用意するもの

ゲームギア本体

 さいきん中古ショップでもあまり見かけないですね…。

・Everdrive GG

http://shop.retrogate.com/Everdrive-GG-EDGG.htm ←更新停止されてたようだ

http://shop.krikzz.com/main.sc ←今はこっちで販売されてる

 上記サイトにて77ドルで購入できます。「Out-of-Stock」となっているときは品切れですが、たまに入荷しているので一日一回チェックしてみると良いでしょう。

・microSDカード

 Everdrive GGは、ROMデータを入れたmicroSDカードを挿し込んで使います。1枚用意しておきましょう。

ゲームギアのカートリッジ

 Everdrive GGは基板だけで届くので、ガワが必要です。ガワが無いと本体に挿すことができません。安いソフトを一本購入しておくと良いでしょう。

・DTC-20(特殊な形のドライバー)

http://www.amazon.co.jp/dp/B001YH89IS/ref=cm_sw_r_tw_dp_lMqfvb1RHBX6A

 ゲームギアのカートリッジを分解するためのドライバーです。

 

制作環境

 MMLを記述し、コンパイルして.vgmファイルに変換する作り方でやっています。この辺りはmck wikiを読んだ方が大変詳しく書いてあります。

http://wikiwiki.jp/mck/

 

自分の環境を記述します。

サクラエディタ

 mml用に色分け設定をしたテキストエディタです。下記参照。

http://wikiwiki.jp/mck/?%C0%A9%BA%EE%B4%C4%B6%AD%A4%CE%BD%E0%C8%F7#m5e6e125

・XPMCK

http://jiggawatt.org/muzak/xpmck/

 記述したMMLを、.vgm形式のファイルへコンパイルします。.vgmはVideoGameMusicの略だそうです。10種類ぐらいのゲーム機に対応してるけどちょっと怪しいコンパイラだよね、という話を聞きましたが真実は分かりません。

 ゲームギア向けにコンパイルできるのは現在コレしか知りません…ほかにもあったら教えていただけると嬉しいです。

・KbMedia Player

http://hwm5.gyao.ne.jp/kobarin/

 色んな形式のファイルをPC上で再生することができるプレイヤーです。制作中はこのプレイヤーで鳴らして音を確認しています。環境設定についてはmck wikiを参照…。

 もしかしたらin_vgm.dllというプラグインを入れる必要があるかもしれません(もう設定したときの記憶があいまい)。その場合は下記ページから入手できます。

http://www.smspower.org/Music/InVgm

・SMS VGM Player

http://www.smspower.org/Music/SMSVGMPlayer

 楽譜データのような存在である.vgmファイルにプレイヤーをくっつけて、ゲームギア上で動作する.smsファイルにするツールです。

 

MMLを書きます

 MMLについては、mck wikiおよびそこから辿れるページを参照!

http://wikiwiki.jp/mck/?MML

 

 ppmckおよびmck向けにMMLを書いている方は、そのままの書き方で大丈夫かと思います。が、xpmckでは新コマンドが追加されています。下記マニュアルを読むと、xpmck用のコマンドと、機種ごとにどのコマンドが使えるか知ることができます。

http://jiggawatt.org/muzak/xpmck/manual.html

 

コンパイルします

 コマンドラインで下記の文を実行します。出力するvgmファイル名はお好みで。

xpmc.exe -sgg sample.mml sample.vgm

 -sggは「ゲームギア用にコンパイルしますよ」ってオプションです。詳細はマニュアル参照。生成したvgmファイルを前述のプレイヤーにてPC上で再生して、鳴ってくれるか確認しましょう。

エラーおよびワーニングがある場合は教えてくれるので、MMLを直してあげましょう。だいたいは「その音域(低すぎるor高すぎる)は正しく再生できないよ」か「譜面の長さが違うチャンネルがあるよ」だと思います。

 コンパイルするときの実行文の末尾に「]」(半角閉じ括弧)を入れると、譜面の長さがチャンネルごとに表示されるのですが、本来のコンパイルオプションはどう書くのだろう。

 

smsファイルにします

 SMS VGM Playerを用いて、.vgmファイルを.smsファイルにします。同ソフト内のreadme.txtをあらかじめ読んでおきましょう。コマンドライン上における実行文は下記のとおりで、出力するsmsファイル名はお好みでどうぞ。

copy /b vgmplayer.stub+sample.vgm sample.sms

 

ゲームギア本体で再生します

 生成したsmsファイルをmicroSDカードにコピーします。ファイルの設置場所は直下で大丈夫です。そしてEverdrive GGにmicroSDカードを挿し、ゲームギア本体でsmsファイルを起動するとVGM Playerが立ち上がって再生できます。

 

一連の流れはこんな感じです。

あとは気にしてるコトと、参考にしてるページ。

 

 

ゲームギア音源についてザックリと 

 参考ページ

DCSGのノイズについて - Simple Inspiration

Future Driver

 ゲームギアの音源チップであるSN76489は、矩形波3音+ノイズで演奏できる。デューティー比は50%のみだけど、ノイズをうまく使うと6.25%の矩形波を出せる。

 

Implementation specific notes
	
	SEGA Game Gear

		Volume range is 0..15. The lowest playable note is A in octave 2.
		Channels A, B, C are tone channels that output square waves.

		Channel D is used for noise. @0 selects white noise and @1 selects periodic
		noise.

		Limited panning is supported (negative values means full left, zero means center,
		positive values means full right).

		EP and MP can be used together, but they will interfere with eachother.

		For the noise channel the octave setting is irrelevant. The noise generator has
		four different clock settings that is determined by the current note MOD 4. Below
		is a list of what each note corresponds to:

			c, e, g+:	High pitch
			c+, f, a:	Medium pitch
			d, f+, a+:	Low pitch
			d+, g, b:	Pitch determined by channel C.

		By selecting periodic noise generation with pitch determined by channel C it is
		possible to use the noise channel as a kind of extra tone channel.

  XPMCKのマニュアルより引用。以下自分の解釈。

・一番低く出せる音は、o2のa。

・Dチャンネルの音色を@0に指定するとホワイトノイズ、@1に指定するとPeriodic Noise(6.25%矩形波)が出る。

・Panは左100%、中央、右100%の三択。だと思う。

・ノイズの音程について。カテゴリ内(例:c,e,g+)で高さの違いは無いので、お好みで記述して良い…はず…。自分はc,c+,dで記述してる。

  c,e,g+:高い。シンバル・ハイハット・スネアで使ってる。

  c+,f,a:中ぐらい。たまにタムっぽく使うぐらい。

  d,f+,a+:低い。バスドラムに使ってる。

  d+,g,b:Cチャンネルにて指定している音程。

 d+,g,bをちゃんと使えると表現の幅むっちゃ広がると思うけど、まだ全然つかえてない。

 Dチャンネルの音色を@1に指定し、高さはd+で発音タイミング&長さを記述し、本当に鳴らしたい音程をCチャンネルへ書くことで、6.25%矩形波の音程をコントロールできる。っぽい。

 

 個人的な気持ち。

複数チャンネルで同じ高さの音を鳴らすと、当然ながら変な音がする。

・o7ぐらいの高い音も出せるけど、高い音はちょっと音痴になる気がする。

・タイを表現するとき「^」か「&」で記述するが、^で書いてると譜面の長さカウントがおかしくてコンパイル時にワーニングとなる場合がある。なるべく&で記述するようにしてる。 

KbMedia Playerだと、6.25%矩形波が鳴らないかもしれない。

・vgmファイルのときにPC上で再生すると鳴ってくれるのに、いざsmsにしてゲームギア実機で起動するとVGM Playerが動いてくれない場合がある。どんな記述をすると動いてくれないのか、まだ不明。

 

 

その他の参考ページ

ぽんRev!! 個人的備忘録: Everdrive GG 届いた~

 Everdrive GGを購入した人のブログ記事。どんな感じなのか見せてくれています…ありがたや。microSDを頻繁に抜き挿しするならケースの加工をしましょう、と記述してあります。自分は以下のように加工しました。

 

f:id:NESS1943:20150327193136j:plain
突然の高坂穂乃果

  microSDの抜き挿し部分を、カッターナイフとはさみで豪快に切除しています。もっと安全な方法があったかもしれません。あと、内側の一番上にある出っ張り(伝われ)がmicroSDの抜き挿しの際オジャマになるので削りました。

 

 

新しいフォルダ (2) ゲーム音源

 実機演奏をしている方のブログ記事。SMS VGM Playerの存在はこのページで知りました。

 

 

おわり

 とりあえず知ってることは大体書いた…と思います。更に思い出したことがあったり、新しく知る事があった場合は追記していくつもりです。「ここ間違ってるよ」とか、ここに記述されてない情報があったら教えてくれるととっても嬉しいです。

 

 

2015/4/14 修正

 EverDrive GGを販売してるサイトは移転してたようなので、リンクを修正。