音関係総目次

§1. 音に関する基礎知識
1 音
1.1 音波
1.1.1 音圧(振幅)
1.1.2 周波数･周期
1.1.3 位相
1.2 音色
1.2.1 基本周波数
1.2.2 倍音･高調波
1.2.3 ｽﾍﾟｸﾄﾙと代表的な波形
1.3 ｴﾝﾍﾞﾛｰﾌﾟ
1.4 ｴﾌｪｸﾄ
1.4.1 ﾋﾞﾌﾞﾗｰﾄ
1.4.2 ﾄﾚﾓﾛ
1.4.3 ﾎﾟﾙﾀﾒﾝﾄ
1.4.4 ﾜｳﾜｳ
1.4.5 ｺｰﾗｽ
1.4.6 ｴｺｰ
1.4.7 ﾘﾊﾞｰﾌﾞ
1.4.8 ﾌｪｰｽﾞｼﾌﾀ
1.4.9 ﾌﾗﾝｼﾞｬ
1.5 音楽との関係
1.5.1 ｵｸﾀｰﾌﾞ
1.5.2 音程･音階･ｾﾝﾄ
1.5.3 音名
1.6 人間との関係(聴覚・声)
1.6.1 聴覚
1.6.2 声
2 ｺﾝﾋﾟｭｰﾀにおける音関係用語
2.1 ADPCM
2.2 FM音源

§2. FM音源YMF262(OPL3)
1 概要と特徴
1.1 概要
1.2 特徴
1.3 主要機能
1.4 FM方式の概略
1.5 ﾁｬﾈﾙとｽﾛｯﾄとﾚｼﾞｽﾀの関係
2 ﾚｼﾞｽﾀ
2.1 直接ﾚｼﾞｽﾀ
2.2 間接ﾚｼﾞｽﾀ
   ﾒｰｶｰ･ﾃｽﾄ
   ﾀｲﾏ･割込み
   自然楽器のｼﾐｭﾚｰﾄ (ｷｰ･ｽｹｰﾙ･ﾚｰﾄとｷｰ･ｽｹｰﾙ･ﾚﾍﾞﾙ)
   ﾄﾚﾓﾛ効果(振幅変調)
   ﾋﾞﾌﾞﾗｰﾄ効果(周波数変調)
   ｴﾝﾍﾞﾛｰﾌﾟ
   音程･音階
   変調度･音量･発音
   ﾘｽﾞﾑ音
   音色
   ﾊﾟﾝﾎﾟｯﾄ(出力ﾁｬﾈﾙ設定)
   音階(周波数)表
   ｱﾀｯｸ･ﾚｰﾄ表
   ﾃﾞｨｹｲ･ﾚｰﾄ、ﾘﾘｰｽ･ﾚｰﾄ表

§3. 音楽言語(.SNDﾌｧｲﾙ)仕様(暫定版)
1 全体構成
1.1 SMC (Start of music codes)
1.2 EMC (End of music codes)
2 ﾊﾟｰﾄﾃﾞｰﾀ
2.1 SMP (Start of melody part)
2.2 SRP (Start of rhythm part)
2.3 EPT (End of part)
3 音符ﾃﾞｰﾀ
3.1 音程ﾃﾞｰﾀ
3.2 音長ﾃﾞｰﾀ
4 制御ﾃﾞｰﾀ
4.1 SLV (Sound level)
4.2 CTM (Change of timbre)
4.3 LRT (Long rest and tone)
4.4 LBL (Label)
4.5 JMP (Jump)
4.6 RPT (Repeat)
4.7 BRA (Branch)

§4. 拡張ﾀｲﾏBIOS(TBIOS.COM Ver2.0)仕様
1 概要
2 常駐/解除
3 使用方法
4 機能一覧
5 ｻﾝﾌﾟﾙ･ﾌﾟﾛｸﾞﾗﾑ


音に関する基礎知識目次

§1. 音に関する基礎知識目次

1 音
1.1 音波
1.1.1 音圧(振幅)
1.1.2 周波数･周期
1.1.3 位相
1.2 音色
1.2.1 基本周波数
1.2.2 倍音･高調波
1.2.3 ｽﾍﾟｸﾄﾙと代表的な波形
1.3 ｴﾝﾍﾞﾛｰﾌﾟ
1.4 ｴﾌｪｸﾄ
1.4.1 ﾋﾞﾌﾞﾗｰﾄ
1.4.2 ﾄﾚﾓﾛ
1.4.3 ﾎﾟﾙﾀﾒﾝﾄ
1.4.4 ﾜｳﾜｳ
1.4.5 ｺｰﾗｽ
1.4.6 ｴｺｰ
1.4.7 ﾘﾊﾞｰﾌﾞ
1.4.8 ﾌｪｰｽﾞｼﾌﾀ
1.4.9 ﾌﾗﾝｼﾞｬ
1.5 音楽との関係
1.5.1 ｵｸﾀｰﾌﾞ
1.5.2 音程･音階･ｾﾝﾄ
1.5.3 音名
1.6 人間との関係(聴覚・声)
1.6.1 聴覚
1.6.2 声
2 ｺﾝﾋﾟｭｰﾀにおける音関係用語
2.1 ADPCM
2.2 FM音源


音と音波

1.1 音と音波

音は空気の振動で、人間はこれを鼓膜、内耳壁で検出し、蝸管で変換され、神経を経由し、脳で判断します。通常、これが聴覚ですが、その他間接的に体の他の部分からの振動による聴覚や、過去の経験による後天的なものですが、体で感じた振動を音とする認識等、多少ですが存在します。

 空気の振動、これは空気を構成する各物質の分子密度の変化の伝搬ということができ、空気を水に置き換えると、静かな水面に石を投げ落とした時の広がる波紋のようなものです。超音波(Ultra sonic)という言葉がありますが、人間の可聴帯域を越える速い振動の音波のことで、超音波洗浄、近接ｾﾝｻなどに利用されています。

 どのような音波かの表現方法は数多くありますが、皆で共通の表現方法を持たなければ意味不明となってしまいます。基本となる表現方法に大きさと振動数があります。後述しますが、全ての音波はこの2つの要素の時間の関数で表すことができます。このときの基準となる音波を正弦(sin)波といいsinθで表します。音の大きさは音圧、振動数は周波数という名称で表します。

1.1.1 音圧(振幅)
1.1.2 周波数･周期
1.1.3 位相


音圧(振幅)

1.1.1 音圧(振幅)

音の大きさは、空気の伝搬による、ある所での空気の圧力(音圧)で表します。本来、音の大きさですから、音の強さ(W/㎡)で表す方が妥当かもしれませんが、この音の強さと音圧は比例していますので、通常、音圧が用いられます。音圧の単位は、天気予報で御馴染みのﾊﾟｽｶﾙ(p)です。しかし、音の大きさを音圧で表すと、可聴可能な範囲での最小音圧と最大音圧の比率は1000000倍にもなってしまいます。これでは、計算するにしても、表を書くにしても扱いづらいので通常、音圧ﾚﾍﾞﾙを使用します。音圧ﾚﾍﾞﾙは、音圧の対数をとったもので、次式で表されます。
音圧ﾚﾍﾞﾙ [dB] = 20log (P/Po)
P:音圧　Po:基準の音圧
電気関係にあてはめると、音圧は電圧に相当し、通常の電子回路では音波が電圧の変化として測定できます。しかし、先ほどの音圧と同様に桁数が多くなりすぎるので通常、電圧ﾚﾍﾞﾙを使用します。電圧ﾚﾍﾞﾙも、音圧と音圧ﾚﾍﾞﾙの関係と同様に、次式で表されます。
電圧ﾚﾍﾞﾙ [dB] = 20log (V/Vo)
V:電圧　Vo:基準の電圧
音圧を意図的に変えようとすると、遮音壁を設ける等、かなり大変なことになりますが、電子回路では簡単に実現できます。このために、電子回路内では都合の良い基準の電圧を基に相対値を使用し、入力と出力のところで絶対値との勘算を行う場合が多いので注意が必要です。
時間軸的にみると、音圧での表現は平均圧力等、割と長い時間での単位として用いられます。これに対して通常、音は波形を基準にして説明されます。この時の波形(1波)の最大振れ幅を振幅と呼び、波形の説明では周波数と共に大事な要素となります。


周波数･周期

1.1.2 周波数･周期

静かな水面に石を投げ落とした時の広がる波紋をみると、山の部分と谷の部分が交互に繰り返されています。この時の山から山(谷から谷)までを、この振動の周期といい、Tという記号で時間を単位として表します。周波数は単位時間の振動数ですから、この波紋の例では単位時間の山(谷)の数となり、fという記号でHz(ﾍﾙﾂ)を単位として表します。この時の単位時間は1秒が用いられます。周波数と周期には次式の関係があります。
f(周波数) [Hz] = 1[s] / T(周期) [s]
T(周期) [s] = 1[s] / f(周波数) [Hz]


位相

1.1.3 位相

周波数も振幅も1つの波形に対する要素で、基本的にある周期で繰り返されている状態を考えています。もし同一周波数で同一振幅の波形を持つ2つの音波があったとすると、2つの音波間のｽﾞﾚを表す方法が必要です。このｽﾞﾚを示すのが位相で、1つの正弦波をsinθ、他方をsinφとすると次式で示されます。
合成波=sin(θ+φ) φ:位相
位相は1周期を360°として表します。図の例では同一波形ですが、赤の波形が90°遅れています。この2つの音波が同相(位相=0°)ならば、合成された波形は同じ周波数で2倍の振幅になります。又、逆相(位相=180°)ならば、合成された波形は無くなってしまいます。逆相の例はｽﾃﾚｵ装置で経験することがあります。ｽﾋﾟｰｶの結線を片方だけ逆に接続すると、左右のｽﾋﾟｰｶ間で逆相となり、ｾﾝﾀ位置で聞くと、ﾓﾉﾗﾙ･ｿｰｽの場合はほとんど聞こえなくなり、ｽﾃﾚｵ･ｿｰｽの場合は本来ｾﾝﾀ位置に聞こえるべき音が聞こえにくくなります。ﾐｭｰｼﾞｯｸ･ｿｰｽの歌手の声を小さくしてｶﾗｵｹ･ｿｰｽとして使うという装置がありますが、歌手の声をｾﾝﾀ位置にする構成のﾐｭｰｼﾞｯｸ･ｿｰｽが多いために、この逆相の原理を応用すると簡単に実現できます。又、複数の同一波形を連続的に位相をずらしていくと音に厚みが得られます。


音色

1.2 音色

実際に私たちが耳にする音は色々に聞こえます。これを音圧(振幅)と周波数だけで説明する訳にはいきません。このような音の質を音色といい、各要素に分けて定義します。音色は複雑な波形を持った音波がもたらす結果ということができます。この複雑な音波を表現する要素として、時間軸のある1点に於ける要素と、これらが連続した時間推移として表される要素に分けて考えることができます。ある1点に於ける要素はﾌｰﾘｴが発見した、「どんなに複雑な波形も複数の正弦(sin)波で合成、分解できる」、ということから、複雑な波形を構成する正弦波の種類(周波数)と量(振幅)で表します。連続した時間推移の要素は1周期を単位として、連続する周期の時間推移による変化の仕方でｴﾝﾍﾞﾛｰﾌﾟで表されます。

 ある点に於ける音色は複数の正弦波の各々の周波数と振幅で表されますが、複雑な波形からの分解をﾌｰﾘｴ変換、複雑な波形への合成を逆ﾌｰﾘｴ変換といい、このﾌｰﾘｴ変換により各々の正弦波の周波数と振幅の要素が分離できます。

1.2.1 基本周波数
1.2.2 倍音･高調波
1.2.3 ｽﾍﾟｸﾄﾙと代表的な波形


基本周波数

1.2.1 基本周波数

ﾌｰﾘｴ変換後の複数の正弦波の内で一番振幅の大きい正弦波の周波数を、この複雑な波形の基本周波数といいます。通常、一番低い周波数がこれにあたります。つまり一番振幅の大きい周波数以下の周波数成分は、ｴﾝﾍﾞﾛｰﾌﾟ成分と考えるからです。


倍音･高調波

1.2.2 倍音･高調波

基本周波数に対して、ある倍率を持った周波数を倍音といい、通常、整数倍の周波数に対して使用されます。高調波もほぼ同意語で2倍の時には第2高調波とか2次高調波のように使用されます。どちらかというと、音の有効な成分としては倍音が、無効な成分(ﾉｲｽﾞ等)としては高調波という言葉が使われます。


ｽﾍﾟｸﾄﾙと代表的な波形

1.2.3 ｽﾍﾟｸﾄﾙと代表的な波形

ｽﾍﾟｸﾄﾙ(Spectrum)は周波数を横軸に、振幅を縦軸にとった表をいい、ﾌｰﾘｴ変換の結果を表します。連続的にﾌｰﾘｴ変換を行いｽﾍﾟｸﾄﾙ表示を行うものがｽﾍﾟｸﾄﾗﾑ･ｱﾅﾗｲｻﾞ(Spectrum analyzer)と呼ばれ、一部のｵｰﾃﾞｨｵ装置等で一般でも目にすることがあります。このｽﾍﾟｸﾄﾙの分布状況には元となる波形によって特徴が現れます。次に代表的な波形のｽﾍﾟｸﾄﾙの分布状況を示します。

正弦波
ﾌｰﾘｴ変換後が正弦波で表されるとうりで、1つの周波数で同じ振幅となります。楽器ではありませんが、音叉の音がほぼこれに該当します。

鋸波
この波形が鋸の歯に似ているので付いた名称で、基本周波数に対して整数倍の周波数成分が存在しますが、各々の倍音の振幅は1/整数となります。楽器では倍音成分の多いﾊﾞｲｵﾘﾝ、ﾁｪﾛ等がこの系統の波形です。

三角波
この波形も形が三角形に似ているので付いた名称で、基本周波数に対して奇数倍の周波数成分が存在しますが、各々の奇数次倍音の振幅は1/(2の奇数乗)となります。このように倍音は存在しますが、振幅がかなり小さいので正弦波に似た柔らかい音になります。楽器ではﾌﾙｰﾄなどがこの系統の波形です。

方形波 (50%ﾃﾞｭｰﾃｨ)
かなりﾃﾞｼﾞﾀﾙ的な波形で、基本周波数に対して奇数倍に周波数成分が存在するのは三角波と同じですが、各々の奇数次倍音の振幅が1/奇数倍となり、三角波よりも倍音の成分が優勢になります。聴感上は三角波より複雑で高めの音に聞こえます。楽器ではｸﾗﾘﾈｯﾄが近く、この波形と鋸波が合成された感じです。

方形波 (極端なﾃﾞｭｰﾃｨ)
数%とか90数%というような極端な方形波は、鋸波のように基本周波数に対して整数倍の周波数成分が存在しますが、各々の倍音はすべて同じ振幅となります。高い周波数成分が優勢ですから、かなりﾉｲｽﾞぽい音になりますが、楽器ではﾘｰﾄﾞ楽器の音がこの系統の音です。

方形波 (中間ﾃﾞｭｰﾃｨ)
10%から90%程度のﾃﾞｭｰﾃｨ比の方形波は、基本的に鋸波と同じような周波数成分、振幅を持ちますが、1周期とﾃﾞｭｰﾃｨ比の倍率の整数倍に近い分ほど振幅が小さくなり、倍率の整数倍の周波数成分は無くなってしまいます。ﾃﾞｭｰﾃｨ比が20%とすると1周期とﾃﾞｭｰﾃｨ比の倍率は100%/20%で5となり、5,10,15･･･次の倍音は無く、これに近い次数の倍音ほど振幅が小さくなります。楽器の基本波形としてはあまり用いられず、変調波形、効果音等に用いられます。

ﾉｲｽﾞ (ﾎﾜｲﾄ･ﾉｲｽﾞ、ﾋﾟﾝｸ･ﾉｲｽﾞ)
ﾎﾜｲﾄ･ﾉｲｽﾞは一見すると滅茶苦茶な波形ですが、すべての周波数成分が同一の振幅で存在します。ﾋﾟﾝｸ･ﾉｲｽﾞも同様な波形ですべての周波数成分が含まれますが、高い周波数ほど振幅が小さくなります。楽器ではﾎﾜｲﾄ･ﾉｲｽﾞを打楽器などのﾊﾟｰｶｯｼﾌﾞな音に使用します。つまり、音程がはっきりしない音に用いられます。その他、効果音などに使用されますが、ﾉｲｽﾞ成分を微妙に合成すると音の微妙な厚みが得られます。

ｲﾝﾊﾟﾙｽ
ｲﾝﾊﾟﾙｽはﾊﾟﾙｽ幅の非常に短い単一のﾊﾟﾙｽで、今までの周期を持つ繰り返し波形とは異なります。ｲﾝﾊﾟﾙｽはすべての周波数成分が存在しますが、振幅は全て同一でｲﾝﾊﾟﾙｽの振幅に対して非常に小さな振幅となります。通常は計測に用いられます。


ｴﾝﾍﾞﾛｰﾌﾟ

1.3 ｴﾝﾍﾞﾛｰﾌﾟ

