-
Notifications
You must be signed in to change notification settings - Fork 28
音源について
BambooTrackerではYM2608 (OPNA)音源を使用しています。 YM2608のチャンネル構成は、
- FM音源6チャンネル (3ch拡張モードあり)
- SSG音源3チャンネル
- リズム音源6種(バスドラム、スネアドラム、ハイハット、シンバル、タム)
- ADPCM1チャンネル
となっています。
FM音源は複数のオペレーターと呼ばれる正弦波を発声させるユニットを組み合わせることで1つの音色を合成する音源であり、時間変化を伴う複雑な波形を生成することができます。
YM2608のFM音源は4つのオペレーターの組み合わせで1つの音色を合成します。
オペレーターは、その出力が直接音色の出力になるものをキャリア、その出力によって他のオペレーターの出力を周波数変調(厳密には位相変調)させるものをモジュレータと呼びます。
FM音源では各オペレーターのパラメーターを操作することで幅広い種類の音色を生成することができます。
またパン機能を持ち、音色を左、中央、右のいずれかから発声することができます。
オペレーター構造に関するパラメーターとして、以下の2つが挙げられます。
ID | パラメーター | 説明 |
---|---|---|
FB | Feedback | オペレーター1の出力を用いて自分の出力を変調(フィードバック)させる回数 |
AL | Algorithm | オペレーターの繋ぎ方を決定するパラメーター 番号と構造の関係は下の図の通り |
各オペレーターのエンベロープや音程を制御するパラメーターには以下のものがあります。
ID | パラメーター | 説明 |
---|---|---|
AR | Attack Rate | キーオン直後のエンベロープが立ち上がる角度(厳密には長さの割合) |
TL | Total Level | ARで立ち上がり終わるエンベロープの最大音量値 |
DR | Decay Rate | TLからエンベロープを減衰していく角度(厳密には長さの割合) |
SL | Sustain Level | DRでの減衰が終了するエンベロープの音量値 |
SR | Sustain Rate | SLからエンベロープを減衰していく角度(厳密には長さの割合) |
RR | Release Rate | キーオフ直後のエンベロープが減少していく角度(厳密には長さの割合) |
KS | Key Scale | 音程に応じてエンベロープの実行速度を速める度合いを決めるパラメーター |
ML | Multiple | 音程を指定数倍にするパラメーター |
DT | Detune | 音程を少しずらす(デチューン) |
また、エンベロープはSSGのハードウェアエンベロープと同様のもの(SSGEG)を使用することができます。 SSGEGのエンベロープの変化はDR、SR、SL、RRで設定を行います。
YM2608にはハードウェアLFO機能が搭載されており、任意のオペレーターの振幅を変調(AMS)させたり、音程を変調(PMS)させることで音色に揺らぎを加えることができます。
LFOのパラメーターは全FMチャンネルで共通なので、LFO周波数などを変更した場合LFOを使用しているすべての音色にその影響が及びます。
YM2608には効果音モードというものがあります。 効果音モードではFMの3チャンネル目において各オペレーターで異なる周波数を出力することができ、モジュレータではより複雑な変調を、キャリアでは異なる音程で鳴らすことができます。
BambooTrackerでは効果音モードをFM3ch拡張モードとして選択できるようになっています。
SSG音源は矩形波、ノイズ、2つの混合音を鳴らすことができます。
ノイズは周期を指定することができますが、矩形波とノイズの音量比を設定することはできません。
また、ノイズ発声器は1つのみ存在し、全チャンネルで共有しています。
SSGにはパン機能はありません。
SSGの音量操作はボリュームレジスタに任意の音量を書き込むか、内蔵のエンベロープを実行することによって行います。
内蔵のエンベロープは8つの形状があり、実行周波数(速度)をパラメーターとして持ちます。
このエンベロープをBambooTrackerではハードウェアエンベロープと呼んでいます。
ハードウェアエンベロープ使用時には任意の音程を指定することはできません。 したがって、ハードウェアエンベロープ使用時にはソフトウェアエンベロープは使用できません。
またハードウェアエンベロープのエンベロープジェネレーターは1つだけであり、複数のチャンネルでハードウェアエンベロープを使用する場合は全て同じ音量変化が行われます。
BambooTrackerでは他の多くのPSG/SSGを扱うトラッカーやMMLドライバと同様に、高速にボリュームレジスタに値を書き込む音量操作を行うことで任意のエンベロープを実行することができます。 このトラッカーではソフトウェアエンベロープと読んでいます。
ソフトウェアエンベロープではハードウェアエンベロープでは表現できない複雑な形状のエンベロープを実行することができます。
通常SSGは音色(トーン)として矩形波のみ鳴らすことができます。 しかし、ハードウェアエンベロープを用いたブザーエフェクトというテクニックによりハードウェアエンベロープの波形の音を鳴らすことが可能です。
ブザーエフェクトによって三角波やノコギリ波を鳴らすことができますが、これらの波形を矩形波でマスクしたような波形を作ることができ、より特徴的な音を鳴らすことができます。 またブザーエフェクトは音色部分を変化させるものであるので、矩形波の場合と同様にノイズと混合させることができます。
ブザーエフェクトでは波形をハードウェアエンベロープを使用して生成しているので、その音量を任意に変更することはできませんが、矩形波マスクを非常に高い周波数で実行することで疑似的に音量を下げるテクニックが知られています。
YM2608ではバスドラム、スネアドラム、ハイハット、シンバル、タムの音声が予め用意されています。 リズム音源ではこれらの音色の音量、パンや全体の音量を変更することができます。
YM2608ではADPCMの合成機能が搭載されており、任意のサンプルを再生することが出来ます。 ただしADPCMサンプルは別途用意したメモリで保持しておく必要があります。 BambooTrackerでは外部メモリとして仮想DRAM 256KBを用意しています。