2018年12月27日木曜日

パソピア7のDCSGでWave再生

パソピア7にはSN76489A DCSGがあるので、これを使ってWaveファイルを再生することを考えます
MSXやP6のPSGで試した方がいるようですが、パソピア7はまだいないと思うので・・・

SN76489のVolumeと出力値の関係は以下
Volume設定値出力値割合
0327671.000000
1260280.794328
2206750.630957
3164220.501187
4130450.398107
5103620.316228
682310.251189
765680.199526
851930.158489
941250.125893
1032770.100000
1126030.079433
1220670.063096
1316420.050119
1413040.039811
1500.000000


Volumeの値が上がるほど出力値が小さくなり、Volume=15で無音。
SN76489は1チップ3和音なので、上記Volumeを3つMixしてPCMの256階調(0-255)を作ってみます
TONE_0:
DB 0Fh, 0Eh, 0Dh, 0Ch, 0Bh, 0Eh, 0Dh, 0Ah, 0Ch, 0Ch, 09h, 0Dh, 0Bh, 0Dh, 0Bh, 0Eh
DB 0Ch, 09h, 0Bh, 09h, 0Ah, 0Bh, 0Ah, 0Eh, 08h, 08h, 09h, 0Dh, 08h, 09h, 09h, 08h
DB 07h, 07h, 0Bh, 08h, 06h, 08h, 06h, 06h, 0Eh, 07h, 0Dh, 08h, 07h, 05h, 08h, 07h
DB 04h, 06h, 05h, 0Dh, 05h, 09h, 05h, 04h, 06h, 03h, 07h, 08h, 05h, 06h, 04h, 07h
DB 0Bh, 03h, 0Bh, 05h, 0Eh, 0Bh, 0Ah, 03h, 05h, 05h, 03h, 03h, 03h, 02h, 03h, 02h
DB 02h, 06h, 03h, 02h, 03h, 02h, 04h, 02h, 03h, 03h, 01h, 09h, 03h, 04h, 02h, 03h
DB 0Dh, 01h, 01h, 01h, 02h, 02h, 04h, 05h, 01h, 04h, 08h, 01h, 01h, 03h, 02h, 09h
DB 02h, 00h, 01h, 01h, 00h, 02h, 02h, 00h, 03h, 02h, 00h, 00h, 03h, 0Bh, 01h, 03h
DB 01h, 00h, 08h, 0Ch, 00h, 03h, 00h, 02h, 00h, 00h, 00h, 01h, 00h, 00h, 0Ah, 02h
DB 0Dh, 05h, 00h, 01h, 01h, 00h, 00h, 01h, 02h, 01h, 03h, 06h, 00h, 01h, 00h, 01h
DB 01h, 02h, 00h, 04h, 01h, 00h, 01h, 00h, 04h, 04h, 00h, 01h, 08h, 00h, 02h, 01h
DB 00h, 03h, 03h, 01h, 00h, 01h, 00h, 00h, 01h, 01h, 00h, 01h, 00h, 00h, 01h, 00h
DB 01h, 01h, 00h, 02h, 02h, 01h, 00h, 01h, 00h, 00h, 01h, 00h, 01h, 00h, 00h, 00h
DB 00h, 02h, 00h, 01h, 00h, 00h, 01h, 00h, 00h, 00h, 00h, 01h, 01h, 00h, 00h, 00h
DB 00h, 00h, 00h, 00h, 01h, 00h, 00h, 00h, 01h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
DB 00h, 00h, 04h, 04h, 00h, 00h, 01h, 01h, 01h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
TONE_1:
DB 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Eh, 0Eh, 0Fh, 0Eh, 0Dh, 0Fh, 0Eh, 0Ch, 0Dh, 0Eh, 0Bh
DB 0Ch, 0Ch, 0Ch, 0Bh, 0Ch, 0Bh, 0Bh, 0Ah, 0Dh, 0Ah, 0Ah, 09h, 09h, 09h, 09h, 0Ah
DB 0Bh, 0Bh, 08h, 09h, 0Ch, 09h, 0Bh, 0Bh, 06h, 07h, 07h, 08h, 09h, 0Bh, 08h, 09h
DB 0Ch, 08h, 0Ah, 04h, 0Ah, 05h, 08h, 09h, 07h, 0Eh, 06h, 07h, 06h, 07h, 09h, 05h
DB 04h, 0Ch, 03h, 06h, 04h, 05h, 04h, 0Ah, 07h, 05h, 09h, 07h, 08h, 0Dh, 09h, 0Ch
DB 0Ch, 06h, 07h, 0Ah, 07h, 08h, 07h, 09h, 06h, 07h, 0Eh, 04h, 06h, 04h, 08h, 06h
DB 01h, 0Dh, 0Ch, 0Bh, 06h, 07h, 03h, 05h, 0Ah, 05h, 03h, 09h, 08h, 03h, 05h, 01h
DB 04h, 0Eh, 09h, 08h, 0Ch, 05h, 06h, 0Dh, 04h, 04h, 0Bh, 09h, 05h, 00h, 07h, 03h
DB 06h, 0Ah, 02h, 02h, 09h, 04h, 08h, 03h, 07h, 07h, 08h, 05h, 07h, 08h, 01h, 02h
DB 02h, 03h, 06h, 03h, 03h, 05h, 05h, 03h, 03h, 04h, 03h, 00h, 05h, 05h, 04h, 04h
DB 03h, 02h, 05h, 00h, 02h, 04h, 02h, 05h, 00h, 02h, 03h, 02h, 00h, 05h, 02h, 01h
DB 04h, 00h, 01h, 02h, 02h, 01h, 04h, 03h, 01h, 02h, 02h, 03h, 03h, 02h, 01h, 02h
DB 02h, 01h, 02h, 02h, 02h, 01h, 02h, 03h, 03h, 03h, 02h, 01h, 00h, 01h, 01h, 01h
DB 02h, 02h, 01h, 01h, 01h, 01h, 02h, 02h, 02h, 01h, 01h, 01h, 01h, 01h, 03h, 03h
DB 02h, 02h, 00h, 01h, 02h, 00h, 00h, 00h, 01h, 00h, 01h, 01h, 00h, 02h, 02h, 00h
DB 00h, 00h, 00h, 00h, 00h, 00h, 01h, 01h, 01h, 00h, 00h, 02h, 02h, 02h, 01h, 01h
TONN_2:
DB 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Fh, 0Eh, 0Fh, 0Dh, 0Eh, 0Dh
DB 0Dh, 0Fh, 0Dh, 0Fh, 0Dh, 0Ch, 0Dh, 0Ah, 0Eh, 0Fh, 0Eh, 0Ah, 0Fh, 0Eh, 0Dh, 0Dh
DB 0Eh, 0Dh, 0Ah, 0Ch, 0Eh, 0Bh, 0Eh, 0Dh, 0Ah, 0Fh, 08h, 0Ah, 0Ah, 0Eh, 09h, 09h
DB 0Fh, 0Ch, 0Ch, 0Eh, 0Bh, 0Ch, 0Eh, 0Fh, 0Bh, 0Fh, 0Ah, 07h, 0Fh, 09h, 0Ch, 0Bh
DB 09h, 0Dh, 0Eh, 0Ch, 07h, 06h, 08h, 0Ch, 08h, 0Dh, 0Ch, 0Fh, 0Dh, 0Eh, 0Ah, 0Eh
DB 0Dh, 06h, 0Ch, 0Eh, 0Bh, 0Fh, 07h, 0Dh, 0Ch, 09h, 0Fh, 05h, 0Ah, 0Ch, 0Bh, 09h
DB 0Eh, 0Dh, 0Dh, 0Eh, 0Eh, 0Ah, 0Eh, 05h, 0Ch, 06h, 05h, 0Ch, 0Eh, 0Fh, 0Ch, 0Ah
DB 0Fh, 0Fh, 09h, 0Ah, 0Fh, 09h, 07h, 0Eh, 07h, 0Bh, 0Eh, 0Fh, 05h, 0Ch, 08h, 08h
DB 09h, 0Bh, 04h, 03h, 0Bh, 05h, 0Ch, 0Ah, 0Eh, 0Dh, 0Ah, 08h, 0Bh, 09h, 04h, 0Eh
DB 02h, 03h, 0Bh, 0Eh, 0Dh, 0Eh, 0Dh, 0Bh, 06h, 07h, 04h, 08h, 0Ah, 05h, 0Eh, 06h
DB 08h, 07h, 08h, 0Bh, 0Ch, 0Ah, 0Bh, 07h, 09h, 03h, 0Eh, 09h, 04h, 06h, 05h, 0Fh
DB 07h, 0Ah, 05h, 07h, 0Fh, 0Dh, 06h, 08h, 0Bh, 06h, 0Dh, 04h, 07h, 0Bh, 09h, 0Ah
DB 05h, 08h, 09h, 03h, 03h, 07h, 08h, 03h, 05h, 05h, 04h, 0Eh, 0Dh, 0Ch, 0Ch, 0Bh
DB 06h, 02h, 0Ah, 05h, 09h, 09h, 03h, 05h, 05h, 08h, 08h, 04h, 04h, 07h, 03h, 03h
DB 04h, 04h, 0Eh, 06h, 02h, 0Ch, 0Bh, 0Bh, 03h, 0Ah, 05h, 05h, 09h, 03h, 03h, 08h
DB 08h, 08h, 01h, 01h, 07h, 07h, 02h, 02h, 02h, 06h, 06h, 02h, 02h, 02h, 03h, 03h
6和音テーブルも作成してみましたが、11025Hzのタイミングでは処理が厳しそうなので今回は3和音でいってみます

11025Hzの場合は0.09ms間隔なので、パソピア7のZ80 4MHzで368clock(0.092ms)くらいの間隔で音階を変化させることでWave再生します


続く

0 件のコメント:

コメントを投稿