2026年4月8日水曜日

OPS(YM21280) / EGS(YM21290) のレジスタのメモ

 

現在執筆中です。内容がちょくちょく変更されますので、ご注意ください。

OPS(YM21280) / EGS(YM21290) のレジスタのメモ

注意:このサイトの内容を鵜呑みにし、事故や損失を招いた場合でも当方は一切の責任は負いかねます。自己責任でお願いします。


自分用のメモです。


たまたま目に入りましたが、
YAMAHA公式のドキュメント"Yamaha DX7 Technical Analysis"によると、
OPSは"the Operator for the Synthesizer."、
EGSは"the Envelope Generator for the Synthesizer."の略称だそうです。



・YM21280 (OPS)のレジスタ(書き込み専用)

YM21280 (OPS)は1ビットアドレス空間中に2バイト分のレジスタを持っています。
「・"レジスタ名"」で記述している箇所は"Yamaha DX7 Technical Analysis"に記述されているレジスタ名です。
次の表の「レジスタ名」の列のレジスタ名はこちらが勝手につけた名称です。

アドレス
レジスタ名 機能
$0 MODE ・MODE
OPS動作モード設定レジスタです。
"Yamaha DX7 Technical Analysis"には設定値についての記述がありません。

テストレジスタビットもここにあると予想されます。

FM音源 EGS/OPSのレジスタ解析
http://sr4.sakura.ne.jp/fmsound/egsops.html
によると、bit5はキーオン時にオペレータの位相をリセットするかどうか設定するビットのようです。

[YM21280 OPS]

$1 ALG_FL ・ALGORITHM NO
・FEEDBACK LEVEL

アルゴリズム選択、フィードバックレベル設定レジスタです。

bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
ALG_4ALG_3ALG_2ALG_1ALG_0FL_2FL_1FL_0

ALG:
アルゴリズムの選択を設定するビットです。
16ch共通です。
ALG = 0~31 (0x00~0x1F) アルゴリズム

FL:
フィードバック量を設定するビットです。
16ch共通です。
FL = 0~7 (0x0~0x7) フィードバック量

[YM21280 OPS]



・YM21290 (EGS)のレジスタ(書き込み専用)

YM21290 (EGS)は8ビットアドレス空間中に256バイト分のレジスタを持っています。
「・"レジスタ名"」で記述している箇所は"Yamaha DX7 Technical Analysis"に記述されているレジスタ名です。
次の表の「レジスタ名」の列のレジスタ名はこちらが勝手につけた名称です。

アドレス
レジスタ名 機能
$00,$01 ~ $1E,$1F  LOG_F LOG_F
Key Code log F
音程設定レジスタです。
発音する周波数を設定します。
$00,$01 ~ $1E,$1Fにch1 ~ ch16が割り当てられています。(12バイト分のアドレス)
1chにつき連続した2バイト分をセットにして使います。

偶数アドレスはLOG_Fレジスタ14bit中上位8bit、奇数アドレスは
LOG_Fレジスタ14bit中下位6bitをセットします。

偶数アドレス
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
LF_14LF_13LF_12LF_11LF_10LF_9LF_8LF_7

奇数アドレス
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
LF_6LF_5LF_4LF_3LF_2LF_1xx

LF:
音程設定レジスタです。

LF = 1~16383 (0x0000~0x3FFF) 音程

音程設定レジスタLFから音程(セント)TONE_P を求める式
TONE_P = LF * 75/64
TONE_P : 音程(セント)

LFビットNo.と音程の関係
LFビットNo. 音程(セント)
LF14 9600
LF13 4800
LF12 2400
LF11 1200
LF10 600
LF9 300
LF8 150
LF7 75
LF6 37.5
LF5 18.75
LF4 9.38
LF3 4.69
LF2 2.34
LF1 1.17

100セント=1/12オクターブ=1半音です。
偶数アドレス分のレジスタ(LF14~LF7)だけでは、100セントずつ値をセットすることができません。
表を見てもらえばわかりますが、LF=100または200という値を作るには奇数アドレス分のレジスタ(LF6~LF1)で約25または約50を作る必要があります。
LF6~LF1 = 0x15 =24.6
LF6~LF1 = 0x2A =49.2