ｴﾝﾍﾞﾛｰﾌﾟ(Envelope:包絡線)は1つの音の発生から終了まで(音の立ち上がりから減衰まで)の推移を表したもので、1周期内の最大振幅を結んだ曲線で表します。ｼﾝｾｻｲｻﾞなどの電気的な音合成器では音のｴﾝﾍﾞﾛｰﾌﾟをADSRで表します。ADSRは各々ｱﾀｯｸ(Attack:立ち上がり)、ﾃﾞｨｹｲ(Decay:減衰)、ｻｽﾃｨｰﾝ(Sustain:持続)、ﾘﾘｰｽ(Release:解除)の4要素のことです。
左図の発音期間中、ｱﾀｯｸはAtで示され、立ち上がり後にｱﾀｯｸ･ﾚﾍﾞﾙに達するとﾃﾞｨｹｲに切り替わります。同様に、ﾃﾞｨｹｲはDtで示され、ｱﾀｯｸ･ﾚﾍﾞﾙからやや下がりｻｽﾃｨｰﾝ･ﾚﾍﾞﾙに達するとｻｽﾃｨｰﾝに切り替わります。ｻｽﾃｨｰﾝはStで示され、その後ほぼｻｽﾃｨｰﾝ･ﾚﾍﾞﾙを保持し、発音期間が終了するとﾘﾘｰｽに切り替わります。ﾘﾘｰｽはRtで示され、音の自然な消滅を行います。ｱﾀｯｸとﾘﾘｰｽは、現実の音がほとんど同じ傾向を示しているために指数関数系の曲線で近似する例が多いようです。特にｱﾀｯｸは変動幅が大きいで直線では違和感を生じます。ﾘﾘｰｽは与える影響がそれほど大きくないので、直線で近似する例もあります。


ｴﾌｪｸﾄ

1.4 ｴﾌｪｸﾄ

ｴﾌｪｸﾄ(Effect:効果)は周波数成分、ｴﾝﾍﾞﾛｰﾌﾟなどで表せないこともないが、音色に与える独立した要素と考えた方が理解し易い要素で、かなり広範囲にわたっています。これは、本来の音に対し、固有に存在する要素から、特殊効果的なものまですべてが含まれるからです。ここでは代表的な要素をまとめて説明します。

1.4.1 ﾋﾞﾌﾞﾗｰﾄ
1.4.2 ﾄﾚﾓﾛ
1.4.3 ﾎﾟﾙﾀﾒﾝﾄ
1.4.4 ﾜｳﾜｳ
1.4.5 ｺｰﾗｽ
1.4.6 ｴｺｰ
1.4.7 ﾘﾊﾞｰﾌﾞ
1.4.8 ﾌｪｰｽﾞｼﾌﾀ
1.4.9 ﾌﾗﾝｼﾞｬ


ﾋﾞﾌﾞﾗｰﾄ

1.4.1 ﾋﾞﾌﾞﾗｰﾄ

ﾋﾞﾌﾞﾗｰﾄ(Vibrato)は周波数をほんの少しだけ徐々に高くし、次にほんの少しだけ徐々に低くしてゆき、元の周波数に対して緩やかに＋→－→＋→－と繰り返し行います。元の周波数に対する偏移を時間軸にﾌﾟﾛｯﾄすると、ﾋﾞﾌﾞﾗｰﾄを制御する波形ができます。この波形の周波数がﾋﾞﾌﾞﾗｰﾄの速度(Speed)、振幅がﾋﾞﾌﾞﾗｰﾄの深さ(Depth)になります。ﾋﾞﾌﾞﾗｰﾄの速度の単位は通常、Hzはあまり用いられずに回/secが用いられ、音楽でよく使用されるのは5～7回/secです。又、深さは元の基本周波数の振幅に対するﾋﾞﾌﾞﾗｰﾄ制御波形の振幅の割合で表し通常、1～2%程度が用いられます。ﾋﾞﾌﾞﾗｰﾄ制御波形は正弦波が一番自然なﾋﾞﾌﾞﾗｰﾄになります。ﾋﾞﾌﾞﾗｰﾄは無線通信の周波数変調(Freqency Modulation)そのものなので、周波数変調とも呼ばれます。

FM変調器からみて、入力が搬送波、LFO出力が変調波となります。LFO(Low Frequency Oscirator)は低周波発振器で、ﾋﾞﾌﾞﾗｰﾄを制御する信号となります。


ﾄﾚﾓﾛ

1.4.2 ﾄﾚﾓﾛ

ﾄﾚﾓﾛ(Tremolo)はﾋﾞﾌﾞﾗｰﾄが周波数をゆっくり揺すったのに対して、振幅を制御します。ﾋﾞﾌﾞﾗｰﾄ同様にﾄﾚﾓﾛを制御する波形が存在し、ﾄﾚﾓﾛ速度とﾄﾚﾓﾛの深さがあります。ﾄﾚﾓﾛ速度はHzをそのまま使用する場合が多く、7～10Hz程度がよく用いられます。ﾄﾚﾓﾛの深さも%で表しますが、通常の色づけではせいぜい数%程度で、あまり深くするとﾏﾝﾄﾞﾘﾝのようになってしまいます。このことからﾏﾝﾄﾞﾘﾝ効果と呼ぶこともあります。ﾄﾚﾓﾛ制御波形は正弦波が一番自然なﾄﾚﾓﾛになります。ﾄﾚﾓﾛは無線通信の振幅変調(Amplitude Modulation)そのものなので、振幅変調とも呼ばれます。

AM変調器からみて、入力が搬送波、LFO出力が変調波となります。LFOは低周波発振器で、ﾄﾚﾓﾛ(振幅)を制御する信号となります。AM変調器はVCA(Voltage Controlled Amplifier:電圧制御増幅器>とも呼ばれます。


ﾎﾟﾙﾀﾒﾝﾄ

1.4.3 ﾎﾟﾙﾀﾒﾝﾄ

ﾎﾟﾙﾀﾒﾝﾄ(Portament)はある周波数から別のある周波数に連続的に移動することです。これはﾋﾞﾌﾞﾗｰﾄの特殊例として説明できますが、それよりも元の周波数が徐々に変更になったと考える方が自然です。楽器ではｷﾞﾀｰのﾁｮｰｷﾝｸﾞが該当し、元の周波数に対して10数%程度移動し、多くはその後ﾋﾞﾌﾞﾗｰﾄが使用されます。このように一般的にﾎﾟﾙﾀﾒﾝﾄの偏移量は大きく、数倍の偏移をさせるとﾋﾞｭｰﾝというような効果音になります。

鋸波発生器はﾋﾞｭｰﾝというような効果音を作成するときに使用します。この場合はｽｨｯﾁONで直線的に右肩上がりとなり、目的の位置で値を保持します。その後の消音時にｽｨｯﾁをOFFにします。この場合の鋸波は値の保持部分が存在しますので、典型的な鋸波の波形とは異なります。ｷﾞﾀｰのﾁｮｰｷﾝｸﾞなどの場合は、鋸波発生器の代わりにLFO(低周波発振器)を使用し、ｽｨｯﾁの代わりにﾎﾞﾘｳﾑで周波数可変量を制御します。この場合の構成はﾋﾞﾌﾞﾗｰﾄの構成に近くなります。


ﾜｳﾜｳ

1.4.4 ﾜｳﾜｳ

ﾜｳﾜｳ(Wow-wow)は、まづ、ある周波数を基準に、この周波数より高い周波数成分で周波数が高いほど振幅が小さくなった状態を考えます。この状態で、基準となる、ある周波数を連続的に低い周波数、高い周波数、低い周波数と振ると、ﾜｳとなり、2回行うと、その名のとおりﾜｳﾜｳという感じになります。

VCF(Voltage Controlled Filter:電圧制御ﾌｨﾙﾀ)は制御電圧で周波数特性を連続的に可変します。この可変量をﾎﾞﾘｳﾑで調整する構造となります。通常ｷﾞﾀｰなどのﾜｳﾜｳは、このﾎﾞﾘｳﾑがﾌｯﾄ･ﾍﾟﾀﾞﾙ構造になっています。


ｺｰﾗｽ

1.4.5 ｺｰﾗｽ

ｺｰﾗｽ(Chorus)は、その名の示すように二重唱を近似する効果で、簡単には元の波形を一定時間遅らせた波形を合成しますが、この一定時間が元の波形の半周期の偶数倍ですと位相の関係から単に振幅が2倍になるだけで、又、半周期の奇数倍ですとやはり位相の関係から消えて無くなってしまいます。そこで一定時間遅らせるだけでなく、元の周波数に対して微妙にずれた周波数にします。この一定時間はせいぜい数10m秒程度で、あまり大きくするとｴｺｰのような感じになってしまいます。

Delayは遅延装置で、入力信号を一定時間遅らせます。


ｴｺｰ

1.4.6 ｴｺｰ

ｴｺｰ(Echo)は元の波形に対し、一定時間遅れる毎に振幅を少し小さくした元の波形を合成していきます。短い音の場合はその音が一定時間毎に段々小さくなって消えて行くように聞こえます。ｺｰﾗｽはｴｺｰの特殊な場合と考えることもできます。遅延時間は数10m秒～数100m秒程度が用いられます。

Delayは遅延装置で、入力信号を一定時間遅らせます。ATT(Attenuater:減衰器)で遅らせた信号を一定量小さくして、Dealyの入力に戻します。この処理で一定時間間隔で元の音が徐々に小さくなって、やがて消音します。


ﾘﾊﾞｰﾌﾞ

1.4.7 ﾘﾊﾞｰﾌﾞ

ﾘﾊﾞｰﾌﾞ(Reverb)は主に空間の反響を近似する効果で、遅延時間が異なる複数のｴｺｰの合成となります。各々の遅延時間と振幅の減衰率の設定で自由な空間ｲﾒｰｼﾞを作成します。ｴｺｰはﾘﾊﾞｰﾌﾞの特別な(単一遅延の)場合と考えることができます。

Delayは遅延装置で、入力信号を一定時間遅らせます。ATT(Attenuater:減衰器)で遅らせた信号を一定量小さくして、Dealyの入力に戻します。この処理で一定時間間隔で元の音が徐々に小さくなって、やがて消音します。各ﾕﾆｯﾄの遅延時間と減衰量は、各々異なる値を設定することで、複雑な反響を作成します。


ﾌｪｰｽﾞｼﾌﾀ

1.4.8 ﾌｪｰｽﾞｼﾌﾀ

ﾌｪｰｽﾞｼﾌﾀ(phase shifter)は、ある周波数の位相を変化させ、このある周波数を連続的に広い範囲で揺することで実現します。ある周波数をfoとすると元の波形のfo成分との位相が180°の時、元の波形のfoをﾋﾟｰｸに振幅は減衰されます。この現象は整数次倍音でも同様に起きます。この状態でfoを緩やかに揺するとｺﾌﾞｼがまわるようなﾛｰﾘﾝｸﾞ感が得られます。foを揺する制御波形は正弦波、三角波が用いられ、制御波形の周波数は0.5～5Hz程度が用いられます。

左図は原理を基に簡略化回路で構成する場合の例で、上記の動作と多少異なりますが、同様な効果を表します。
Delayは遅延装置で、入力信号を一定時間遅らせますが、この場合、遅延時間×2の偶数倍、1/偶数倍の周期となる各々の周波数をﾎﾞﾄﾑとする櫛形(ｺﾑ)ﾌｨﾙﾀとなります。即ち、これらの周波数を中心に徐々に減衰された周波数特性となります。LFO(Low Frequency Oscirator)は低周波発振器で、これらの周波数を徐々に変化させる制御信号となります。


ﾌﾗﾝｼﾞｬ

1.4.9 ﾌﾗﾝｼﾞｬ

ﾌﾗﾝｼﾞｬ(Flanger)は元々ｵｰﾌﾟﾝ･ﾃｰﾌﾟ･ﾚｺｰﾀﾞのﾘｰﾙの縁の部分に手で負荷をかけ、ｼｮﾝﾜという感じの音を作っていたのを近似したもので、原理、構造的にはﾌｪｰｽﾞｼﾌﾀと同じものです。通常よく使用される例ではﾌｪｰｽﾞｼﾌﾀでLFOの周波数がかなり低く、半周期(180°)分で終了となる処理で、別名ｼﾞｪｯﾄ･ﾏｼﾝと呼ばれる使用方法です。


音楽との関係

1.5 音楽との関係

音楽は音を奏でるものです。音の各要素が音楽の中でどのように対応しているかを説明します。

1.5.1 ｵｸﾀｰﾌﾞ
1.5.2 音程･音階･ｾﾝﾄ
1.5.3 音名


ｵｸﾀｰﾌﾞ

1.5.1 ｵｸﾀｰﾌﾞ

音楽の中で使われる例がほとんどですが、本来2つの周波数の特定の周波数比を表す名称で、2つの周波数の比率が1:2の関係をｵｸﾀｰﾌﾞ(Octave)といい、1:4の場合、後者の周波数は前者の周波数に対して2(2の2乗、4では無い)ｵｸﾀｰﾌﾞ高いといいます。このようにｵｸﾀｰﾌﾞは相対関係を表す単位ですが、音楽ではこれとは別に絶対単位の意味で用いられる場合があり、この時には基準となるA(440Hz)を含むｵｸﾀｰﾌﾞをｵｸﾀｰﾌﾞ4として、低い方にｵｸﾀｰﾌﾞ3、高い方にｵｸﾀｰﾌﾞ5というふうに定義されます。


音程･音階･ｾﾝﾄ

1.5.2 音程･音階･ｾﾝﾄ

音階は1ｵｸﾀｰﾌﾞ内の音程を定義しますが、純正調音階、ﾋﾟﾀｺﾞﾗｽ音階、十二平均率音階など色々あります。現在我々が使用しているのは十二平均率音階で、1ｵｸﾀｰﾌﾞを平均に12等分し、その1つを半音、2つを全音としたものです。平均に12等分するとは、どの音の位置でも半音の関係は同じ比率になるということで、以下の関係があります。
1,n1,n2,n3,･･･,n11,n12
ここでnの12乗(n12)が1に対して1ｵｸﾀｰﾌﾞ上ですから、n12が2になるようなnの値を求めます。求めたnの値が半音の周波数比となります。又、同様に半音内を100等分してｾﾝﾄという単位で表します。100ｾﾝﾄが半音、200ｾﾝﾄが全音、1200ｾﾝﾄが1ｵｸﾀｰﾌﾞとなります。この十二平均率音階は「人間の音に対する感覚は音の物理的なものの対数に比例している」というｳｪｰﾊﾞｰ･ﾌｪﾋﾅｰの法則に基づいています。参考ですが純正調音階は各々の音を基準となる音に対して簡単な比率になるように配置したものです。次に十二平均率音階を表に示します。

十二平均率音階
音名 | 音程 | 周波数比 | ｾﾝﾄ
Ｃ | 同音 | 1.000 | 0
Ｃ♯/Ｄ♭ | 半音 | 1.059 | 100
Ｄ | 全音 | 1.122 | 200
Ｄ♯/Ｅ♭ | 短3度 | 1.189 | 300
Ｅ | 長3度 | 1.259 | 400
Ｆ | 完全4度 | 1.334 | 500
Ｆ♯/Ｇ♭ | 増4度、減5度 | 1.414 | 600
Ｇ | 完全5度 | 1.498 | 700
Ｇ♯/Ａ♭ | 短6度 | 1.587 | 800
Ａ | 長6度 | 1.681 | 900
Ａ♯/Ｂ♭ | 短7度 | 1.781 | 1000
Ｂ | 長7度 | 1.887 | 1100
Ｃ | ｵｸﾀｰﾌﾞ | 2.000 | 1200


音名

1.5.3 音名

ｵｸﾀｰﾌﾞと音階で示される各音の名称を音名といい、中央のC(ﾄ音記号の五線譜の基準となるCの位置:下第1線)をC4と表します。周波数との関係はA4が基準となり440Hzです。実際のﾐｭｰｼﾞｯｸ･ｿｰｽは再生装置の劣化を考慮して440Hzよりやや高めのﾁｭｰﾆﾝｸﾞとなっている場合が多いようです。次に音名と周波数[Hz]の関係の一覧表を示します。

音名と周波数
音階 | ｵｸﾀｰﾌﾞ0 | ｵｸﾀｰﾌﾞ1 | ｵｸﾀｰﾌﾞ2 | ｵｸﾀｰﾌﾞ3 | ｵｸﾀｰﾌﾞ4 | ｵｸﾀｰﾌﾞ5 | ｵｸﾀｰﾌﾞ6 | ｵｸﾀｰﾌﾞ7 | ｵｸﾀｰﾌﾞ8
Ｃ | 16.352 | 32.703 | 65.406 | 130.81 | 261.63 | 523.25 | 1046.5 | 2093.0 | 4186.0
Ｃ♯/Ｄ♭ | 17.324 | 34.647 | 69.295 | 138.59 | 277.18 | 554.37 | 1108.7 | 2217.5 |
Ｄ | 18.354 | 36.708 | 73.416 | 146.83 | 293.66 | 587.33 | 1174.7 | 2349.3 |
Ｄ♯/Ｅ♭ | 19.445 | 38.890 | 77.781 | 155.56 | 311.13 | 622.25 | 1244.5 | 2489.0 |
Ｅ | 20.602 | 41.203 | 82.406 | 164.81 | 329.63 | 659.26 | 1318.5 | 2637.0 |
Ｆ | 21.827 | 43.653 | 87.307 | 174.61 | 349.23 | 698.46 | 1396.9 | 2793.8 |
Ｆ♯/Ｇ♭ | 23.125 | 46.249 | 92.498 | 185.00 | 369.99 | 739.99 | 1480.0 | 2960.0 |
Ｇ | 24.500 | 48.999 | 97.998 | 196.00 | 392.00 | 783.99 | 1568.0 | 3136.0 |
Ｇ♯/A♭ | 25.957 | 51.913 | 103.83 | 207.65 | 415.30 | 830.61 | 1661.2 | 3322.4 |
Ａ | 27.500 | 55.000 | 110.00 | 220.00 | 440.00 | 880.00 | 1760.0 | 3520.0 |
Ａ♯/Ｂ♭ | 29.135 | 58.270 | 116.54 | 233.08 | 466.16 | 932.33 | 1864.7 | 3729.3 |
Ｂ | 30.868 | 61.735 | 123.47 | 246.94 | 493.88 | 987.77 | 1975.5 | 3951.1 |


人間との関係(聴覚･声)

1.6 人間との関係(聴覚･声)

音に関する人間との関係では入力としての聴覚、出力としての声があります。ここでは聴覚、声の基本特性について説明します。勿論、人間には個体差がありますので常に例外ということは存在します。

1.6.1 聴覚
1.6.2 声


聴覚

1.6.1 聴覚

一般的に人間の聴覚はどのような特性を持っているかというと、まづ周波数特性は20～20000Hz(20KHz)といわれています。この値は20才前後の場合で、通常は、もっと狭い範囲の状態から20才前後でﾋﾟｰｸとなり、以降徐々に範囲が狭くなります。特に高域特性の悪化が著しく、歯切れ感が失われて行きます。又、どの周波数でもﾌﾗｯﾄに聞こえるかというと、そうではなく、普通は1～2KHzが一番聞こえ易く、この辺を中心に低い方も高い方も離れる程聞こえにくくなります。更に左右の特性もまったく同一ではなく、左右の特性を重ね合わせると1KHz近辺でｸﾛｽします。つまり、同じ音圧で左右の耳に与える正弦波を、低い周波数から高い周波数へ連続的に移動させると、例えば最初やや左から聞こえていたものが、1KHz近辺で今度はやや右から聞こえるという現象が起きます。この現象はﾓﾉﾗﾙでｽﾃﾚｵ感を出す場合に応用されています。

 人間が聞こえる音の大きさは音圧ﾚﾍﾞﾙで0～120dB程度といわれています。120dBの大きさがどの位かというとｼﾞｪｯﾄ機のｴﾝｼﾞﾝの音を間近で聞く感じです。120dBを越えるような音は聴覚の限界を越え、痛覚の範囲となります。もちろん可聴ﾚﾍﾞﾙにも年齢による差が存在し、通常は、可聴周波数特性同様20才前後が一番可聴ﾚﾍﾞﾙの範囲が広くなります。

 以上の周波数と音圧に関する人間の特性については、ﾌﾚｯﾁｬｰ･ﾏﾝｿﾝ曲線、ﾗｳﾄﾞﾈｽ曲線などの調査結果があります。


声

1.6.2 声

人間の声の周波数特性は、ほぼ可聴帯域全域に渡っていますが、楽器と異なり不規則な分布を示します。不規則な分布の原因の1つは子音で、もう1つの原因は複数の共鳴系で発声されることと考えられます。人間の発する声(言葉)には母音と子音があります。日本語の場合は母音のみと子音+母音の2種類で成り立っており、母音には「あ」「い」「う」「え」「お」があり、その他は子音+母音で構成されています。子音の特徴として基本周波数が無いことが挙げられます。基本周波数が無いということは音程が無いということになり、かなりﾉｲｽﾞに近い特性を示します。このため子音の一部はかなり高い周波数まで周波数成分が存在します。

 母音の周波数分布をみると部分的に優勢な箇所が何ヶ所か観測できます。これをﾌｫﾙﾏﾝﾄといい、優勢な箇所から第1ﾌｫﾙﾏﾝﾄ、第2ﾌｫﾙﾏﾝﾄと呼びます。音声分析はこのﾌｫﾙﾏﾝﾄに注目して行います。子音と異なり母音には基本周波数があります。音楽で声の音程がと言うときは、実際には母音の部分の音程がと言っていることになります。基本周波数は普通、150Hz～1KHz程度になります。又、母音の周波数特性は第4ﾌｫﾙﾏﾝﾄで男性が4KHz、女性が5KHz程度までとなります。

 声に限っての場合ですが、あまり不自然と感じない範囲で聞こえるには、どの程度の周波数範囲が聞こえていれば良いかというと、通常の電話の状態が参考になります。有線回線の電話は約3.6KHzまでを使用しています。つまり、3.6KHz以上の周波数成分は、実際には聞こえていない訳です。


ｺﾝﾋﾟｭｰﾀにおける音関係用語

2. ｺﾝﾋﾟｭｰﾀにおける音関係用語

1.ADPCM
ADPCM(Adaptive Differential Pulse Code Modulation)は、基本的にΔ(Delta)変調の一種で、Δ変調が前回ﾃﾞｰﾀとの差分をﾃﾞｰﾀとするのに対し、前回ﾃﾞｰﾀの変化から予測値と量子化率を求め、この予測値との差分をﾃﾞｰﾀとするものです。いずれにしても、Δ変調系の変調は、変換後のﾃﾞｰﾀ数を減らすために考案されたものです。

2.FM音源
FM音源(OPL)の発音原理は、ｽﾀﾝﾌｫｰﾄﾞ大学のﾁｮｳﾆﾝｸﾞが考案した周波数変調という方法を使用しています。この方法をOPLに当てはめて説明すると次のようになります。1つのｵﾍﾟﾚｰﾀ出力は、自分のｽﾛｯﾄ出力と他のｵﾍﾟﾚｰﾀ出力と合成され、合成出力の出力量はｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀにより制御されます。1つのｵﾍﾟﾚｰﾀの出力をX(t)とした時の関係を式で表すと、次のようになります。
(ｵﾍﾟﾚｰﾀ出力)=(ｽﾛｯﾄ出力)+(他のｵﾍﾟﾚｰﾀ出力)
X(t)=A･sin(ωc･t+B･sin(ωm･t))
X(t) | : | ｵﾍﾟﾚｰﾀ出力
A | : | ｵﾍﾟﾚｰﾀのｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀ制御による出力量
B | : | 入力となる他のｵﾍﾟﾚｰﾀの出力量(ｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀ制御)
ωc | : | ｽﾛｯﾄの角周波数
ωm | : | 入力となる他のｵﾍﾟﾚｰﾀの角周波数
t | : | 時間
A、Bを厳密にいうと、ｵﾍﾟﾚｰﾀのｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀによって制御された出力量とｵﾍﾟﾚｰﾀのﾄｰﾀﾙ･ﾚﾍﾞﾙ(TL)で指定された和になります。ｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀによる制御出力量は時間(t)の関数になります。この式は、無線通信で使用されている周波数変調(FM:Frequency Modulation)と同じ式になります。この方法の利点として、A、B、ωc、ωmの4つの変数で幅広い音色を作成できることがありますが、逆に言えば、目的の音を作成するのに4つの変数の設定が微妙で難しいことを意味します。


OPL3目次

§2. YMF262(OPL3)目次

1 概要と特徴
1.1 概要
1.2 特徴
1.3 主要機能
1.4 FM方式の概略
1.5 ﾁｬﾈﾙとｽﾛｯﾄとﾚｼﾞｽﾀの関係
2 ﾚｼﾞｽﾀ
2.1 直接ﾚｼﾞｽﾀ
2.2 間接ﾚｼﾞｽﾀ
  (1) TEST [01H]
  (2) TIMER1 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 02H]
  (3) TIMER2 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 03H]
  (4) RST (IRQ Reset) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ7]
  (5) MT1 (Mask Timer1) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ6]
  (6) MT2 (Mask Timer2) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ5]
  (7) ST1 (Start Timer1) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ0]
  (8) ST2 (Start Timer2) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ1]
  (9) NTS (Note Select) [ﾚｼﾞｽﾀ･ｱﾚｰ0:08H : ﾋﾞｯﾄ6]
 (10) AM (Amplitude Modulation) : 振幅変調(ﾄﾚﾓﾛ) [20H～35H : ﾋﾞｯﾄ7]
 (11) VIB (Vibrato) : 周波数変調(ﾋﾞﾌﾞﾗｰﾄ) [20H～35H : ﾋﾞｯﾄ6]
 (12) EGT (Envelope Generator Type) : 持続音/減衰音 [20H～35H : ﾋﾞｯﾄ5]
 (13) KSR (Key Scale Rate) : 音程による立ち上がり、立ち下がり制御 [20H～35H : ﾋﾞｯﾄ5]
 (14) MULT (Multiple) : 周波数倍率 [20H～35H : ﾋﾞｯﾄ3～0]
 (15) KSL (Key Scale Level) : 音程による音量制御 [40H～55H : ﾋﾞｯﾄ7～6]
 (16) TL (Total Level) : 変調度、音量設定 [40H～55H : ﾋﾞｯﾄ5～0]
 (17) AR (Attack Rate) : 立ち上がり時間設定 [60H～75H : ﾋﾞｯﾄ7～4]
 (18) DR (Decay Rate) : ｱﾀｯｸ後の立ち下がり時間設定 [60H～75H : ﾋﾞｯﾄ7～4]
 (19) SL (Sustain Level) : 持続音ﾚﾍﾞﾙ [80H～95H : 上位4ﾋﾞｯﾄ]
 (20) RR (Release Rate) : 減衰時間設定 [80H～95H : 下位4ﾋﾞｯﾄ]
 (21) F NUMBER : (ｵｸﾀｰﾌﾞ内の)音階設定 [A0H～A8HとB0H～B8H : 下位2ﾋﾞｯﾄ]
 (22) BLOCK : ｵｸﾀｰﾌﾞ設定 [B0H～B8H : ﾋﾞｯﾄ4～2]
 (23) KON (Key ON) : 発音 [B0H～B8H : ﾋﾞｯﾄ5]
 (24) DAM (Amplitude Modulation Depth) : 振幅変調度設定 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ7]
 (25) DVB (Vibrato Depth) : ﾋﾞﾌﾞﾗｰﾄ(周波数変調)深さ設定 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ6]
 (26) RYT (Rhythm Mode) : ﾘｽﾞﾑ音ﾓｰﾄﾞ [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ5]
 (27) BD (Buss Drum) : ﾊﾞｽﾄﾞﾗﾑ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ4]
 (28) SD (Snare Drum) : ｽﾈｱﾄﾞﾗﾑ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ3]
 (29) TOM (Tom Tom) : ﾀﾑﾀﾑ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ2]
 (30) TC (Top Cymbal) : ﾄｯﾌﾟｼﾝﾊﾞﾙ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ1]
 (31) HH (Hi Hat Cymbal) : ﾊｲﾊｯﾄｼﾝﾊﾞﾙ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ0]
 (32) FB (Feed Back) : 第1ｽﾛｯﾄのﾌｨｰﾄﾞﾊﾞｯｸFM変調の変調度設定 [C0H～C8H : ﾋﾞｯﾄ4～2]
 (33) NEW : OPL3/OPL2ﾓｰﾄﾞ選択 [ﾚｼﾞｽﾀ･ｱﾚｰ1 : 05H : ﾋﾞｯﾄ0]
 (34) CNT (Connection) : ｵﾍﾟﾚｰﾀ接続選択 [C0H～C8H : ﾋﾞｯﾄ0]
 (35) WS (Wave Select) : 波形選択 [E0H～F5H : ﾋﾞｯﾄ2～0]
 (36) CHA、CHB、CHC、CHD (Channel A～D) : 出力ﾁｬﾈﾙ設定 [C0H～C8H : ﾋﾞｯﾄ7～4]
 (37) CONNECTION SEL : 4ｵﾍﾟﾚｰﾀﾓｰﾄﾞ設定 [ﾚｼﾞｽﾀ･ｱﾚｰ1 : 04H]


