Y8950アプリケーションマニュアル

本記載内容は、Y8950データシート(英語版)、Y8950アプリケーションマニュアル(英語版)、MSX-Datapackを参考に作成しています。
また、赤字記載内容は裕之が独自に解釈or解析した結果を記載しています。

Y8950関連資料は、下記ページを参照させていただきました。
MSX Assembly Page-Resources(MSX Assembly Page)



目次

1.MSX-AUDIOの概要
 1-1.概要
 1-2.特徴
 1-3.FM方式の概略
 1-4.ADPCM音声分析・合成の概略

2.機能概要
 2-1.主要機能
 2-2.端子配置図
 2-3.端子機能
 2-4.端子制御
 2-5.チャンネルとスロット
 2-6.ブロック図
 2-7.レジスタマップ

3.動作説明
 3-1 レジスタ
 3-2 フェイズジェネレータ(PG)
 3-3 エンベロープジェネレータ(EG)
 3-4 オペレータ(OP)とアキュムレータ(ACC)
 3-5 ADPCM音声分析・合成
 3-6 AD/DA変換
 3-7 外部メモリコントロール
 3-8.KEYBOARD IN/OUT
 3-9.ステータス情報とインタラプト信号

4.インターフェース
 4-1.オーディオ出力
 4-2.外部メモリ
 4-3.キーボード
 4-4.プロセッサ接続

5.楽音の作り方
 5-1.音作りの考え方
 5-2.音作りの基本
 5-3.音作りの例
 5-4.リズム音について

6.電気的特性
 6-1.絶対最大定格
 6-2.動作定格
 6-3.DC特性
 6-4.AC特性

7.タイミング図

8.パッケージ外形図


1.MSX-AUDIOの概要
1-1.概要
 MSX-AUDIOは、MSX2のオプショナル音源として開発された音源LSIです。
このLSIは音源としてFM音源システムを採用しているため、リアルで迫力ある音作りができます。これは、ヤマハ製エレクトーンや、初音ミクのコスチュームのモデルにもなったDX-7で、以前から採用されていた物と同様です。
さらに、従来のFM音源LSIで使われている複合正弦波音声合成方式に加えて、ADPCMによる音声分析・合成機能を備えているため、容易に音声データの処理が可能になりました。また、この音声分析・合成回路に組み込まれているAD/DAの各変換器を単独で使うこともでき、アナログデータもこのLSIで処理可能です。
その他に、このLSIには鍵盤処理の為の入出力ポートや汎用のI/Oポートも備えてありますので、MSX-AUDIOが1個あれば、音に関する全ての処理が可能になります。

1-2.特徴
・FM音源を採用し、リアルなサウンドを作ることが可能。YM3526とソフトウェアコンパチブル
・モード選択により9音同時発生あるいはメロディ音6音+リズム音5音の2つのモードを選択可能
・ビブラート発振器、振幅変調発振器内蔵
・ビットADPCM音声分析・合成回路内蔵
・複合正弦波音声合成が可能
・AD/DAコンバータ制御回路内蔵
・外部メモリとしてROM、RAMともに256Kバイト接続可能(ADPCMデータ格納あるいはCPUの補助記憶)
・鍵盤スキャニングのための8ビット入出力ポート内蔵
・4ビットI/Oポート内蔵
・入出力TTLコンパチブル
・Si-gate CMOS LSI
・5V単一電源

1-3.FM方式の概略
 FM方式は、Frequency Modulationすなわち周波数変調の意味で、変調によって生じる高調波を楽音の合成に利用したものです。この方式は比較的簡単な回路で、非調和音も含む高い高調波成分を持つ波形を発生させることができ、しかも変調指数と高調波のスペクトル分布の対応が非常に自然であるため、自楽器の合成音から電子楽器まで、幅広い音作りが可能ということが確認されています。
FM方式は以下の式のように4つのパラメータで表現されます。

 (式1) F=Asin(ωct+Isinωmt)

