[RLD777] カセットビジョン音源でゼビウス再現

Описание к видео [RLD777] カセットビジョン音源でゼビウス再現

#カセットビジョン #CassetteVision #RLD777 #μPD777 #ゼビウス #シーケンサー #与作

ほりまチャンネルご視聴ありがとうございます。今回は短編です。
説明文は長くなってしまいました。自分用の備忘録でもあるのでお許しください。

動画ではμPD777C-004 (与作)となっていますが、正しくはμPD777C-005 (与作)です。訂正いたします。

RLD777に、機能を追加してカセットビジョンのμPD777シリーズLSIの音源を直接コントロールできるようにしました。

機能はシーケンサー部分とμPD777シリーズLSIとのインターフェース部分で構成されます。
シーケンサー部分はPIC18F4525のソフトウェアで構成されます。 
μPD777シリーズLSIとのインターフェース部分は、シークレットモード再現や、プログラム・パターンROM読み出しで実装していたものと変わりありません。

今回新たに追加したプログラムは、μPD777シリーズLSIに対し、音程データを順次送るシーケンサーです。

μPD777シリーズLSIには音源を制御するためのレジスタとしてFLSとFRSの2つがあります。音程はレジスタに設定する値で決まります。値の範囲は1~127です。この値で水平同期周波数である15734Hzを分周した結果の周波数の音が出ます。1を設定した場合は音を停止します。
与作のμPD777Cー005を使用していて、小口様のドキュメントとは少し異なるのですが、実験では前述のような周波数になるので、そのように設計しています。
レジスタ設定値と分周後出力される周波数を考慮すると、μPD777シリーズLSIで表現できる音域は下の表ようにC3~C6の3オクターブとなります。効果音としてはもっと高域も出ますが、音階として成り立ちません。
C3が120分周になっているのは120が約数を多く持つためいい感じです。

鍵盤 平均律(Hz)  音名  MIDI 設定値 分周周波数 差異  倍音
28 130.813 ド3 C3 48 120   131.119  +0.23% 1
29 138.591 ド#3 C#3 49 114  138.020  -0.41%
30 146.832 レ3 D3 50 107  147.049  +0.15% 9/8
31 155.563 レ#3 D#3 51 101  155.785  +0.14%
32 164.814 ミ3 E3 52 95  165.624  +0.49%
33 174.614 ファ3 F3 53 90  174.825  +0.12% 4/3
34 184.997 ファ#3 F#3 54 85  185.109  +0.06%
35 195.998 ソ3 G3 55 80   196.678  +0.35% 3/2
36 207.652 ソ#3 G#3 56 76   207.030  -0.30%
37 220.000 ラ3 A3 57 72   218.531  -0.67% 27/16
38 233.082 ラ#3 A#3 58 68   231.386  -0.73%
39 246.942 シ3 B3 59 64   245.848  -0.44%
40 261.626 ド4 C4 60 60   262.238  +0.23% 2
41 277.183 ド#4 C#4 61 57   276.040  -0.41%
42 293.665 レ4 D4 62 54  291.375  -0.78% 9/4
43 311.127 レ#4 D#4 63 51  308.515  -0.84%
44 329.628 ミ4 E4 64 48  327.797  -0.56% 81/32
45 349.228 ファ4 F4 65 45  349.650  +0.12% 8/3
46 369.994 ファ#4 F#4 66 43  365.913  -1.10%
47 391.995 ソ4 G4 67 40  393.357  +0.35% 3
48 415.305 ソ#4 G#4 68 38  414.060  -0.30%
49 440.000 ラ4 A4 69 36  437.063  -0.67% 27/8
50 466.164 ラ#4 A#4 70 34  462.772  -0.73%
51 493.883 シ4 B4 71 32  491.696  -0.44%
52 523.251 ド5 C5 72 30  524.475  +0.23%  4
53 554.365 ド#5 C#5 73 28  561.938  +1.37%
54 587.330 レ5 D5 74 27  582.751  -0.78% 9/2
55 622.254 レ#5 D#5 75 25  629.371  +1.14%
56 659.255 ミ5 E5 76 24  655.594  -0.56%  5
57 698.456 ファ5 F5 77 23  684.098  -2.06% 16/3
58 739.989 ファ#5 F#5 78 21  749.251  +1.25%
59 783.991 ソ5 G5 79 20   786.713   +0.35% 6
60 830.609 ソ#5 G#5 80 19   828.119   -0.30%
61 880.000 ラ5 A5 81 18   874.126   -0.67% 27/4
62 932.328 ラ#5 A#5 82 17   925.545   -0.73% 7
63 987.767 シ5 B5 83 16   983.391  -0.44%
64 1,046.502 ド6 C6 84 15 1,048.951  +0.23% 8
65 1,108.731 ド#6 C#6 85 14 1,123.876  +1.37%