OPL3の概要と特徴

1. YMF262(OPL3)の概要と特徴

1.1 概要
YMF262(OPL3)は、ﾊﾟｿｺﾝなどの音源として開発された新しい音源で、ﾐｭｰｼﾞｯｸ･ｼﾝｾｻｲｻﾞｰYAMAHA DX-7などで使用されている周波数変調(FM)による音源を採用してます。従ってｿﾌﾄｳｪｱのｺﾝﾄﾛｰﾙの元で、色々な種類の音を作り出すことが可能です。又、本音源には、ﾘｽﾞﾑ音を発生する機能も持っており、こちらはFM方式だけでなく、ﾎﾜｲﾄﾉｲｽﾞを含めた数種の周波数の合成で楽音を作る方式をも採用しています。更に、ﾋﾞﾌﾞﾗｰﾄや振幅変調の効果を持たせるために低周波発振器も内臓しておりｿﾌﾄｳｪｱの負担を軽くしています。

1.2 特徴
■ 複数の発音ﾓｰﾄﾞ (代表例)
2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ
2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音18音同時発音
2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音15音+ﾘｽﾞﾑ音5音同時発音
4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ
4ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音6音+2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音6音同時発音
4ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音6音+2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音3音+ﾘｽﾞﾑ5音同時発音
 ■ 8個のFM演算用波形内蔵
 ■ ｽﾃﾚｵ出力

1.3 主要機能
1.4 FM方式の概略
1.5 ﾁｬﾈﾙとｽﾛｯﾄとﾚｼﾞｽﾀの関係


OPL3主要機能

1.3 YMF262(OPL3)主要機能

OPL3は本来のOPL3としてのﾓｰﾄﾞとOPL2互換ﾓｰﾄﾞの2種類のﾓｰﾄﾞが存在します。初期状態はOPL2互換ﾓｰﾄﾞとして動作し、ﾚｼﾞｽﾀｱﾚｰ0側のみが使用されます。ﾚｼﾞｽﾀｱﾚｰ1の05HのNEWﾋﾞｯﾄに1を書き込むことで本来のOPL3としての動作となります。
OPL2互換ﾓｰﾄﾞでは次の発音ﾓｰﾄﾞが使用可能です。
■ 2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ
ﾒﾛﾃﾞｨ音9音
ﾒﾛﾃﾞｨ音6音 + ﾘｽﾞﾑ音5音

OPL3ﾓｰﾄﾞでは次の発音ﾓｰﾄﾞが使用可能です。

■ 2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ
ﾒﾛﾃﾞｨ音18音
ﾒﾛﾃﾞｨ音15音 + ﾘｽﾞﾑ音5音
■ 4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ
4ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音6音 + 2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音6音
4ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音6音 + 2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音3音 + ﾘｽﾞﾑ5音

OPL3ﾓｰﾄﾞの4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでは、4ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音1ﾁｬﾈﾙ単位で4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞと2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞの設定が可能なため、4ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音4音 + 2ｵﾍﾟﾚｰﾀ･ﾒﾛﾃﾞｨ音10音のように音数を自由に設定できます。

■ ﾒﾛﾃﾞｨ音
2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞではﾁｬﾈﾙ(1音)あたり2ｽﾛｯﾄ(ｵﾍﾟﾚｰﾀ)で音を作成し、4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞではﾁｬﾈﾙ(1音)あたり4ｽﾛｯﾄ(ｵﾍﾟﾚｰﾀ)で音を作成します。ﾁｬﾈﾙ(1音)の音色設定は、ｵﾍﾟﾚｰﾀの接続方法とMULTによる搬送波と変調波の比率と各々のｴﾝﾍﾞﾛｰﾌﾟ(ADSR)の設定により大筋が決定されます。OPL3ﾓｰﾄﾞでは、この他に波形の選択等があります。

■ ﾘｽﾞﾑ音
RYT=1でｽﾛｯﾄ13～18を使用して5種類のﾘｽﾞﾑ音ﾓｰﾄﾞとなり、このためｽﾛｯﾄ13～18に対応するﾁｬﾈﾙでのﾒﾛﾃﾞｨ音は使用不可となり、ﾒﾛﾃﾞｨ音は3音少なくなりますが、ﾘｽﾞﾑ音として5音(ﾊﾞｽ･ﾄﾞﾗﾑ、ｽﾈｱ･ﾄﾞﾗﾑ、ﾀﾑﾀﾑ、ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ、ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ)が追加されます。このﾘｽﾞﾑ5音はそれぞれﾊﾞｽ･ﾄﾞﾗﾑはFM方式、ﾀﾑﾀﾑはsin波、そして他の3音は数種の周波数の合成でｼﾐｭﾚｰﾄされます。


OPL3 FM方式の概略

1.4 YMF262(OPL3)FM方式の概略

FM方式とは、Frequency Modulationすなわち周波数変調の意味で、変調によって生ずる高調波を楽音の合成に利用したものです。この方式は比較的簡単な回路で、非調和音も含む高調波成分を持つ波形を発生させることができ、しかも変調指数と高調波のｽﾍﾟｸﾄﾙ分布の対応が非常に自然であるため、自然楽器の合成音から電子音まで、幅広い音作りが可能ということが確認されています。FM方式は次式の如く、4つのﾊﾟﾗﾒｰﾀで表現されます。
F=Asin(ωct+Isinωmt) … (1)
ここでAは出力振幅、Iは変調指数、ωcはｷｬﾘｱの角周波数、ωmはﾓｼﾞｭﾚｰﾀの角周波数を示します。この式は次のように表現することもできます。
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+.....] … (2)
ここで、Jn(I)はn次の第1種Bessel関数です。(2)式からわかるように各倍音の振幅は、変調指数のBessel関数で表現されることとなり、(1)式によるFM音源は特定の楽音や効果音の合成に非常に有効となることがわかります。ただし、これでは高調波が一様に分布しないため、ｽﾄﾘﾝｸﾞｽ(Strings)系の音源には不向きとなります。　そこで考案されたのが次式で示されるﾌｨｰﾄﾞﾊﾞｯｸ(Feedback)FMという方式です。
F=Asin(ωct+βF)
ここでのβは帰還率です。このﾌｨｰﾄﾞﾊﾞｯｸFM方式では、高調波ｽﾍﾟｸﾄﾙが鋸歯状波となりｽﾄﾘﾝｸﾞｽ系の音作りも可能となります。

 以上のようなFM方式を実現するためには、3つの機能ﾌﾞﾛｯｸが必要となります。
・
ωtを発生させるﾌｪｰｽﾞ･ｼﾞｪﾈﾚｰﾀ(PG:Phase Generator)
・
振幅Aや変調指数Iを時間関数として得るためのｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀ(EG:Envelop Generator)
・
ｻｲﾝ(sin)ﾃｰﾌﾞﾙ(SIN)
以上3つの構成要素を組み合わせて1つのﾕﾆｯﾄとして考えると、FM方式の音作りは、ﾕﾆｯﾄ内の周波数ﾊﾟﾗﾒｰﾀやEGﾊﾟﾗﾒｰﾀの設定、ﾕﾆｯﾄ間の接続のﾃﾞｰﾀを作ればよいことになります。この1つのﾕﾆｯﾄをｵﾍﾟﾚｰﾀ(Operator)と呼びます。OPLでは、このｵﾍﾟﾚｰﾀがｽﾛｯﾄに対応しています。