[YM21290 EGS]


$20,$21~
$2A,$2B
LOG_RF LOG_RF
Ratio of Frequency
オペレータ周波数の(倍率または周波数)設定レジスタです。(12バイト分のアドレス)
$20,$21~$2A,$2BにOP6~OP1割り当てられています。1つのOPにつき連続した2バイト分をセットにして使います。
16チャンネル分共通です。

偶数アドレスはLOG_RFレジスタ14bit中上位8bit、奇数アドレスは
LOG_RFレジスタ14bit中下位6bitをセットします。
奇数アドレスの最下位ビットFIXEDによって各オペレータのモードが決まります。

偶数アドレス
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
RF_14RF_13RF_12RF_11RF_10RF_9RF_8RF_7

奇数アドレス
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
RF_6RF_5RF_4RF_3RF_2RF_1xFIXED

FIXED=0のとき
RF:

オペレータ倍率モードです。
RF14~RF1にセットした値によってオペレータの発振周波数の倍率が決まります。
オペレータ発振周波数はLOG_Fとこのレジスタの値に影響されます。

RF = 1~16383 (0x0000~0x3FFF) 倍率レジスタ

倍率設定レジスタRFからオペレータ倍率N[倍] を求める式(予測、未検証)
N = 2^(RF / 1024) * φM / (3*5*11*(2^17))

φM : 
入力クロック周波数[Hz]

FIXED=1のとき
RF:

オペレータ固定周波数モードです。
RF14~RF1にセットした値によってオペレータの発振周波数が決まります。
オペレータ発振周波数はLOG_Fレジスタの値に影響されません。

調査中です。

[YM21290 EGS]

$30~$35 DETUNE DETUNE
Detune
オペレータ周波数の微調整設定レジスタです。

$30~$35にOP6~OP1割り当てられています。(6バイト分のアドレス)
16チャンネル分共通です。


bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
xxxxFD_4FD_3FD_2FD_1

FD:
オペレータ周波数微調整レジスタです。

FD = 0~15 (0x0~0xF)オペレータ周波数微調整レジスタ


[YM21290 EGS]

$40,$41,$42,$43
~
$54,$55,$56,$57
R ・R
Rate
オペレータのエンベロープ・レート設定レジスタです。
$40,$41,$42,$43 ~ $54,$55,$56,$57
OP6_R1,OP6_R2,OP6_R3,OP6_R4 ~ OP1_R1,OP1_R2,OP1_R3,OP1_R4
割り当てられています。(24バイト分のアドレス)

16チャンネル分共通です。

bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
xxR_6R_5R_4R_3R_2R_1

R:
エンベロープジェネレータ・エンベロープレート設定レジスタです。
このレジスタの値が大きいほど、エンベロープ変化率が激しいです。

R = 0~63 (0x00~0x3F) エンベロープレート設定レジスタ

[YM21290 EGS]

$60,$61,$62,$63
~
$74,$75,$76,$77
L ・L
Level
オペレータのエンベロープ・レベル設定レジスタです。
$60,$61,$62,$63 ~ $74,$75,$76,$77に
OP6_L1,OP6_L2,OP6_L3,OP6_L~ OP1_L1,OP1_L2,OP1_L3,OP1_L4
割り当てられています。
(24バイト分のアドレス)
16チャンネル分共通です。

bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
xxL_6L_5L_4L_3L_2L_1

L:
エンベロープジェネレータ・エンベロープレベル設定レジスタです。
このレジスタの値が小さいほど、エンベロープレベルが高くなります。

L = 0~63 (0x00~0x3F) エンベロープレベル設定レジスタ


[YM21290 EGS]

($80~$8F)
~
($D0~$DF)
TL ・TL
Total Level
指定chのオペレータのトータルレベル設定レジスタです。
アドレス下位4bitでチャンネルを指定します。$X0~$XFにch1~ch16が割り当てられています。
アドレス上位3bitでオペレータを指定します。$8X~$DXにOP6~OP1が割り当てられています。
($80~$8F) に(TL_OP6_CH1 ~TL_OP6_CH16)
~
($D0~$DF)に(TL_OP1_CH1 ~TL_OP1_CH16)

bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
TL_8TL_7TL_6TL_5TL_4TL_3TL_2TL_1

TL:
オペレータ・トータルレベル設定レジスタです。
このレジスタの値が小さいほど、エンベロープレベルが高くなります。

TL = 0~255 (0x00~0xFF) トータルレベル設定レジスタ

トータルレベル設定レジスタTLから内部トータルレベル値TL_INTを求める式(予測、未検証)
TL_INT = TL * 3 / 8



[YM21290 EGS]

$E0~$E5 MS_RS ・RS, MS
Rate Scaling Mod. Sensitivity
オペレータ・キーレートスケーリング感度、オペレータLFO振幅変調感度設定レジスタです。

$E0~$E5にOP6~OP1割り当てられています。(6バイト分のアドレス)
16チャンネル分共通です。


bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
xxxMS_2MS_1RS_3RS_2RS_1

MS:
オペレータLFO振幅変調感度設定レジスタビットです。

MS = 0~3 (0x0~0x3) 振幅変調感度設定レジスタビット

RS:
オペレータ・キーレートスケーリング感度設定レジスタビットです。

RS = 0~3 (0x0~0x7) キーレートスケーリング感度設定レジスタビット


[YM21290 EGS]

$F0 AMOD ・AMOD
mplitude Mod.
LFO振幅変調用音量設定レジスタです。

16チャンネル,6オペレータ分共通です。


bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
EM_8EM_7EM_6EM_5EM_4EM_3EM_2EM_1

EM:
LFO振幅変調用音量設定レジスタです。
ソフトウェアで振幅変調する際に使います。
すべてのチャンネル・オペレータに適用されます。
$E0~$E5のMSレジスタビットが0のとき、そのオペレータには変調がかからないはずです。(未検証)

EM = 0~255 (0x00~0xFF) LFO振幅変調用音量設定レジスタ

MS=3のとき、出力値TL_OUT[dB]は次式の通りになります。
TL_OUT =  EM * 3 / 16


[YM21290 EGS]

$F1 KOF KOF
Key On, Off
キーオン・キーオフ操作レジスタです。

キーオン時
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
xxCH_4CH_3CH_2CH_110

キーオフ時
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
xxCH_4CH_3CH_2CH_101

CH:
キーオン・キーオフ対象ch指定レジスタビットです。
bit1=1,bit0=0のときキーオン、
bit1=0,bit0=1のときキーオフします。

EM = 0~15 (0x0~0xF)  キーオン・キーオフ対象ch指定レジスタビット

操作対象チャンネルK_CH (1~16)は次式で求まります。
K_CH = EM + 1;


[YM21290 EGS]

$F2,$F3 PMOD PMOD
Pitch Mod.

LFO位相変調用周波数設定レジスタです。

$F2にはFMレジスタ12bit中上位8bit、$F3は
FMレジスタ12bit中下位4bitをセットします。(注意:ここでのFMはレジスタ名です。)

16チャンネル,6オペレータ分共通です。


bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
FM_12FM_11FM_10FM_9FM_8FM_7FM_6FM_5

bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
FM_4FM_3FM_2FM_1xxxx

FM:

LFO位相変調用周波数設定レジスタです。
ソフトウェアで位相変調する際に使います。
すべてのチャンネル・オペレータに適用されます。
最上位ビットFM_12は符号ビットです。

FM = -128 ~ 127 (0x80~0x7F) LFO位相変調用周波数設定レジスタ

位相変化度P_MOD_F [セント]は次式により求まります。
P_MOD_F = FM * 75/64

[YM21290 EGS]




参考文献

FM音源 EGS/OPSのレジスタ解析
http://sr4.sakura.ne.jp/fmsound/egsops.html


"Yamaha DX 7 Technical Analysis"
Anthony  ~ajxs





0 件のコメント:

コメントを投稿

おわり