(有)未来検索ブラジルが運営するあらゆる言葉についての記事を閲覧・編集したり、コメントをしたりするサイトです。

単語記事: GB音源

編集

GB音源とは、任天堂ゲームボーイに内蔵されている音のことである。
GB音源を意識した(あるいは実機の)音を使って作成した音楽チップチューン(chiptune)のジャンルに入る。
Chiptune

実機で演奏する場合はLittle Sound Dj 等の専用ソフトを用いる事が多い。

GB音源の音色

音色・チャンネル数は以下のとおり。

音色 チャンネル ピコカキコでの表記
矩形波
(duty:12.5% 25% 50% 75%)
2 @5@w1 /* 12.5% */
@5@w2 /* 25% */
@5@w4 /* 50% */
@5@w6 /* 75% */
波形メモリ
1 @10-x #WAV10 x,xxx…
ノイズ
(長周期・短周期)
1 @11 /* 長周期 */
@12 /* 短周期 */

また、GB音源ステレオになっており、これらのチャンネルは、音を3段階(左・中・右)に振ることができる。

FlMML仕様上、ピコカキコでのGB音源完全再現はほぼ可

 

ゲームボーイ内蔵音源の詳細

上記の通り、ゲームボーイに内蔵されている音は、矩形波(2ch)・波形メモリ(1ch)・ノイズ(1ch)をステレオできる。FC音源とは似てるし、似てない。

以下、GBSOUND.TXTなどを参考に詳細を記述。

レジスタ一覧表

R:読み込み可 W:書き込み可 oはできて、xはペケ

アドレス 読書
M7......0
ビット 説明
FF10H
NR10
R:xooooooo
W:xooooooo

XSSSHRRR 矩形波1 制御レジスタスイープ
R:周波数変更量
 ・カウント満了時に、どのくらい周波数を変更するか
 ・値が小さいほど変化が大きい
 ・0だと変化無し
H:周波数変更方向
 ・0:上がっていく 1:下がっていく
S:周波数変更タイマカウント数
 ・値が小さいほど周波数変更頻度が高い
X:未使用
FF11H
NR11
R:ooxxxxxx
W:oooooooo

DDLLLLLL 矩形波1 制御レジスタ(音色・長さ
L:長さカウント値
 ・値が大きいほど長さが短い

D:Duty
 ・00:12.5% 01:25% 10:50% 11:75%
FF12H
NR12
R:oooooooo
W:oooooooo

VVVVDCCC 矩形波1 制御レジスタ(音量)
C:エンベロープ速度
 ・値が小さいほど変化が速くなる
 ・0だと変化無し

D:音量変更方向
 ・0:小さくなっていく 1:大きくなっていく
V:エンベロープ初期音量
 ・エンベロープ開始時の音量の
 ・キーオン中にここだけ変えても、設定通りの音量にならない
FF13H
NR13
R:xxxxxxxx
W:oooooooo

FFFFFFFF 矩形波 制御レジスタ周波数下位)
F:周波数(0-7bit)
 ・値が大きいほど高音になる
FF14H
NR14
R:xoxxxxxx
W:ooxxxooo