OPL3 ﾁｬﾈﾙとｽﾛｯﾄとﾚｼﾞｽﾀの関係

1.5 YMF262(OPL3)ﾁｬﾈﾙとｽﾛｯﾄとﾚｼﾞｽﾀの関係

OPLの基本構成は、2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞで説明されます。4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでは2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞの2ﾁｬﾈﾙ分を1ﾁｬﾈﾙとして扱っているだけです。2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでは1ﾁｬﾈﾙに対し2ｵﾍﾟﾚｰﾀを持っています。このｵﾍﾟﾚｰﾀはｽﾛｯﾄに対応付けられ、ｽﾛｯﾄ番号は、ﾚｼﾞｽﾀ番号と対応しており、各音の発音制御は、ｽﾛｯﾄと対応したﾚｼﾞｽﾀを操作することとなります。

 又、F-Numberのような、ﾁｬﾈﾙ毎のﾃﾞｰﾀは2つのｽﾛｯﾄを制御することとなります。この2つのｽﾛｯﾄ(第1、第2ｽﾛｯﾄ)の関係は、FM変調ﾓｰﾄﾞにした場合、第1ｽﾛｯﾄが必ず変調波に、第2ｽﾛｯﾄが搬送波になります。又、第1ｽﾛｯﾄはFeedback FMのﾓｰﾄﾞにも設定できます。次にｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでのﾁｬﾈﾙ番号とｽﾛｯﾄ番号の関係を示します。

2opﾁｬﾈﾙ番号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18
4opﾁｬﾈﾙ番号 | 1 | 2 | 3 | 1 | 2 | 3 |  |  |  | 4 | 5 | 6 | 4 | 5 | 6 |  |  |
第1ｽﾛｯﾄ番号 | 1 | 2 | 3 | 7 | 8 | 9 | 13 | 14 | 15 | 19 | 20 | 21 | 25 | 26 | 27 | 31 | 32 | 33
第2ｽﾛｯﾄ番号 | 4 | 5 | 6 | 10 | 11 | 12 | 16 | 17 | 18 | 22 | 23 | 24 | 28 | 29 | 30 | 34 | 35 | 36
次にｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでのﾁｬﾈﾙに対する設定ﾚｼﾞｽﾀの関係を示します。(0:、1:はﾚｼﾞｽﾀ･ｱﾚｰ番号)

2opﾁｬﾈﾙ番号 | 2op設定ﾚｼﾞｽﾀ | 4opﾁｬﾈﾙ番号 | 4op設定ﾚｼﾞｽﾀ
1 | 0: A0H,B0H,C0H | 1 | 0: A0H,B0H,C0H
2 | 0: A1H,B1H,C1H | 2 | 0: A1H,B1H,C1H
3 | 0: A2H,B2H,C2H | 3 | 0: A2H,B2H,C2H
4 0: A3H,B3H,C3H 1
0:         C3H
5 0: A4H,B4H,C4H 2
0:         C4H
6 0: A5H,B5H,C5H 3
0:         C5H
7 | 0: A6H,B6H,C6H
8 | 0: A7H,B7H,C7H
9 | 0: A8H,B8H,C8H
10 | 1: A0H,B0H,C0H | 4 | 1: A0H,B0H,C0H
11 | 1: A1H,B1H,C1H | 5 | 1: A1H,B1H,C1H
12 | 1: A2H,B2H,C2H | 6 | 1: A2H,B2H,C2H
13 1: A3H,B3H,C3H 4
1:         C3H
14 1: A4H,B4H,C4H 5
1:         C4H
15 1: A5H,B5H,C5H 6
1:         C5H
16 | 1: A6H,B6H,C6H
17 | 1: A7H,B7H,C7H
18 | 1: A8H,B8H,C8H

次にｽﾛｯﾄ番号に対する設定ﾚｼﾞｽﾀの関係を示します。(0:、1:はﾚｼﾞｽﾀ･ｱﾚｰ番号)

ｽﾛｯﾄ番号 | 設定ﾚｼﾞｽﾀ | ｽﾛｯﾄ番号 | 設定ﾚｼﾞｽﾀ
1 | 0: 20H,40H,60H,80H,E0H | 4 | 0: 23H,43H,63H,83H,E3H
2 | 0: 21H,41H,61H,81H,E1H | 5 | 0: 24H,44H,64H,84H,E4H
3 | 0: 22H,42H,62H,82H,E2H | 6 | 0: 25H,45H,65H,85H,E5H
7 | 0: 28H,48H,68H,88H,E8H | 10 | 0: 2BH,4BH,6BH,8BH,EBH
8 | 0: 29H,49H,69H,89H,E9H | 11 | 0: 2CH,4CH,6CH,8CH,ECH
9 | 0: 2AH,4AH,6AH,8AH,EAH | 12 | 0: 2DH,4DH,6DH,8DH,EDH
13 | 0: 30H,50H,70H,90H,F0H | 16 | 0: 33H,53H,73H,93H,F3H
14 | 0: 31H,51H,71H,91H,F1H | 17 | 0: 34H,54H,74H,94H,F4H
15 | 0: 32H,52H,72H,92H,F2H | 18 | 0: 35H,55H,75H,95H,F5H
19 | 1: 20H,40H,60H,80H,E0H | 22 | 1: 23H,43H,63H,83H,E3H
20 | 1: 21H,41H,61H,81H,E1H | 23 | 1: 24H,44H,64H,84H,E4H
21 | 1: 22H,42H,62H,82H,E2H | 24 | 1: 25H,45H,65H,85H,E5H
25 | 1: 28H,48H,68H,88H,E8H | 28 | 1: 2BH,4BH,6BH,8BH,EBH
26 | 1: 29H,49H,69H,89H,E9H | 29 | 1: 2CH,4CH,6CH,8CH,ECH
27 | 1: 2AH,4AH,6AH,8AH,EAH | 30 | 1: 2DH,4DH,6DH,8DH,EDH
31 | 1: 30H,50H,70H,90H,F0H | 34 | 1: 33H,53H,73H,93H,F3H
32 | 1: 31H,51H,71H,91H,F1H | 35 | 1: 34H,54H,74H,94H,F4H
33 | 1: 32H,52H,72H,92H,F2H | 36 | 1: 35H,55H,75H,95H,F5H


OPL3 ﾚｼﾞｽﾀ

2. YMF262(OPL3)ﾚｼﾞｽﾀ

OPLの全機能は、ﾌﾟﾛｾｯｻからOPLのﾚｼﾞｽﾀ･ｱﾚｰへのﾃﾞｰﾀの書込みによって制御されます。この書き込まれたﾃﾞｰﾀによって、楽音のｴﾝﾍﾞﾛｰﾌﾟの形状や変調度、周波数および発音ﾓｰﾄﾞ等が決定されます。そしてこのﾃﾞｰﾀの組み合わせが、ﾋﾟｱﾉやﾊﾞｲｵﾘﾝ等の音を発生することになりますが、その組み合わせは非常に多く、かつ複雑であるため本章では、各ﾚｼﾞｽﾀの機能を説明することとします。ﾚｼﾞｽﾀは大別してCPUから直接ｱｸｾｽする直接ﾚｼﾞｽﾀと、直接ﾚｼﾞｽﾀを経由してｱｸｾｽする間接ﾚｼﾞｽﾀがあり、間接ﾚｼﾞｽﾀは数が多いため、ﾚｼﾞｽﾀｱﾚｰ0と1に2分割されています。

2.1 直接ﾚｼﾞｽﾀ
2.2 間接ﾚｼﾞｽﾀ


OPL3 直接ﾚｼﾞｽﾀ

2.1 YMF262(OPL3)直接ﾚｼﾞｽﾀ

本LSIではﾚｼﾞｽﾀ･ｱﾚｰに各ﾚｼﾞｽﾀが配置されており、2組のﾚｼﾞｽﾀ･ｱﾚｰで全体の制御を行います。このﾚｼﾞｽﾀ･ｱﾚｰはCPUから間接ｱｸｾｽとなり、このﾚｼﾞｽﾀ･ｱﾚｰ以外に直接ｱｸｾｽのﾚｼﾞｽﾀとして、ｱﾄﾞﾚｽ･ﾚｼﾞｽﾀ、ﾃﾞｰﾀ･ﾚｼﾞｽﾀ、ｽﾃｰﾀｽ･ﾚｼﾞｽﾀがあります。ｱﾄﾞﾚｽ･ﾚｼﾞｽﾀはﾚｼﾞｽﾀ･ｱﾚｰ0用とﾚｼﾞｽﾀ･ｱﾚｰ1用の2個で、直接ﾚｼﾞｽﾀは合計4個となります。通常、CPUからのｱﾄﾞﾚｽはOPLの基準ｱﾄﾞﾚｽに対して次のように各直接ﾚｼﾞｽﾀが配置されます。

基準ｱﾄﾞﾚｽ | R/W | 意味
+0 | R | ｽﾃｰﾀｽ･ﾚｼﾞｽﾀ
+0 | W | ﾚｼﾞｽﾀ･ｱﾚｰ0のｱﾄﾞﾚｽ･ﾚｼﾞｽﾀ
+2 | W | ﾚｼﾞｽﾀ･ｱﾚｰ1のｱﾄﾞﾚｽ･ﾚｼﾞｽﾀ
+1 | R/W | ﾃﾞｰﾀ･ﾚｼﾞｽﾀ(ﾚｼﾞｽﾀ･ｱﾚｰ0,1共通)

 ﾚｼﾞｽﾀ･ｱﾚｰ内のﾚｼﾞｽﾀに値を設定するには、対応するﾚｼﾞｽﾀ･ｱﾚｰのｱﾄﾞﾚｽ･ﾚｼﾞｽﾀにﾚｼﾞｽﾀ･ｱﾚｰ内のﾚｼﾞｽﾀ番号を書き込み、次に設定したい値をﾃﾞｰﾀ･ﾚｼﾞｽﾀに書き込みます。例外として、ﾚｼﾞｽﾀ･ｱﾚｰ内の同一ﾚｼﾞｽﾀを何度もｱｸｾｽする場合に限り、最初のｱﾄﾞﾚｽ･ﾚｼﾞｽﾀの設定(書き込み)だけで、以降はｱﾄﾞﾚｽ･ﾚｼﾞｽﾀの設定無しに、ﾃﾞｰﾀ･ﾚｼﾞｽﾀの設定(書き込み)のみで、目的のﾚｼﾞｽﾀ･ｱﾚｰ内のﾚｼﾞｽﾀに値を設定することができます。尚、全ﾚｼﾞｽﾀとも電源投入後の初期値は0となります。

 ｱﾄﾞﾚｽ･ﾚｼﾞｽﾀとﾃﾞｰﾀ･ﾚｼﾞｽﾀのｱｸｾｽでは、ｱｸｾｽ後にﾘｶﾊﾞﾘ･ﾀｲﾑを必要とします。具体的なﾘｶﾊﾞﾘ･ﾀｲﾑを次に示します。(標準ｼｽﾃﾑ･ｸﾛｯｸ=14.32MHz)

・ | ｱﾄﾞﾚｽ･ﾚｼﾞｽﾀ書き込み後のﾃﾞｰﾀ･ﾚｼﾞｽﾀ書き込みは、32ｼｽﾃﾑ･ｸﾛｯｸ経過後に行って下さい。
・ | ﾃﾞｰﾀ･ﾚｼﾞｽﾀ書き込み後のｱﾄﾞﾚｽまたはﾃﾞｰﾀ･ﾚｼﾞｽﾀ書き込みは、32ｼｽﾃﾑ･ｸﾛｯｸ経過後に行って下さい。

 次にCPU直接ｱｸｾｽ･ﾚｼﾞｽﾀの構成を示します。

■ ｽﾃｰﾀｽ･ﾚｼﾞｽﾀ

D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
IRQ | FT1 | FT2 | --- | --- | --- | --- | ---
IRQ(Interrupt request)ﾋﾞｯﾄはFT1かFT2が1で1となります。つまりﾀｲﾏのｵｰﾊﾞｰﾌﾛｰで1となりますが、このﾋﾞｯﾄはﾚｼﾞｽﾀ･ｱﾚｰ0の04HのRSTに1を書き込むことによってのみ0(ﾘｾｯﾄ)になります。FT1(Flag timer1)ﾋﾞｯﾄはﾀｲﾏ1のｵｰﾊﾞｰﾌﾛｰで1となります。このﾋﾞｯﾄはﾚｼﾞｽﾀ･ｱﾚｰ0の04HのRSTに1を書き込むことによってのみ0(ﾘｾｯﾄ)になります。FT2(Flag timer2)ﾋﾞｯﾄはﾀｲﾏ2のｵｰﾊﾞｰﾌﾛｰで1となります。このﾋﾞｯﾄはﾚｼﾞｽﾀ･ｱﾚｰ0の04HのRSTに1を書き込むことによってのみ0(ﾘｾｯﾄ)になります。

■ ﾃﾞｰﾀ･ﾚｼﾞｽﾀ
ﾚｼﾞｽﾀ･ｱﾚｰ内のﾚｼﾞｽﾀに設定する値

■ ｱﾄﾞﾚｽ･ﾚｼﾞｽﾀ0
ﾚｼﾞｽﾀ･ｱﾚｰ0内のﾚｼﾞｽﾀの番号

■ ｱﾄﾞﾚｽ･ﾚｼﾞｽﾀ1
ﾚｼﾞｽﾀ･ｱﾚｰ1内のﾚｼﾞｽﾀの番号


OPL3 間接ﾚｼﾞｽﾀ

2.2 YMF262(OPL3)間接ﾚｼﾞｽﾀ

ここのﾚｼﾞｽﾀへのｱｸｾｽは直接ﾚｼﾞｽﾀのｱﾄﾞﾚｽ･ﾚｼﾞｽﾀで対応ﾚｼﾞｽﾀ･ｱﾚｰ内のﾚｼﾞｽﾀ番号を設定し、その後直接ﾚｼﾞｽﾀのﾃﾞｰﾀ･ﾚｼﾞｽﾀへｱｸｾｽすることで設定します。次にﾚｼﾞｽﾀ･ｱﾚｰ内ﾚｼﾞｽﾀの構成を示します。

番号 | ﾚｼﾞｽﾀ･ｱﾚｰ 0 | ﾚｼﾞｽﾀ･ｱﾚｰ 1
 D7
 D6
 D5
 D4
 D3
 D2
 D1
 D0
 D7
 D6
 D5
 D4
 D3
 D2
 D1
 D0
01H | TEST | TEST
02H | TIMER1 | 00H
03H | TIMER2 | 00H
04H | RST | MT1 | MT2 | 0 | 0 | 0 | ST2 | ST1 | 0 | 0 | CONNECTION SEL
05H | 00H | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NEW
08H | 0 | NTS | 0 | 0 | 0 | 0 | 0 | 0 | 00H
20H～35H | AM | VIB | EGT | KSR | MULT | AM | VIB | EGT | KSR | MULT
40H～55H | KSL | TL | KSL | TL
60H～75H | AR | DR | AR | DR
80H～95H | SL | RR | SL | RR
A0H～A8H | F NUMBER(L) | F NUMBER(L)
B0H～B8H | 0 | 0 | KON | BLOCK | FNUM(H) | 0 | 0 | KON | BLOCK | FNUM(H)
BDH | DAM | DVB | RYT | BD | SD | TOM | TC | HH | 00H
C0H～C8H | CHD | CHC | CHB | CHA | FB | CNT | CHD | CHC | CHB | CHA | FB | CNT
E0H～F5H | 0 | 0 | 0 | 0 | 0 | WS | 0 | 0 | 0 | 0 | 0 | WS
注意: 表中の00H,0は基本的に未使用ですが、将来の拡張のために必ず0を設定して下さい。


OPL3 ﾒｰｶｰ･ﾃｽﾄ

YMF262(OPL3)ﾒｰｶｰ･ﾃｽﾄ

(1) TEST [01H]

OPL製造ﾒｰｶｰが試験を行う時に使用します。ﾕｰｻﾞｰではｱｸｾｽ禁止です。


YMF262(OPL3)ﾀｲﾏ･割込み

ﾀｲﾏには、80μS単位のﾀｲﾏ1と320μS単位のﾀｲﾏ2の2本の8ﾋﾞｯﾄ･ﾌﾟﾘｾｯﾀﾌﾞﾙ･ﾀｲﾏがあり、ｵｰﾊﾞｰﾌﾛｰが生じた時に、対応するﾌﾗｸﾞを立て(ｽﾃｰﾀｽ･ﾚｼﾞｽﾀのFT1=1かFT2=1)、/IRQ信号線をLにし、同時にﾌﾟﾘｾｯﾄ値をﾛｰﾄﾞします。このﾌﾟﾘｾｯﾄを各々TIMER1、TIMER2に設定します。各々のﾀｲﾏの動作/停止はﾚｼﾞｽﾀ･ｱﾚｰの04HのST1、ST2で制御します。ST1、ST2の初期値は0でﾀｲﾏ停止となっていますので、ﾀｲﾏを使用する場合はST1、ST2に1を設定して下さい。
注意: Sound Blasterでは、/IRQが割込み線として未接続ですので、このﾀｲﾏでの割込みは使用できません。勿論FT1、FT2をﾌﾗｸﾞ･ｾﾝｽで使用することは可能です。

(2) TIMER1 [ﾚｼﾞｽﾀｰ･ｱﾚｰ0 : 02H]

ﾀｲﾏ1は80μS単位のﾀｲﾏで、ﾀｲﾏ間隔(T1over)は次式に従います。
T1over(ms) = (256-TIMER1)×0.08 (標準ﾏｽﾀｸﾛｯｸ時)

(3) TIMER2 [ﾚｼﾞｽﾀｰ･ｱﾚｰ0 : 03H]

