Skip to content

Latest commit

 

History

History
280 lines (174 loc) · 14.6 KB

独自エフェクトと配音アルペジオ(日訳).md

File metadata and controls

280 lines (174 loc) · 14.6 KB

0CC-readme.txtの独自エフェクトと配音アルペジオについての記述を、ざっくり日本語訳したもの。
どっか間違ってたらごめん。

なお、頭に0xがついた数値は16進数表記。
例えば、「Exx(xx≦0x1F)」というのは「Eエフェクトがとれる値はE00E1Fの範囲」という意味になる。


目次


1. ハードウェア音量エンベロープに関するエフェクト(2A03 & MMC5)

2A03とMMC5の機能にアクセスするために、以下のエフェクトを追加した。
(訳註:ノートの長さに関して「音長カウンタ」と「リニアカウンタ」というのがあるっぽい。後者は三角波専用か)

1-1. EEx(x≦3)

1-1A. 0bit目

  • 矩形波やノイズのチャンネルのハードウェアエンベロープを有効化する。
    チャンネルの音量カラムの値が、音量の指定ではなくディケイ(減衰)率の指定効果になる。小さな値ほど減衰が早い。
  • 下記の音長カウンタが無効化されている場合、出力振幅値は減衰しきった後にまた最大値に戻ってループする。
    有効化されている場合は、減衰しきった後は0のままとなる。
  • 三角波チャンネルではリニアカウンタも同時に有効化される。

1-1B. 1bit目

  • 矩形波やノイズのチャンネルの音長カウンタを有効化する。
  • 三角波チャンネルでは、音長カウンタとリニアカウンタの指定クロック経過のうち、どちらか早い方によって音が切れる。

1-1C. めんど…。

  • 表にしてみた。

    EExのbit対応表