OCXXXFFF 矩形波1 制御レジスタ(周波数上位・長さ・キーオン
F:周波数(8-10bit)
 ・値が大きいほど高音になる
X:未使用
C:長さカウンタ有効フラグ(1:有効 0:無効)
Oキーオンフラグ
 ・このビットを立たせることで、キーオン(音を鳴らす)できる。
FF15H
NR20
R:xxxxxxxx
W:xxxxxxxx

XXXXXXXX 矩形波2 制御レジスタ(未使用
X:未使用
FF16H
NR21
R:xxxxxxxx
W:ooxxxxxx

DDLLLLLL 矩形波2 制御レジスタ(音色・長さ
L:長さカウント値
 ・値が大きいほど長さが短い

D:Duty
 ・00:12.5% 01:25% 10:50% 11:75%
FF17H
NR22
R:oooooooo
W:oooooooo

VVVVDCCC 矩形波2 制御レジスタ(音量)
C:エンベロープ速度
 ・値が小さいほど変化が速くなる
 ・0だと変化無し

D:音量変更方向
 ・0:小さくなっていく 1:大きくなっていく
V:エンベロープ初期音量
 ・エンベロープ開始時の音量の
 ・キーオン中にここだけ変えても、設定通りの音量にならない
FF18H
NR23
R:xxxxxxxx
W:oooooooo

FFFFFFFF 矩形波 制御レジスタ周波数下位)
F:周波数(0-7bit)
 ・値が大きいほど高音になる
FF19H
NR24
R:xoxxxxxx
W:ooxxxooo

OCXXXFFF 矩形波2 制御レジスタ(周波数上位・長さ・キーオン
F:周波数(8-10bit)
 ・値が大きいほど高音になる
X:未使用
C:長さカウンタ有効フラグ(1:有効 0:無効)
Oキーオンフラグ
 ・このビットを立たせることで、キーオン(音を鳴らす)できる。
FF1AH
NR30
R:oxxxxxxx
W:oxxxxxxx

MXXXXXXX 波形メモリ 制御レジスタマスター
X:未使用
M波形メモリチャンネル有効フラグ(0:無効 1:有効)
 ・0だと、音が鳴らない。
FF1BH
NR31
R:xxxxxxxx
W:oooooooo

LLLLLLLL 波形メモリ 制御レジスタ(長さ
L:長さカウント値
 ・値が大きいほど長さが短い
FF1CH
NR32
R:xooxxxxx
W:xooxxxxx

XVVXXXXX 波形メモリ 制御レジスタ(音量
X:未使用
V:音量
 ・00:ミュート 01:1/1 10:1/2 11:1/4
FF1DH
NR33
R:xxxxxxxx
W:oooooooo

FFFFFFFF 波形メモリ 制御レジスタ周波数下位)
F:周波数(0-7bit)
 ・値が大きいほど高音になる
FF1EH
NR34
R:xoxxxxxx
W:ooxxxooo

OCXXXFFF 波形メモリ 制御レジスタ(周波数上位・長さ・キーオン
F:周波数(8-10bit)
 ・値が大きいほど高音になる
X:未使用
C:長さカウンタ有効フラグ(1:有効 0:無効)
Oキーオンフラグ
 ・このビットを立たせることで、キーオン(音を鳴らす)できる。
FF1FH
NR40
R:xxxxxxxx
W:xxxxxxxx

XXXXXXXX ノイズ 制御レジスタ(未使用
X:未使用
FF20H
NR41
R:xxxxxxxx
W:xxoooooo

XXLLLLLL ノイズ 制御レジスタ(長さ
L:長さカウント値
 ・値が大きいほど長さが短い

X:未使用
FF21H
NR42
R:oooooooo
W:oooooooo

VVVVDCCC ノイズ 制御レジスタ(音量)
C:エンベロープ速度
 ・値が小さいほど変化が速くなる
 ・0だと変化無し

D:音量変更方向
 ・0:小さくなっていく 1:大きくなっていく
V:エンベロープ初期音量
 ・エンベロープ開始時の音量の
 ・キーオン中にここだけ変えても、設定通りの音量にならない
FF22H
NR43
R:oooooooo
W:oooooooo

OOOORFFF ノイズ 制御レジスタ(周波数)
Fノイズ周波数1(カウント定)
 ・値が小さいほど周波数が高くなる
 ・周波数は1/nされる。nに入る値は、周波数テーブルから
  引き出される。
  (値0から順に、1, 2, 4, 6, 8, 10, 12, 14)

R:長周期/短周期
 ・0で長周期
Oノイズ周波数2(オクターブ定)
 ・値が小さいほど周波数が高くなる
 ・値が1増えるごとに、周波数は1/2,1/4,1/8…していく
FF23H
NR44
R:xoxxxxxx
W:ooxxxxxx

OCXXXXXX ノイズ 制御レジスタ(長さ・キーオン
X:未使用
C:長さカウンタ有効フラグ(1:有効 0:無効)
Oキーオンフラグ
 ・このビットを立たせることで、キーオン(音を鳴らす)できる。
FF24H
NR50
R:oooooooo
W:oooooooo

ELLLERRR 全体音量制御レジスタ
R:右音量
 ・値が大きいほど音量が大きい

E:右出有効フラグ
L:左音量
 ・値が大きいほど音量が大きい
E:左出有効フラグ
FF25H
NR51
R:oooooooo
W:oooooooo

NW21NW21 チャンネル制御レジスタ
1:矩形波1-右出 有効フラグ (1:ON 0:OFF

2:矩形波2-右出 有効フラグ (1:ON 0:OFF

W波形メモリ-右出 有効フラグ (1:ON 0:OFF

Nノイズ-右出 有効フラグ (1:ON 0:OFF

1:矩形波1-左出 有効フラグ (1:ON 0:OFF
2:矩形波2-左出 有効フラグ (1:ON 0:OFF
W波形メモリ-左出 有効フラグ (1:ON 0:OFF
Nノイズ-左出 有効フラグ (1:ON 0:OFF
FF26H
NR52
R:oxxxoooo
W:oxxxxxxx

R:SXXXNW21
W:SXXXXXXX
チャンネルステータス/サウンド有効フラグレジスタ
1:(読み専)矩形波1 ステータスフラグ (1:ON 0:OFF
2:(読み専)矩形波2 ステータスフラグ (1:ON 0:OFF

W:(読み専)波形メモリ ステータスフラグ (1:ON 0:OFF

N:(読み専)ノイズ ステータスフラグ (1:ON 0:OFF

S:全サウンド有効フラグ (1:ON 0:OFF
FF30H-FF3FH R:oooooooo
W:oooooooo

WWWWWWWW 波形メモリデータ

 

CH1・CH2:矩形波

このチャンネルで出せる矩形波のDutyは、12.5% 25% 50% 75%の4種類。波形は以下の表を参照。

Duty 波形
12.5% _| ̄|_______| ̄|_______| ̄|_______
25% _| ̄ ̄|______| ̄ ̄|______| ̄ ̄|______
50% _| ̄ ̄ ̄ ̄|____| ̄ ̄ ̄ ̄|____| ̄ ̄ ̄ ̄|____
75% _| ̄ ̄ ̄ ̄ ̄ ̄|__| ̄ ̄ ̄ ̄ ̄ ̄|__| ̄ ̄ ̄ ̄ ̄ ̄|__

CH1の矩形波チャンネルにはスイープ機があり、周波数を変化させることが出来る。

スイープレジスタFF10H)での定することにより、周波数を上昇させたり下降させたりする事が出来る。
周波数更新時、以下の計算方法で周波数の上昇・下降を行う。

周波数上昇:
   周波数レジスタ値 = 周波数レジスタ値 + ( 周波数レジスタ値 >> 周波数変更量 )

周波数下降:
   周波数レジスタ値 = 周波数レジスタ値 - ( 周波数レジスタ値 >> 周波数変更量 )

FC音源仕様と同じように見えるが、べると実は全然違う。 GB音源の場合、周波数レジスタ値はFC音源のときとは逆で、値が多いほど周波数が高くなるため、レジスタ値が大きいほど周波数の変化が大きくなり、レジスタ値が小さいほど周波数の変化が小きくなる。

FC音源では、キーオン仕様上、周波数レジスタ9bit以降の書き換えでプチノイズが出るが、GB音源ではキーオン仕様が違うため、周波数レジスタ9bit以降を変更してもプチノイズは乗らない。GB音源FC音源べて、ソフトウェアによる周波数変更に強いといえる。


矩形波は、キーオン時に波形位置がリセットされないが、波形は若干乱れる。

CH3:波形メモリ

ゲームボーイの特徴とも言える波形メモリ

波形メモリの周波数は、矩形波とべて1オクターブ低い。


波形データFF30H-FF3FHで定する。 サンプル数は32、量子化ビット数は4、上位4bit→下位4bit→次の上位4bit…の順で出される。

波形データの読み書きは、波形メモリの再生を停止しているときに行う必要がある。


音量は、4段階で変更できる。(1, 1/2, 1/4, OFF) ただし、波形データをビットシフトする形で音量を下げているため、失われた下位ビットの分波形が変わる。

CH4:ノイズ

ノイズ音の周波数は、線形帰還シフトレジスタによる擬似乱数で出ている。

C言語ソース的には、以下のような記述で波形がめられる。

//レジスタの初期値
reg = 0xffff;
output = 1;

//以下の2行を回す。
// shortFreqは、短周期フラグ。1にすると有効になる。
// これで得られるoutputの値が、ノイズチャンネルの波形。
if(reg == 0)reg = 1; //一応
reg += reg + (((reg >> (shortFreq ? 6 : 14)) ^ (reg >> (shortFreq ? 5 : 13))) & 1);
output ^= reg & 1;


「ザー」という音の長周期と、「ギー」という音の低周期が出せる。
ノイズパターンは、長周期ノイズが32767bit。低周期ノイズ127bit。


ゲームボーイノイズ音はFC音源とは違って、キーオン毎にレジスタリセットされるため、長周期・短周期ともに常に同じ音が出る。 これによって、FC音源べて、短周期ノイズドラム音として使いやすくなっている。(ドクターマリオヨッシーパネポン等)

エンベロープ

GB音源の矩形波・ノイズチャンネルでは、音量をハードウェアで変化させることが出来る。

GB音源ハードウェアエンベロープは、FC音源べると強化されている。 初期リュームが定でき、その音量から増幅・減衰させることができる。
FC音源では、初期リュームは最大固定で、変化は減衰のみ)


矩形波・ノイズチャンネルでは、音量レジスタFF12H FF17H FF21H)を変更した後、反映のためにキーオンしなければならない。

しかし、キーオンすると、矩形波チャンネルでは波形が若干乱れ、ノイズチャンネルではレジスタリセットされてしまうため、GB音源FC音源べて、ソフトウェアエンベロープに弱い。そのため、矩形波・ノイズチャンネルソフトウェアエンベロープを使用するソフトは、ファミコンべると少ない。

ソフトウェアエンベロープを使用するソフトの多くは、音量を変化する頻度を少なくしたり、一部のエンベロープをハードウェアに任せるなど、ノイズ立たせないように工夫されていた。

キーオンせずに音量レジスタだけ変更すると、訳の分からない変な挙動GBSOUND.TXTではこれを"ZOMBIE MODE"と呼んでいる)によって、期待通りの音量にならない。 しかし、この訳の分からない"ZOMBIE MODE"を逆に利用してソフトウェアエンベロープさせている、「P-マンGB」という変態ソフトが存在する。

波形メモリチャンネルは、音量レジスタの変更のみでも大丈夫なのでノイズは発生しない。

FC音源との違い

つまり、ファミコンの音べるとどこが違うのか。大きな違いは以下の通り。

細かい違いは以下の通り。

それ以外は、大体FC音源と同じになっている。

関連動画

 

関連項目

携帯版URL:
http://dic.nicomoba.jp/k/a/gb%E9%9F%B3%E6%BA%90
ページ番号: 186393 リビジョン番号: 992429
読み:ゲームボーイオンゲン
初版作成日: 08/06/01 11:43 ◆ 最終更新日: 10/11/30 22:37
編集内容についての説明/コメント: ステレオ出力できることを書き、FC音源との違いについて追加
記事編集 / 編集履歴を閲覧 /

GB音源について語るスレ

30 : ななしのよっしん :2011/02/18(金) 18:46:58 ID: WzevK8olpO
もしVCでのGB音源エミュレート精度が残念なものだったら、それは残念だ

ってのは>>29も同意すると思うけど、>>29が何に反対してるのかよくわからん
31 : ななしのよっしん :2011/02/24(木) 15:22:34 ID: F3dOeC8nHW
少し言い過ぎた感があるけど自分には支障がないように聞こえた
そこまで酷いかな、確かに完全再現とまではいかないんだろう
それにもしかしたら発売までには修復されているかもしれん
ゲームをやる人間の一感想だと思って聞き流してくれ
作曲でも演奏でもないから分からない。
(流石に仕様のせいで明らかにここちがうってのは勘弁w最後に一音上がってたりとかw)
32 : ななしのよっしん :2011/03/13(日) 11:33:24 ID: le2k3EGKTj
確かにメインミュージックはそこまでおかしく聞こえないとも思う
ただ20秒あたりでキノコを出してる時の効果音
本来 パーパラパラパラ って感じなのに ピープーーーーー
っていう再現の悪いエミュで鳴る音みたいになってる。VCエミュだけど。
これが>>28で書かれている「パルス波1のSweepエミュレート精度が致命的」の部分かと。
他はそんなに違いが分からなくても実GBでやったことある人ならここには違和感を感じるはず

まー最終的にどうなるかは2か後だね・・
33 : ななしのよっしん :2011/03/20(日) 16:36:33 ID: 0g2pS4rhNk
>>32
言われてみたら酷いな。
マリランはTAS動画しか見てないんだが、
それとべても酷いな。

正式リリースの時には修正されてるといいが、
WiiFCエミュのこともあるし
(公式動画を見るとマリオジャンプ音が再現し切れてなかった)、
なんとなく修正されないような気がするな(あくまで自分の見解)。
34 : ななしのよっしん :2011/04/14(木) 09:23:09 ID: 2pAyZFAqOf
FC音源も好きだけどGB音源も好き。
GB独特なチープさがあっていいよなぁ。
35 : ななしのよっしん :2011/05/31(火) 19:22:22 ID: OklCBq4ziV
GBの音大好きだからいじってみたいけど何がわからないのか自分でもわからないレベルでわからない・・・
36 : ななしのよっしん :2011/06/08(水) 03:36:53 ID: F3dOeC8nHW
良くなってたキノコの音に違和感なし、まあそこしか聞きべて無いけど
>>27べてみたら確かに改良されてるのを確認した
後は他人にまかせる
37 : ななしのよっしん :2011/07/30(土) 22:02:00 ID: le2k3EGKTj
こっちも3DS手に入れたからeショップで動画色々見た
確かにマリオランドキノコは直ってる、その他も特筆するとこはないかな
と思いきやドクターマリオウイルス消去がうーん
上にあるように今までもかゆい所に届かないなのはわかってるけれど
通信未実装といい公式がこれでどうするんだよーもっとふんばってくれよー
38 : ななしのよっしん :2011/11/03(木) 11:30:46 ID: 0g2pS4rhNk
エミュ作るのは大変なんだな~
39 : ななしのよっしん :2012/04/19(木) 18:43:07 ID: 2pAyZFAqOf
子供の頃やってて当然波形メモリ音源のこと知らないから、GBってFCベースの音も出せるのかーと思ってたな。
ページトップへ戻る