ﾀｲﾏ1は320μS単位のﾀｲﾏで、ﾀｲﾏ間隔(T2over)は次式に従います。
T2over(ms) = (256-TIMER2)×0.32 (標準ﾏｽﾀｸﾛｯｸ時)

(4) RST (IRQ Reset) [ﾚｼﾞｽﾀｰ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ7]
RST=1を書き込むとﾀｲﾏのｵｰﾊﾞｰﾌﾛｰ･ﾌﾗｸﾞ(ｽﾃｰﾀｽ･ﾚｼﾞｽﾀのFT1,FT2)がﾘｾｯﾄされ0となり、/IRQ信号線もHとなります。0を書き込んだ場合は、どの動作にも影響を与えません。又、1を書き込んだ後に0を書き込む必要はありません。1を書き込んだ後、内部では自動的に0となります。

(5) MT1 (Mask Timer1) [ﾚｼﾞｽﾀｰ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ6]
MT1=1でﾀｲﾏ1による割込みを禁止とします。この場合、ﾀｲﾏ1のｵｰﾊﾞｰﾌﾛｰで/IRQ信号線はLになりません。MT1=0でｵｰﾊﾞｰﾌﾛｰが/IRQ信号線に反映されます。

(6) MT2 (Mask Timer2) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ5]
MT2=1でﾀｲﾏ1による割込みを禁止とします。この場合、ﾀｲﾏ1のｵｰﾊﾞｰﾌﾛｰで/IRQ信号線はLになりません。MT2=0でｵｰﾊﾞｰﾌﾛｰが/IRQ信号線に反映されます。

(7) ST1 (Start Timer1) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ0]
ﾀｲﾏ1の始動/停止を制御します。ST1=1を書き込んだ時に、ﾀｲﾏ1にﾌﾟﾘｾｯﾄ値(ﾚｼﾞｽﾀ･ｱﾚｰの02H)をﾛｰﾄﾞしてｶｳﾝﾄを始めます。ST1=0の時は、ﾀｲﾏ1の動作は行われず停止となります。

(8) ST2 (Start Timer2) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 04H : ﾋﾞｯﾄ1]
ﾀｲﾏ2の始動/停止を制御します。ST2=1を書き込んだ時に、ﾀｲﾏ2にﾌﾟﾘｾｯﾄ値(ﾚｼﾞｽﾀ･ｱﾚｰの03H)をﾛｰﾄﾞしてｶｳﾝﾄを始めます。ST2=0の時は、ﾀｲﾏ2の動作は行われず停止となります。


OPL3 自然楽器のｼﾐｭﾚｰﾄ (ｷｰ･ｽｹｰﾙ･ﾚｰﾄとｷｰ･ｽｹｰﾙ･ﾚﾍﾞﾙ)

YMF262(OPL3)自然楽器のｼﾐｭﾚｰﾄ (ｷｰ･ｽｹｰﾙ･ﾚｰﾄとｷｰ･ｽｹｰﾙ･ﾚﾍﾞﾙ)

(9) NTS (Note Select) [ﾚｼﾞｽﾀ･ｱﾚｰ0 : 08H : ﾋﾞｯﾄ6]

このﾋﾞｯﾄは、ｷｰ･ｽｹｰﾙ･ﾚｰﾄ(ﾚｼﾞｽﾀ･ｱﾚｰの20H～35HのKSR)で参照されるｷｰ･ｽｹｰﾙ番号の割り振りを指定します。ｷｰ･ｽｹｰﾙ番号はF Number(ﾚｼﾞｽﾀ･ｱﾚｰのA0H～A8HのF NUMBER(L)とB0H～B8HのF NUM(H))の0(最低周波数)側から、或る範囲毎に0,1,2,･･･,15と割り振られます。この或る範囲を規定するのがNTSで、0の時は、F NumberのMSBからみて2番目のﾋﾞｯﾄで、1の時はF NumberのMSBで範囲を規定します。この関係を次に示します。

■ NTS=0の場合 (Ｘは0または1)
ｷｰ･ｽｹｰﾙ番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
BLOCK | 0 |  | 1 |  | 2 |  | 3 |  | 4 |  | 5 |  | 6 |  | 7
F Number MSB | × |  | × |  | × |  | × |  | × |  | × |  | × |  | ×
F Number MSB-1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1

■ NTS=1の場合 (Ｘは0または1)
ｷｰ･ｽｹｰﾙ番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
BLOCK | 0 |  | 1 |  | 2 |  | 3 |  | 4 |  | 5 |  | 6 |  | 7
F Number MSB | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1
F Number MSB-1 | × |  | × |  | × |  | × |  | × |  | × |  | × |  | ×

基本的には、F Numberで設定する音階ﾃﾞｰﾀがどの範囲を使用するかで、NTSの設定が決まります。F NumberのMSBが使用されない範囲ではNTS=0、MSBが使用される場合はNTS=1とします。

(13) KSR (Key Scale Rate) : 音程による立ち上がり、立ち下がり制御 [20H～35H : ﾋﾞｯﾄ5]

自然楽器では、概ね音程が高くなるに従って、音の立ち上がり、立ち下がりは速くなります。KSRは、この状態のｼﾐｭﾚｰﾄを設定します。原理は、各々の音程がﾚｼﾞｽﾀ･ｱﾚｰ0の08HのNTSで規定されたｷｰ･ｽｹｰﾙ番号に変換され、ｷｰ･ｽｹｰﾙ番号とKSRの値から、その音程に対する速度のｵﾌｾｯﾄとして与えられ、ADSRのAR、DR、RRの値に、このｵﾌｾｯﾄを加えたものになります。この関係式とKSR対ｵﾌｾｯﾄ値の関係を次に示します。

実際の値=設定値×4+Rofs
設定値: AR、DR、RR各々の設定値
例外:
設定値=0の時は実際の値=0

ｷｰ･ｽｹｰﾙ番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
Rofs (KSR=0) | 0 |  |  |  | 1 |  |  |  | 2 |  |  |  | 3
Rofs (KSR=1) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15

(15) KSL (Key Scale Level) : 音程による音量制御 [40H～55H : ﾋﾞｯﾄ7～6]

自然楽器では、概ね音程が高くなるに従って、音は小さくなります。KSLは、この状態のｼﾐｭﾚｰﾄを設定します。KSLの設定に対するｵｸﾀｰﾌﾞあたりの減衰量を次に示します。

KSL | 0 | 1 | 2 | 3
減衰量 | 0 | 1.5dB/oct | 3dB/oct | 6dB/oct

3dB/oct設定時のBLOCK、F Numberと減衰量の関係を次に示します。(Fn: F Numberの上位4ﾋﾞｯﾄの値)

Fn | BLOCK
 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000
1 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 3.000 | 6.000 | 9.000
2 | 0.000 | 0.000 | 0.000 | 0.000 | 3.000 | 6.000 | 9.000 | 12.000
3 | 0.000 | 0.000 | 0.000 | 1.875 | 4.875 | 7.875 | 10.875 | 13.875
4 | 0.000 | 0.000 | 0.000 | 3.000 | 6.000 | 9.000 | 12.000 | 15.000
5 | 0.000 | 0.000 | 1.125 | 4.125 | 7.125 | 10.125 | 13.125 | 16.125
6 | 0.000 | 0.000 | 1.875 | 4.875 | 7.875 | 10.875 | 13.875 | 16.875
7 | 0.000 | 0.000 | 2.625 | 5.625 | 8.625 | 11.625 | 14.625 | 17.625
8 | 0.000 | 0.000 | 3.000 | 6.000 | 9.000 | 12.000 | 15.000 | 18.000
9 | 0.000 | 0.750 | 3.750 | 6.750 | 9.750 | 12.750 | 15.750 | 18.750
10 | 0.000 | 1.125 | 4.125 | 7.125 | 10.125 | 13.125 | 16.125 | 19.125
11 | 0.000 | 1.500 | 4.500 | 7.500 | 10.500 | 13.500 | 16.500 | 19.500
12 | 0.000 | 1.875 | 4.875 | 7.875 | 10.875 | 13.875 | 16.875 | 19.875
13 | 0.000 | 2.250 | 5.250 | 8.250 | 11.250 | 14.250 | 17.250 | 20.250
14 | 0.000 | 2.625 | 5.625 | 8.625 | 11.625 | 14.625 | 17.625 | 20.625
15 | 0.000 | 3.000 | 6.000 | 9.000 | 12.000 | 15.000 | 18.000 | 21.000


OPL3 ﾄﾚﾓﾛ効果(振幅変調)

YMF262(OPL3)ﾄﾚﾓﾛ効果(振幅変調)

(10) AM (Amplitude Modulation) : 振幅変調(ﾄﾚﾓﾛ) [20H～35H : ﾋﾞｯﾄ7]
AM=1で対応するｽﾛｯﾄに振幅変調が掛かります。変調周波数は3.7Hzで変調の深さはﾚｼﾞｽﾀ･ｱﾚｰのBDHのDAMで設定されます。

(24) DAM (Amplitude Modulation Depth) : 振幅変調度設定 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ7]
ﾚｼﾞｽﾀ･ｱﾚｰの20H～35HのAMで振幅変調が設定された場合の変調度を選択します。変調度はDAM=0で1dB、DAM=1で4.8dBとなります。DAM=1でのﾄﾚﾓﾛ効果は、かなり大きいので通常の楽器音にはあまり適さず、効果音に威力を発揮します。


OPL3 ﾋﾞﾌﾞﾗｰﾄ効果(周波数変調)

YMF262(OPL3)ﾋﾞﾌﾞﾗｰﾄ効果(周波数変調)

(11) VIB (Vibrato) : 周波数変調(ﾋﾞﾌﾞﾗｰﾄ) [20H～35H:ﾋﾞｯﾄ6]

VIB=1で対応するｽﾛｯﾄに周波数変調が掛かります。変調周波数は6.1Hzで変調の深さはﾚｼﾞｽﾀ･ｱﾚｰのBDHのDVBで設定されます。

(25) DVB (Vibrato Depth) : ﾋﾞﾌﾞﾗｰﾄ(周波数変調)深さ設定 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ6]

ﾚｼﾞｽﾀ･ｱﾚｰの20H～35HのVIBでﾋﾞﾌﾞﾗｰﾄ(周波数変調)が設定された場合の変調度を選択します。変調度(深さ)はDVB=0で7ｾﾝﾄ、DVB=1で14ｾﾝﾄとなります。


OPL3 ｴﾝﾍﾞﾛｰﾌﾟ

YMF262(OPL3)ｴﾝﾍﾞﾛｰﾌﾟ

(12) EGT (Envelope Generator Type) : 持続音/減衰音 [20H～35H : ﾋﾞｯﾄ5]

EGT=0で減衰音設定となり、ｴﾝﾍﾞﾛｰﾌﾟはKON=1後のｻｽﾃｨｰﾝ･ﾚﾍﾞﾙ(ﾚｼﾞｽﾀ･ｱﾚｰの80H～95HのSL)到達後、ﾘﾘｰｽとなります。音の長さはKON=1状態の時間と無関係となります。KONﾋﾞｯﾄは次回の発音開始以前に0とする必要があります。EGT=1で持続音設定となり、ｴﾝﾍﾞﾛｰﾌﾟはKON=1の間ｻｽﾃｨｰﾝ･ﾚﾍﾞﾙを保持し、KON=0でﾘﾘｰｽへ移行します。減衰音と持続音のｴﾝﾍﾞﾛｰﾌﾟのｲﾒｰｼﾞを次に示します。

(17) AR (Attack Rate) : 立ち上がり時間設定 [60H～75H : ﾋﾞｯﾄ7～4]

音の立ち上がり時間を設定します。立ち上がりは直線的ではなく、指数関数的に変化します。設定値、KSRの設定によるRofsとで実際のﾚｰﾄが決まります。
実際のﾚｰﾄ = AR×4+Rofs
(AR=0は0とし、64以上は64とします。)

(18) DR (Decay Rate) : ｱﾀｯｸ後の立ち下がり時間設定 [60H～75H : ﾋﾞｯﾄ7～4]

ｱﾀｯｸ後の減衰時間を設定します。減衰は直線的に変化します。設定値、KSRの設定によるRofsとで実際のﾚｰﾄが決まります。
実際のﾚｰﾄ = DR×4+Rofs
(DR=0は0とし、64以上は64とします。)

(19) SL (Sustain Level) : 持続音ﾚﾍﾞﾙ [80H～95H : 上位4ﾋﾞｯﾄ]

ｻｽﾃｨｰﾝ･ﾚﾍﾞﾙは、EG-TYPによる持続音か減衰音かの設定により、その意味が異なります。持続音の場合は、ﾃﾞｨｹｲによる減衰がｻｽﾃｨｰﾝ･ﾚﾍﾞﾙの設定値によるﾚﾍﾞﾙに到達すると、その後はそのﾚﾍﾞﾙを保持するという変化点を示します。減衰音の場合は、ﾃﾞｨｹｲからﾘﾘｰｽへの変化点を示します。SLの設定値は減衰量で表し、3dB単位となります。

(20) RR (Release Rate) : 減衰時間設定 [80H～95H : 下位4ﾋﾞｯﾄ]

ﾘﾘｰｽ･ﾚｰﾄは持続音か減衰音かで意味が異なり、持続音の場合は、Key-OFFにした瞬間からの音が消滅する状態を指定し、減衰音の場合は、ｻｽﾃｨｰﾝ･ﾚﾍﾞﾙ後の減衰を指定します。つまり、減衰音におけるｱﾀｯｸ後の減衰はｻｽﾃｨｰﾝ･ﾚﾍﾞﾙ以前はﾃﾞｨｹｲで、以降はﾘﾘｰｽで設定することになります。減衰は直線的に変化します。設定値、KSRの設定によるRofsとで実際のﾚｰﾄが決まります。
実際のﾚｰﾄ = RR×4+Rofs
(RR=0は0とし、64以上は64とします。)


OPL3 音程･音階

YMF262(OPL3)音程･音階

(14) MULT (Multiple) : 周波数倍率 [20H～35H : ﾋﾞｯﾄ3～0]

BLOCKとF Numberによって指定された周波数から、実際の周波数を決定するための倍率です。このMULTは各ｽﾛｯﾄ単位で設定できますので、同じBLOCKとF Numberでも異なる周波数関係に設定することが可能になります。関係式とMULTの設定に対する倍率の関係を次に示します。
F(t) = Ac sin(Mcωt+Am sin(Mmωt))
ω | : | BLOCKとF Numberによる周波数
Mc | : | 搬送波の倍率
Mm | : | 変調波の倍率

MULT | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
倍率 | 1/2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 10 | 12 | 12 | 15 | 15

(21) F NUMBER : (ｵｸﾀｰﾌﾞ内の)音階設定 [A0H～A8HとB0H～B8H : ﾋﾞｯﾄ1～0]

F NUMBERはﾚｼﾞｽﾀ･ｱﾚｰのB0H～B8H(ﾋﾞｯﾄ1～0)のFNUM(H)とA0H～A8Hが連結され、計10ﾋﾞｯﾄとして使用され、基本的にはｵｸﾀｰﾌﾞ内の音階に相当する周波数を設定します。基本音程周波数fはｵｸﾀｰﾌﾞ情報(BLOCK)と共に決定されます。F NUMBERは次式によります。
F NUMBER = f×219/fs/2BLOCK-1
f | : | 基本音程周波数
fs | : | ｻﾝﾌﾟﾘﾝｸﾞ周波数(ﾏｽﾀｸﾛｯｸ(Hz)/288)
実際の各ｽﾛｯﾄ周波数は、ここで示されたf×MULT(周波数倍率 [20H～35H : ﾋﾞｯﾄ3～0])により決定されます。

(22) BLOCK : ｵｸﾀｰﾌﾞ設定 [B0H～B8H : ﾋﾞｯﾄ4～2]

ｵｸﾀｰﾌﾞを設定します。F NUMBER(ｵｸﾀｰﾌﾞ内の音階情報)と共に基本音程周波数が決定されます。実際の各ｽﾛｯﾄ周波数は、この基本音程周波数×MULT(周波数倍率 [20H～35H : ﾋﾞｯﾄ3～0])により決定されます。


OPL3 変調度･音量･発音

YMF262(OPL3)変調度･音量･発音

(16) TL (Total Level) : 変調度、音量設定 [40H～55H : ﾋﾞｯﾄ5～0]

TL(ﾄｰﾀﾙ･ﾚﾍﾞﾙ)は、ｴﾝﾍﾞﾛｰﾌﾟ･ｼﾞｪﾈﾚｰﾀの出力に対して、減衰量を加算し変調度(音色)及び音量の制御をします。言い換えると対応ｽﾛｯﾄでの最終出力を規定することになります。ここで指定する値は減衰量で、最小分解能は0.75dBで最大47.25dBまで音量を絞り込むことができます。

(23) KON (Key ON) : 発音 [B0H～B8H : ﾋﾞｯﾄ5]

対応ﾁｬﾈﾙの発音を制御します。KON=1で発音しますが、ﾚｼﾞｽﾀ･ｱﾚｰの20H～35HのEGTによるｴﾝﾍﾞﾛｰﾌﾟが持続音か減衰音かで、KONﾋﾞｯﾄの意味が多少異なります。持続音の場合はKON=1の間中発音開始後のｻｽﾃｨｰﾝ･ﾚﾍﾞﾙで音を持続し、KON=0でﾘﾘｰｽとなります。減衰音の場合はKON=1で発音を開始しますが、開始後のKONﾋﾞｯﾄは意味を持ちません。次の発音までにKON=0となっていれば良いだけです。


OPL3 ﾘｽﾞﾑ音

YMF262(OPL3)ﾘｽﾞﾑ音