1-2. Exx(xx≦0x1F

  • 値に応じて、以下の一覧のように音長カウンタを設定する。
    音長カウンタ自体が無効化されていた場合は強制的に有効化する。
  • 矩形波、三角波、ノイズのチャンネルで動作する。
  • 初期化時の値は0x01(音長254)。
0 1 2 3 4 5 6 7 8 9 A B C D E F
+00 10 254 20 2 40 4 80 6 160 8 60 10 14 12 26 14
+10 12 16 24 18 48 20 96 22 192 24 72 26 16 28 32 30
  • 三角波チャンネルではリニアカウンタの初期化も行う。
    音長カウンタとリニアカウンタのどちらか早い方によって音が切れる。

1-3. Sxx(xx≧0x80、オフセット0x80

  • 三角波チャンネルにおいて、0x80を引いた値としてリニアカウンタをリセットする。
    XXが0x80未満の場合、リニアカウンタと音長カウンタを無効化し、本来のノート切り捨てエフェクトとして機能する。
  • 本来のS80SFFは、残念ながら全てのチャンネルで無効となる(NSF出力の都合上)。

1-4. 備考

  • 今のところ、ハードウェアエンベロープとリニアカウンタは240Hzで動作する。
    音長カウンタは、2A03チャンネルでは120Hz、MMC5チャンネルでは240Hzで動作する。
    いずれもモジュールのエンジンスピードとは独立している。
  • ハードウェアエンベロープが有効でも、チャンネルごとの音量ミキサーや音色のシーケンスは普通に機能するのでご安心を。

2. ハードウェア音量エンベロープに関するエフェクト(FDS)

FDSサウンドハードウェアの音量エンベロープユニットにアクセスするために、以下のエフェクトを追加した。

2-1. Exx(xx≦0x3F

  • ハードウェア音量エンベロープを有効化し、正(アタック)方向の値を設定する。
    値が小さいほどエンベロープの立ち上がりが早くなる。

2-2. Exx(0x40≦xx≦0x7F、オフセット0x40

  • ハードウェア音量エンベロープを有効化し、0x40引いて負(ディケイ)方向の値を設定する。
    値が小さいほどエンベロープの減衰が早くなる。

2-3. EE0

  • ハードウェア音量エンベロープを無効化し、音量コントロールをトラッカーのサウンドドライバに委ねる。

2-4. 備考

  • FDSでハードウェア音量エンベロープを有効化した場合、ノートがトリガーされるたびにFDSチャンネルは初期音量を返し、音量コントロールをエンベロープユニットに委ねる。
  • エンベロープはノートの途中でも有効化でき、アタックやディケイは即座に効果を発揮する。
  • エンベロープユニット由来でないあらゆる音量変化はメモリに残り続け、EE0の実行と同時にその音量値が呼び出される。

3. 遅延チャンネルエフェクト

一定フレーム経過後のなんやかんやをするために、以下のエフェクトを追加した。

3-1. Lxx(xx≦0x7F

  • XXフレーム経過後にノートのリリースを発生させ、現在の音色で使われているシーケンスのリリース部分をトリガーする。
    • VRC7のパッチの場合、リリースコマンドをトリガーする。
    • DPCMの場合、DPCMバイアスへの書き込みなしにサンプルを停止する。
  • 遅延量は0x80未満。

3-2. Mxy

  • Xフレーム経過後にチャンネル音量をYに設定する。
    チャンネル音量エフェクトが遅延して起こった後、次のノートは元のチャンネル音量を再現する(音量スライドエフェクトAxyを使っていない限り)。
  • Xフレーム経過の最中において、新しくノートが現れてもそのままチャンネル音量を設定することができるが、新しくMxyエフェクトが現れた場合は遅延カウンターが必ずリセットされる。

ちなみに、これは本家FamiTrackerの0.3.5以降にて予約されているエフェクト。
0CC-FamiTrackerではどちらの値も0以外である必要がある。
(※訳注:じゃあ0にしたらどうなるんだ。エフェクト切れるのかな。)

3-3. Txy(x≦7なら上方向、x≧8なら8オフセットして下方向)

  • Xフレーム経過後にチャンネルをY半音だけトランスポーズする。
  • Xが7以下の場合は上方向、8以上の場合は8を引いた値として下方向。
    つまり遅延値がとりうる範囲は0~7フレームとなる。

4. FDSの自動モジュレーションエフェクト

(※訳注:この章はぜんぜんいみがわからないので特に自信がない)

0CC-FamiTrackerでは元のFamiTrackerのFDS関連エフェクトをオーバーロードしている。
以下のエフェクトで、FDSチャンネルのモジュレーション速さを実行中の搬送波の倍数値として解釈した自動モジュレーションautomatic FM)を行うことができる。

4-1. Ixy(x≧1)

  • 自動モジュレーションを有効化し、搬送波のX / (Y + 1)倍の値でモジュレーション周波数を設定する。
  • Xは0でない必要がある。

4-2. Hxx(xx≧0x80

  • XXが0x80以上のとき、モジュレータの乗数の分子をXXに設定する。
    つまり乗数そのものはXX / (Y + 1)となる。Yは既にIxyエフェクトで設定されているものとする。
  • このエフェクトは自動モジュレーションが無効化されている場合は何の効果もない。
  • FamiTrackerのエフェクト評価順は左から右なので(Gxx以外)、同じ行では全てのHxxエフェクトより右に一切のIxyエフェクトが存在しないようにすれば正しい効果が出る。

4-3. Zxx(デフォルト0x80

  • Pxxエフェクトのアナログ変調となるモジュレータ周波数のバイアス値を設定する。
    つまり、最終的なレジスタ値はモジュレータ乗算値にバイアス値が加算されたものである。
  • バイアス値のデフォルトは0x80
  • 現在のモジュールが線形音程モードを利用している場合、特別な操作は全く行われない。

4-4. 備考

  • 現在の音色が0でないモジュレーション周波数を利用している場合、FDSチャンネルに自動モジュレーションは適用されない。
  • エフェクトの状態は全て保持されるので、ノートを置くたびにいちいちエフェクトを追加する必要はない。
  • 既存の形式のFDSエフェクトを使うと自動モジュレーションはただちに無効化されるが、バイアス値だけは保持されて、次にまた自動モジュレーションが有効になった時にその値を利用できる。

5. N163の波形バッファにアクセスするエフェクト

0CC-FamiTrackerには、N163チャンネル専用の新エフェクトZxxが搭載されている。
波形バッファwave buffer)をより効率的にコントロールすることができる。

5-1. Zxx(xx≦0x7E

  • チャンネルの波形バッファ領域を設定する。音色が指定する波形領域はオーバーライドされる。
  • 波形バッファに対するあらゆる読み取り/書き込み処理において、サンプル位置はエフェクトパラメータの2倍の値で指定される(バイトあたり2サンプル)。
    これは下記のリセットエフェクトが現れるまで保持される。
  • 0CC-FamiTrackerでは、N163チャンネルが波形領域でないレジスタを読み取ろうとしていないかをチェックしているが、エクスポートするNSFファイルに対してはこのチェックは行わない
    自己責任でご利用ください。

5-2. Z7F

  • 波形バッファ制御をリセットし、N163の音色の制御下に戻す。
    音色が持つデフォルトの波形領域への読み書きができるようになる。
  • このエフェクトは即座に効果を発揮する。
    現在の音色の波形バッファへの書き込みは、Z7Fが現れるとただちに、音色が指定する領域に対して行われるようになる。

5-3. 備考

  • このエフェクトは、v0.3.7~0.3.8ではYxxというコマンドだった。
    モジュールを読み込む時にN163専用形式のZxxエフェクトへと変換されるはず。
    (※訳注:ZxxはDPCMのデルタカウンタのエフェクトとしても使われている)

6. 配音アルペジオ

配音アルペジオarpeggio scheme)は、アルペジオエフェクト0xyを一般化したもの。
音色のアルペジオシーケンスにおいて、0xyエフェクトの値を変数として入力し配音することができる。

6-1. 利用方法

配音アルペジオは、アルペジオシーケンスエディタのMML入力欄で利用する。
(Sunsoft 5Bのノイズシーケンスへの対応も検討中。)

MML入力欄では、通常の数値に対しての足し引き値として+x+y、および-yが入力できる。数値の範囲は-27~+36。
FamiTrackerのパターン上で0xyエフェクトが現れるたび、これらの配音用のxyに各パラメータが代入される。

また、グラフエディタのクリック時に以下のテンキーを押しながら操作すると、対応する種類のアルペジオにアクセスできる。
(※訳注:できなくない?)

  • 0:なし
  • 1:+x
  • 2:+y
  • 3:-y

6-2. 例

例えば、以下のような絶対アルペジオのシーケンスがあるとする。

  • | 0 12 4 16 7 19
  • | 0 12 3 15 7 19
  • | 0 12 5 17 9 21

こんなん1つの配音アルペジオのシーケンスにまとめちゃえ~。

  • | 0 12 x x+12 y y+12

元の3つのシーケンスを呼び出すには、047037059のコマンドを打てば良い。

6-3. 備考

xyは、各シーケンス項の数値の前にも後にも配置できる。
なお、-yは有効だが、-xはそうではないことにご注意。
そんなわけで以下のような書き方は全て有効となる。

x+12  12+x  y+12  12+y -y+12  12-y
x-12 -12+x  y-12 -12+y -y-12 -12-y

おわり