ここでは、Aは出力振幅、Iは変調指、またωc、ωmはそれぞれキャリア、モジュレータの各周波数です。この(式1)は次のように表現することもできます。

 (式2) F=A[Jo(I)sinωct+J1(I){sin(ωc+ωm)t-sin(ωc-ωm)t}+J2(I){sin(ωc+2ωm)t+sin(ωc-2ωm)t+...]

 ここで、Jn(I)はn次の第1種Bessel関数です。(式2)からわかるように各倍音の振幅は、変調指のBessel関数で表現されることになり、(式1)によるFM音源は特定の楽音や効果音の合成に非常に有効となることがわかります。ただし、これでは高調波が一様に分布しないためString系の音源には不向きとなります。そこで、考え出されたのが(式3)で表されるfeedback FMという方式です。

 (式3) F=Asin(ωct+βF)

 ここでβは帰還率です。このfeedbackFMでは、高調波スペクトルが鋸歯状波となりString系の音作りも可能となります。
以上のような、FM方式を実現するためには、次の3つの機能ブロックが必要です。

1.ωtを発生させるphase generator(PG)
2.振幅Aや変調指数を時間関数として得るためのenvelop generator(EG)
3.sinテーブル(sin)

 以上の3つの構成要素を組み合わせて1つのユニットとして考えると、先のFM方式は図1-1のように表すことができます。したがって、このユニット(オペレータセル:OP)の考え方を用いれば、FM方式の音作りは、ユニット内の周波数パラメータやEGパラメータの設定、そしてユニット間の組み合せのデータを作ればよいことになります。


a.F(t)=A SIN(ωct+I SINωmt)


b.F(t)=A1SINω1t+A2SINω2tc.F(t)=A SIN(ωt+βF(t))
図1-1 ユニットセルによるFM方式の表現

1-4.ADPCM音声分析・合成の概略
 MSX-AUDIOには、音声の分析・合成が簡単で音質も自然なADPCM方式と、分析はコンピュータを使った複雑な処理が必要であるが発音のためのメモリが比較的少なくてすむ複合正弦波音声合成方式の2種類の音声情報処理を備えています。ここでは、FM音源とともにこのLSIの柱であるADPCM方式による音声分析・合成について説明します。
ADPCM(Adaptive Differential Pulse Code Modulation)は、音声データと予測データとの差を、波形の推移によって柔軟に変化する量子化幅(適応量子化幅)によってコード化し、音質の低下を防ぐとともに、ビット数の削減を図った音声声分析合成方式です。以下で、そのコード化およびデコードの手順について述べます。

(a)音声分析
MSX-AUDIOでは8ビットのPCMデータを4ビットのADPCMデータへの変換を行っています。
(1).まず、音声をサンプリングレート(1.8KHz〜16KHz)ごとに8ピットのPCMデータ(X1,n)に変換します。
(2).得られたPCMデータ(X1,n)を256倍し、16ビットデータ(Xn)として予測値(n)と比較し、その差(dn)を求めます。予測値(n)の初期設定値は8000Hです。
(3).差分(dn)が正のときは、ADPCMデータのMSB(L4)を「0」、負のときは「1」とし、同時に差分の絶対値(|dn|)を計算します。
(4).次に、この差分の絶対値(ldnl)と量子化幅(Δn)との関係が、表I-1のいずれに当たるかによって、ADPCMの残り3ビットを決定します。量子化幅(Δn)の初期設定値は7FHです。

表1-1 ADPCMコード表
L4L3L2L1条件
dn≧0dn<0
01000|dn|<Δn /4
001Δn/4≦|dn|<Δn /2
010Δn/2≦|dn|<Δn ×3/4
011Δn×3/4≦|dn|<Δn
100Δ≦|dn|<Δn ×5/4
101Δn×5/4≦|dn|<Δn ×3/2
110Δn×3/2≦|dn|<Δn ×7/4
111Δn×7/4≦|dn|

以上の操作で音声データからADPCMデータへのデータ変換は終わりです。
(5).ADPCMのデータが得られると、次ステップの予測値(n+1)と量子化幅(Δn+1)の更新を行います。
n+1=(1-2×L4)×(L3+L2/2+L1/4+1/8)×△n+n
Δn+1=F(L3,L2,L1)×ΔAn

(期待値)
表1-2 量子化幡変化率
L3L2L1f
0000.9
0010.9
0100.9
0110.9
1001.2
1011.6
1102.0
1112.4
以下、1〜5の操作を各サンプリングタイムごとに繰り返すことによって、完全なADPCM方式の音声分析が得られます。


(b).音声合成
(1).合成モードの手順は分析モードの5項で与えられる予測値・量子化幅の更新の式が、再生データを計算する式になります。つまり、予測値が再生音を与えることになります。しかし、これで得られる再生音は、サンプリング毎の階段波となり、ステップノイズの発生など音質にやや問題があります。そこで、MSX-AUDIOでは次の方法で波形をなめらかにします。
(2).まず、(5)で得られる再生値を平均化回路に通します。このことは、このシステムに一種のLow Pass Filterを挿入したことと同じになり、広域の雑音をカットすることができます。さらに、ステップノイズを軽減するために各サンプリング間をさらに50KHzで再サンプリングし、線形補間します。この様子は図1-2のようになります。

ADPCMサンプリング値
×平均化されたデータ
-----スムージング回路無しの再生音
     (50KHz再サンプリング+平均化回路)の再生音
図1-2 ADPCM音声合成波形

2.機能概要

2-1.主要機能
MSX-AUDIOの基本的構成は、FM音源、ADPCM方式音声分析・合成、外部メモリコントロール、AD/DA変換および鍵盤スキャニングのための入出力ポートです。
(a).FM音源
FM音源部の発音形態には、9音同時発生モード、メロディ6音+リズム5音発生モードおよび複合正弦波音声合成モードの3種類があり、このいずれを使うかは、ソフトウェアで指定します。
なお、このFM音源部はOPL(YM3526)と同一であり、OPLのソフトウェアがそのまま使えます。

以上の各機能の他に、より自然な音作りを可能にするビブラート発振器、振幅変調発振器や、各種の基準信号となる長短2つのタイマを備え、ソフトウェアの負担を軽くしています。また汎用のI/Oポートが4ビット用意されています。

2-2.端子配置図


2-3.端子機能
(a)φM
 MSX-AUDIOのメインクロックです。入力周波数は3.579545MHz(平均)です。

(b)φSY,SH,MO
 MOはMSX-AUDIOの音声出力端子です。これらは、MOは13bitシリアル(virtual 10bit and characteristic 3bit(訳注:なんて訳すの?))データで、同期クロック(φSY)と同期シグナル(SH)を使用し、DAコンバータ(YM3014)でアナログ値に変換します。

(c)D0-D7
 MSX-AUDIOとCPUとのデータ通信を行う8bitの双方向データバスです。

(d)CS,RD,WR,A0
 D0-D7のデータバスを制御するために使用します。
CSRDWRA0
0100レジスタアドレス設定
0101レジスタデータ設定
0010ステータスリード
0011レジスタデータリード(specificレジスタのみ)
1xxxD0-D7はハイインピーダンスになります

(e)IRQ
 ADPCMとメモリーコントロールの2つのタイマの出力です。この信号はプログラムでマスク可能です。

(f)DA,AD,C
 AD変換に使用します。DAはDAコンバータの出力に接続してください(リファレンスデータ)。アナログ入力(AD)は、VCC/2±VDD/4の範囲が許可されています。負荷容量端子Cはアナログデータのサンプル/ホールドに使用します。

(g)DM0-DM7
 外部ストレージアドレス(A0-A7)とデータ入力(DI0-DI7)とデータ出力(DO1-DO7)をマルチプレクスして使用します。(DO0は別の端子です)。

(h)A8,DT0
 外部メモリアドレス(A8)と、DT0はデータ出力(DO0)です。

(i)RAS,CAS,WE
 外部メモリの出力生後信号です。DRAMを外部ストレージとして使用するとき、RAM互換端子として使用出来ます。外部ROMを使用する場合、RAS,CASをアドレスラッチ信号として使用します。

(j)MDEN,ROM-CS
 外部メモリからのデータ入力タイミングをヲします。MDENが"1"になったとき、DRAMデータがDM1-DM7に入力されます。ROM-CSが"0"のとき、ROMデータはDM1-DM7に入力します。(DT0端子はデータ出力0に使用します)。

(k)IN0-IN7,OUT0-OUT7
 鍵盤スキャンの入力(IN0-IN7)と出力(OUT0-OUT7)ポートです。これらの入力ポートはプルアップされていて、出力ポートはオープンドレインです。

(l)IO0-IO3
 汎用入出力ポートです。

(m)SP-OFF
 AD変換のリファレンス電圧にDAコンバータを使用する際、スピーカーの接続を切る為の信号です。

(n)IC
 MSX-AUDIOをアクティブ化する端子です

(o)GND,AGND
 グランド信号です

(p)Vcc,AVcc
 +5V電源です。

2-4.端子制御
MSX-AUDIOでは、アドレスとデータのリードライト制御は、CS,WR,RD,A0を使用します。これらの4つの信号で、4つのモードを表します。
表2-1 モードセレクト
CSRDWRA0
11xxxインアクティブモード
20100アドレスライトモード
30101データライトモード
40010ステータスリードモード
50011データリードモード

(a)インアクティブモード
 CSが1のとき、D0-D7はハイインピーダンスになります。

(b)アドレスライトモード
 アドレスライトするとき、コントロール信号をアドレスライトモードにし、設定するアドレスをデータバスに与えます。このようにして、データを書き込むレジスタアドレスを設定します。
 ※備考:アドレスデータを設定した後、12クロック(φM)以上後にデータライトを行う必要があります。

(c)データライトモード
 コントロール信号がデータライトモードに設定された場合、D0-D7のデータは指定されたレジスタアドレスに書き込まれます。
 アドレスライトモードと同様に、データライトモードでは前のデータライトやその次のデータアドレスライトから84クロック(φM)以上遅らせる必要があります。
 (レジスタアドレス$00-$1aは12クロックです)

(d)ステータスリードモード
 コントロール信号がステータスリードモードに設定されたとき、MSX-AUDIOのステータスデータが出力されます。

(e)データリードモード
 コントロール信号がデータリードモードに設定されたとき、MSX-AUDIOレジスタのデータが読み込まれデータバスに出力されます。
 備考:アドレスとデータのライトには次の点に注意してください。
 MSX-AUDIOはアドレス/データの書き込みの後、遅延時間が必要です。アドレスライトモードとデータライトモードでは遅延時間が異なります(表2-2に示します)。
 プロセッサは、遅延時間が過ぎるまでMSX-AUDIOに次の操作をしてはできません。もし遅延時間を無視した場合、正しいデータは書き込まれません。
 表2-2 遅延時間
モード遅延時間
アドレスライトモード12クロック
データライトモード84(12)クロック
(備考)
遅延時間のクロックはマスタークロックです。
(12)クロックは、レジスタアドレス$00-$1aの場合です。

2-5.チャンネルとスロット
MSX-AUDIOはFM音を9音(9チャンネル)発音することが可能で、1音あたり2オペレータセル持っています。ただし、オペレータセルはシステムで1つ持っているだけなので、FM9音の計算は、このオペレータセルをシリアルに18回通すことによってなされます。このオペレータセルを通す順番(スロット番号)は、レジスタ番号と対応しており、各音の発音コントロールはスロットと対応したレジスタを制御することになります。
また、F-Numberのようなチャンネルごとのデータは2つのスロットを制御します。この2つのスロット(第1、第2スロット)の関係は、FM変調モードにした場合は、第1スロットが必ず変調波に、そして第2スロットが搬送波になります。また、第1スロットはFeedbackFMのモードにも設定できます。このモード設定については「FEEDBACK/CONNECTION」を参照して下さい。
表2-3はチャンネルとスロットの関係を示します。

表2-3 チャンネルとスロット
1234567891011 121314151617181.スロット番号
123123456456 7897 892.チャンネル番号
12121 23.チャンネル毎に見たときのスロット番号
20212223242528 292A2B2C2D30 31323334354.チャンネル毎のデータとレジスタの関係(例:$20〜$28)
C0C1C2C0C1C2C3 C4C5C3C4C5C6 C7C8C6C7C85.チャンネル毎のデータとレジスタの関係(例:$C0〜$C8)

2-6.ブロック図

2-7.レジスタマップ
アドレスD7D6D5D4D3D2D1D0アドレスD7D6D5D4D3D2D1D0
00-20 A
M
V
I
B
E
G
T
Y
P
K
S
R
MULTI
01TEST
02TIMER 135
03TIMER 240 KSLTL
04IRQ
RST
T1
MSK
T2
MSK
EOS
MSK
BR
MSK
-ST2ST1
05Key Board IN *55
06Key Board OUT 60 AR DR
07STA
RT
RECMEM
DATA
REPTSP
OFF
-RST
08CSMNOTE
SEL
-Sam
pl
DA
AD
64KROM75
09START ADD(L)80SLRR
0ASTART ADD(H)
0B STOP ADD(L) 95
0C STOP ADD(H) A0 F-Number(L)
0D PRESCALE(L)
0E PRESCALE(H) A8
0F ADPCM-DATA *B0 - K
O
N
Block F-Num
(H)
10DELTA-N(L)
11DELTA-N(H)B8
12 EG-CTRL BD AM
DEP
VIB
DEP
RBDSDTOMTCHH
- - C0 - FB C
15 DAC DATA(H)
16 DAC DATA
(L)
- C8
17 - SHIFT -STATUS-
2 1 0
18 - I/O-CTRL INTT1T2EPSBUF
RDY
-PCM
BSY
19 - I/O DATA *
1A PCM-DATA *
-
*READ可能なレジスタ

3.動作説明
MSX-AUDIOは、プロセッサからレジスタアレイへデータを書き込むことによって制御されます。この書き込まれたデータによって、楽音のエンベロープの形状や変調度、周波数および発音モードなどが決定されます。そして、このデータの組み合せが、ピアノやバイオリンなどの音を発生させることになります。このマニュアルでは、各レジスタの機能を主として説明し、他のブロックについては簡単な説明に留め置きます。ただし、FM音源については、「4.5.4楽音の作り方」の章で少し例を上げて説明します。

3-1.レジスタ
レジスタはレジスタマップで与えられるように約1Kbitのエリアを持っています。そして、この1Kbitのエリアを機能毎にバイト単位でまとめ、各バイトにアドレスを割り当てます。
したがって、あるデータをMSX-AUDIO内に格納したい場合は、まずそのデータを格納するアドレスを指定し、次に目的のデータを送ります。ただし、同一サブアドレスを何度もアクセスする場合は、最初にアドレスを送るだけで、以後はアドレスデータを送ることなしに、データを送ることができます。
なお、初期設定(IC='0')のときに「0」にセットされるレジスタは、以下の各レジスタの説明の項で*マークで示します。

3-1-1.TEST:ADDRESS[$01]

3-1-2.TIMER
3-1-3.FLAG CONTROL:ADDRESS[$04]

3-1-4.KEYBOARD IN:ADDRESS[$05]

3-1-5.KEYBOARD OUT:ADDRESS[$06] *

3-1-6.START/REC/MEM DATA/REPEAT/SP-OFF/RESET ADDRESS[$07]*

3-1-7.CSM/KEY BOARD SPLIT/SAMPLE/DA AD/64K/ROM ADDRESS[$08]*

3-1-8.START ADDRESS L/H:ADDRESS[$09,$0A]

3-1-9.STOP ADDRESS L/H:ADDRESS[$0B,$0C]

3-1-10.PRESCALE L/H:ADDRESS[$0D,$0E]

3-1-11.ADPCM-DATA:ADDRESS[$0F]

3-1-12.DELTA-N L/H[$10,$11]

3-1-13.ENVELOP CONTROL(at ADPCM):ADDRESS[$12]

3-1-14.DAC-DATA:ADDRESS[$15-$17]

3-1-15.I/O-CONTROL ADN I/O-DATA:ADDRESS[$18,$19]
  • MSX-AUDIOでは汎用I/0ポートを4ビット用意しており、このI/Oポートをコントロールするレジスタがアドレス$18と$19です。
    $18はI/Oポートの入出力の方向制御ビットで、「1」のとき、ポートは出力に、「0」のときは入力になります。初期状態では「0」です。
    $19はI/Oポートのデータをやりとりするレジスタです。
    $18D7D6D5D4D3D2D1D0
    -
    IO3IO2IO1IO0
    I/O3CTRLI/O2CTRLI/O1CTRLI/O0CTRL

    $19D7D6D5D4D3D2D1D0
    -
    I/O3DATEI/O2DATEI/O1DATEI/O0DATE

    3-1-16.PCM-DATA:ADDRESS[$1A]

    3-1-17.AM/VIB/EG-TYP/KSR/MULTIPLE:ADDRESS[$20-$35]*

    3-1-18.KSL Total Level :ADDRESS[$40-$55]

    3-1-19.ATTACK/DECAYRATE:ADDRESS[$60-$75]*

    3-1-20.SUSTAIN LEVEL/RELEASE RATE:ADDRESS[$80-$95]

    3-1-21.BLOCK/F-Number/SUS/KEY:ADDRESS[$A0-$B8]*

    3-1-22.FEEDBACK/CONNECTION:ADDRESS[$C0-$C8]*

    3-1-23.AM.VIB-DEPTH/RHYTHM:ADDRESS[$BD]*
    振幅変調(AM)、ビブラート(VIB)の深さおよびリズムのモード選択と各リズム楽器のON/OFFをコントロールします。

    3-2.フェイズジェネレータ(PG)
    フェイズジェネレータは必要な周波数に応じた増分を単位時間ごとにアキュムレートして位相値を得る回路です。この増分はレジスタから送られてくる周波数情報(F-Number、BLOCK、MULTIPLE)から作成されます。さらに、ビブラート発振器を内蔵しているため、この発振器の出力と周波数情報とを組み合わせることにより、ビブラート効果を作り出します。

    3-3.エンベロープジェネレータ(EG)
    エンベロープジェネレータ(以下、EG)は、ATTACK、DECAY、RELEASEの各RATE、Sustain Level、TotalLevelなどでコントロールされ、音色、音量の経時変化を与えます。そして、そのダイナミックレンジは96dB(分解能0.1875dB)あります。EGは対数表示であり、また減衰量で表されます。その一般的な波形は図3.2のとおりです。この波形で特徴的なのは、アタック時は指数関数的に変化し、それ以外では直線的に変化する点です。また、アタックからディケイへの切り換えは、OdBに達したときに起こり、ディケイからサステインへは、サステインレベルに到達したときに起こります。そして、リリースへの移行はKeyがOFFされたときに起こります。トータルレベル、レベルキースケール、振幅変調などの効果は、その設定値をEGに加えることによりエンベロープの波形を変化させます。

    図3.2 エンベローブ波形

    3-4.オペレータ(OP)とアキュムレータ(ACC)
    オペレータはFM演算を行う回路です。オペレータでは、フェイズジェネレータからの位相出力をもとに、SINの値を計算し、これにエンベロープジェネレータ出力を掛け合わせます。この結果を変調波であればオペレータの入力へ返し、楽音であればアキュムレータへ送ります。この転送を制御するのがFeedback、CONNECTIONの各データです。
    アキュムレータは各チャンネルのオペレータ出力を累積加算します。さらに、この加算結果を仮数部10ビット(サインビットを含む)、指数部3ビットのオフセットバイナリへデータ変換を行い、LSBより図3-3のように出力します。


    図3-3出力タイミング

    MSX-AUDIOの内部データMOの出力データ
    Sign151413121110987654321S3S2S1Sign987654321
    11xxxxxxxx1111xxxxxxxxx
    101xxxxxxxx1101xxxxxxxxx
    1001xxxxxxxx1011xxxxxxxxx
    10001xxxxxxxx1001xxxxxxxxx
    100001xxxxxxxx0111xxxxxxxxx
    1000001xxxxxxxx0101xxxxxxxxx
    10000001xxxxxxxx0011xxxxxxxxx
    01111111xxxxxxxx0010xxxxxxxxx
    0111110xxxxxxxx0100xxxxxxxxx
    011110xxxxxxxx0110xxxxxxxxx
    01110xxxxxxxx1000xxxxxxxxx
    0110xxxxxxxx1010xxxxxxxxx
    010xxxxxxxx1100xxxxxxxxx
    00xxxxxxxx1110xxxxxxxxx
    図3-4内部データと出力データ

    3-5.ADPCM音声分析・合成
    ここでは、音声分析・合成の方法をレジスタとのやりとりを例にしたがって説明します。
    (1)音声分析(AUDIO→CPU)
    アドレスデータR/Wコメント
    ○初期設定
    $04$00W 各フラグをイネーブルにする。
    $04$80W 各フラグをリセット。
    $07$C8W ADPCM分析をイネーブルとし、スピーカをOFFとする。
    $08$00W
    $0D$C2W サンプリングレートを8KHz(NPRE=450)。
    $0E$01W
    ○分析スタート
    $0FR ダミーリードにより分析開始
    ○分析中
    $0FR BUF・RDYフラグが「1」のとき、$0Fをリードして分析データを格納し、フラグリセット。「0」であれば待機。
    ($04$80W)
    ○分析終了
    $07$48W ADPCM分析終了。
    $07$00W $07レジスタリセット。

    (2)音声合成(CPU→AUDIO)
    アドレスデータR/Wコメント
    ○初期設定
    $04$00W 各フラグをイネーブルにする。
    $04$80W 各フラグをリセット。
    $07$80W ADPCM合成をイネーブルにする。
    $08$00W
    $10$F6W サンプリングレートを8KHz(△N=10486)。
    $11$28W
    $12$xxW 出力レベル設定
    ○合成スタート
    $0F$xxW ADPCMデータを$0Fに書き込むことによりスタート。
    ○合成中
    $0F$xxR BUF・RDYフラグが「1」のとき、$0Fに合成データを書き込み、フラグをリセットする。「0」のときは待機。
    ($04$80W)
    ○合成終了
    $07$00W ADPCM合成終了。

    (3)音声分析(AUDIO→EXT.MEMORY)
    アドレスデータR/Wコメント
    ○初期設定
    $04$08W 各フラグをイネーブルにする。
    $04$80W 各フラグをリセット。
    $07$68W ADPCM分析をイネーブルにする。
    $08$02/$00W RAMタイプの指定。
    $09$xxW メモリのスタート番地
    $0A$xxW
    $0B$xxW メモリのストップ番地
    $0C$xxW
    $0D$E1W サンプリングレートを16KHz(NPRE=255)。
    $0E$00W
    ○分析スタート
    $07$E8W $07のD7が「1」になるのに同期して分析開始。
    ○分析中
     EOSフラグが「1」となり、分析終了を指示するまで待機。
    ○分析終了
    $07$68W ADPCM分析終了。
    $07$00W $07レジスタリセット。

    (4)音声合成(EXT.MEMORY→AUDIO)
    アドレスデータR/Wコメント
    ○初期設定
    $04$08W BUF・RDYフラグのみマスタする。
    $04$80W 各フラグをリセット。
    $07$20/$30W ADPCM分析をイネーブルにする。
    $08$00,$01,$02W RAMタイプの指定。
    $09$xxW メモリのスタート番地
    $0A$xxW
    $0B$xxW メモリのストップ番地
    $0C$xxW
    $10$ECW サンプリングレートを16KHz(△N=20972)。
    $11$51W
    $12$xxW 出力レベル設定
    ○合成スタート
    $07$A0/$B0W $07のD7「1」になるのに同期して合成開始。
    ○合成中
     EOSフラグが「1」となり、分析終了を指示するまで待機。
    ($07$00W) リピートモードを解除
    ($07$00W) 合成を強制的に中止
    ○合成終了
    $07$20W ADPCM合成終了
    $07$00W $07レジスタ終了

    3-6.AD/DA変換
    内蔵のAD/DA変換器は、FM音源やADPCM音声分析・合成以外にも単独でAD変換器、あるいはDA変換器として使うことができます。この場合の変換速度は最大サンプリングレート16KHzから最小1.8KHzまでです。

    (1)AD変換
    MSX-AUDIOのAD変換は、音源で使用されているDA変換器を利用して行います。したがって、このDA変換器の制限から変換可能な電圧範囲はVcc/2±Vcc/4となります。Vcc/2が中点で0、3Vcc/4が最大(127)、Vcc/4が最小(-128)の2の補数8ビットデータに変換します(変換方式は逐次比較変換)。
    なお、AD変換中は、ミュージック出力などのDA変換器につながる機器は切り離していないと大音量を発生するなどの問題が生じます。

    (2)DA変換
    DA変換も、AD変換と同様に楽音用のDA変換器を共用します。したがって、出力電圧はVcc/2土XCC/4となります。DA変換は指数部3ビット、仮数部10ビット、計13ビットのデータですが、AD変換などとの対応で8ビットで処理したい場合は、$15アドレスのデータのみを可変とし、$16、$17のアドレスは一定値に固定すればバイト処理ができます。

    3-7.外部メリコントロール
    MSX-AUDIOではADPCM音声分析・合成部のデータファイルとして外部メモリをRAM256Kバイト、ROM256Kバイトまでアクセスできます。この外部メモリの制御、およびデータのインターフェイスを行うのが外部メモリコントロール部です。

    (1)RAM
    RAMは64KDRAM、256KDRAMのいずれかを8個まで外付けできます。この場合、アクセスは1番目のRAMから8番目のRAMまで順に、また1個のRAM内で次の図のように、(0,0)番地から(511,0)、(0,1)〜(511,511)とシリアルにREAD/WRITEします。したがって、RAMでのデータ処理はビット単位となり、アドレス指定は32ビット(4バイト)単位になります。
    なお、RAMのリフレッシュはMSX-AUDIOにカウンタを内蔵しており、自動的にアドレス発生を行います。

    RASRAM1RAM2RAM3RAM4RAM5RAM6RAM7RAM8
    0|----------→
    1|
    2|
    |
    |
    |12345678
    |
    |
    510|
    511
    CAS012・・・5
    1
    0
    5
    1
    1
    アクセスの方向
    ---------------------------------------------------→

    (2)ROM
    ROMの場合は、各アドレスにRAMと違ってMSX-AUDIOのDM出力を直接接続するのではなく、LATCHを介してROMにアドレスを入力します。また、アクセスの単位はバイト単位となり、アドレス指定は32バイト毎に設定できます。

    (3)メモリへのアクセス
    メモリへのアクセスはADPCM実行中はMSX-AUDIOが自動的に行いますが、CPU側とデータのやり取りをする場合は、次の例にしたがってプログラミングします。

    (a)RAM-WRITE
    アドレスデータR/Wコメント
    ○初期設定
    $04$00W 各フラグをイネーブルにする。
    $04$80W 各フラグをリセット。
    $07$60W メモリライトモードにする。
    $08$00/$02W メモリのタイプ指定
    $09$xxW スタートアドレス指定
    $0A$xxW
    $0B$xxW ストップアドレス指定
    $0C$xxW
    ○メモリライト
    $0F$xxW データの書き込み。
    ($04$80W BUF・RDYフラグが「1」のときデータ書き込み、「0」のときは待機。EOSフラグが「1」になると書き込み終了。)
    ○リセット
    $07$00W $07レジスタリセット

    (b)RAM/ROM-READ
    アドレスデータR/Wコメント
    ○初期設定
    $04$00W 各フラグをイネーブルにする。
    $04$80W 各フラグをリセット。
    $07$20W メモリリードモードにする。
    $08$00,$01,$02W メモリのタイプ指定
    $09$xxW スタートアドレス指定
    $0A$xxW
    $0B$xxW ストップアドレス指定
    $0C$xxW
    ○メモリリード
    $0FR ダミーリードを2回するとメモリのデータの読み出しを開始する(フラグを見る必要がある)。
    $0FR
    $0F$xxR データの読み込み。
    ($04$80W BUF・RDYフラグが「1」のときデータ読み込み、「0」のときは待機。EOSフラグが「1」になると読み込み終了。)
    ○リセット
    $07$00W $07レジスタリセット

    3-8.KEYBOARD IN/OUT
    キーボード入力・出力はダイオードマトリックスによる鍵盤を接続するのに便利なように、入力側にプルアップ抵抗を持ち、出力側はオープンドレインとなっています。入出力は各8ビットあるため、49鍵のキーボードまで接続が可能です。また、ドライブ能力は20μsのスキャニングレートで500pFの負荷まで適用でき、汎用の入出力ポートとしても利用できます。

    3-9.ステータス情報とインタラプト信号
    MSX-AUDIOのステータス情報は、2つのタイマからのフラグとADPCM音声分析合成や外部メモリアクセス時に使われる2つのフラグ(BUF・RDY、EOS)があります。これらのフラグは、そのイベントが起こったときに「1」になります。また、不必要なフラグに対しては、マスクすることもできます。
    これらのステータス情報は、インタラプト信号につながっており、いずれかのフラグが「1」となったとき、インタラプト信号(IRQ)はLOWレベルになります。このインタラプト信号はオーンドレイン出力ですから、他の機器のそれとワイアードオアをとることができます。

    D7D6D5D4D3D2D1D0
    IRQTIMER-1TIMER-2EOSBUF・RDYPCM・BSY


    4.インターフェース
    この章は外部デバイスとのH/Wインターフェース情報です。
    翻訳省略

    4-1.オーディオ出力
    4-2.外部メモリ
    4-3.キーボード
    4-4.プロセッサ接続

    5.楽音の作り方
    この章では、MSX-AUDIOのオリジナル音色レジスタに、どのようなDATAを入力すると、ピアノやブラスなどの楽音を作ることができるかを説明します。

    5-1.音作りの考え方
    FM方式での音作りの基本は、まず作りたい楽器の特徴をよく理解することです。例えば、ピアノであれば、鍵盤を押したときに、鋭い音の立ち上がりがあり、その後、押鍵を続けていれば、徐々に音が消えて行くエンベロープを持っています。また、倍音の構成も立ち上がり時に多く、時が経つに連れて倍音の数は少なくなり、一定の倍音構成に近づいて行きます。
    以上のような特徴をつかんだ後、FMの式で以下にして実現するかを考えます。エンベロープの特徴から出力振幅を、そして倍音構成から変調指数を決めることができます。また、倍音の構成はオペレータの周波数も関与していますから、周波数比もある程度決めることができます。このように、各楽音の特徴からFMの各パラメータをおおまかに決め、その次に音を聞きながら細部をつめてゆくようにすれば、望みどおりの音色を得ることができます。

    5-2.音作りの基本
    FM音源とは、モジュレータによってキャリアを変調することから生じる効果を利用したものです。したがって、FMの基本式パラメータ(キャリアの出力レベル、モジュレータの出力レベルモジュレータのフィードバックレベル、キャリアの周波数、モジュレータの周波数)を上手に扱うことにより、各楽音のピッチ、音色、音量のすべてを決めることができます。このFMの各パメータとMSX-AUDIOのパラメータとの関係は、表5-1のとおりです。

    1.FM接続(CONNECTION=0)
    表5-1のFMの特徴がすべて表現できます。また、オペレータ1はそれ自体にフィードバックがかかっているので、オペレータ2との組み合わせによる高周波の出方は2段のFM接続としての効果が得られます。

    2.パラレル接続(CONNECTION=1)
    2つのオペレータの足し算となり、オペレータ2は常にSIN波を発生させます。したがって、2つのオペレータの周波数をハーモニックにずらすことによりパイプオルガンのカプラー効果などを表現することができます。また、オペレータ1はFM接続と同様、フィードバックを持っているので高調波を出すことができます。
    表5-1 音作りの基本
    項目関与するパラメータMIN←(音の変化)→MAX
    キャリアの出力レベルTOTAL LEVEL
    (A/D/S/Rの各データ、KeyScaleデータ)
    音量小←→音量大
    モジュレータの出力レベル丸い音色←→明るい音色
    モジュレータのフィードバックレベルFB普通の音色←→鋭い音色(Noise)
    キャリアの周波数MULTIPLE
    (BLOCK/F-Number)
    ピッチ低←→ピッチ高
    モジュレータの周波数近い倍音←→離れた倍音

    5-3.音作りの例
    (1)エレクトリックピアノ
    (a)コネクションの選択
    コネクションは「0」を設定します。ほとんどの音色はこのコネクションで得られます。ここでは、オペレータ1がアタック時のアクセントとリッチな高調波の両方を創り出します。

    (b)オペレータの周波数の決定
    整数倍の高調波をすべて出すために、2つのオペレータともにMULTIPLEは「1」を使います。

    (c)オペレータの出力レベル
    今度はモジュレータの出力を変更して音色を調整します。このとき、オペレータ1のレベルを決めるときには、低音部がまずピアノらしいリッチな高調波を得られるように設定し、それから高音にかけての変化はオペレータ1のレベルスケーリングで調整します。高音部ではほとんどSIN波になる位までレベルスケーリングをする必要があります。

    (d)EGの設定
    ここでは音量と音色のエンベロープを決めます。まず、オペレータ2はアタックを鋭く、しかもある程度長く伸びるエンベロープにします。モジュレータになるオペレータ1では立ち上がりだけ倍音が多く、あとは一定にして音色変化はさせません。音量調整としてオペレータ2についてもキースケーリングをかけます。また、高音部にかけて音のシャープさを出すためには、RATEのスケーリングを行うとよいでしょう。

    (e)データの再調整
    以上で音作りはほぼ終了ですが、EGなどのセッティングにより音色が幾分違ったものになってきます。この場合、オペレータの出力レベルやフィードバックレベルを再調整して、最終的な音に仕立てます。例えば、金属的な響きが強すぎると思われる場合には、オペレータ1のレベルを下げます。

    (f)エフェクト付け
    最後にエレクトリックピアノの音をより生かすために、トレモロ効果をLFOによってつけ加えます。これは内蔵の振幅変調の機能を利用してもよいですし、ソフトウェアでTOTAL LEVELの値を2-6Hzの周期で更新(三角波で可)することも可能です。


    (2)トランペット
    (a)コネクションの選択
    プラス系のコネクションも「0」です。オペレータ1のフィードバックレベルをコントロールすことにより、ブラス系の派手な音作りが可能です。

    (b)オペレータ出力
    モジュレータであるオペレータ1のトータルレベルは$10〜$28程度の控えめな値にし、フィードバックレベルはブライトな響きを出すために最大の「7」にします。

    (c)オペレータの周波数
    基本的には、両方のオペレータ共に1倍にセットすればよいでしょう。

    (d)EG
    2つのオペレータとも、ゆっくりとしたアタック音にします。そしてプラスのサウンドではモジュレータのアタックはすべてキャリアよりも遅くします。「プァン」というプラス特有のアタックを表現するのに必要なことです。

    (e)キースケーリング
    ゆっくりとした立ち上がりにエンベロープをセットしたため、高音部でハギレが悪くなります。このため、速いパッセージを弾いたときに不自然にならないように、レイトスケーリングを少しかけます。

    (f)LFO
    プラスはどんな上手なプレーヤーが吹いても、ロングトーンの場合にはピッチがほんの少し揺れてきます。これを表現するためにビブラート効果を加えます。

    5-4.リズム音の作り方
    リズム音は7、8、9のチャンネルを使って作られます。この3チャンネル6スロットで計5音のリズム音を作るわけですが、バスドラム(BD)のみは2スロットでFM音を作ります。したがって、バスドラムについては(a)〜(c)で述べたことと基本的には同一手法で作ることができます。そこで、ここでは残り4音(ハイハット、トップシンバル、タム、スネアドラム)について説明します。
    MSX-AUDIOには、リズム楽器のためにホワイトノイズジェネレータと数種の周波数を合成して得られるノイズ発振器があります。このノイズ発振器ま8チャンネルと9チャンネルの周波数情報(BLOCK、F-Number、MULTIPLE)より作られ、ホワイトノイズと合成することにより各リズム楽器に適した位相出力を発生して、オペレータに渡します。つまり、ここでは2つの周波数情報から4つの楽器の位相を作っていることになります。
    なお、2つの設定周波数は経験的に3:1(f7CH=3×f8CH)が良いとされています。これで、各楽器の位相データが得られたことより、この出力にエンベロープの情報を掛け合わせます。エンベロープは1スロットに1リズム楽器と設定されているため、メロディ楽器同様各リズム楽器の特徴をつかんだ値を各パラメータレジスタにセットします。「AM・VIB-DEPTH/RHYTHM」を参照して下さい。

    6.電気的特性
    翻訳省略
    6-1.絶対最大定格
    6-2.動作定格
    6-3.DC特性
    6-4.AC特性

    7.タイミング図
    翻訳省略

    8.パッケージ外形図
    通常の64pin shrink DILです。詳細省略



    感想、要望、バグ報告、その他何かありましたら、メールもしくは掲示板にてご連絡ください。
    裕之    
    ホームに戻る