RYTの設定によりﾘｽﾞﾑ音としてﾊﾞｽ･ﾄﾞﾗﾑ、ｽﾈｱ･ﾄﾞﾗﾑ、ﾀﾑﾀﾑ、ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ、ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙの 5音が使用できます。この5音はそれぞれﾊﾞｽ･ﾄﾞﾗﾑがFM方式、ﾀﾑﾀﾑがsin波、そして他の3音は数種の周波数の合成でｼﾐｭﾚｰﾄされます。次に各音とｽﾛｯﾄ番号の関係を示します。

ﾘｽﾞﾑ音 | ﾊﾞｽ･ﾄﾞﾗﾑ | ｽﾈｱ･ﾄﾞﾗﾑ | ﾀﾑﾀﾑ | ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ | ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ
ｽﾛｯﾄ番号 | 13,16 | 17 | 15 | 18 | 14

各音でｴﾝﾍﾞﾛｰﾌﾟは対応ｽﾛｯﾄで独立していますが、周波数は他のﾘｽﾞﾑ音と関連がありますので、設定には注意を要します。

(26) RYT (Rhythm Mode) : ﾘｽﾞﾑ音ﾓｰﾄﾞ [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ5]

5種類のﾘｽﾞﾑ音使用の有無を設定します。RYT=0でﾘｽﾞﾑ音は使用せず、RYT=1でﾘｽﾞﾑ音使用となり、7～9ﾁｬﾈﾙはﾘｽﾞﾑ音の作成に使用されます。

(27) BD (Buss Drum) : ﾊﾞｽ･ﾄﾞﾗﾑ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ4]

BD=1でﾊﾞｽ･ﾄﾞﾗﾑを発音します。このﾋﾞｯﾄは基本的に減衰音のKONﾋﾞｯﾄと同様な動作となります。

(28) SD (Snare Drum) : ｽﾈｱ･ﾄﾞﾗﾑ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ3]

SD=1でｽﾈｱ･ﾄﾞﾗﾑを発音します。このﾋﾞｯﾄは基本的に減衰音のKONﾋﾞｯﾄと同様な動作となります。

(29) TOM (Tom Tom) : ﾀﾑﾀﾑ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ2]

TOM=1でﾀﾑﾀﾑを発音します。このﾋﾞｯﾄは基本的に減衰音のKONﾋﾞｯﾄと同様な動作となります。

(30) TC (Top Cymbal) : ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ1]

TC=1でﾄｯﾌﾟ･ｼﾝﾊﾞﾙを発音します。このﾋﾞｯﾄは基本的に減衰音のKONﾋﾞｯﾄと同様な動作となります。

(31) HH (Hi Hat Cymbal) : ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ制御 [ﾚｼﾞｽﾀ･ｱﾚｰ0 : BDH : ﾋﾞｯﾄ0]

HH=1でﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙを発音します。このﾋﾞｯﾄは基本的に減衰音のKONﾋﾞｯﾄと同様な動作となります。


OPL3 音色

YMF262(OPL3)音色

(32) FB (Feed Back) : 第1ｽﾛｯﾄのﾌｨｰﾄﾞﾊﾞｯｸFM変調の変調度設定 [C0H～C8H : ﾋﾞｯﾄ4～2]

FBの設定値に対する第1ｽﾛｯﾄのﾌｨｰﾄﾞﾊﾞｯｸFM変調の変調度の関係を次に示します。
FB | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
変調度 | 0 | π/16 | π/8 | π/4 | π/2 | π | 2π | 4π

(33) NEW : OPL3/OPL2ﾓｰﾄﾞ選択 [ﾚｼﾞｽﾀ･ｱﾚｰ1 : 05H : ﾋﾞｯﾄ0]

過去との互換性のため、初期動作としてOPL2として動作します。OPL2では基本的にﾁｬﾈﾙ数が1/2となり、このためﾚｼﾞｽﾀ･ｱﾚｰ0のみでﾚｼﾞｽﾀ･ｱﾚｰ1は存在しません。本来のOPL3動作を使用する場合はNEW=1を書き込んで下さい。

(37) CONNECTION SEL : 4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ設定 [ﾚｼﾞｽﾀ･ｱﾚｰ1 : 04H]

4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでの6ﾁｬﾈﾙ、2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでの12ﾁｬﾈﾙを各々どちらのﾓｰﾄﾞにするかを設定します。対応ﾋﾞｯﾄ=1で4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ、0で2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞとなります。次にﾋﾞｯﾄに対する4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでのﾁｬﾈﾙ番号と2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでの該当ﾁｬﾈﾙ番号の関係を示します。
CONNECTION SELﾋﾞｯﾄ | 5 | 4 | 3 | 2 | 1 | 0
4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ･ﾁｬﾈﾙ番号 | 6 | 5 | 4 | 3 | 2 | 1
2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ･ﾁｬﾈﾙ番号 | 12,15 | 11,14 | 10,13 | 3,6 | 2,5 | 1,4

(34) CNT (Connection) : ｵﾍﾟﾚｰﾀ接続選択 [C0H～C8H : ﾋﾞｯﾄ0]

2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞではCNTﾋﾞｯﾄで次の2種類の接続を選択できます。
4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでは2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでの2ﾁｬﾈﾙを使用して1ﾁｬﾈﾙとして扱いますので、2ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞでの2ﾁｬﾈﾙ分のCNTﾋﾞｯﾄで2ﾋﾞｯﾄとなり、4種類の接続から選択することになります。4ｵﾍﾟﾚｰﾀ･ﾓｰﾄﾞ時のﾁｬﾈﾙ番号とﾚｼﾞｽﾀ･ｱﾚｰ内のCNTﾋﾞｯﾄとの関係と次に示します。
ﾁｬﾈﾙ番号 | 1 | 2 | 3 | 4 | 5 | 6
ﾚｼﾞｽﾀ･ｱﾚｰ番号 | 0 |  |  | 1
ﾚｼﾞｽﾀ番号 | CCH,C3H | C1H,C4H | C2H,C5H | C0H,C3H | C1H,C4H | C2H,C5H
接続番号はCnHが上位でCnH+3を下位として扱います。次に4種類の接続を示します。

(35) WS (Wave Select) : 波形選択 [E0H～F5H : ﾋﾞｯﾄ2～0]

各ｽﾛｯﾄで使用される波形を選択します。基本はｻｲﾝ波ですが、ｻｲﾝ波のみですと複雑な音色等を作成する場合、ｵﾍﾟﾚｰﾀの数がかなり必要となります。限られたｵﾍﾟﾚｰﾀで音色のﾊﾞﾘｴｰｼｮﾝを増やすには、基本波形をｻｲﾝ波のみでなく、特徴ある複数波形が使用できれば簡単に拡張できます。目的の楽器の波形に近い波形を搬送波の波形として選択することで、最初からかなり近い音の作成が可能となります。WSと基本波形の関係を次に示します。(波形は1周期分)


OPL3 ﾊﾟﾝﾎﾟｯﾄ(出力ﾁｬﾈﾙ設定)

YMF262(OPL3)ﾊﾟﾝﾎﾟｯﾄ(出力ﾁｬﾈﾙ設定)

(36) CHA、CHB、CHC、CHD (Channel A～D) : 出力ﾁｬﾈﾙ設定 [C0H～C8H : ﾋﾞｯﾄ7～4]

OPL3では4ﾁｬﾈﾙの出力があり、発音部の各ﾁｬﾈﾙは独立して4ﾁｬﾈﾙのどのﾁｬﾈﾙにも任意で出力ができます。CHA～Dの各ﾋﾞｯﾄは1で対応ﾁｬﾈﾙに出力、0で出力無しとなります。通常、4ﾁｬﾈﾙの割り振りはﾌﾛﾝﾄ、ﾘｱのそれぞれR、Lとしての使用が一般的です。


OPL3 音階(周波数)表

YMF262(OPL3)音階(周波数)表

標準ﾏｽﾀ･ｸﾛｯｸにおける、音階に対するF NUMBERの関係を次に示します。但し、周波数はMULT=1、BLOCK=4の時の値で、ｵｸﾀｰﾌﾞ4から5に渡る値です。

音階 | 周波数 | F Number | FNUM:H |  | F NUMBER (L)
 |  |  | D1 | D0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0
Ｃ♯／Ｄ♭ | 277.2 | 363 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1
Ｄ | 293.7 | 385 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1
Ｄ♯／Ｅ♭ | 311.1 | 408 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0
Ｅ | 329.6 | 432 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0
Ｆ | 349.2 | 458 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0
Ｆ♯／Ｇ♭ | 370.0 | 485 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1
Ｇ | 392.0 | 514 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0
Ｇ♯／Ａ♭ | 415.3 | 544 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0
Ａ | 440.0 | 577 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1
Ａ♯／Ｂ♭ | 466.2 | 611 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1
Ｂ | 493.9 | 647 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1
Ｃ | 523.3 | 686 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0
Ｃ♯／Ｄ♭ | 554.4 | 727 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1
Ｄ | 587.3 | 770 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0
Ｄ♯／Ｅ♭ | 622.2 | 816 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0
Ｅ | 659.3 | 864 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0
Ｆ | 698.5 | 916 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0
Ｆ♯／Ｇ♭ | 740.0 | 970 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0


YMF262(OPL3)ｱﾀｯｸ･ﾚｰﾄ表

表中のAR:H、AR:Lは実際のﾚｰﾄの上位4ﾋﾞｯﾄをAR:H、下位2ﾋﾞｯﾄをAR:Lで表します。

■ 10%から90%変化までの時間 (ms)
AR:H | AR:L
 | 3 | 2 | 1 | 0
15 | 0.00 | 0.00 | 0.00 | 0.00
14 | 0.11 | 0.11 | 0.14 | 0.19
13 | 0.22 | 0.26 | 0.31 | 0.37
12 | 0.43 | 0.49 | 0.61 | 0.73
11 | 0.85 | 0.97 | 1.13 | 1.45
10 | 1.70 | 1.94 | 2.26 | 2.90
9 | 3.39 | 3.87 | 4.51 | 5.79
8 | 6.78 | 7.74 | 9.02 | 11.58
7 | 13.57 | 15.49 | 18.05 | 23.17
6 | 27.14 | 30.98 | 36.10 | 46.34
5 | 54.27 | 61.95 | 72.19 | 92.67
4 | 108.54 | 123.90 | 144.38 | 186.34
3 | 217.09 | 247.81 | 288.77 | 370.69
2 | 434.18 | 495.62 | 577.54 | 741.38
1 | 868.35 | 991.23 | 1155.07 | 1482.75
0 | 変化無し | 変化無し | 変化無し | 変化無し

■ -96dBから0dB変化までの時間 (ms)
AR:H | AR:L
 | 3 | 2 | 1 | 0
15 | 0.00 | 0.00 | 0.00 | 0.00
14 | 0.20 | 0.24 | 0.30 | 0.38
13 | 0.42 | 0.46 | 0.56 | 0.70
12 | 0.80 | 0.92 | 1.12 | 1.40
11 | 1.56 | 1.84 | 2.20 | 2.76
10 | 3.12 | 3.68 | 4.40 | 5.52
9 | 6.24 | 7.36 | 8.80 | 11.04
8 | 12.48 | 14.72 | 17.60 | 22.08
7 | 24.96 | 29.44 | 35.20 | 44.16
6 | 49.92 | 58.88 | 70.40 | 88.32
5 | 99.84 | 117.76 | 140.80 | 176.64
4 | 199.68 | 235.52 | 281.60 | 353.28
3 | 399.36 | 471.04 | 563.20 | 706.56
2 | 798.72 | 942.08 | 1126.40 | 1413.12
1 | 1597.44 | 1884.16 | 2252.80 | 2826.24
0 | 変化無し | 変化無し | 変化無し | 変化無し


YMF262(OPL3)ﾃﾞｨｹｲ･ﾚｰﾄ、ﾘﾘｰｽ･ﾚｰﾄ表

表中のDR:H、DR:Lは実際のﾚｰﾄの上位4ﾋﾞｯﾄをDR:H、下位2ﾋﾞｯﾄをDR:Lで表します。ﾘﾘｰｽ･ﾚｰﾄでは各々RR:H、RR:Lと読み替えます。

■ 10%から90%変化までの時間 (ms)
DR:H | DR:L
 | 3 | 2 | 1 | 0
15 | 0.51 | 0.51 | 0.51 | 0.51
14 | 0.58 | 0.69 | 0.81 | 1.01
13 | 1.15 | 1.35 | 1.62 | 2.02
12 | 2.32 | 2.68 | 3.22 | 4.02
11 | 4.62 | 5.38 | 6.42 | 8.02
10 | 9.24 | 10.76 | 12.84 | 16.04
9 | 18.48 | 21.52 | 25.68 | 32.08
8 | 36.96 | 43.04 | 51.36 | 64.16
7 | 73.92 | 86.08 | 102.72 | 128.32
6 | 147.84 | 172.16 | 205.44 | 256.64
5 | 295.68 | 344.32 | 410.88 | 513.28
4 | 591.36 | 688.64 | 821.76 | 1026.56
3 | 1182.72 | 1377.28 | 1643.52 | 2053.12
2 | 2365.44 | 2754.56 | 3287.04 | 4106.24
1 | 4730.88 | 5509.12 | 6574.08 | 8212.48
0 | 変化無し | 変化無し | 変化無し | 変化無し

■ -96dBから0dB変化までの時間 (ms)
DR:H | DR:L
 | 3 | 2 | 1 | 0
15 | 2.40 | 2.40 | 2.40 | 2.40
14 | 2.74 | 3.20 | 3.84 | 4.80
13 | 5.48 | 6.40 | 7.68 | 9.60
12 | 10.96 | 12.80 | 15.36 | 19.20
11 | 21.92 | 25.56 | 30.68 | 38.36
10 | 43.84 | 51.12 | 61.36 | 76.72
9 | 87.68 | 102.24 | 122.72 | 153.44
8 | 175.36 | 2.4.48 | 245.44 | 306.88
7 | 350.72 | 408.96 | 490.88 | 613.76
6 | 701.44 | 817.92 | 981.76 | 1227.52
5 | 1402.88 | 1635.84 | 1963.52 | 2455.04
4 | 2805.76 | 3271.68 | 3927.04 | 4910.08
3 | 5611.52 | 6543.36 | 7854.08 | 9820.16
2 | 11223.04 | 13086.72 | 15708.16 | 19640.32
1 | 22446.08 | 2617.44 | 31416.32 | 39280.64
0 | 変化無し | 変化無し | 変化無し | 変化無し


音楽ﾃﾞｰﾀ言語仕様

§3. 音楽ﾃﾞｰﾀ言語仕様 Rev 0.1 (暫定版)

ｷｬﾌﾟﾃﾝ、文字多重放送等で使用されている音楽ﾃﾞｰﾀの仕様を示します。この音楽ﾃﾞｰﾀ･ﾌｧｲﾙのﾌｧｲﾙ･ﾀｲﾌﾟ名は.SNDとします。又、このRev0.1では、対応するｿｰｽ記述、ｿｰｽ･ﾌｧｲﾙ･ﾀｲﾌﾟ名などは、未定義とし、次のRevで定義することとします。更に、再生ｲﾝﾀﾌﾟﾘﾀ･ｺｰﾄﾞについても、現在改定考慮中のため、未公開とします。以降のRevでｲﾝﾀﾌﾟﾘﾀ･ｺｰﾄﾞをﾊﾞｲﾅﾘ音楽ﾃﾞｰﾀ言語仕様として、定義、公開予定です。

目次

1 全体構成
1.1 SMC (Start of music codes)
1.2 EMC (End of music codes)
2 ﾊﾟｰﾄﾃﾞｰﾀ
2.1 SMP (Start of melody part)
2.2 SRP (Start of rhythm part)
2.3 EPT (End of part)
3 音符ﾃﾞｰﾀ
3.1 音程ﾃﾞｰﾀ
3.2 音長ﾃﾞｰﾀ
4 制御ﾃﾞｰﾀ
4.1 SLV (Sound level)
4.2 CTM (Change of timbre)
4.3 LRT (Long rest and tone)
4.4 LBL (Label)
4.5 JMP (Jump)
4.6 RPT (Repeat)
4.7 BRA (Branch)


全体構成

1. 全体構成

SNDﾌｧｲﾙは、音楽ﾃﾞｰﾀ開始指示子(SMC)で始まり、終了指示子(EMC)で終了します。この間に、ﾒﾛﾃﾞｨ部最大6ﾁｬﾈﾙ(ﾄﾗｯｸ)、ﾘｽﾞﾑ部最大5ﾁｬﾈﾙ(ﾄﾗｯｸ)分の各ﾊﾟｰﾄ･ﾃﾞｰﾀが記述できます。代表的なSNDﾌｧｲﾙ構成を以下に示します。
① 音楽ﾃﾞｰﾀ開始指示子
② ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 1ﾃﾞｰﾀ
③ ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 2ﾃﾞｰﾀ
④ ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 3ﾃﾞｰﾀ
⑤ ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 4ﾃﾞｰﾀ
⑥ ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 5ﾃﾞｰﾀ
⑦ ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 6ﾃﾞｰﾀ
⑧ ﾘｽﾞﾑ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 1ﾃﾞｰﾀ
⑨ ﾘｽﾞﾑ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 2ﾃﾞｰﾀ
⑩ ﾘｽﾞﾑ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 3ﾃﾞｰﾀ
⑪ ﾘｽﾞﾑ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 4ﾃﾞｰﾀ
⑫ ﾘｽﾞﾑ･ﾊﾟｰﾄ･ﾁｬﾈﾙ (ﾄﾗｯｸ) 5ﾃﾞｰﾀ
⑬ 音楽ﾃﾞｰﾀ終了指示子

1.1 SMC (Start of music codes)
1.2 EMC (End of music codes)


SMC

1.1 SMC (Start of music codes)

音楽ﾃﾞｰﾀ開始指示子(SMC)のﾌｫｰﾏｯﾄを以下に示します。
【形式】SMC,'0',';',TU値,';'
【 例 】DB   80H,'0;','42;'

  TEMPO 120の場合