曲データはこんな感じになっています(今回の00の曲)

APLAY_DATA_00 ;ゼビウス
DB .15,.72 ;TEMPOと1小節の長さ(カウント数)

DW  XEVIOUS1_RTrack  ;FLS register (左右を逆にしています)
DW  XEVIOUS1_LTrack  ;FRS register
;-----------------------------------------------------------
XEVIOUS1_RTrack

DB  F5,n4.,RST,n4,C5,n8,F5,n8,A5,n8,C6,n8,A5,n8,RST,n8,F5,n8
DB  G5,n8,RST,n8,G5,n8,G5,n8,RST,n8,D5,n4,RST,n8,G5,n8,F5,n8,RST,n8,E5,n8
DB  F5,n4.,RST,n4,C5,n8,F5,n8,A5,n8,C6,n8,A5,n8,RST,n8,F5,n8
DB  Gb5,n8,RST,n8,Gb5,n8,Gb5,n8,RST,n8,F5_,n8,F5,n2
DB  P_END,P_END
;-----------------------------------------------------------
XEVIOUS1_LTrack
DB  A4,n4.,RST,n4,A4,n8,A4,n8,C5,n8,F5,n8,C5,n8,RST,n8,A4,n8
DB  Bb4,n8,RST,n8,Bb4,n8,Bb4,n8,RST,n8,Bb4,n4,RST,n8,Bb4,n8,Bb4,n8,RST,n8,Bb4,n8
DB  A4,n4.,RST,n4,A4,n8,A4,n8,A4,n8,A4,n8,A4,n8,RST,n8,A4,n8
DB  Bb4,n8,RST,n8,Bb4,n8,Bb4,n8,RST,n8,A4_,n8,A4,n2
DB  P_END,P_END

DBで記述した後のデータは、音名,長さ.....と続けて記述し、終わりにP_END,P_ENDを書くとそのパートは終了です。
n4は四分音符、n4.は付点四分音符。
同音が連続する場合は自動的に最小単位の休符が入りますが、音名の後ろに_を書くとタイになります。

アセンブラの疑似命令で音名はMIDI番号に変換、長さも以下のように数値に変換されます。
n32 EQU 3    ;32分音符  3
n16 EQU n32*2 ;16分音符  6
n8 EQU n16*2 ;8分音符  12
n4 EQU n16*4 ;4分音符  24
n2 EQU n16*8 ;2分音符  48
nZ EQU n16*16 ;全音符  96

n16. EQU n16+n32    ; 9  付点16分音符
n8. EQU n8+n16 ; 18
n8.. EQU n8+n16+n32 ; 27
n4. EQU n4+n8 ; 36
n4.. EQU n4+n8+n16 ; 27
n4... EQU n4+n8+n16+n32 ; 30
n2. EQU n2+n4 ; 72
n2.. EQU n2+n4+n8    ; 84
n2... EQU n2+n4+n8+n16    ; 90
n2.... EQU n2+n4+n8+n16+n32 ; 93

; 三連符実装
t32 EQU 2
t16 EQU t32*2   ;4
t8 EQU t16*2   ;8 三連8分音符(一拍三連)
t4 EQU t16*4   ;16 三連4分音符(ニ拍三連)
t2 EQU t16*8   ;32 三連2分音符

なお、高度な技術的内容について、
小口様のサイト
https://www.oguchi-rd.com/
大浦様のサイト
https://oura.oguchi-rd.com/
より情報をいただいております。ありがとうございます。

Комментарии

Информация по комментариям в разработке