SMCを示すｺｰﾄﾞは80Hです。TU値は本来のTEMPOが反映された値で、再生速度を示すﾊﾟﾗﾒｰﾀです。この値は後述する音長ﾃﾞｰﾀの1に対するm秒単位の時間となります。 通常、最小使用音長が16分音符の場合、4分音符に対する音長を12、8分音符の場合、4分音符に対する音長を6とすると各々、16分音符、8分音符の3連符までの音長が問題なく指定できます。この場合で4分音符に対するTEMPO指定が120とすると、TU=1000/((12×120)/60)となり、約42m秒のTU値となります。TU値は数字を示す文字ｺｰﾄﾞで20～255が設定可能です。


EMC

1.2 EMC (End of music codes)

音楽ﾃﾞｰﾀ終了指示子(EMC)のﾌｫｰﾏｯﾄを以下に示します。
【形式】EMC
【 例 】DB   84H
EMCを示すｺｰﾄﾞは84Hです。


ﾊﾟｰﾄﾃﾞｰﾀ

2. ﾊﾟｰﾄﾃﾞｰﾀ

1つのﾊﾟｰﾄ･ﾃﾞｰﾀは、ﾊﾟｰﾄ･ﾃﾞｰﾀ開始指示子(SMPかSRP)で始まり、終了指示子(EPT)で終了します。この間に、音符ﾃﾞｰﾀ、制御ﾃﾞｰﾀを記述します。ﾊﾟｰﾄ･ﾃﾞｰﾀ開始指示子は、ﾒﾛﾃﾞｨ部の場合がSMP、ﾘｽﾞﾑ部の場合がSRPとなります。代表的なﾊﾟｰﾄ･ﾃﾞｰﾀ構成を以下に示します。
① ﾊﾟｰﾄ･ﾃﾞｰﾀ開始指示子
② 音符ﾃﾞｰﾀ、制御ﾃﾞｰﾀ
③ ﾊﾟｰﾄ･ﾃﾞｰﾀ終了指示子

2.1 SMP (Start of melody part)
2.2 SRP (Start of rhythm part)
2.3 EPT (End of part)


SMP

2.1 SMP (Start of melody part)

ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ･ﾃﾞｰﾀ開始指示子(SMP)のﾌｫｰﾏｯﾄを以下に示します。
【形式】SMP,楽器番号,';'
【 例 】DB   81H,'11;'

  ｷﾞﾀｰ指定
SMPを示すｺｰﾄﾞは81Hです。楽器番号は数字を示す文字ｺｰﾄﾞ2桁で以下が定義済みです。参考として内部処理時の楽器番号を( )内に示します。

楽器番号 | 楽器名 | 楽器番号 | 楽器名
10 (0) | ﾊﾞｲｵﾘﾝ | 30 (7) | ｵﾙｶﾞﾝ
11 (1) | ｷﾞﾀｰ | 31 (9) | 未定義
12 (2) | ﾋﾟｱﾉ | 32 (9) | 未定義
13 (9) | 未定義 | 33 (9) | 未定義
20 (3) | ﾌﾙｰﾄ | 40 (8) | ﾋﾞﾌﾞﾗﾌｫﾝ
21 (4) | ｸﾗﾘﾈｯﾄ | 41 (8) | ﾋﾞﾌﾞﾗﾌｫﾝ
22 (5) | ｵｰﾎﾞｴ | 42 (8) | ﾋﾞﾌﾞﾗﾌｫﾝ
23 (6) | ﾄﾗﾝﾍﾟｯﾄ | 43 (8) | ﾋﾞﾌﾞﾗﾌｫﾝ


SRP

2.2 SRP (Start of rhythm part)

ﾘｽﾞﾑ･ﾊﾟｰﾄ･ﾃﾞｰﾀ開始指示子(SRP)のﾌｫｰﾏｯﾄを以下に示します。
【形式】SRP,楽器番号,';'
【 例 】DB   82H,'30;'

  ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ指定
SRPを示すｺｰﾄﾞは82Hです。楽器番号は数字を示す文字ｺｰﾄﾞ2桁で以下が定義済みです。参考として内部処理時の楽器番号を( )内に示します。

楽器番号 | 楽器名 | 楽器番号 | 楽器名
10 (1) | ｽﾈｱ･ﾄﾞﾗﾑ | 30 (3) | ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ
11 (0) | ﾊﾞｽ･ﾄﾞﾗﾑ | 31 (4) | ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ
12 (0) | ﾊﾞｽ･ﾄﾞﾗﾑ | 32 (4) | ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ
13 (0) | ﾊﾞｽ･ﾄﾞﾗﾑ | 33 (3) | ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ
20 (2) | ﾀﾑﾀﾑ | 40 (4) | ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ
21 (2) | ﾀﾑﾀﾑ | 41 (3) | ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ
22 (2) | ﾀﾑﾀﾑ | 42 (4) | ﾊｲﾊｯﾄ･ｼﾝﾊﾞﾙ
23 (2) | ﾀﾑﾀﾑ | 43 (3) | ﾄｯﾌﾟ･ｼﾝﾊﾞﾙ


EPT

2.3 EPT (End of part)

ﾊﾟｰﾄ･ﾃﾞｰﾀ終了指示子(EPT)のﾌｫｰﾏｯﾄを以下に示します。
【形式】EPT
【 例 】DB   85H
EPTを示すｺｰﾄﾞは85Hです。


音符ﾃﾞｰﾀ

3. 音符ﾃﾞｰﾀ

1つの音符ﾃﾞｰﾀは、音程ﾃﾞｰﾀと音長ﾃﾞｰﾀの2ﾊﾞｲﾄで構成されます。音長は4.制御ﾃﾞｰﾀのLRTが先行すると、LRTで示された倍率の音長となります。

3.1 音程ﾃﾞｰﾀ
3.2 音長ﾃﾞｰﾀ


音程ﾃﾞｰﾀ

3.1 音程ﾃﾞｰﾀ

音程ﾃﾞｰﾀは21H～78Hが使用され、20Hは休符を意味します。ﾘｽﾞﾑ･ﾊﾟｰﾄの音符ﾃﾞｰﾀは7FH、休符ﾃﾞｰﾀは20Hを使用します。対応を以下に示します。参考として内部処理時のｺｰﾄﾞを( )内に16進数で示します。

音程ﾃﾞｰﾀ | 意味 | 音程ﾃﾞｰﾀ | 意味 | 音程ﾃﾞｰﾀ | 意味 | 音程ﾃﾞｰﾀ | 意味 | 音程ﾃﾞｰﾀ | 意味 | 音程ﾃﾞｰﾀ | 意味
20H (B0) | RST:休符 | 30H (15) | 2Ｃ | 40H (29) | 3Ｅ | 50H (41) | 4Ｇ♯/Ａ♭ | 60H (55) | 6Ｃ | 70H (69) | 7Ｅ
21H (02) | 0Ａ | 31H (16) | 2Ｃ♯/Ｄ♭ | 41H (2A) | 3Ｆ | 51H (42) | 4Ａ | 61H (56) | 6Ｃ♯/Ｄ♭ | 71H (6A) | 7Ｆ
22H (03) | 0Ａ♯/Ｂ♭ | 32H (17) | 2Ｄ | 42H (2B) | 3Ｆ♯/Ｇ♭ | 52H (43) | 4Ａ♯/Ｂ♭ | 62H (57) | 6Ｄ | 72H (6B) | 7Ｆ♯/Ｇ♭
23H (04) | 0Ｂ | 33H (18) | 2Ｄ♯/Ｅ♭ | 43H (30) | 3Ｇ | 53H (44) | 4Ｂ | 63H (58) | 6Ｄ♯/Ｅ♭ | 73H (70) | 7Ｇ
24H (05) | 1Ｃ | 34H (19) | 2Ｅ | 44H (31) | 3Ｇ♯/Ａ♭ | 54H (45) | 5Ｃ | 64H (59) | 6Ｅ | 74H (71) | 7Ｇ♯/Ａ♭
25H (06) | 1Ｃ♯/Ｄ♭ | 35H (1A) | 2Ｆ | 45H (32) | 3Ａ | 55H (46) | 5Ｃ♯/Ｄ♭ | 65H (5A) | 6Ｆ | 75H (72) | 7Ａ
26H (07) | 1Ｄ | 36H (1B) | 2Ｆ♯/Ｇ♭ | 46H (33) | 3Ａ♯/Ｂ♭ | 56H (47) | 5Ｄ | 66H (5B) | 6Ｆ♯/Ｇ♭ | 76H (73) | 7Ａ♯/Ｂ♭
27H (08) | 1Ｄ♯/Ｅ♭ | 37H (20) | 2Ｇ | 47H (34) | 3Ｂ | 57H (48) | 5Ｄ♯/Ｅ♭ | 67H (60) | 6Ｇ | 77H (74) | 7Ｂ
28H (09) | 1Ｅ | 38H (21) | 2Ｇ♯/Ａ♭ | 48H (35) | 4Ｃ | 58H (49) | 5Ｅ | 68H (61) | 6Ｇ♯/Ａ♭ | 78H (75) | 8Ｃ
29H (0A) | 1Ｆ | 39H (22) | 2Ａ | 49H (36) | 4Ｃ♯/Ｄ♭ | 59H (4A) | 5Ｆ | 69H (62) | 6Ａ | 79H (76) | 未定義
2AH (0B) | 1Ｆ♯/Ｇ♭ | 3AH (23) | 2Ａ♯/Ｂ♭ | 4AH (37) | 4Ｄ | 5AH (4B) | 5Ｆ♯/Ｇ♭ | 6AH (63) | 6Ａ♯/Ｂ♭ | 7AH (77) | 未定義
2BH (10) | 1Ｇ | 3BH (24) | 2Ｂ | 4BH (38) | 4Ｄ♯/Ｅ♭ | 5BH (50) | 5Ｇ | 6BH (64) | 6Ｂ | 7BH (78) | 未定義
2CH (11) | 1Ｇ♯/Ａ♭ | 3CH (25) | 3Ｃ | 4CH (39) | 4Ｅ | 5CH (51) | 5Ｇ♯/Ａ♭ | 6CH (65) | 7Ｃ | 7CH (79) | 未定義
2DH (12) | 1Ａ | 3DH (26) | 3Ｃ♯/Ｄ♭ | 4DH (3A) | 4Ｆ | 5DH (52) | 5Ａ | 6DH (66) | 7Ｃ♯/Ｄ♭ | 7DH (7A) | 未定義
2EH (13) | 1Ａ♯/Ｂ♭ | 3EH (27) | 3Ｄ | 4EH (3B) | 4Ｆ♯/Ｇ♭ | 5EH (53) | 5Ａ♯/Ｂ♭ | 6EH (67) | 7Ｄ | 7EH (7B) | 未定義
2FH (14) | 1Ｂ | 3FH (28) | 3Ｄ♯/Ｅ♭ | 4FH (40) | 4Ｇ | 5FH (54) | 5Ｂ | 6FH (68) | 7Ｄ♯/Ｅ♭ | 7FH (B1) | IP


音長ﾃﾞｰﾀ

3.2 音長ﾃﾞｰﾀ

音長ﾃﾞｰﾀは41H～7FHが各々1～63を示し、40Hは64を示します。この数値×TU値が実時間(m秒)となります。LRTが先行する場合は、更にLRTによる倍率が乗じられます。


制御ﾃﾞｰﾀ

4. 制御ﾃﾞｰﾀ

制御ﾃﾞｰﾀは主に音符列のくり返し等を制御し、ﾃﾞｰﾀ量を減少させるのに役立ちます。

4.1 SLV (Sound level)
4.2 CTM (Change of timbre)
4.3 LRT (Long rest and tone)
4.4 LBL (Label)
4.5 JMP (Jump)
4.6 RPT (Repeat)
4.7 BRA (Branch)


SLV

4.1 SLV (Sound level)

音量を設定する指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】SLV,音量値,';'
【 例 】DB   90H,'8;'

  最大音量設定
SLVを示すｺｰﾄﾞは90Hです。音量値は0～8で、8が最大音量です。1の変化に対して標準で2.0dBの差となります。


CTM

4.2 CTM (Change of timbre)

ﾊﾟｰﾄ内で指定楽器を変更する指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】CTM,楽器番号,';'
【 例 】DB   8CH,'10;'

  ﾒﾛﾃﾞｨ･ﾊﾟｰﾄの場合、ﾊﾞｲｵﾘﾝに変更
  ﾘｽﾞﾑ･ﾊﾟｰﾄの場合、ｽﾈｱ･ﾄﾞﾗﾑに変更
CTMを示すｺｰﾄﾞは8CHです。楽器番号はCTMが存在するﾊﾟｰﾄにより異なります。ﾒﾛﾃﾞｨ･ﾊﾟｰﾄ内の場合は、2.1 SMPの楽器番号となり、ﾘｽﾞﾑ･ﾊﾟｰﾄ内の場合は、2.2 SRPの楽器番号となります。


LRT

4.3 LRT (Long rest and tone)

音長を整数倍する指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】LRT,倍率,';'
【 例 】DB   98H,'10;'

  音長×10設定
LRTを示すｺｰﾄﾞは98Hです。倍率は1～255で、直後の音符(休符)ﾃﾞｰﾀに対してのみ有効です。LRTと音符ﾃﾞｰﾀ間に制御ﾃﾞｰﾀが存在する記述も問題ありません。LRTの倍率は実行時に於いて、LRT直後の最初の音符ﾃﾞｰﾀに対してのみ影響します。


LBL

4.4 LBL (Label)

JMP,RPT,BRAの分岐先を示す位置の指示に使用する指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】LBL,番号,';'
【 例 】DB   88H,'123;'

  ﾗﾍﾞﾙ123番
LBLを示すｺｰﾄﾞは88Hです。番号は0～255で、ﾊﾟｰﾄ内でのみ有効です。


JMP

4.5 JMP (Jump)

無条件分岐を示す指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】JMP,番号,';'
【 例 】DB   89H,'123;'

  ﾗﾍﾞﾙ123番へ分岐
JMPを示すｺｰﾄﾞは89Hです。番号は0～255で、必ず4.4 LBLで定義されていなければなりません。


RPT

4.6 RPT (Repeat)

くり返しを示す指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】RPT,回数,';',番号,';'
【 例 】DB   8AH,'5;','123;'

  ﾗﾍﾞﾙ123番からを5回繰り返し
RPTを示すｺｰﾄﾞは8AHです。RPTの位置を回数分通過するまでは、ﾗﾍﾞﾙ番号の位置に分岐します。4.7 BRAと逆の動作となります。回数は1～255が有効ですが、回数=1はRPT無しと同等となり、無意味です。番号は0～255で、必ず4.4 LBLで定義されていなければなりません。


BRA

4.7 BRA (Branch)

条件分岐を示す指示子で、以下にﾌｫｰﾏｯﾄを示します。
【形式】BRA,回数,';',番号,';'
【 例 】DB   8BH,'5;','123;'

  5回目でﾗﾍﾞﾙ123番へ
BRAを示すｺｰﾄﾞは8BHです。BRAの位置を回数分通過すると、ﾗﾍﾞﾙ番号の位置に分岐します。4.6 RPTと逆の動作となります。回数は1～255が有効ですが、回数=1はJMPと同等となります。番号は0～255で、必ず4.4 LBLで定義されていなければなりません。


拡張ﾀｲﾏBIOS

§4. 拡張ﾀｲﾏBIOS目次
(TBIOS.COM Ver2.0)

1 概要
2 常駐/解除
3 使用方法
4 機能一覧
5 ｻﾝﾌﾟﾙ･ﾌﾟﾛｸﾞﾗﾑ


拡張ﾀｲﾏBIOSの概要

1. 拡張ﾀｲﾏBIOSの概要

TBIOS.COMは、IBM PC/AT用の常駐(TSR)型ﾀｲﾏBIOSﾌﾟﾛｸﾞﾗﾑで、本来のINT 1AH(時刻BIOS)の機能を拡張します。本来の時刻BIOS同様、基準ﾀｲﾏとして8253のIRQ0割り込みを使用し、複数のﾀｽｸからのﾀｲﾏ割り込み要求に対処します。本来の時刻ﾀｲﾏに対して上位ｺﾝﾊﾟﾁﾌﾞﾙですから、既存の時刻BIOSを使用するﾌﾟﾛｸﾞﾗﾑに影響を及ぼしません。

 TBIOS.COMでは、同時に8ﾁｬﾈﾙのﾀｲﾏ割り込みをｻﾎﾟｰﾄし、各ﾁｬﾈﾙでは単発割り込みと連続割り込みが選択的に使用可能です。


拡張ﾀｲﾏBIOSの常駐/解除

2. 拡張ﾀｲﾏBIOS(TBIOS.COM)の常駐/解除

TBIOS.COMは、起動時のｺﾏﾝﾄﾞ行の指定で、常駐、常駐解除が指定できます。TBIOS のみで常駐、TBIOS /R で常駐解除します。常時使用する場合は、MS-DOS Ver5.0以前では、AUTOEXEC.BATで常駐指定します。Ver5.0以降では、CONFIG.SYSでINSTALL=TBIOS.COMを指定します。必要に応じて使用する場合は、必要とするﾌﾟﾛｸﾞﾗﾑと共にBAT処理とするのが便利です。
例: 対応するﾊﾞｯﾁﾌｧｲﾙ(.BAT)の内容
TBIOS
;TBIOS.COMの常駐
対象ﾌﾟﾛｸﾞﾗﾑ ;目的ﾌﾟﾛｸﾞﾗﾑの実行
TBIOS /R
;TBIOS.COMの常駐解除
常駐中にTBIOS のみで実行すると、現在の各ﾁｬﾈﾙの使用状況が表示されます。c:nの形式でcがﾁｬﾈﾙ番号、nが割込み種別です。n=0で未使用、n=1で単発割込み中、n=2で連続割込み中を示します。


拡張ﾀｲﾏBIOSの使用方法

3. 拡張ﾀｲﾏBIOS(TBIOS.COM)の使用方法

TBIOS.COMは常駐時、基準ﾀｲﾏ割り込みのIRQ0の割り込みﾍﾞｸﾀと本来の時刻BIOSのINT 1AHを設定し直し、機能を開始します。ﾕｰｻﾞは通常の時刻BIOSを使用する場合と同様に機能番号等の引数を設定し、INT 1AHを実行することで目的の機能を実行します。拡張された機能については、4.拡張機能一覧を参照して下さい。

 TBIOS.COMの拡張機能が使用可能かどうかを確認するには、TBIOS.COMが常駐されているかを確認すれば良いことになります。簡単に確認するにはTBIOS.COMのBIOSﾍｯﾀﾞの有無を検査します。TBIOS.COMを始めとする常駐(TSR)型BIOSｼﾘｰｽﾞでは、共通のBIOSﾍｯﾀﾞ構造となっています。BIOSﾍｯﾀﾞは常駐BIOSの先頭+0110Hから存在し、最初に1ﾜｰﾄﾞのBIOS識別子が定義されています。TBIOS.COMの場合のBIOS識別子は8253Hですので、このBIOS識別子が8253Hかを検査することとなります。

 常駐BIOSの先頭ｱﾄﾞﾚｽは、ﾊﾝﾄﾞﾗの割り込み番号から割り込みﾍﾞｸﾀ･ﾃｰﾌﾞﾙの該当位置の値で取得できます。割り込みﾍﾞｸﾀ･ﾃｰﾌﾞﾙはｾｸﾞﾒﾝﾄ0のｵﾌｾｯﾄ0からですので、TBIOSの場合は0000:1AH×4からの1ﾜｰﾄﾞがｵﾌｾｯﾄで、続く1ﾜｰﾄﾞがｾｸﾞﾒﾝﾄとなります。常駐BIOSの先頭にはPSP(ﾌﾟﾛｸﾞﾗﾑ･ｾｸﾞﾒﾝﾄ･ﾌﾟﾘﾌｨｯｸｽ)が存在しますので、BIOSﾍｯﾀﾞの位置は0000:1AH×4+2の値をｾｸﾞﾒﾝﾄとし、ｵﾌｾｯﾄ0110Hからとなります。この位置のBIOS識別子が8253HであればTBIOS.COMが常駐しているとみなすことができますので、拡張機能が使用可能と判断できます。実際に拡張機能を使用する前に、必ずこのBIOS識別子の確認により、拡張機能の使用の可否を確認して下さい。使用例は5.ｻﾝﾌﾟﾙﾌﾟﾛｸﾞﾗﾑを参照して下さい。


拡張ﾀｲﾏBIOSの機能一覧

4. 拡張ﾀｲﾏBIOS(TBIOS.COM)の機能一覧

TBIOSは最大で同時に8ﾁｬﾈﾙのﾕｰｻﾞ割込みをｻﾎﾟｰﾄします。ﾁｬﾈﾙはﾁｬﾈﾙ番号で管理され、ﾕｰｻﾞが割り込み設定機能を実行した時の戻り値で、TBIOSにより0～7が指定されます。TBIOSにより正常なﾁｬﾈﾙ番号が返された時は、以降このﾁｬﾈﾙはﾕｰｻﾞがﾕｰｻﾞ割り込み解除を実行するまで、使用できます。勿論1ﾌﾟﾛｸﾞﾗﾑで複数のﾁｬﾈﾙを使用しても差し支えありません。各拡張機能は、AHﾚｼﾞｽﾀに機能番号を設定し、INT 1AHを行うことで実行します。以下に拡張機能項目を示します。
■ AH=0F0H …
ｼｽﾃﾑｶｳﾝﾄ値取得(1ms単位)
■ AH=0F1H …
単発ﾕｰｻﾞ割込み設定
■ AH=0F2H …
連続ﾕｰｻﾞ割込み設定
■ AH=0F3H …
ﾕｰｻﾞ割込み解除
AH=0F0H未満の機能は本来のINT 1AHが使用されます。具体的な拡張機能の使用方法は、5.ｻﾝﾌﾟﾙﾌﾟﾛｸﾞﾗﾑを参照して下さい。

4.1 AH=0F0H ｼｽﾃﾑｶｳﾝﾄ値取得

TBIOS常駐時からの経過時間を1ms単位で取得します。
【引数】
AH    =
0F0H
【戻値】
DX:AX =
1ms単位経過時間
【破壊】
無し (AX,DX以外のﾚｼﾞｽﾀは保護されます)

4.2 AH=0F1H 単発ﾕｰｻﾞ割込み設定

指定された間隔で1回のみの割込みを設定します。戻り値が-1の場合は既に全ﾁｬﾈﾙ使用中で設定不能を意味します。割込み待機中に割込み解除したい場合は、AH=0F3Hで解除します。
【引数】
AH =
0F1H
CX =
割込み間隔(1ms単位)
ES =
ﾕｰｻﾞ割込み処理ﾙｰﾁﾝ･ｾｸﾞﾒﾝﾄ
BX =
ﾕｰｻﾞ割込み処理ﾙｰﾁﾝ･ｵﾌｾｯﾄ
【戻値】
AL =
ﾁｬﾈﾙ番号(AH=0F3H解除時に使用)
【破壊】
無し (AL以外のﾚｼﾞｽﾀは保護されます)

4.3 AH=0F2H 連続ﾕｰｻﾞ割込み設定

指定された間隔で連続的な割込みを設定します。戻り値が-1の場合は既に全ﾁｬﾈﾙ使用中で設定不能を意味します。割込み解除は、AH=0F3Hで解除します。
【引数】
AH =
0F2H
CX =
割込み間隔(1ms単位)
ES =
ﾕｰｻﾞ割込み処理ﾙｰﾁﾝ･ｾｸﾞﾒﾝﾄ
BX =
ﾕｰｻﾞ割込み処理ﾙｰﾁﾝ･ｵﾌｾｯﾄ
【戻値】
AL =
ﾁｬﾈﾙ番号(AH=0F3H解除時に使用)
【破壊】
無し (AL以外のﾚｼﾞｽﾀは保護されます)

4.4 AH=0F3H ﾕｰｻﾞ割込み解除

設定されているﾕｰｻﾞ割込みを解除します。引数のALには、必ず設定時の戻り値ALのﾁｬﾈﾙ番号を指定します。
【引数】
AH =
0F3H
AL =
ﾁｬﾈﾙ番号
【戻値】
無し
【破壊】
無し (全ﾚｼﾞｽﾀは保護されます)


ｻﾝﾌﾟﾙ･ﾌﾟﾛｸﾞﾗﾑ

5. 拡張ﾀｲﾏBIOS(TBIOS.COM)のｻﾝﾌﾟﾙﾌﾟﾛｸﾞﾗﾑ

;************************************************
;*					   *
;*       TBIOS(拡張ﾀｲﾏBIOS)試験用ﾌﾟﾛｸﾞﾗﾑ	   *
;*					   *
;************************************************

    NAME	TBIOSSMP

    .386

LF	EQU	0AH			;[LF]	:ｶｰｿﾙ改行
CR	EQU	0DH			;[CR]	:ｶｰｿﾙ改行

    ASSUME	CS:CSEG,DS:CSEG,ES:CSEG

CSEG	SEGMENT

    ORG	100H			;COMﾓﾃﾞﾙの開始ｱﾄﾞﾚｽ

START:	CLD				;方向ﾌﾗｸﾞを+方向に設定
    JMP	SHORT INIT		;処理開始へ

    EVEN

WORK	DW	0			;ﾕｰｻﾞ割込み回数ｶｳﾝﾀ
FLAG	DW	0			;ﾕｰｻﾞ割込み実行ﾌﾗｸﾞ
;
UINO	DB	?			;ﾕｰｻﾞ割込みﾁｬﾈﾙ番号

EMSG	DB	'拡張ﾀｲﾏBIOSが常駐していません。',CR,LF,0

;	* 初期化 *

INIT:	MOV	AX,CS			;ｺｰﾄﾞｾｸﾞﾒﾝﾄを取得
    MOV	DS,AX			;DS=CS

;	( 拡張ﾀｲﾏBIOS常駐検査 )

    XOR	AX,AX			;0を設定
    MOV	ES,AX			;ｾｸﾞﾒﾝﾄ0を設定
    MOV	ES,ES:[1AH*4+2]		;INT 1AH(時刻BIOS)ｾｸﾞﾒﾝﾄを取得
    CMP	WORD PTR ES:[0110H],8253H	;拡張ﾀｲﾏBIOS常駐か検査
    JZ	INIT1			;拡張ﾀｲﾏBIOS常駐で分岐
;
    LEA	SI,EMSG			;BIOS無しｴﾗｰ文字列ﾎﾟｲﾝﾀを設定
    CALL	DSPM			;BIOS無しｴﾗｰを表示
    JMP	SHORT TRM			;ﾌﾟﾛｸﾞﾗﾑ終了処理へ
;
INIT1:	MOV	AX,CS			;ｺｰﾄﾞｾｸﾞﾒﾝﾄを取得
    MOV	ES,AX			;ES=CS

;	* 検査 *

;	CALL	GST			;ｼｽﾃﾑﾀｲﾏｶｳﾝﾄ値取得機能検査
;	CALL	SIJ			;単発ﾕｰｻﾞ割込み機能検査
    CALL	CIJ			;連続ﾕｰｻﾞ割込み機能検査

;	* ﾌﾟﾛｸﾞﾗﾑ終了処理 *

TRM:	XOR	AL,AL			;正常終了ｺｰﾄﾞを設定
    MOV	AH,4CH			;ﾌﾟﾛｾｽ終了を指定
    INT	21H			;本ﾌﾟﾛｸﾞﾗﾑを終了

;	* AH=F0H ｼｽﾃﾑﾀｲﾏｶｳﾝﾄ値取得機能検査 *

GST:	MOV	AH,0F0H			;ｼｽﾃﾑﾀｲﾏｶｳﾝﾀ値取得を指定
    INT	1AH			;ｼｽﾃﾑﾀｲﾏｶｳﾝﾄ値取得
    MOV	CX,1000			;ms/s数を設定
    DIV	CX			;秒単位と1ms単位に分離
    CALL	COAXS			;秒単位ｶｳﾝﾄを表示
    MOV	AX,DX			;1ms単位ｶｳﾝﾄを表示
    CALL	COA			;1ms単位ｶｳﾝﾄを表示
    MOV	AL,CR			;復帰ｺｰﾄﾞを設定
    CALL	CO			;ｶｰｿﾙを復帰
    MOV	DL,-1			;ｷｰ入力状態取得を指定
    MOV	AH,06H			;直接ｺﾝｿｰﾙI/Oを指定
    INT	21H			;ｷｰ入力状態を取得
    JZ	GST			;ｷｰ入力有りまで継続
    RET				;呼出元へ復帰

;	* AH=F1H 単発ﾕｰｻﾞ割込み設定機能検査 *

SIJ:	MOV	AH,0F1H			;単発割込み指定
    JMP	SHORT UIJ			;次へ

;	* AH=F2H 連続ﾕｰｻﾞ割込み設定機能検査 *

CIJ:	MOV	AH,0F2H			;連続割込み指定

UIJ:	MOV	DX,CS			;ｺｰﾄﾞｾｸﾞﾒﾝﾄを取得
    MOV	ES,DX			;ﾕｰｻﾞ割込み処理先頭ｾｸﾞﾒﾝﾄを設定
    LEA	BX,UJI			;ﾕｰｻﾞ割込み処理先頭ｵﾌｾｯﾄを設定
    MOV	CX,100			;割り込み分周数を設定(100ms間隔)
    INT	1AH			;ﾕｰｻﾞ割込み処理を設定
    MOV	[UINO],AL			;ﾕｰｻﾞ割込みﾁｬﾈﾙ番号を保存
    CALL	COAX			;ﾕｰｻﾞ割込みﾁｬﾈﾙ番号を表示
    CALL	CRLF			;ｶｰｿﾙ復帰改行
;
UIJ1:	MOV	DL,-1			;ｷｰ入力状態取得を指定
    MOV	AH,06H			;直接ｺﾝｿｰﾙI/Oを指定
    INT	21H			;ｷｰ入力状態を取得
    JNZ	UIJ2			;ｷｰ入力有りで分岐後復帰
;
    CMP	[FLAG],0			;ﾕｰｻﾞ割込みの有無検査
    JZ	UIJ1			;ﾕｰｻﾞ割込み無しで分岐、継続
;
    MOV	[FLAG],0			;ﾕｰｻﾞ割込み実行ﾌﾗｸﾞを解消
    INC	[WORK]			;ﾕｰｻﾞ割込みｶｳﾝﾀを進行
    MOV	AX,[WORK]			;ﾕｰｻﾞ割込み回数を取得
    CALL	COAX			;ﾕｰｻﾞ割込み回数を16進で表示
    MOV	AL,CR			;復帰ｺｰﾄﾞを設定
    CALL	CO			;ｶｰｿﾙを復帰
    JMP	SHORT UIJ1		;ｷｰ入力まで継続
;
UIJ2:	MOV	AH,0F3H			;ﾕｰｻﾞ割込み解消を指定
    MOV	AL,[UINO]			;ﾕｰｻﾞ割込みﾁｬﾈﾙ番号を取得
    INT	1AH			;ﾕｰｻﾞ割込みを解除
    RET				;呼出元へ復帰

;	* ﾕｰｻﾞ割込み処理 *

UJI:	MOV	CS:[FLAG],1		;ﾕｰｻﾞ割り込み実行ﾌﾗｸﾞを設定
    IRET				;割り込みから復帰

;	[ 共通ｻﾌﾞﾙｰﾁﾝ(ﾃﾞﾊﾞｯｸﾞ用) ]

;	( CRTｶｰｿﾙ復帰改行 )
;	( 入: 出: 破壊: )

CRLF:	PUSH	AX			;AXﾚｼﾞｽﾀを保存
    MOV	AX,LF*256+CR		;[CR],[LF]ｺｰﾄﾞを設定
    JMP	SHORT COA1		;CRT復帰改行後、復帰

;	( 1文字表示 )
;	( 入:AL=文字ｺｰﾄﾞ 出: 破壊: )

CO:	PUSH	DX			;DXﾚｼﾞｽﾀを保存
    MOV	DX,AX			;AHﾚｼﾞｽﾀを保存、文字ｺｰﾄﾞを設定
    MOV	AH,2			;ｺﾝｿｰﾙ出力を指定
    INT	21H			;CRTに1文字表示
    MOV	AH,DH			;AHﾚｼﾞｽﾀを復帰
    POP	DX			;DXﾚｼﾞｽﾀを復帰
    RET				;呼出元へ復帰

;	( 文字列表示 )
;	( 入:SI=文字列ﾎﾟｲﾝﾀ 出:AL=0 破壊:SI )

DSPM:	LODSB				;1ﾊﾞｲﾄ取得
    OR	AL,AL			;終了子か検査
    JZ	DSPM1			;終了子で分岐後復帰
    CALL	CO			;1ﾊﾞｲﾄ表示
    JMP	SHORT DSPM		;終了子まで継続
;
DSPM1:	RET				;呼び出し元へ復帰

;	( AXの内容16進表示と' '表示 )
;	( 入:AL 出: 破壊: )

COAXS:	PUSH	AX			;AXﾚｼﾞｽﾀを保存
    CALL	COAX			;AXの内容を16進表示
    MOV	AL,' '			;' 'ｺｰﾄﾞを設定
    JMP	SHORT COA2		;' 'を表示後復帰

;	( ALの内容16進表示と' '表示 )
;	( 入:AL 出: 破壊: )

COAS:	PUSH	AX			;AXﾚｼﾞｽﾀを保存
    CALL	COA			;ALの内容を16進表示
    MOV	AL,' '			;' 'ｺｰﾄﾞを設定
    JMP	SHORT COA2		;' 'を表示後復帰

;	( AXの内容16進表示 )
;	( 入:AX 出: 破壊: )

COAX:	PUSH	AX			;AXﾚｼﾞｽﾀを保存
    MOV	AL,AH			;上位ﾊﾞｲﾄを下位ﾊﾞｲﾄに設定
    CALL	COA			;元のAHを16進2桁で表示
    POP	AX			;AXﾚｼﾞｽﾀを復帰

;	( ALの内容16進表示 )
;	( 入:AL 出: 破壊: )

COA:	PUSH	AX			;AXﾚｼﾞｽﾀを保存
    CALL	CNVH			;ALの内容を16進表記に変換
    XCHG	AH,AL			;上位16進文字を設定、下位16進文字を保存
COA1:	CALL	CO			;16進上位を表示
    MOV	AL,AH			;下位16進文字を設定
COA2:	CALL	CO			;16進下位を表示
    POP	AX			;AXﾚｼﾞｽﾀを復帰
    RET				;呼出元へ復帰

;	( ALﾚｼﾞｽﾀﾊﾞｲﾄﾃﾞｰﾀを16進2文字に変換 )
;	( 入:AL 出:AH=上位.AL=下位 破壊: )

CNVH:	MOV	AH,AL			;ALﾚｼﾞｽﾀを保存
    SHR	AL,4			;上位4ﾋﾞｯﾄを下位4ﾋﾞｯﾄに移動
    CALL	CNV			;上位4ﾋﾞｯﾄを16進文字に変換
    XCHG	AH,AL			;上位16進文字を保存、ALﾚｼﾞｽﾀを復帰

CNV:	AND	AL,0FH			;上位4ﾋﾞｯﾄを0に設定
    ADD	AL,'0'			;16進文字に変換
    CMP	AL,'9'+1			;10以上か検査
    JC	COV1			;10未満で、分岐後復帰
    ADD	AL,'A'-'9'-1		;10以上で、'A'からに補正
COV1:	RET				;呼出元へ復帰

CSEG	ENDS

    END	START