JP2755051B2 - 楽音発生装置 - Google Patents
楽音発生装置Info
- Publication number
- JP2755051B2 JP2755051B2 JP4184185A JP18418592A JP2755051B2 JP 2755051 B2 JP2755051 B2 JP 2755051B2 JP 4184185 A JP4184185 A JP 4184185A JP 18418592 A JP18418592 A JP 18418592A JP 2755051 B2 JP2755051 B2 JP 2755051B2
- Authority
- JP
- Japan
- Prior art keywords
- tone
- channel
- information
- register
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Description
【0001】
【産業上の利用分野】この発明は、複数の音色によって
複数の楽音を発生する際に用いて好適な楽音発生装置に
関する。
複数の楽音を発生する際に用いて好適な楽音発生装置に
関する。
【0002】
【従来の技術】複数の音色の楽音を同時に発音する電子
楽器が種々開発されている。この種の電子楽器には、ト
ーンジェネレータを時分割に切り換えて複数音を同時発
音する時分割処理タイプと、複数のトーンジェネレータ
を同時に起動して複数音同時発音を行う非時分割タイプ
とがある。いずれの場合であっても、音色の決定はその
音色を特定するための音色データをトーンジェネレータ
に設定することにより行われる。
楽器が種々開発されている。この種の電子楽器には、ト
ーンジェネレータを時分割に切り換えて複数音を同時発
音する時分割処理タイプと、複数のトーンジェネレータ
を同時に起動して複数音同時発音を行う非時分割タイプ
とがある。いずれの場合であっても、音色の決定はその
音色を特定するための音色データをトーンジェネレータ
に設定することにより行われる。
【0003】図28は、時分割処理タイプの電子楽器の
構成を示すブロック図である。図において、1は演奏情
報入力部であり、例えば、複数の鍵を有したキーボード
や、曲の進行に従って演奏情報を出力するシーケンサ等
である。この演奏情報入力部1からは、鍵のオン/オフ
情報、音高情報、音色指定情報など(以下、楽音情報と
いう:cf演奏情報はキー情報のみ)が出力される。3
はチャンネル割当部2を介して供給される楽音情報に基
づいて楽音信号を発生するトーンジェネレータである。
このトーンジェネレータ3は、複数の発音チャンネルを
時分割で切り換えるようになっている。また、チャンネ
ル割当部2は、演奏情報入力部1から供給される楽音情
報を各チャンネルに割り当てるようになっている。
構成を示すブロック図である。図において、1は演奏情
報入力部であり、例えば、複数の鍵を有したキーボード
や、曲の進行に従って演奏情報を出力するシーケンサ等
である。この演奏情報入力部1からは、鍵のオン/オフ
情報、音高情報、音色指定情報など(以下、楽音情報と
いう:cf演奏情報はキー情報のみ)が出力される。3
はチャンネル割当部2を介して供給される楽音情報に基
づいて楽音信号を発生するトーンジェネレータである。
このトーンジェネレータ3は、複数の発音チャンネルを
時分割で切り換えるようになっている。また、チャンネ
ル割当部2は、演奏情報入力部1から供給される楽音情
報を各チャンネルに割り当てるようになっている。
【0004】4−1〜4−mは、各々音色データを記憶
する音色データメモリであり、各メモリ内の音色データ
は1つの音色に対応している。また、各音色メモリ4−
1〜4−m内の音色データは、時分割のタイミングに合
わせて、トーンジェネレータ3内の対応する音色の発音
チャンネルにおいて使用されるようになっている。
する音色データメモリであり、各メモリ内の音色データ
は1つの音色に対応している。また、各音色メモリ4−
1〜4−m内の音色データは、時分割のタイミングに合
わせて、トーンジェネレータ3内の対応する音色の発音
チャンネルにおいて使用されるようになっている。
【0005】次に、図29は複数のトーンジェネレータ
を有する電子楽器の構成を示すブロック図である。この
図に示す電子楽器においては、n個のトーンジェネレー
タTG1〜TGnが設けられており、各トーンジェネレ
ータTG1〜TGnには音色データを記憶するためのバ
ッファBUF1〜BUFnが併設されている。この場
合、トーンジェネレータとバッファとの組合わせによっ
て発音チャンネルCH1〜チャンネルCHnが構成され
ている。6は、音色データ転送制御部であり、チャンネ
ル割当部2のチャンネル割当処理に伴い、楽音情報が指
示する音色に応じた音色データメモリ4−1〜4−mを
選択し、その音色データを対応するチャンネルのバッフ
ァBUF1〜BUFnに転送する。
を有する電子楽器の構成を示すブロック図である。この
図に示す電子楽器においては、n個のトーンジェネレー
タTG1〜TGnが設けられており、各トーンジェネレ
ータTG1〜TGnには音色データを記憶するためのバ
ッファBUF1〜BUFnが併設されている。この場
合、トーンジェネレータとバッファとの組合わせによっ
て発音チャンネルCH1〜チャンネルCHnが構成され
ている。6は、音色データ転送制御部であり、チャンネ
ル割当部2のチャンネル割当処理に伴い、楽音情報が指
示する音色に応じた音色データメモリ4−1〜4−mを
選択し、その音色データを対応するチャンネルのバッフ
ァBUF1〜BUFnに転送する。
【0006】以上の構成によれば、キーオンがあると、
そのキーに対応する楽音の発生がチャンネルCH1〜C
Hnのいずれかに割り当てられるとともに、音色データ
転送制御部6によって当該キーに対応する音色データが
割当チャンネルのバッファに転送されることにより、割
当チャンネルのトーンジェネレータは対応するバッファ
内の音色データに応じた音色の楽音信号を作成する。
そのキーに対応する楽音の発生がチャンネルCH1〜C
Hnのいずれかに割り当てられるとともに、音色データ
転送制御部6によって当該キーに対応する音色データが
割当チャンネルのバッファに転送されることにより、割
当チャンネルのトーンジェネレータは対応するバッファ
内の音色データに応じた音色の楽音信号を作成する。
【0007】
【発明が解決しようとする課題】ところで、図28に示
す電子楽器においては、時分割処理を行っている各発音
チャンネルに、チャンネル切り換えタイミングに応じ
て、音色データメモリ4−1〜4−m内の音色データを
転送しなければならないため、極めて高速の処理速度が
要求され、実際にはキーオンの変化に追従することが困
難である。特に、トーンジェネレータにおいて、自然楽
器をシミュレートするようなアルゴリズムによって発音
処理を行う場合などは、音色データとしてマイクロプロ
グラム等を転送するため、転送データ量が多くなり、上
述した問題は一層顕著になった。
す電子楽器においては、時分割処理を行っている各発音
チャンネルに、チャンネル切り換えタイミングに応じ
て、音色データメモリ4−1〜4−m内の音色データを
転送しなければならないため、極めて高速の処理速度が
要求され、実際にはキーオンの変化に追従することが困
難である。特に、トーンジェネレータにおいて、自然楽
器をシミュレートするようなアルゴリズムによって発音
処理を行う場合などは、音色データとしてマイクロプロ
グラム等を転送するため、転送データ量が多くなり、上
述した問題は一層顕著になった。
【0008】また、図29に示す電子楽器においては、
並列に動作する複数のトーンジェネレータを具備してい
るので、一旦音色データをバッファに転送した後は、各
チャンネルにおいて高速の処理が要求されることはな
い。しかしながら、キーオンが生じる毎に、バッファB
UF1〜BUFnに音色データを転送する必要があるた
め、図28に示すものと同様に、音色データの量が多い
場合には、キーオンに対するレスポンスが悪化して、実
用的でない。
並列に動作する複数のトーンジェネレータを具備してい
るので、一旦音色データをバッファに転送した後は、各
チャンネルにおいて高速の処理が要求されることはな
い。しかしながら、キーオンが生じる毎に、バッファB
UF1〜BUFnに音色データを転送する必要があるた
め、図28に示すものと同様に、音色データの量が多い
場合には、キーオンに対するレスポンスが悪化して、実
用的でない。
【0009】そこで、図30に示すように、各チャンネ
ルについて音色の数だけのバッファを用意し、予め全て
の音色データを各チャンネルに転送しておくことが考え
られる。このような構成によれば、例えば、トーンジェ
ネレータTG1は、併設されたバッファBUF1−1〜
BUF1−mから直接音色データを読むことができるの
で、キーオン毎に音色データメモリ4−1〜4−mから
音色データを転送する必要がない。そして、他のトーン
ジェネレータTG2〜TGnも同様に動作するので、キ
ーオンについてのレスポンスは良くなる。しかしなが
ら、バッファの容量は、各チャンネル毎に必要とする全
ての音色データに応じて設定しなければならないので、
メモリ容量が膨大になるという問題が生じた。
ルについて音色の数だけのバッファを用意し、予め全て
の音色データを各チャンネルに転送しておくことが考え
られる。このような構成によれば、例えば、トーンジェ
ネレータTG1は、併設されたバッファBUF1−1〜
BUF1−mから直接音色データを読むことができるの
で、キーオン毎に音色データメモリ4−1〜4−mから
音色データを転送する必要がない。そして、他のトーン
ジェネレータTG2〜TGnも同様に動作するので、キ
ーオンについてのレスポンスは良くなる。しかしなが
ら、バッファの容量は、各チャンネル毎に必要とする全
ての音色データに応じて設定しなければならないので、
メモリ容量が膨大になるという問題が生じた。
【0010】この発明は、上述した事情に鑑みてなされ
たもので、バッファの容量を増大させることがなく、し
かも、キーオンレスポンスを極めて良くすることができ
る楽音発生装置を提供することを目的としている。
たもので、バッファの容量を増大させることがなく、し
かも、キーオンレスポンスを極めて良くすることができ
る楽音発生装置を提供することを目的としている。
【0011】
【課題を解決するための手段】上記課題を解決するため
に、請求項1記載の発明は、少なくとも音色を指示する
音色情報を含む楽音情報の入力に応答して前記音色情報
が指示する音色の楽音情報を発生するものであって、n
個の音色の楽音信号を発生可能な楽音発生装置におい
て、各発音チャンネルが所定の音色データを記憶したバ
ッファをm(n>m≧2)個有し、その内の1つのバッ
ファに記憶された音色データに基づき楽音信号を発生す
る複数の発音チャンネルと、前記楽音情報の入力に応答
し、楽音信号の発生を行っていない発音チャンネルであ
って、前記入力された楽音情報に含まれる音色情報の指
示する音色データを記憶したバッファを有する発音チャ
ンネルに前記入力された楽音情報を割当てるとともに、
その音色データに基づいて楽音信号を発生させる制御手
段とを具備することを特徴とする。また、請求項2記載
の発明は、請求項1記載の楽音発生装置において、前記
制御手段は、前記楽音信号の発生を行っていない発音チ
ャンネルであって、前記楽音情報に含まれる音色情報が
指示する音色の楽音信号を発生するための前記音色デー
タが前記バッファに記憶された発音チャンネルが検出さ
れなかった場合には、前記楽音情報に含まれる音色情報
が指示する音色の楽音信号を発生するための前記音色デ
ータが前記バッファに記憶された発音チャンネルで発音
されている前記楽音信号を消音し、該消音された発音チ
ャンネルに前記入力された楽音情報を割当てて、該消音
された発音チャンネルで前記入力された楽音情報に含ま
れる音色情報が指示する音色の楽音情報を発生させるこ
とを特徴とする。また、請求項3記載の発明は、請求項
2記載の楽音発生装置において、前記発音チャンネルの
m(n>m≧2)個のバッファは、所定の優先順位を有
し、前記制御手段は、入力された前記楽音情報を前記発
音チャンネルに割当てるに際し、前記音色情報の指示す
る音色データを記憶したバッファを有する空き発音チャ
ンネルであって、該バッファの優先順位が最も高い発音
チャンネルに前記楽音情報を割り当てる一方、空き発音
チャンネルの無い場合に、前記音色情報の指示する音色
データを記憶したバッファを有し、該バッファの優先順
位が最も高い発音チャンネルに前記楽音情報を割り当て
ることを特徴とする。また、請求項4記載の発明は、請
求項1ないし3のいずれかに記載の楽音発生装置におい
て、所定の音色の楽音信号を発生するための音色データ
をn個記憶した記憶手段と、前記複数の発音チャンネル
の各バッファに転送すべき音色データを指示する楽音割
当指示手段と、前記楽音割当指示手段の指示に従い、前
記記憶手段に記憶された前記音色データを前記複数の発
音チャンネルの各バッファに予め転送する転送手段とを
具備することを特徴とする。
に、請求項1記載の発明は、少なくとも音色を指示する
音色情報を含む楽音情報の入力に応答して前記音色情報
が指示する音色の楽音情報を発生するものであって、n
個の音色の楽音信号を発生可能な楽音発生装置におい
て、各発音チャンネルが所定の音色データを記憶したバ
ッファをm(n>m≧2)個有し、その内の1つのバッ
ファに記憶された音色データに基づき楽音信号を発生す
る複数の発音チャンネルと、前記楽音情報の入力に応答
し、楽音信号の発生を行っていない発音チャンネルであ
って、前記入力された楽音情報に含まれる音色情報の指
示する音色データを記憶したバッファを有する発音チャ
ンネルに前記入力された楽音情報を割当てるとともに、
その音色データに基づいて楽音信号を発生させる制御手
段とを具備することを特徴とする。また、請求項2記載
の発明は、請求項1記載の楽音発生装置において、前記
制御手段は、前記楽音信号の発生を行っていない発音チ
ャンネルであって、前記楽音情報に含まれる音色情報が
指示する音色の楽音信号を発生するための前記音色デー
タが前記バッファに記憶された発音チャンネルが検出さ
れなかった場合には、前記楽音情報に含まれる音色情報
が指示する音色の楽音信号を発生するための前記音色デ
ータが前記バッファに記憶された発音チャンネルで発音
されている前記楽音信号を消音し、該消音された発音チ
ャンネルに前記入力された楽音情報を割当てて、該消音
された発音チャンネルで前記入力された楽音情報に含ま
れる音色情報が指示する音色の楽音情報を発生させるこ
とを特徴とする。また、請求項3記載の発明は、請求項
2記載の楽音発生装置において、前記発音チャンネルの
m(n>m≧2)個のバッファは、所定の優先順位を有
し、前記制御手段は、入力された前記楽音情報を前記発
音チャンネルに割当てるに際し、前記音色情報の指示す
る音色データを記憶したバッファを有する空き発音チャ
ンネルであって、該バッファの優先順位が最も高い発音
チャンネルに前記楽音情報を割り当てる一方、空き発音
チャンネルの無い場合に、前記音色情報の指示する音色
データを記憶したバッファを有し、該バッファの優先順
位が最も高い発音チャンネルに前記楽音情報を割り当て
ることを特徴とする。また、請求項4記載の発明は、請
求項1ないし3のいずれかに記載の楽音発生装置におい
て、所定の音色の楽音信号を発生するための音色データ
をn個記憶した記憶手段と、前記複数の発音チャンネル
の各バッファに転送すべき音色データを指示する楽音割
当指示手段と、前記楽音割当指示手段の指示に従い、前
記記憶手段に記憶された前記音色データを前記複数の発
音チャンネルの各バッファに予め転送する転送手段とを
具備することを特徴とする。
【0012】
【作用】請求項1記載の発明においては、制御手段は、
楽音情報の入力に応答し、楽音信号の発生を行っていな
い発音チャンネルであって、入力された楽音情報に含ま
れる音色情報の指示する音色データを記憶したバッファ
を有する発音チャンネルに入力された楽音情報を割当て
る。次いで、制御手段は、上記音色データに基づいて楽
音信号を発生させる。これにより、バッファの記憶容量
を増大させることがなく、しかも、キーオンに対するレ
スポンスを極めて良くすることができる。また、請求項
2記載の発明においては、制御手段は、楽音信号の発生
を行っていない発音チャンネルであって、楽音情報に含
まれる音色情報が指示する音色の楽音信号を発生するた
めの音色データがバッファに記憶された発音チャンネル
が検出されなかった場合には、音色データがバッファに
記憶された発音チャンネルで発音されている楽音信号を
消音する。ついで、制御手段は、該消音された発音チャ
ンネルに入力された楽音情報を割当てて、該消音された
発音チャンネルで入力された楽音情報に含まれる音色情
報が指示する音色の楽音情報を発生させる。従って、請
求項2記載の発明によれば、楽音情報に含まれる音色情
報に対応する音色データがバッファに記憶された発音チ
ャンネルの全てが音色情報が指示する音色の楽音信号を
発生させることができる。また、請求項3記載の発明に
おいては、制御手段は、入力された楽音情報を発音チャ
ンネルに割当てるに際し、音色情報の指示する音色デー
タを記憶したバッファを有する空き発音チャンネルであ
って、該バッファの優先順位が最も高い発音チャンネル
に楽音情報を割り当てる。 一方、制御手段は、空き発音
チャンネルの無い場合に、音色情報の指示する音色デー
タを記憶したバッファを有し、該バッファの優先順位が
最も高い発音チャンネルに楽音情報を割り当てる。従っ
て、請求項3記載の発明によれば、不自然さのない再生
音が得られる。また、請求項4記載の発明においては、
転送手段は、楽音割当指示手段の指示に従い、記憶手段
に記憶された音色データを複数の発音チャンネルの各バ
ッファに予め転送する。
楽音情報の入力に応答し、楽音信号の発生を行っていな
い発音チャンネルであって、入力された楽音情報に含ま
れる音色情報の指示する音色データを記憶したバッファ
を有する発音チャンネルに入力された楽音情報を割当て
る。次いで、制御手段は、上記音色データに基づいて楽
音信号を発生させる。これにより、バッファの記憶容量
を増大させることがなく、しかも、キーオンに対するレ
スポンスを極めて良くすることができる。また、請求項
2記載の発明においては、制御手段は、楽音信号の発生
を行っていない発音チャンネルであって、楽音情報に含
まれる音色情報が指示する音色の楽音信号を発生するた
めの音色データがバッファに記憶された発音チャンネル
が検出されなかった場合には、音色データがバッファに
記憶された発音チャンネルで発音されている楽音信号を
消音する。ついで、制御手段は、該消音された発音チャ
ンネルに入力された楽音情報を割当てて、該消音された
発音チャンネルで入力された楽音情報に含まれる音色情
報が指示する音色の楽音情報を発生させる。従って、請
求項2記載の発明によれば、楽音情報に含まれる音色情
報に対応する音色データがバッファに記憶された発音チ
ャンネルの全てが音色情報が指示する音色の楽音信号を
発生させることができる。また、請求項3記載の発明に
おいては、制御手段は、入力された楽音情報を発音チャ
ンネルに割当てるに際し、音色情報の指示する音色デー
タを記憶したバッファを有する空き発音チャンネルであ
って、該バッファの優先順位が最も高い発音チャンネル
に楽音情報を割り当てる。 一方、制御手段は、空き発音
チャンネルの無い場合に、音色情報の指示する音色デー
タを記憶したバッファを有し、該バッファの優先順位が
最も高い発音チャンネルに楽音情報を割り当てる。従っ
て、請求項3記載の発明によれば、不自然さのない再生
音が得られる。また、請求項4記載の発明においては、
転送手段は、楽音割当指示手段の指示に従い、記憶手段
に記憶された音色データを複数の発音チャンネルの各バ
ッファに予め転送する。
【0013】
【実施例】以下、図面を参照してこの発明の実施例につ
いて説明する。 A:第1の実施例の構成 図1は、この発明の第1の実施例の構成を示すブロック
図であり、図において、10は外部のMIDI機器であ
る。MIDI機器10としては、例えば、キーボードな
どがあり、キーのオン/オフを示すノートオン/ノート
オフ情報(NON/NOFF情報)、キーの音高を示す
ノートコードNCおよびキーの押下速度を示すベロシテ
ィNV等の楽音情報を出力する。この楽音情報は、MI
DIインターフェイス11を介してCPU12に供給さ
れるようになっており、CPU12は供給された楽音情
報に対して後述するような種々の処理を行うとともに、
装置各部を制御する。
いて説明する。 A:第1の実施例の構成 図1は、この発明の第1の実施例の構成を示すブロック
図であり、図において、10は外部のMIDI機器であ
る。MIDI機器10としては、例えば、キーボードな
どがあり、キーのオン/オフを示すノートオン/ノート
オフ情報(NON/NOFF情報)、キーの音高を示す
ノートコードNCおよびキーの押下速度を示すベロシテ
ィNV等の楽音情報を出力する。この楽音情報は、MI
DIインターフェイス11を介してCPU12に供給さ
れるようになっており、CPU12は供給された楽音情
報に対して後述するような種々の処理を行うとともに、
装置各部を制御する。
【0014】15はCPU12の制御の下に、楽音の発
生を行う楽音合成回路であり、図3に示すようにトーン
ジェネレータTG0〜TG7を有している。また、各ト
ーンジェネレータTG0〜TG7には、各々2つのバッ
ファBUF0−1,0−2〜BUF7−1,7−2が設
けられており、各バッファには異なる音色の音色データ
(マイクロプログラム)が書き込まれるようになってい
る。この場合、サフィックス1のバッファの方が優先し
て使用されるように設定されている。また、各トーンジ
ェネレータTG0〜TG7は対応する2つのバッファB
UF0−1,0−2〜BUF7−1,7−2とともに発
音チャンネルCH0〜CH7を構成している。
生を行う楽音合成回路であり、図3に示すようにトーン
ジェネレータTG0〜TG7を有している。また、各ト
ーンジェネレータTG0〜TG7には、各々2つのバッ
ファBUF0−1,0−2〜BUF7−1,7−2が設
けられており、各バッファには異なる音色の音色データ
(マイクロプログラム)が書き込まれるようになってい
る。この場合、サフィックス1のバッファの方が優先し
て使用されるように設定されている。また、各トーンジ
ェネレータTG0〜TG7は対応する2つのバッファB
UF0−1,0−2〜BUF7−1,7−2とともに発
音チャンネルCH0〜CH7を構成している。
【0015】各トーンジェネレータTG0〜TG7によ
って形成された楽音信号は、サウンドシステム16に供
給され、ここで、増幅された後にスピーカ17から発音
される。次に、20はROMであり、CPU12で用い
られるプログラムや音色データが記憶されている。この
実施例においては、音色データは100種類程度が記憶
されている。21はRAMであり、種々のレジスタ、フ
ラグが設けられるとともに、作業領域が設定されてい
る。また、RAM21内には、図2に示す音色アサイン
バッファ23が設定されている。この音色アサインバッ
ファ23は、上述したバッファBUF0−1,0−2〜
BUF7−1,7−2に書き込むべき音色データを指定
するものである。図2に示す例の場合は、チャンネルC
H0については、バッファBUF0−1およびバッファ
BUF0−2に各々ブラス(BRASS)およびピアノ
(PIANO)の音色データの転送が指示される。
って形成された楽音信号は、サウンドシステム16に供
給され、ここで、増幅された後にスピーカ17から発音
される。次に、20はROMであり、CPU12で用い
られるプログラムや音色データが記憶されている。この
実施例においては、音色データは100種類程度が記憶
されている。21はRAMであり、種々のレジスタ、フ
ラグが設けられるとともに、作業領域が設定されてい
る。また、RAM21内には、図2に示す音色アサイン
バッファ23が設定されている。この音色アサインバッ
ファ23は、上述したバッファBUF0−1,0−2〜
BUF7−1,7−2に書き込むべき音色データを指定
するものである。図2に示す例の場合は、チャンネルC
H0については、バッファBUF0−1およびバッファ
BUF0−2に各々ブラス(BRASS)およびピアノ
(PIANO)の音色データの転送が指示される。
【0016】次に、25は、音色を設定する音色設定ス
イッチやその他の種々スイッチ等が設けられている操作
パネルであり、その操作信号はパネルインターフェイス
26を介してCPU12に供給される。音色設定スイッ
チが操作されると、CPU12は、その操作信号に従っ
て音色アサインバッファ23の内容を書き換えるように
なっている。そして、この音色アサインバッファ23の
内容に従ってROM20内音色データをバッファBUF
0−1,0−2〜BUF7−1,7−2に転送するよう
になっている。
イッチやその他の種々スイッチ等が設けられている操作
パネルであり、その操作信号はパネルインターフェイス
26を介してCPU12に供給される。音色設定スイッ
チが操作されると、CPU12は、その操作信号に従っ
て音色アサインバッファ23の内容を書き換えるように
なっている。そして、この音色アサインバッファ23の
内容に従ってROM20内音色データをバッファBUF
0−1,0−2〜BUF7−1,7−2に転送するよう
になっている。
【0017】B:実施例の動作 次に、上述した構成によるこの実施例の動作について説
明する。 (イ)メイン処理 図4は、この実施例のメイン処理を示すフローチャート
であり、まず、ステップSP1において、装置各部をイ
ニシャライズし、次いで、MIDI処理、パネル処理お
よび発音チャンネル処理を行う(ステップSP2,3,
4)。以後は、ステップSP2,3,4の処理を循環す
る。これらのうちステップSP3のパネル処理において
は、操作パネル25の各スイッチのオン/オフ状態をス
キャンし、これらのオン/オフ状態に応じた設定(音色
設定等)を行う。この処理は、一般の電子楽器で行われ
ている処理と同様であるので、詳細説明を省略し、以下
に、ステップSP2,4の処理内容およびこれらの処理
に用いられる各種サブルーチンについて詳述する。
明する。 (イ)メイン処理 図4は、この実施例のメイン処理を示すフローチャート
であり、まず、ステップSP1において、装置各部をイ
ニシャライズし、次いで、MIDI処理、パネル処理お
よび発音チャンネル処理を行う(ステップSP2,3,
4)。以後は、ステップSP2,3,4の処理を循環す
る。これらのうちステップSP3のパネル処理において
は、操作パネル25の各スイッチのオン/オフ状態をス
キャンし、これらのオン/オフ状態に応じた設定(音色
設定等)を行う。この処理は、一般の電子楽器で行われ
ている処理と同様であるので、詳細説明を省略し、以下
に、ステップSP2,4の処理内容およびこれらの処理
に用いられる各種サブルーチンについて詳述する。
【0018】(ロ)MIDI処理 図5は、MIDI処理の内容を示すフローチャートであ
る。まず、ステップSPa1においては、MIDIバッ
ファのスキャンが行われる。MIDIバッファは、RA
M21内に設定されているバッファである。ここで、M
IDIインターフェイス11は外部MIDI機器10か
ら受け取ったMIDI信号をMIDIバッファに転送す
るようになっている。そして、ステップSPa2に進
み、スキャンの結果からイベントがあったか否かを判定
する。ここで、イベントとは、演奏操作子の変化、例え
ば、キーボードのキーのオフからオンへの変化、および
オンからオフへの変化をいう。
る。まず、ステップSPa1においては、MIDIバッ
ファのスキャンが行われる。MIDIバッファは、RA
M21内に設定されているバッファである。ここで、M
IDIインターフェイス11は外部MIDI機器10か
ら受け取ったMIDI信号をMIDIバッファに転送す
るようになっている。そして、ステップSPa2に進
み、スキャンの結果からイベントがあったか否かを判定
する。ここで、イベントとは、演奏操作子の変化、例え
ば、キーボードのキーのオフからオンへの変化、および
オンからオフへの変化をいう。
【0019】ステップSPa2の判断結果が「NO」の
場合は、直ちにリターンし、「YES」の場合は、ステ
ップSPa3に進む。ステップSPa3においては、オ
フからオンへの変化を示すノートオンデータNON、ま
たは、オンからオフへの変化を示すノートオフデータN
OFFがレジスタEVに書き込まれる。また、音高を示
すノートコードがレジスタNCに、キーを操作する早さ
に対応したベロシティがレジスタNVに書き込まれる。
次に、ステップSPa4に進み、レジスタEVの内容が
ノートオンデータNONであるか否かが判定される。こ
の判定が「YES」であればステップSPa5のノート
オン処理に進み、また、「NO」であればステップSP
a6のノートオフ処理に進む。
場合は、直ちにリターンし、「YES」の場合は、ステ
ップSPa3に進む。ステップSPa3においては、オ
フからオンへの変化を示すノートオンデータNON、ま
たは、オンからオフへの変化を示すノートオフデータN
OFFがレジスタEVに書き込まれる。また、音高を示
すノートコードがレジスタNCに、キーを操作する早さ
に対応したベロシティがレジスタNVに書き込まれる。
次に、ステップSPa4に進み、レジスタEVの内容が
ノートオンデータNONであるか否かが判定される。こ
の判定が「YES」であればステップSPa5のノート
オン処理に進み、また、「NO」であればステップSP
a6のノートオフ処理に進む。
【0020】(i)ノートオン処理の概要 図6は、ノートオン処理の概要を示すフローチャートで
ある。まず、ステップSPb1において、イベントの検
出されたMIDIチャンネルの番号をレジスタMCHに
書き込む。次いで、ステップSPb2のチャンネル割当
処理に進む。この処理は、ノートオンのあった音を、楽
音合成回路15内のトーンジェネレータTG0〜TG7
(図3参照)、すなわち、発音チャンネルCH0〜CH
7に割り当てる処理であり、詳細については後述する
が、割り当てるべき発音チャンネルが見つかった場合は
レジスタFOUNDの値を1にするとともに、レジスタ
ACHに割り当てるべき発音チャンネルの番号を書き込
む。また、割り当てる発音チャンネルが見つからない場
合は、レジスタFOUNDの内容を0にする。
ある。まず、ステップSPb1において、イベントの検
出されたMIDIチャンネルの番号をレジスタMCHに
書き込む。次いで、ステップSPb2のチャンネル割当
処理に進む。この処理は、ノートオンのあった音を、楽
音合成回路15内のトーンジェネレータTG0〜TG7
(図3参照)、すなわち、発音チャンネルCH0〜CH
7に割り当てる処理であり、詳細については後述する
が、割り当てるべき発音チャンネルが見つかった場合は
レジスタFOUNDの値を1にするとともに、レジスタ
ACHに割り当てるべき発音チャンネルの番号を書き込
む。また、割り当てる発音チャンネルが見つからない場
合は、レジスタFOUNDの内容を0にする。
【0021】そして、ステップSPb3に進み、レジス
タFOUNDの値が「1」か否かが判定される。この判
定が「NO」の場合は、割り当てるべきチャンネルがな
いので、キーオン処理は行わず、リターンする。一方、
ステップSPb3の判定が「YES」となった場合は、
ステップSPb4に進み、レジスタST(ACH)に1
を書き込む。ここで、ACHは、レジスタACHの内容
を意味する。すなわち、割り当てるべきチャンネルの番
号である。また、レジスタST(ACH)は、各発音チ
ャンネルの状態を示すためのレジスタであり、値「0」
のときが空きチャンネル、値「1」のときが押鍵中、値
「2」のときが離鍵中を示す。
タFOUNDの値が「1」か否かが判定される。この判
定が「NO」の場合は、割り当てるべきチャンネルがな
いので、キーオン処理は行わず、リターンする。一方、
ステップSPb3の判定が「YES」となった場合は、
ステップSPb4に進み、レジスタST(ACH)に1
を書き込む。ここで、ACHは、レジスタACHの内容
を意味する。すなわち、割り当てるべきチャンネルの番
号である。また、レジスタST(ACH)は、各発音チ
ャンネルの状態を示すためのレジスタであり、値「0」
のときが空きチャンネル、値「1」のときが押鍵中、値
「2」のときが離鍵中を示す。
【0022】次に、ステップSPb5に進み、レジスタ
ANC(ACH)にレジスタNC内のノートコードを書
き込む。そして、ステップSPb6に進み、ACH番チ
ャンネルにレジスタNC内のノートコード、レジスタN
V内のノートベロシティおよびノートオン情報NONを
転送する。この結果、楽音合成回路15内の対応するチ
ャンネルにおいて楽音信号の合成が開始される。なお、
各チャンネルCH0〜CH7におけるバッファBUF
(ACH)−1、BUF(ACH)−2の選択は、チャ
ンネル割当処理(ステップSPb2)において行われる
が、これについては後述する。
ANC(ACH)にレジスタNC内のノートコードを書
き込む。そして、ステップSPb6に進み、ACH番チ
ャンネルにレジスタNC内のノートコード、レジスタN
V内のノートベロシティおよびノートオン情報NONを
転送する。この結果、楽音合成回路15内の対応するチ
ャンネルにおいて楽音信号の合成が開始される。なお、
各チャンネルCH0〜CH7におけるバッファBUF
(ACH)−1、BUF(ACH)−2の選択は、チャ
ンネル割当処理(ステップSPb2)において行われる
が、これについては後述する。
【0023】(ii)ノートオフ処理 次に、ノートオフ処理について図7を参照して説明す
る。まず、ステップSPc1において、レジスタMCH
にキーオフイベントが検出されたMIDIチャンネル番
号を書き込む。次に、ステップSPc2に移り、レジス
タTCにレジスタATC(MCH)の内容を書き込む。
レジレスタATC(0)〜(7)の内容は、MIDIチ
ャンネル番号に対するトーンコード(音色を示すコー
ド)が予め割り当てられており、例えば、レジスタAT
C(1)にはピアノ、レジスタATC(2)にはバイオ
リンのトーンコードが格納されている。このステップS
Pc2においては、イベントがあったMIDIチャンネ
ル番号に対応するレジスタATC(MCH)内のトーン
コードが、レジスタTCに転送される。
る。まず、ステップSPc1において、レジスタMCH
にキーオフイベントが検出されたMIDIチャンネル番
号を書き込む。次に、ステップSPc2に移り、レジス
タTCにレジスタATC(MCH)の内容を書き込む。
レジレスタATC(0)〜(7)の内容は、MIDIチ
ャンネル番号に対するトーンコード(音色を示すコー
ド)が予め割り当てられており、例えば、レジスタAT
C(1)にはピアノ、レジスタATC(2)にはバイオ
リンのトーンコードが格納されている。このステップS
Pc2においては、イベントがあったMIDIチャンネ
ル番号に対応するレジスタATC(MCH)内のトーン
コードが、レジスタTCに転送される。
【0024】次に、ステップSPc3において、各チャ
ンネルの状態をチャンネルCH0からCH7までスキャ
ンして調べるために、スキャン中のチャンネル番号を示
すレジスタCHの内容をクリアする。そして、ステップ
SPc4に移り、レジスタST(CH)の内容が「1」
か否か、すなわち、押鍵中か否かの判定を行う。この判
定が「NO」の場合、すなわち、「0」(空きチャンネ
ル)または「2」(離鍵中)の場合は、すでにノートオ
フされているので、新たなノートオフ処理の対象とせ
ず、スキャンのチャンネル番号を1インクリメントして
(ステップSPc5)、ステップSPc6に進む。ステ
ップSPc6では、レジスタCHの内容が「8」か否
か、すなわち、スキャン処理が全てのチャンネルについ
て行われたか否かが判定され、「NO」であれば、ステ
ップSPc4に戻る。
ンネルの状態をチャンネルCH0からCH7までスキャ
ンして調べるために、スキャン中のチャンネル番号を示
すレジスタCHの内容をクリアする。そして、ステップ
SPc4に移り、レジスタST(CH)の内容が「1」
か否か、すなわち、押鍵中か否かの判定を行う。この判
定が「NO」の場合、すなわち、「0」(空きチャンネ
ル)または「2」(離鍵中)の場合は、すでにノートオ
フされているので、新たなノートオフ処理の対象とせ
ず、スキャンのチャンネル番号を1インクリメントして
(ステップSPc5)、ステップSPc6に進む。ステ
ップSPc6では、レジスタCHの内容が「8」か否
か、すなわち、スキャン処理が全てのチャンネルについ
て行われたか否かが判定され、「NO」であれば、ステ
ップSPc4に戻る。
【0025】一方、ステップSPc4の判定が「YE
S」の場合は、ステップSPc7に進み、レジスタAN
C(CH)の内容がキーオフイベントのあったキーのノ
ートコードと等しいか否かが判定され、「NO」であれ
ば、別の音についてキーオフがあった場合であるので、
当該音についてはノートオフ処理を行わず、ステップS
Pc5に進む。すなわち、スキャンチャンネル番号を1
インクリメントして再度ステップSPc4の判定を行
う。ステップSPc7の判定で「YES」となった場合
は、レジスタSEL(CH)の内容が1で、かつ、レジ
スタATC1(CH)の内容がレジスタTCの内容(ス
テップSPc2で書き込まれたトーンコード)と同じで
あるか否かが判定される。ここで、レジスタSEL(C
H)は、そのチャンネルが図2に示すグループ1または
2のいずれの音色(パラメータ)によって発音している
かを示すレジスタである。また、レジスタATC1(C
H)は、グループ1について各チャンネルの音色が記憶
されるレジスタである。
S」の場合は、ステップSPc7に進み、レジスタAN
C(CH)の内容がキーオフイベントのあったキーのノ
ートコードと等しいか否かが判定され、「NO」であれ
ば、別の音についてキーオフがあった場合であるので、
当該音についてはノートオフ処理を行わず、ステップS
Pc5に進む。すなわち、スキャンチャンネル番号を1
インクリメントして再度ステップSPc4の判定を行
う。ステップSPc7の判定で「YES」となった場合
は、レジスタSEL(CH)の内容が1で、かつ、レジ
スタATC1(CH)の内容がレジスタTCの内容(ス
テップSPc2で書き込まれたトーンコード)と同じで
あるか否かが判定される。ここで、レジスタSEL(C
H)は、そのチャンネルが図2に示すグループ1または
2のいずれの音色(パラメータ)によって発音している
かを示すレジスタである。また、レジスタATC1(C
H)は、グループ1について各チャンネルの音色が記憶
されるレジスタである。
【0026】ステップSPc8で「YES」となる場合
は、キーオフされた音が当該チャンネル(CH)のグル
ープ1の音色で発音されている場合であり、ステップS
Pc10へ進む。ステップSPc8で「NO」となる場
合は、ステップSPc9へ進み、レジスタSEL(C
H)の内容が2で、かつ、レジスタATC2(CH)の
内容がレジスタTCの内容と等しいか否かが判定され
る。レジスタATC2(CH)は、レジスタATC1
(CH)と同様のレジスタであり、グループ2について
各チャンネルの音色が記憶されるレジスタである。ステ
ップSPc9で「YES」の場合は、キーオフされた音
が当該チャンネル(CH)のグループ2の音色で発音さ
れている場合であり、ステップSPc10へ進む。SP
c9において「NO」と判定された場合は、チャンネル
番号を1インクリメントしてステップSPc4の判定を
行う。
は、キーオフされた音が当該チャンネル(CH)のグル
ープ1の音色で発音されている場合であり、ステップS
Pc10へ進む。ステップSPc8で「NO」となる場
合は、ステップSPc9へ進み、レジスタSEL(C
H)の内容が2で、かつ、レジスタATC2(CH)の
内容がレジスタTCの内容と等しいか否かが判定され
る。レジスタATC2(CH)は、レジスタATC1
(CH)と同様のレジスタであり、グループ2について
各チャンネルの音色が記憶されるレジスタである。ステ
ップSPc9で「YES」の場合は、キーオフされた音
が当該チャンネル(CH)のグループ2の音色で発音さ
れている場合であり、ステップSPc10へ進む。SP
c9において「NO」と判定された場合は、チャンネル
番号を1インクリメントしてステップSPc4の判定を
行う。
【0027】一方、ステップSPc8またはステップS
Pc9のいずれかにおいて「YES」判定されると、ス
テップSPc10に進み、レジスタST(CH)に離鍵
中を示す「2」を書き込み、次いで、ステップSPc1
1に進んで、CHチャンネルにノートオフ情報NOFF
を出力する。これにより、該当するチャンネルの発音が
終了する。そして、ステップSPc11の処理の後はリ
ターンする。また、全てのチャンネルについてスキャン
してもノートオフさせるべきチャンネルが見つからなか
った場合は、ステップSPc6において「YES」と判
定されてリターンする。
Pc9のいずれかにおいて「YES」判定されると、ス
テップSPc10に進み、レジスタST(CH)に離鍵
中を示す「2」を書き込み、次いで、ステップSPc1
1に進んで、CHチャンネルにノートオフ情報NOFF
を出力する。これにより、該当するチャンネルの発音が
終了する。そして、ステップSPc11の処理の後はリ
ターンする。また、全てのチャンネルについてスキャン
してもノートオフさせるべきチャンネルが見つからなか
った場合は、ステップSPc6において「YES」と判
定されてリターンする。
【0028】(ハ)発音チャンネル処理 次に、発音チャンネル処理について、図8を参照して説
明する。この処理は、発生した楽音信号の振幅が0とな
っているチャンネルを見つけ、空きチャンネルとして設
定する処理であり、全部のチャンネルをスキャンして振
幅0のチャンネルをサーチする。まず、全チャンネルス
キャンのために、ステップSPd1ではチャンネルカウ
ント用のレジスタCHを0にし、ステップSPd7では
レジスタCHをインクリメントし、また、ステップSP
d8では全てのチャンネルをスキャンしたか否かを判定
する処理を行う。そして、ステップSPd8からステッ
プSPd2へ戻るループにより、全チャンネルがスキャ
ンされる。
明する。この処理は、発生した楽音信号の振幅が0とな
っているチャンネルを見つけ、空きチャンネルとして設
定する処理であり、全部のチャンネルをスキャンして振
幅0のチャンネルをサーチする。まず、全チャンネルス
キャンのために、ステップSPd1ではチャンネルカウ
ント用のレジスタCHを0にし、ステップSPd7では
レジスタCHをインクリメントし、また、ステップSP
d8では全てのチャンネルをスキャンしたか否かを判定
する処理を行う。そして、ステップSPd8からステッ
プSPd2へ戻るループにより、全チャンネルがスキャ
ンされる。
【0029】次に、ステップSPd2においては、レジ
スタST(CH)の内容が「2」であるか否か、すなわ
ち、離鍵されているか否かを判定する。この判定が「N
O」の場合は、まだ発音中であって離鍵されていない場
合であるので、空きチャンネルとして設定することはせ
ず、次のチャンネルの処理へ進む(ステップSPd
7)。一方、ステップSPd2の判定が「YES」の場
合は、ステップSPd3に進んでレジスタENVに当該
チャンネルの楽音信号のその時点のエンベロープ値を書
き込む。そして、ステップSPd4に進んで、レジスタ
ENVに書き込まれたエンベロープ値が「0」か否かが
判断される。この判断が「NO」の場合は、離鍵はされ
ているが未だ発音を終了していない場合(減衰中の場
合)であるので、空きチャンネルとして設定せず、次の
チャンネルの処理へ進む。
スタST(CH)の内容が「2」であるか否か、すなわ
ち、離鍵されているか否かを判定する。この判定が「N
O」の場合は、まだ発音中であって離鍵されていない場
合であるので、空きチャンネルとして設定することはせ
ず、次のチャンネルの処理へ進む(ステップSPd
7)。一方、ステップSPd2の判定が「YES」の場
合は、ステップSPd3に進んでレジスタENVに当該
チャンネルの楽音信号のその時点のエンベロープ値を書
き込む。そして、ステップSPd4に進んで、レジスタ
ENVに書き込まれたエンベロープ値が「0」か否かが
判断される。この判断が「NO」の場合は、離鍵はされ
ているが未だ発音を終了していない場合(減衰中の場
合)であるので、空きチャンネルとして設定せず、次の
チャンネルの処理へ進む。
【0030】一方、ステップSPd4の判定が「YE
S」の場合は、ステップSPd5において状態を示すレ
ジスタST(CH)に空きチャンネルを示す値「0」を
書き込み、さらに、ステップSPd6においてノードコ
ードを記憶するレジスタANC(CH)に「0」を書き
込んで、次のチャンネルの処理へ進む。なお、「0」
は、ノートコードにはない値である。上述の処理を全チ
ャンネルについて行った後は、ステップSPd8を介し
て、メインルーチンへリターンする。
S」の場合は、ステップSPd5において状態を示すレ
ジスタST(CH)に空きチャンネルを示す値「0」を
書き込み、さらに、ステップSPd6においてノードコ
ードを記憶するレジスタANC(CH)に「0」を書き
込んで、次のチャンネルの処理へ進む。なお、「0」
は、ノートコードにはない値である。上述の処理を全チ
ャンネルについて行った後は、ステップSPd8を介し
て、メインルーチンへリターンする。
【0031】(ニ)ノートオン処理の詳細(チャンネル
割当処理) 次に、チャンネル割当処理について図9を参照して説明
する。このチャンネル割当処理はキーオンされた音の発
音を空きチャンネルに割り当てる処理であり、空きチャ
ンネルが見つからない場合は、後述するトランケート処
理を行う。また、チャンネル割当処理は、前述のように
ノートオン処理(図6のステップSPb2参照)から起
動される処理である。まず、ステップSPe1におい
て、レジスタATC(MCH)の内容をレジスタTCに
転送する。ここで、MCHの値は、ノートオン処理にお
いてイベントの検出されたMIDIチャンネルの番号に
なっているから(図6のステップSPb1参照)、ステ
ップSPe1の処理によってレジスタTCにイベントの
あったMIDIチャンネルの番号に対応するトーンコー
ドが転送されることになる。
割当処理) 次に、チャンネル割当処理について図9を参照して説明
する。このチャンネル割当処理はキーオンされた音の発
音を空きチャンネルに割り当てる処理であり、空きチャ
ンネルが見つからない場合は、後述するトランケート処
理を行う。また、チャンネル割当処理は、前述のように
ノートオン処理(図6のステップSPb2参照)から起
動される処理である。まず、ステップSPe1におい
て、レジスタATC(MCH)の内容をレジスタTCに
転送する。ここで、MCHの値は、ノートオン処理にお
いてイベントの検出されたMIDIチャンネルの番号に
なっているから(図6のステップSPb1参照)、ステ
ップSPe1の処理によってレジスタTCにイベントの
あったMIDIチャンネルの番号に対応するトーンコー
ドが転送されることになる。
【0032】次に、ステップSPe2に進み、空きチャ
ンネルが見つかったか否かを示すフラグFOUNDをク
リアしする。次いで、このチャンネル割当処理について
も、全チャンネルをスキャンして調べるために、ステッ
プSPe3でチャンネルカウント用のレジスタCHを0
にし、ステップSPe8でレジスタCHをインクリメン
トし、また、ステップSPe9で全てのチャンネルをス
キャンしたか否かを判定する処理を行う。したがって、
最適な発音チャンネルが見つかった場合を除くほか、ス
テップSPe9からステップSPe4へ戻るループを繰
り返す。
ンネルが見つかったか否かを示すフラグFOUNDをク
リアしする。次いで、このチャンネル割当処理について
も、全チャンネルをスキャンして調べるために、ステッ
プSPe3でチャンネルカウント用のレジスタCHを0
にし、ステップSPe8でレジスタCHをインクリメン
トし、また、ステップSPe9で全てのチャンネルをス
キャンしたか否かを判定する処理を行う。したがって、
最適な発音チャンネルが見つかった場合を除くほか、ス
テップSPe9からステップSPe4へ戻るループを繰
り返す。
【0033】さて、ステップSPe4においては、チャ
ンネルの発音状態を示すレジスタST(CH)の内容が
0か否か、すなわち、空きチャンネルか否かを判定し、
「NO」の場は、チャンネル割当ができないためステッ
プSPe8、SPe9を介してステップSPe4に戻
る。一方、ステップSPe4において、「YES」と判
定された場合は、ステップSPe5に進み、レジスタA
TC2(CH)内のトーンコードとレジスタTC内のト
ーンコードとが等しいか否かが判定される。すなわち、
当該チャンネルについてグループ2(図2参照)に設定
されている音色とキーオンされた音色とが等しいか否か
が判定される。この判定が「NO」の場合は、ステップ
SPe10に移り、上記と同様に、当該チャンネルにつ
いてグループ1(図2参照)に設定されている音色とキ
ーオンされた音色とが等しいか否かが判定される。この
ステップSPe10で「YES」と判定された場合は、
ステップSPe11〜SPe13の処理を行い、当該チ
ャンネルにその音色を割り当てる。すなわち、ステップ
SPe11においてレジスタSEL(CH)の内容を
「1」にしてグループ1の音色が選択されたことを示
し、ステップSPe12においてフラグFOUNDの値
を「1」にして空きチャンネルが見つかったことを示
し、さらに、ステップSPe13に進んで、レジスタA
CHに当該空きチャンネルの番号であるレジスタCHの
内容を書き込む。そして、CPU12は、レジスタSE
L(CH)、ACHの内容に基づいて、チャンネルAC
Hに対し、グループ1のバッファ、すなわち、バッファ
BUF(ACH)−1を選択する。次いで、ステップS
Pe13の処理の後は、図6に示すノートオン処理に戻
り、ステップSPb4,5,6の処理の処理によって楽
音の発生がなされる。
ンネルの発音状態を示すレジスタST(CH)の内容が
0か否か、すなわち、空きチャンネルか否かを判定し、
「NO」の場は、チャンネル割当ができないためステッ
プSPe8、SPe9を介してステップSPe4に戻
る。一方、ステップSPe4において、「YES」と判
定された場合は、ステップSPe5に進み、レジスタA
TC2(CH)内のトーンコードとレジスタTC内のト
ーンコードとが等しいか否かが判定される。すなわち、
当該チャンネルについてグループ2(図2参照)に設定
されている音色とキーオンされた音色とが等しいか否か
が判定される。この判定が「NO」の場合は、ステップ
SPe10に移り、上記と同様に、当該チャンネルにつ
いてグループ1(図2参照)に設定されている音色とキ
ーオンされた音色とが等しいか否かが判定される。この
ステップSPe10で「YES」と判定された場合は、
ステップSPe11〜SPe13の処理を行い、当該チ
ャンネルにその音色を割り当てる。すなわち、ステップ
SPe11においてレジスタSEL(CH)の内容を
「1」にしてグループ1の音色が選択されたことを示
し、ステップSPe12においてフラグFOUNDの値
を「1」にして空きチャンネルが見つかったことを示
し、さらに、ステップSPe13に進んで、レジスタA
CHに当該空きチャンネルの番号であるレジスタCHの
内容を書き込む。そして、CPU12は、レジスタSE
L(CH)、ACHの内容に基づいて、チャンネルAC
Hに対し、グループ1のバッファ、すなわち、バッファ
BUF(ACH)−1を選択する。次いで、ステップS
Pe13の処理の後は、図6に示すノートオン処理に戻
り、ステップSPb4,5,6の処理の処理によって楽
音の発生がなされる。
【0034】一方、ステップSPe5、SPe10の双
方において「NO」と判定された場合は、空きチャンネ
ルがグループ1およびグループ2のいずれの音色におい
ても見つからなかった場合であるので、ステップSPe
8、SPe9を介してステップSPe4に進み、次のチ
ャンネルについての処理を開始する。また、ステップS
Pe5において「YES」と判定された場合は、グルー
プ2の音色において空きチャンネルが見つかった場合で
あり、ステップSPe6においてレジスタFOUNDを
1にし、ステップSPe7においてレジスタTEMPに
そのチャンネルの番号を示すレジスタCHの値を転送す
る。レジスタTEMPは、空きチャンネルがグループ2
の音色において見つかった場合に、そのチャンネルの番
号を一時的に記憶するためのレジスタである。
方において「NO」と判定された場合は、空きチャンネ
ルがグループ1およびグループ2のいずれの音色におい
ても見つからなかった場合であるので、ステップSPe
8、SPe9を介してステップSPe4に進み、次のチ
ャンネルについての処理を開始する。また、ステップS
Pe5において「YES」と判定された場合は、グルー
プ2の音色において空きチャンネルが見つかった場合で
あり、ステップSPe6においてレジスタFOUNDを
1にし、ステップSPe7においてレジスタTEMPに
そのチャンネルの番号を示すレジスタCHの値を転送す
る。レジスタTEMPは、空きチャンネルがグループ2
の音色において見つかった場合に、そのチャンネルの番
号を一時的に記憶するためのレジスタである。
【0035】ステップSPe7の処理の後は、ステップ
SPe8,SPe9を介してステップSPe4に戻る。
以後は、上述した処理をチャンネル7に至るまで行う
が、グループ1の音色において空きチャンネルが検出さ
れた場合は、ステップSPe10〜SPe13の処理を
行ってノートオン処理に移り、発音処理がなされる。こ
のように、グループ1に設定されている音色について空
きチャンネルが見つかった場合は、直ちに、チャンネル
割当を行って発音処理を行う。これは、グループ1の音
色におけるチャンネル割当を優先させているためであ
る。
SPe8,SPe9を介してステップSPe4に戻る。
以後は、上述した処理をチャンネル7に至るまで行う
が、グループ1の音色において空きチャンネルが検出さ
れた場合は、ステップSPe10〜SPe13の処理を
行ってノートオン処理に移り、発音処理がなされる。こ
のように、グループ1に設定されている音色について空
きチャンネルが見つかった場合は、直ちに、チャンネル
割当を行って発音処理を行う。これは、グループ1の音
色におけるチャンネル割当を優先させているためであ
る。
【0036】次に、グループ1の音色については空きチ
ャンネルはなかったが、グループ2の音色については空
きチャンネルが検出された場合は、ステップSPe9、
SPe15を介してステップSPe16に進み、レジス
タSEL(TEMP)の値を「2」にしてグループ2の
音色が選択されたことを示した後に、ステップSPe1
7においてレジスタACHに当該チャンネルの番号であ
るレジスタTEMPの内容を書き込む。そして、CPU
12は、レジスタSEL(CH)、ACHの内容に基づ
いて、チャンネルACHに対し、グループ2のバッフ
ァ、すなわち、バッファBUF(ACH)−2を選択す
る。次いで、ステップSPe17の処理の後は、図6に
示すノートオン処理に戻り、楽音の発生がなされる。
ャンネルはなかったが、グループ2の音色については空
きチャンネルが検出された場合は、ステップSPe9、
SPe15を介してステップSPe16に進み、レジス
タSEL(TEMP)の値を「2」にしてグループ2の
音色が選択されたことを示した後に、ステップSPe1
7においてレジスタACHに当該チャンネルの番号であ
るレジスタTEMPの内容を書き込む。そして、CPU
12は、レジスタSEL(CH)、ACHの内容に基づ
いて、チャンネルACHに対し、グループ2のバッフ
ァ、すなわち、バッファBUF(ACH)−2を選択す
る。次いで、ステップSPe17の処理の後は、図6に
示すノートオン処理に戻り、楽音の発生がなされる。
【0037】一方、グループ1およびグループ2のいず
れにおいても空きチャンネルが検出されなかった場合
は、ステップSPe9、SPe15を介してステップS
Pe18のトランケート処理に至る。トランケート処理
は、発音中の楽音のうちエンベロープの最も小さい音
(最小音量の音)を発音しているチャンネルを探し、そ
のチャンネルを強制的に空きチャンネルにして新しい音
の発音を割り当てるという処理である。詳細については
後述するが、このトランケート処理によって空きチャン
ネルに設定されたチャンネルの番号はレジスタTCHに
書き込まれるようになっている。そして、ステップSP
e19において、レジスタACHにレジスタTCHの内
容を書き込み、図6に示すノートオン処理に戻って楽音
の発生がなされる。
れにおいても空きチャンネルが検出されなかった場合
は、ステップSPe9、SPe15を介してステップS
Pe18のトランケート処理に至る。トランケート処理
は、発音中の楽音のうちエンベロープの最も小さい音
(最小音量の音)を発音しているチャンネルを探し、そ
のチャンネルを強制的に空きチャンネルにして新しい音
の発音を割り当てるという処理である。詳細については
後述するが、このトランケート処理によって空きチャン
ネルに設定されたチャンネルの番号はレジスタTCHに
書き込まれるようになっている。そして、ステップSP
e19において、レジスタACHにレジスタTCHの内
容を書き込み、図6に示すノートオン処理に戻って楽音
の発生がなされる。
【0038】(i)トランケート処理 次に、トランケート処理について図10および図11を
参照して説明する。図10に示す処理は、ノートオンさ
れた音の音色がグループ1に設定される音色である場合
は、現時点においてグループ2の音色で発音しているチ
ャンネルのなかから最もエンベロープの小さいものを検
出して割り当てる処理である。図10に示す処理におい
ては、まず、ステップSPf1でスキャンのためのレジ
スタCHをクリアした後、ステップSPf2でレジスタ
MINにエンベロープの最小値を書き込む。レジスタM
INは、最小エンベロープ値を探すためのレジスタであ
り、各チャンネルのエンベロープ値と比較され、より小
さいエンベロープ値が検出されると、その値に書き換え
られるようになっている。
参照して説明する。図10に示す処理は、ノートオンさ
れた音の音色がグループ1に設定される音色である場合
は、現時点においてグループ2の音色で発音しているチ
ャンネルのなかから最もエンベロープの小さいものを検
出して割り当てる処理である。図10に示す処理におい
ては、まず、ステップSPf1でスキャンのためのレジ
スタCHをクリアした後、ステップSPf2でレジスタ
MINにエンベロープの最小値を書き込む。レジスタM
INは、最小エンベロープ値を探すためのレジスタであ
り、各チャンネルのエンベロープ値と比較され、より小
さいエンベロープ値が検出されると、その値に書き換え
られるようになっている。
【0039】次に、ステップSPf3においては、レジ
スタTC内のトーンコード(ノートオンされた音のトー
ンコード)がレジスタATC1(CH)内のトーンコー
ドか否か、すなわち、グループ1の当該チャンネルCH
に設定されているトーンコードか否かが判定される。こ
の判定が「YES」の場合は、ステップSPf4に進ん
でレジスタSEL(CH)が1か否かが判定される。こ
の判定は、当該チャンネルがグループ1の音色で現に発
音を行っているかの判定である。このステップSPf4
で「NO」と判定されると、ステップSPf5に進み、
レジスタENVに当該チャンネルのエンベロープ値を書
込み、次いで、ステップSPf6に進んで、レジスタE
NVの値がレジスタMINより小さいか否かが判定され
る。この判定が「YES」の場合は、レジスタMINに
レジスタENVの内容を書き込み、レジスタTCHに当
該チャンネルの番号を示すレジスタCHの内容を書き込
む。レジスタTCHは、強制的に割当を行うチャンネ
ル、すなわち、トランケートチャンネルの番号を記憶す
るレジスタである。次に、ステップSPf9に進み、フ
ラグFOUNDの値を「1」にして、空きチャンネルが
検出されたことを示す。
スタTC内のトーンコード(ノートオンされた音のトー
ンコード)がレジスタATC1(CH)内のトーンコー
ドか否か、すなわち、グループ1の当該チャンネルCH
に設定されているトーンコードか否かが判定される。こ
の判定が「YES」の場合は、ステップSPf4に進ん
でレジスタSEL(CH)が1か否かが判定される。こ
の判定は、当該チャンネルがグループ1の音色で現に発
音を行っているかの判定である。このステップSPf4
で「NO」と判定されると、ステップSPf5に進み、
レジスタENVに当該チャンネルのエンベロープ値を書
込み、次いで、ステップSPf6に進んで、レジスタE
NVの値がレジスタMINより小さいか否かが判定され
る。この判定が「YES」の場合は、レジスタMINに
レジスタENVの内容を書き込み、レジスタTCHに当
該チャンネルの番号を示すレジスタCHの内容を書き込
む。レジスタTCHは、強制的に割当を行うチャンネ
ル、すなわち、トランケートチャンネルの番号を記憶す
るレジスタである。次に、ステップSPf9に進み、フ
ラグFOUNDの値を「1」にして、空きチャンネルが
検出されたことを示す。
【0040】ステップSPf9の後は、ステップSPf
10に進んでレジスタCHの内容をインクリメントし、
ステップSPf11において全チャンネルについてのス
キャンが済んだか否かが判定される。全チャンネルにつ
いてのスキャンが済んでいなければ、ステップSPf3
に戻って上述の処理を繰り返す。上述の処理の繰り返し
において、エンベロープのより小さいチャンネルが検出
されれば、レジスタMINおよびレジスタTCHの内容
が書き換えられ、検出されなければ前回値が保持される
(ステップSPf6→SPf10)。
10に進んでレジスタCHの内容をインクリメントし、
ステップSPf11において全チャンネルについてのス
キャンが済んだか否かが判定される。全チャンネルにつ
いてのスキャンが済んでいなければ、ステップSPf3
に戻って上述の処理を繰り返す。上述の処理の繰り返し
において、エンベロープのより小さいチャンネルが検出
されれば、レジスタMINおよびレジスタTCHの内容
が書き換えられ、検出されなければ前回値が保持される
(ステップSPf6→SPf10)。
【0041】一方、ステップSPf3で「NO」と判定
された場合は、ノートオンされた音の音色がチャンネル
CHについてはグループ1に設定された音色ではないの
で、トランケート処理を行わずに、直ちに、次のチャン
ネルの処理に移る(ステップSPf3→SPf10)。
また、ステップSPf4で「YES」と判定された場合
は、当該チャンネルCHは、優先側であるグループ1の
音色で発音を行っているので、新たな音の発音を強制的
に割り当てることをせずに、次のチャンネルの処理に進
む(ステップSPf4→SPf10)。
された場合は、ノートオンされた音の音色がチャンネル
CHについてはグループ1に設定された音色ではないの
で、トランケート処理を行わずに、直ちに、次のチャン
ネルの処理に移る(ステップSPf3→SPf10)。
また、ステップSPf4で「YES」と判定された場合
は、当該チャンネルCHは、優先側であるグループ1の
音色で発音を行っているので、新たな音の発音を強制的
に割り当てることをせずに、次のチャンネルの処理に進
む(ステップSPf4→SPf10)。
【0042】さて、上述した処理でトランケートチャン
ネルが検出された場合は、ステップSPf11、SPf
12を介してステップSPf13に進み、レジスタSE
L(TCH)の内容を1に書き換える(それまでは、グ
ループ2の音色で発音をしていたため)。そして、ステ
ップSPf14に進み、レジスタTCHで示される番号
のチャンネルについて強制的に消音処理を行い、図9に
示すフローチャートに戻る。さらに、図9に示すステッ
プSPe19を介して図6に示す処理に進んで、ノート
オンされた音の発音がなされる(ステップSPb3〜S
Pb6参照)。
ネルが検出された場合は、ステップSPf11、SPf
12を介してステップSPf13に進み、レジスタSE
L(TCH)の内容を1に書き換える(それまでは、グ
ループ2の音色で発音をしていたため)。そして、ステ
ップSPf14に進み、レジスタTCHで示される番号
のチャンネルについて強制的に消音処理を行い、図9に
示すフローチャートに戻る。さらに、図9に示すステッ
プSPe19を介して図6に示す処理に進んで、ノート
オンされた音の発音がなされる(ステップSPb3〜S
Pb6参照)。
【0043】一方、図10に示すステップSPf3〜S
Pf11のループにおいて、トランケートチャンネルが
検出されなかった場合は、ステップSPf11、SPf
12を介してステップSP15のトランケート処理2へ
進む。トランケート処理2は、図11に示す処理になっ
ており、ステップSPg4を除いては図10に示すステ
ップSPf1〜SPf11までの処理と同様の処理であ
る。
Pf11のループにおいて、トランケートチャンネルが
検出されなかった場合は、ステップSPf11、SPf
12を介してステップSP15のトランケート処理2へ
進む。トランケート処理2は、図11に示す処理になっ
ており、ステップSPg4を除いては図10に示すステ
ップSPf1〜SPf11までの処理と同様の処理であ
る。
【0044】図11に示すステップSPg4は、図10
に示すステップSPf4に対して「YES」、「NO」
の分岐が逆になっている。すなわち、ステップSPg4
は、当該チャンネルがグループ1の音色で発音している
場合にトランケートを行うようにする処理である。した
がって、図11に示す処理によって、グループ1の音色
で発音を行っているチャンネルのち最もエンベロープの
小さいチャンネルがトランケートチャンネルとして検出
される。
に示すステップSPf4に対して「YES」、「NO」
の分岐が逆になっている。すなわち、ステップSPg4
は、当該チャンネルがグループ1の音色で発音している
場合にトランケートを行うようにする処理である。した
がって、図11に示す処理によって、グループ1の音色
で発音を行っているチャンネルのち最もエンベロープの
小さいチャンネルがトランケートチャンネルとして検出
される。
【0045】図11の処理の後は、図10に示すステッ
プSPf16に進み、フラグFOUNDが1か否かが判
定され、「YES」であれば、上述の場合と同様に、ス
テップSPf14を介して図9に示すフローチャートに
戻り、さらに、図9に示すステップSPe19を介して
図6に示す処理に進んでノートオンされた音の発音がな
される(ステップSPb3〜SPb6参照)。一方、ス
テップSPf16で「NO」と判定された場合、すなわ
ち、トランケートチャンネルが検出されなかった場合
は、図9に示すルーチンを介して図6に示すルーチンに
リターンしてもステップSPb3において「NO」と判
断されるため、ステップSPb4〜SPb6の発音処理
は行われない。
プSPf16に進み、フラグFOUNDが1か否かが判
定され、「YES」であれば、上述の場合と同様に、ス
テップSPf14を介して図9に示すフローチャートに
戻り、さらに、図9に示すステップSPe19を介して
図6に示す処理に進んでノートオンされた音の発音がな
される(ステップSPb3〜SPb6参照)。一方、ス
テップSPf16で「NO」と判定された場合、すなわ
ち、トランケートチャンネルが検出されなかった場合
は、図9に示すルーチンを介して図6に示すルーチンに
リターンしてもステップSPb3において「NO」と判
断されるため、ステップSPb4〜SPb6の発音処理
は行われない。
【0046】C:第1実施例の動作の総括 以上のようにして、発音割当に際しては、グループ1の
音色を優先的に割当、また、同様にトランーケートに際
してもグループ1の音をなるべく残すようしている。し
たがって、音楽的に重要な音や重なりの多い音をグルー
プ1に割り当ておけば、不自然さのない再生楽音が得ら
れる。
音色を優先的に割当、また、同様にトランーケートに際
してもグループ1の音をなるべく残すようしている。し
たがって、音楽的に重要な音や重なりの多い音をグルー
プ1に割り当ておけば、不自然さのない再生楽音が得ら
れる。
【0047】D:第2の実施例の構成 次に、この発明の第2の実施例について説明する。図1
2は、第2の実施例の構成を示すブロック図である。な
お、この図において前述した図1と対応する部分には同
一の符号を付してその説明を省略する。この図に示す構
成が前述した実施例と異なる部分は、シーケンサ30お
よび記憶媒体31が設けられている点である。記憶媒体
31は、例えば、フロッピーディスクなどであり、楽曲
の進行に従った楽音情報が記憶されている。シーケンサ
30は、記憶媒体31内の楽音情報を読み出し、これに
応じて自動演奏の制御を行う。
2は、第2の実施例の構成を示すブロック図である。な
お、この図において前述した図1と対応する部分には同
一の符号を付してその説明を省略する。この図に示す構
成が前述した実施例と異なる部分は、シーケンサ30お
よび記憶媒体31が設けられている点である。記憶媒体
31は、例えば、フロッピーディスクなどであり、楽曲
の進行に従った楽音情報が記憶されている。シーケンサ
30は、記憶媒体31内の楽音情報を読み出し、これに
応じて自動演奏の制御を行う。
【0048】E:第2の実施例の動作 次に、第2の実施例の動作について説明する。 (イ)第1の実施例と共通する動作 前述した図3〜図11に示す処理は、第2の実施例にお
いても同様に行われるので、その説明を省略する。そし
て、以下においては、シーケンサ30の制御に基づくこ
の実施例固有の動作について説明する。
いても同様に行われるので、その説明を省略する。そし
て、以下においては、シーケンサ30の制御に基づくこ
の実施例固有の動作について説明する。
【0049】(ロ)パネル処理 まず、ステップSPh1において操作パネル25にある
各種スイッチの状態をスキャンする。そして、ステップ
SPh2において、パネルイベントがあったか否か、す
なわち、操作パネル上のいずれかのスイッチの状態に変
化があったか否かが判定される。この判定が「NO」の
場合は、なにもせずにリターンし、「YES」の場合
は、ステップSPh3に進んで、シーケンサに関連する
処理の指示であったか否かが判定される。この判定が
「NO」であれば、その他のパネル処理を行い(ステッ
プSPh4)、「YES」であれば、ステップSPh5
のシーケンサ関連処理を行う。
各種スイッチの状態をスキャンする。そして、ステップ
SPh2において、パネルイベントがあったか否か、す
なわち、操作パネル上のいずれかのスイッチの状態に変
化があったか否かが判定される。この判定が「NO」の
場合は、なにもせずにリターンし、「YES」の場合
は、ステップSPh3に進んで、シーケンサに関連する
処理の指示であったか否かが判定される。この判定が
「NO」であれば、その他のパネル処理を行い(ステッ
プSPh4)、「YES」であれば、ステップSPh5
のシーケンサ関連処理を行う。
【0050】(ハ)シーケンサ関連処理 シーケンサ関連処理は、図14に示すようになってお
り、ステップSPi1、SPi2、およびSPi3にお
いて、各々スタートスイッチSTART・SWがオンと
なったか、ストップスイッチSTOP・SWがオンにな
ったか、およびアサインスイッチASSIGN・SWが
オンになったかが判定される。そして、各ステップで
「YES」と判定された場合は、各々スタート処理(ス
テップSPi4)、ストップ処理(ステップSPi5)
および自動アサイン処理(ステップSPi6)に進む。
これらの各処理については、以下において詳述する。ま
た、ステップSPi1〜SPi3のいずれにおいても
「NO」と判定された場合は、ステップSPi7に進
み、その他のシーケンサ関連処理(例えば、シーケンサ
にデータを入力する等の処理)を行う。
り、ステップSPi1、SPi2、およびSPi3にお
いて、各々スタートスイッチSTART・SWがオンと
なったか、ストップスイッチSTOP・SWがオンにな
ったか、およびアサインスイッチASSIGN・SWが
オンになったかが判定される。そして、各ステップで
「YES」と判定された場合は、各々スタート処理(ス
テップSPi4)、ストップ処理(ステップSPi5)
および自動アサイン処理(ステップSPi6)に進む。
これらの各処理については、以下において詳述する。ま
た、ステップSPi1〜SPi3のいずれにおいても
「NO」と判定された場合は、ステップSPi7に進
み、その他のシーケンサ関連処理(例えば、シーケンサ
にデータを入力する等の処理)を行う。
【0051】(i)スタート処理 図15は、スタート処理の内容を示すフローチャートで
ある。このスタート処理は、自動演奏のための初期設定
を行う処理である。図に示すステップSPj1において
は、フラグRUNが1か否かが判定される。フラグRU
Nは、シーケンサ30による自動演奏処理が走っている
ときに「1」が設定されるフラグである。この判定が
「NO」の場合はステップSPj2においてフラグRU
Nをセットし、「YES」の場合は何もせずリターンす
る。このステップSPj1の処理は、例えスタートスイ
ッチSTART・SWが2度以上操作されてもスタート
処理が2度実行されるのを防止するための処理である。
ある。このスタート処理は、自動演奏のための初期設定
を行う処理である。図に示すステップSPj1において
は、フラグRUNが1か否かが判定される。フラグRU
Nは、シーケンサ30による自動演奏処理が走っている
ときに「1」が設定されるフラグである。この判定が
「NO」の場合はステップSPj2においてフラグRU
Nをセットし、「YES」の場合は何もせずリターンす
る。このステップSPj1の処理は、例えスタートスイ
ッチSTART・SWが2度以上操作されてもスタート
処理が2度実行されるのを防止するための処理である。
【0052】次に、ステップSPj3においては、シー
ケンサのトラックを指定するためのレジスタTRを0に
する。この実施例においては、シーケンサのトラックは
5個設定されており、各トラックがMIDIチャンネル
の0〜4に対応している。次に、ステップSPj4に進
むと、レジスタRP(TR)に0を書き込む。レジスタ
RPは、各トラック毎に設けられ、対応するトラックの
読み出し位置を示す。各レジスタRP(TR)は、自動
演奏開始時には0に設定し、各トラックの先頭のデータ
から読み出しが行われるようにする必要があるため、ス
テップSPj4においてリセットを行っている。次に、
ステップSPj5においては、イベントとイベントとの
間(楽音情報の時間的間隔)をカウントするカウンタC
OUNT(TR)をリセットする。この実施例において
は、イベント読み出し方式を採っているため、イベント
の間隔は各トラック毎にカウントする必要があり、した
がって、カウンタCOUNTは、各トラック毎に設けら
れている。
ケンサのトラックを指定するためのレジスタTRを0に
する。この実施例においては、シーケンサのトラックは
5個設定されており、各トラックがMIDIチャンネル
の0〜4に対応している。次に、ステップSPj4に進
むと、レジスタRP(TR)に0を書き込む。レジスタ
RPは、各トラック毎に設けられ、対応するトラックの
読み出し位置を示す。各レジスタRP(TR)は、自動
演奏開始時には0に設定し、各トラックの先頭のデータ
から読み出しが行われるようにする必要があるため、ス
テップSPj4においてリセットを行っている。次に、
ステップSPj5においては、イベントとイベントとの
間(楽音情報の時間的間隔)をカウントするカウンタC
OUNT(TR)をリセットする。この実施例において
は、イベント読み出し方式を採っているため、イベント
の間隔は各トラック毎にカウントする必要があり、した
がって、カウンタCOUNTは、各トラック毎に設けら
れている。
【0053】次に、ステップSPj6、SPj7に移
り、、レジスタTRの値を1インクリメントし、全ての
トラックについて処理されたか否かを判定する。ステッ
プSPj7において「NO」と判定された場合は、ステ
ップSPj4に戻り、全てのトラックについての処理が
終了するまで上述した処理を繰り返す。上述のようにし
て、0〜4トラックについての初期設定処理が終了する
と、ステップSPj7の判定が「YES」となり、ステ
ップSPj8に進んで割込イネーブル処理を行う。シー
ケンサの動作は、タイマによる割り込みによって歩進す
るようになっており、このため、ステップSPj8の処
理がされると、シーケンサの動作が開始される。
り、、レジスタTRの値を1インクリメントし、全ての
トラックについて処理されたか否かを判定する。ステッ
プSPj7において「NO」と判定された場合は、ステ
ップSPj4に戻り、全てのトラックについての処理が
終了するまで上述した処理を繰り返す。上述のようにし
て、0〜4トラックについての初期設定処理が終了する
と、ステップSPj7の判定が「YES」となり、ステ
ップSPj8に進んで割込イネーブル処理を行う。シー
ケンサの動作は、タイマによる割り込みによって歩進す
るようになっており、このため、ステップSPj8の処
理がされると、シーケンサの動作が開始される。
【0054】また、上述した各カウンタCOUNTに
は、イベントが読み出される際に次のイベントまでの間
隔を示すデータがロードされ、割込処理が発生する毎に
ダウンカウントされるようになっている。そして、カウ
ント値が0になると、次のイベントが読み出される(詳
細は後述する)。
は、イベントが読み出される際に次のイベントまでの間
隔を示すデータがロードされ、割込処理が発生する毎に
ダウンカウントされるようになっている。そして、カウ
ント値が0になると、次のイベントが読み出される(詳
細は後述する)。
【0055】(ii)ストップ処理 図16は、ストップ処理の内容を示すフローチャートで
ある。この処理は、自動演奏を終了させるための処理で
ある。まず、ステップSPk1においては、フラグRU
Nが1か否かが判定される。この判定が「YES」の場
合は、割り込みを禁止した後、フラグRUNをリセット
し(ステップSPk2、SPk3)、「NO」の場合は
何もせずリターンする。ステップSPk1の処理は、ス
トップスイッチSTOP・SWを重複して受け付けるこ
とを防止するための処理である。また、ステップSPk
2の処理は割り込みを禁止して、シーケンサ30の動作
を停止させる処理である。
ある。この処理は、自動演奏を終了させるための処理で
ある。まず、ステップSPk1においては、フラグRU
Nが1か否かが判定される。この判定が「YES」の場
合は、割り込みを禁止した後、フラグRUNをリセット
し(ステップSPk2、SPk3)、「NO」の場合は
何もせずリターンする。ステップSPk1の処理は、ス
トップスイッチSTOP・SWを重複して受け付けるこ
とを防止するための処理である。また、ステップSPk
2の処理は割り込みを禁止して、シーケンサ30の動作
を停止させる処理である。
【0056】次に、ステップSPk5〜SPk7の処理
によって、発音中のチャンネルについては、レジスタS
T(CH)の内容を消音を示す「2」に書き換えて消音
を示し、当該チャンネルにノートオフ情報を出力して発
音を停止させる。ステップSPk4、SPk8、SPk
9の処理は、上述した消音処理を全チャンネルについて
行わせるためのものである。
によって、発音中のチャンネルについては、レジスタS
T(CH)の内容を消音を示す「2」に書き換えて消音
を示し、当該チャンネルにノートオフ情報を出力して発
音を停止させる。ステップSPk4、SPk8、SPk
9の処理は、上述した消音処理を全チャンネルについて
行わせるためのものである。
【0057】(iii)割込処理 図17は、割込処理を示すフローチャートである。割込
処理は、タイマがインタラプト信号を送出する毎に起動
されるルーチンであり、シーケンサ30の各トラックに
ついて行われる。ステップSPm1においては、トラッ
クをカウントするためのレジスタITRをクリアする。
そして、カウンタCOUNT(ITR)の値を1デクリ
メントし、カウント値が0になったか否かが判定される
(ステップSPm2,SPm3)。ステップSPm3の
判定が「YES」の場合は、ステップSPm4において
イベントデータの読み出しを行い、「NO」の場合は、
まだ次のイベントを読み出すタイミングに達していない
ので、レジスタITRをインクリメントしてステップS
Pm2に戻る。
処理は、タイマがインタラプト信号を送出する毎に起動
されるルーチンであり、シーケンサ30の各トラックに
ついて行われる。ステップSPm1においては、トラッ
クをカウントするためのレジスタITRをクリアする。
そして、カウンタCOUNT(ITR)の値を1デクリ
メントし、カウント値が0になったか否かが判定される
(ステップSPm2,SPm3)。ステップSPm3の
判定が「YES」の場合は、ステップSPm4において
イベントデータの読み出しを行い、「NO」の場合は、
まだ次のイベントを読み出すタイミングに達していない
ので、レジスタITRをインクリメントしてステップS
Pm2に戻る。
【0058】ステップSPm4における読み出し処理
は、シーケンサ30のITR番目のトラックからデータ
バイト(楽音情報)およびデュレイションバイト(次の
イベントまでの間隔データ)を読み出すことによって行
われる。そして、読み出したバイト数に応じ、ポインタ
であるレジスタRP(TR)の内容をインクリメントし
(ステップSPm5)、次いで、読み出したデータがエ
ンドマークか否かを判断する(ステップSPm6)。エ
ンドマークは自動演奏データの終了を示すデータであ
り、自動演奏データの最後のデュレイションバイトに設
けられる。
は、シーケンサ30のITR番目のトラックからデータ
バイト(楽音情報)およびデュレイションバイト(次の
イベントまでの間隔データ)を読み出すことによって行
われる。そして、読み出したバイト数に応じ、ポインタ
であるレジスタRP(TR)の内容をインクリメントし
(ステップSPm5)、次いで、読み出したデータがエ
ンドマークか否かを判断する(ステップSPm6)。エ
ンドマークは自動演奏データの終了を示すデータであ
り、自動演奏データの最後のデュレイションバイトに設
けられる。
【0059】ステップSPm6の判定が「YES」であ
れば、自動演奏を終了させる必要があるため、タイマ割
込を禁止状態にするとともに、フラグRUNをリセット
する(ステップSPm8,9)。一方、ステップSPm
6で「NO」と判定された場合は、デュレイションバイ
トの値に応じてカウンタCOUNT(ITR)の値をセ
ットする。ステップSPm9またはSPm7の処理の後
は、ステップSPm10に進み、データバイト(楽音情
報)をMIDI信号に変換して、ITR番のMIDIチ
ャンネル信号としてMIDIバッファに出力する。そし
て、レジスタITRをインクリメントし、0番〜4番ま
でのトラック全てに対する処理が終了したか否かを判断
し、「NO」であれば上記処理を繰り返し、「YES」
であればリターンする。
れば、自動演奏を終了させる必要があるため、タイマ割
込を禁止状態にするとともに、フラグRUNをリセット
する(ステップSPm8,9)。一方、ステップSPm
6で「NO」と判定された場合は、デュレイションバイ
トの値に応じてカウンタCOUNT(ITR)の値をセ
ットする。ステップSPm9またはSPm7の処理の後
は、ステップSPm10に進み、データバイト(楽音情
報)をMIDI信号に変換して、ITR番のMIDIチ
ャンネル信号としてMIDIバッファに出力する。そし
て、レジスタITRをインクリメントし、0番〜4番ま
でのトラック全てに対する処理が終了したか否かを判断
し、「NO」であれば上記処理を繰り返し、「YES」
であればリターンする。
【0060】(iv)自動アサイン処理 次に、自動アサイン処理について図18を参照して説明
する。この処理は、前述した図2のテーブルを自動的に
作成する処理である。また、自動アサイン処理は、図1
8に示すルーチンと、図19、図23、および図24に
各々示す疑似MIDI処理、疑似減衰処理およびチャン
ネル分配処理から構成される。まず、図18のステップ
SPn1においては、フラグRUNが「1」か否かが判
断され、「YES」であればなにもせずにリターンす
る。すなわち、自動演奏中は自動アサイン処理を禁止し
ている。これは、自動演奏が起動されている最中に自動
アサイン処理を行うと、各バッファBUF0−1,0−
2〜BUF7−1,7−2に転送される音色データが変
動し、動作に問題が生じる場合があるためである。
する。この処理は、前述した図2のテーブルを自動的に
作成する処理である。また、自動アサイン処理は、図1
8に示すルーチンと、図19、図23、および図24に
各々示す疑似MIDI処理、疑似減衰処理およびチャン
ネル分配処理から構成される。まず、図18のステップ
SPn1においては、フラグRUNが「1」か否かが判
断され、「YES」であればなにもせずにリターンす
る。すなわち、自動演奏中は自動アサイン処理を禁止し
ている。これは、自動演奏が起動されている最中に自動
アサイン処理を行うと、各バッファBUF0−1,0−
2〜BUF7−1,7−2に転送される音色データが変
動し、動作に問題が生じる場合があるためである。
【0061】次に、トラックをカウントするためのレジ
スタTRをクリアした後、所定のレジスタ等をクリアす
る(ステップSPn2、SPn3)。ステップSPn3
において、クリアされるレジスタのうちレジスタSN
(TR)は各トラックにおいて同時に発音される音の数
を記憶するレジスタである。すなわち、以下のステップ
において各トラックの楽音情報を順次読み取ってゆく
が、この際、各時点における当時発音数がレジスタSN
(TR)に書き込まれる。また、レジスタSNMAX
(TR)は、レジスタSN(TR)に書き込まれた値の
うちの最大のものを記憶するレジスタである。なお、レ
ジスタRPおよびカウンタCOUNTERにつては、上
述した通りである。
スタTRをクリアした後、所定のレジスタ等をクリアす
る(ステップSPn2、SPn3)。ステップSPn3
において、クリアされるレジスタのうちレジスタSN
(TR)は各トラックにおいて同時に発音される音の数
を記憶するレジスタである。すなわち、以下のステップ
において各トラックの楽音情報を順次読み取ってゆく
が、この際、各時点における当時発音数がレジスタSN
(TR)に書き込まれる。また、レジスタSNMAX
(TR)は、レジスタSN(TR)に書き込まれた値の
うちの最大のものを記憶するレジスタである。なお、レ
ジスタRPおよびカウンタCOUNTERにつては、上
述した通りである。
【0062】次に、ステップSPn4に進んでカウンタ
COUNTER(TR)の値を1デクリメントし、その
後にカウンタCOUNTER(TR)の値が「0」であ
るか否かが判断される。この判定が「NO」の場合は、
イベントデータの読み出しを行わないので直ちにステッ
プSPn10に進み、「YES」の場合は、ステップS
Pn6に進んでデータバイトとデュレイションバイトを
読み出し、デュレイションバイトのデータについてはC
OUNTER(TR)にセットする。そして、読み出し
たバイト数分だけレジスタRP(TR)の値をインクリ
メントし、次いで、読み出したデータがエンドマークか
否かを判定する。この判定が「YES」であれば、その
トラックについては全ての楽音情報を読み出したことに
なるので、ステップSPn12に進んで、トラック番号
をインクリメントし、ステップSPn3を介してステッ
プSPn4に戻る。ステップSPn13は、全てのトラ
ックについての処理が終了したか否かを判定する処理で
あり、この判定が「YES」になると、ステップSPn
14のチャンネル分配処理を行ってリターンする。
COUNTER(TR)の値を1デクリメントし、その
後にカウンタCOUNTER(TR)の値が「0」であ
るか否かが判断される。この判定が「NO」の場合は、
イベントデータの読み出しを行わないので直ちにステッ
プSPn10に進み、「YES」の場合は、ステップS
Pn6に進んでデータバイトとデュレイションバイトを
読み出し、デュレイションバイトのデータについてはC
OUNTER(TR)にセットする。そして、読み出し
たバイト数分だけレジスタRP(TR)の値をインクリ
メントし、次いで、読み出したデータがエンドマークか
否かを判定する。この判定が「YES」であれば、その
トラックについては全ての楽音情報を読み出したことに
なるので、ステップSPn12に進んで、トラック番号
をインクリメントし、ステップSPn3を介してステッ
プSPn4に戻る。ステップSPn13は、全てのトラ
ックについての処理が終了したか否かを判定する処理で
あり、この判定が「YES」になると、ステップSPn
14のチャンネル分配処理を行ってリターンする。
【0063】一方、読み出したデータがエンドマークで
ない場合は、ステップSPn9に進み、データバイト
(イベントデータ)をMIDI信号に変換して、ITR
番のMIDIチャンネル信号として疑似MIDIバッフ
ァに出力する。疑似MIDIバッファは、RAM21内
に設定されているバッファであり、ステップSPn9の
処理によって転送されたMIDI信号を記憶する。そし
て、疑似MIDI処理および疑似減衰処理を行った後
(ステップSPn10、SPn11)、ステップSPn
4に戻る。
ない場合は、ステップSPn9に進み、データバイト
(イベントデータ)をMIDI信号に変換して、ITR
番のMIDIチャンネル信号として疑似MIDIバッフ
ァに出力する。疑似MIDIバッファは、RAM21内
に設定されているバッファであり、ステップSPn9の
処理によって転送されたMIDI信号を記憶する。そし
て、疑似MIDI処理および疑似減衰処理を行った後
(ステップSPn10、SPn11)、ステップSPn
4に戻る。
【0064】疑似MIDI処理 次に、疑似MIDI処理について、図19を参照して説
明する。このサブルーチンは、疑似的にMIDI処理を
行うものである。処理内容は第1の実施例において説明
した図5に示す処理と同様であり、図19に示すステッ
プSPo1〜SPo6が図5に示すステップSPa1〜
SPa6に対応する。ただし、疑似MIDIバッファを
スキャンする点、およびノートオン処理、ノートオフ処
理が疑似的に行われる点が異なっている。
明する。このサブルーチンは、疑似的にMIDI処理を
行うものである。処理内容は第1の実施例において説明
した図5に示す処理と同様であり、図19に示すステッ
プSPo1〜SPo6が図5に示すステップSPa1〜
SPa6に対応する。ただし、疑似MIDIバッファを
スキャンする点、およびノートオン処理、ノートオフ処
理が疑似的に行われる点が異なっている。
【0065】疑似ノートオン処理(ステップSPo5)
は、図20に示すステップにより構成されており、前述
したノートオン処理(図6参照)とほぼ同様になってい
る。すなわち、図20に示すステップSPq1〜SPq
6が図6に示すステップSPb1〜SPb6に対応す
る。ただし、以下のように若干の相違がある。まず、ス
テップSPq1においては、レジスタMCHにレジスタ
TR内のトラック番号が入力される。この場合のトラッ
ク番号は、図19に示す処理においてイベントが検出さ
れたトラックの番号である。また、トラック番号0〜4
は、前述のようにMIDIチャンネルの0〜4に対応し
ている。
は、図20に示すステップにより構成されており、前述
したノートオン処理(図6参照)とほぼ同様になってい
る。すなわち、図20に示すステップSPq1〜SPq
6が図6に示すステップSPb1〜SPb6に対応す
る。ただし、以下のように若干の相違がある。まず、ス
テップSPq1においては、レジスタMCHにレジスタ
TR内のトラック番号が入力される。この場合のトラッ
ク番号は、図19に示す処理においてイベントが検出さ
れたトラックの番号である。また、トラック番号0〜4
は、前述のようにMIDIチャンネルの0〜4に対応し
ている。
【0066】次に、ステップSPq2の疑似チャンネル
割当処理は、図21に示すステップにより構成されてお
り、疑似的に空きチャンネルを検出する。まず、チャン
ネルスキャン用のレジスタCHおよびフラグFOUND
をクリアし(ステップSPr1、SPr2)、当該チャ
ンネルが空きチャンネルか否か、すなわち、レジスタS
T(CH)が0か否かを判断する(ステップSPr
3)。この判定が「YES」の場合は、フラグFOUN
Dを「1」にし、レジスタATCに当該チャンネルの番
号を転送してリターンする(ステップSPr4,SPr
5)。一方、ステップSPr3の判定が「NO」の場合
は、チャンネル番号をインクリメントし、ステップSP
r7を介してステップSPr3に戻る。ステップSPr
7は、最終チャンネルまでスキャンしたか否かを判定す
る処理であり、「YES」になればリターンする。
割当処理は、図21に示すステップにより構成されてお
り、疑似的に空きチャンネルを検出する。まず、チャン
ネルスキャン用のレジスタCHおよびフラグFOUND
をクリアし(ステップSPr1、SPr2)、当該チャ
ンネルが空きチャンネルか否か、すなわち、レジスタS
T(CH)が0か否かを判断する(ステップSPr
3)。この判定が「YES」の場合は、フラグFOUN
Dを「1」にし、レジスタATCに当該チャンネルの番
号を転送してリターンする(ステップSPr4,SPr
5)。一方、ステップSPr3の判定が「NO」の場合
は、チャンネル番号をインクリメントし、ステップSP
r7を介してステップSPr3に戻る。ステップSPr
7は、最終チャンネルまでスキャンしたか否かを判定す
る処理であり、「YES」になればリターンする。
【0067】上述した疑似チャンネル割当処理は、疑似
的に簡易にチャンネルを割り当て、同時に発音するチャ
ンネルが幾つあるかを探す処理であるので、トランケー
ト処理等は行わず、現時点で空いているチャンネルが見
つからなければ、空きチャンネル無しとしてフラグFO
UNDを「0」のままにする。そして、フラグFOUN
Dが「1」か否かによって図20に示すステップSPq
3の判定が異なり、「0」の場合は何もせずに図19の
サブルーチンにリターンする。一方、フラグFOUND
が「1」の場合は、ステップSPq4,SPq5(各々
図5のステップSPa3,SPa4に対応)の処理の
後、ステップSPq6の処理を行う。
的に簡易にチャンネルを割り当て、同時に発音するチャ
ンネルが幾つあるかを探す処理であるので、トランケー
ト処理等は行わず、現時点で空いているチャンネルが見
つからなければ、空きチャンネル無しとしてフラグFO
UNDを「0」のままにする。そして、フラグFOUN
Dが「1」か否かによって図20に示すステップSPq
3の判定が異なり、「0」の場合は何もせずに図19の
サブルーチンにリターンする。一方、フラグFOUND
が「1」の場合は、ステップSPq4,SPq5(各々
図5のステップSPa3,SPa4に対応)の処理の
後、ステップSPq6の処理を行う。
【0068】ステップSPq6においては、レジスタA
TC(MCH)内のトーンコード、レジスタNV内のノ
ートベロシティおよびレジスタNC内のノートコードに
応じて、レジスタENV(ACH)の値を設定する。こ
のレジスタENV(ACH)は、仮想的なエンベロープ
の値が格納されるレジスタであり、このステップにおい
てはエンベロープの初期値が格納される。また、その値
は主にノートベロシティによって決定される。
TC(MCH)内のトーンコード、レジスタNV内のノ
ートベロシティおよびレジスタNC内のノートコードに
応じて、レジスタENV(ACH)の値を設定する。こ
のレジスタENV(ACH)は、仮想的なエンベロープ
の値が格納されるレジスタであり、このステップにおい
てはエンベロープの初期値が格納される。また、その値
は主にノートベロシティによって決定される。
【0069】一方、図19のステップSPo6に示す疑
似ノートオフ処理は、図22に示す各ステップから構成
されている。まず、ステップSPt1において、スキャ
ン中のトラックの番号をレジスタMCHに書き込み、次
いで、ステップSPt2においてレジスタCHをクリア
する。そして、ステップSPt3において発音中か否か
の判断を行い、「NO」であれば、何もせずにチャンネ
ル番号をインクリメントしてステップSPt7を介して
ステップSPt3に戻る。一方、ステップSPt4の判
定が「YES」の場合は、ステップSPt5に進んで、
レジスタST(CH)の内容を「2」にし、消音状態で
あることを示す。この処理の後は、リターンし、疑似減
衰処理(図18のステップSPn11)を行う。
似ノートオフ処理は、図22に示す各ステップから構成
されている。まず、ステップSPt1において、スキャ
ン中のトラックの番号をレジスタMCHに書き込み、次
いで、ステップSPt2においてレジスタCHをクリア
する。そして、ステップSPt3において発音中か否か
の判断を行い、「NO」であれば、何もせずにチャンネ
ル番号をインクリメントしてステップSPt7を介して
ステップSPt3に戻る。一方、ステップSPt4の判
定が「YES」の場合は、ステップSPt5に進んで、
レジスタST(CH)の内容を「2」にし、消音状態で
あることを示す。この処理の後は、リターンし、疑似減
衰処理(図18のステップSPn11)を行う。
【0070】また、ステップSPt7は、全てのチャン
ネルについてスキャンしたか否かを判定する処理であ
り、全チャンネルが発音中である場合には、この判定が
「YES」となってリターンする。以上が疑似MIDI
処理であり、この処理の後には図18に示すステップS
Pn11に進んで疑似減衰処理を行う。
ネルについてスキャンしたか否かを判定する処理であ
り、全チャンネルが発音中である場合には、この判定が
「YES」となってリターンする。以上が疑似MIDI
処理であり、この処理の後には図18に示すステップS
Pn11に進んで疑似減衰処理を行う。
【0071】疑似減衰処理 図23は、疑似減衰処理を示すフローチャートである。
この処理は、各トラックにおける同時発音数を検出する
処理である。まず、レジスタCHをクリアするととも
に、同時発音数をカウントするためのレジスタSN(T
R)をクリアする(ステップSPu1、SPu2)。そ
して、ステップSPu3に進んで、当該チャンネルが空
き状態か否かが判定され、「YES」であれば、何も処
理せずにチャンネル番号をインクリメントし、ステップ
SPu14を介してステップSPu3に戻る。
この処理は、各トラックにおける同時発音数を検出する
処理である。まず、レジスタCHをクリアするととも
に、同時発音数をカウントするためのレジスタSN(T
R)をクリアする(ステップSPu1、SPu2)。そ
して、ステップSPu3に進んで、当該チャンネルが空
き状態か否かが判定され、「YES」であれば、何も処
理せずにチャンネル番号をインクリメントし、ステップ
SPu14を介してステップSPu3に戻る。
【0072】一方、ステップSPu3の判定が「NO」
の場合は、ステップSPu4に進んで当該チャンネルが
ノートオン状態か否かが判定され、「YES」であれ
ば、ステップSPu5,SPu6に進んで、減衰レート
DR1を用いたエンベロープ減衰処理を行い、「NO」
(すなわち、ノートオフ状態)と判定された場合は、ス
テップSPu7,SPu8に進んで、減衰レートDR2
を用いたエンベロープ減衰処理を行う。
の場合は、ステップSPu4に進んで当該チャンネルが
ノートオン状態か否かが判定され、「YES」であれ
ば、ステップSPu5,SPu6に進んで、減衰レート
DR1を用いたエンベロープ減衰処理を行い、「NO」
(すなわち、ノートオフ状態)と判定された場合は、ス
テップSPu7,SPu8に進んで、減衰レートDR2
を用いたエンベロープ減衰処理を行う。
【0073】ここで、図25はエンベロープパターンの
例であり、同図(a)は持続音系の場合(例えば、オル
ガンなど)を示し、同図(b)は減衰音系の場合(例え
ば、ピアノなど)を示している。これらのエンベロープ
パターンにおいて、期間T1がノートオン期間状態、期
間T2がノートオフ期間であり、減衰レートDR1およ
びDR2は各々期間T1およびT2の減衰レートであ
る。なお、同図(a)に示す持続音系の期間T1のエン
ベロープは一定であり、減衰レートDR1は値0になっ
ている。
例であり、同図(a)は持続音系の場合(例えば、オル
ガンなど)を示し、同図(b)は減衰音系の場合(例え
ば、ピアノなど)を示している。これらのエンベロープ
パターンにおいて、期間T1がノートオン期間状態、期
間T2がノートオフ期間であり、減衰レートDR1およ
びDR2は各々期間T1およびT2の減衰レートであ
る。なお、同図(a)に示す持続音系の期間T1のエン
ベロープは一定であり、減衰レートDR1は値0になっ
ている。
【0074】上記エンベロープパターンは、音色毎に多
数設定されており、トーンコードに応じたパターンが選
択されるようになっている。すなわち、トーンコードに
応じた値の減衰レートDR1,DR2が選択されるよう
になっている。
数設定されており、トーンコードに応じたパターンが選
択されるようになっている。すなわち、トーンコードに
応じた値の減衰レートDR1,DR2が選択されるよう
になっている。
【0075】さて、ステップSPu5においては、減衰
レートDR1をレジスタANC(CH)内のノートコー
ドでスケーリングし、その結果を減衰レートDR1’と
する。これは、音高によって減衰レートを異ならせてい
るためである。そして、ステップSPu6においては、
エンベロープ値が書き込まれているレジスタENV(C
H)の内容から減衰レートDR1’を減算し、その結果
を再度レジスタENV(CH)に格納する。すなわち、
エンベロープの値を減衰レートDR1’分小さくする。
また、ステップSPu7、SPu8も上記と同様の処理
であり、各々ステップSPu5、SPu6に対応する。
レートDR1をレジスタANC(CH)内のノートコー
ドでスケーリングし、その結果を減衰レートDR1’と
する。これは、音高によって減衰レートを異ならせてい
るためである。そして、ステップSPu6においては、
エンベロープ値が書き込まれているレジスタENV(C
H)の内容から減衰レートDR1’を減算し、その結果
を再度レジスタENV(CH)に格納する。すなわち、
エンベロープの値を減衰レートDR1’分小さくする。
また、ステップSPu7、SPu8も上記と同様の処理
であり、各々ステップSPu5、SPu6に対応する。
【0076】次に、ステップSPu9に進み、エンベロ
ープ値が0またはそれ以下になったか否かが判定され、
「NO」であれば、レジスタSN(TR)の内容を1イ
ンクリメントする(ステップSPu10)。これは、エ
ンベロープ値が0でないということは、そのチャンネル
の音が未だ消音していないということであり、したがっ
て、同時発音数を記憶するレジスタの内容をインクリメ
ントする必要があるからである。
ープ値が0またはそれ以下になったか否かが判定され、
「NO」であれば、レジスタSN(TR)の内容を1イ
ンクリメントする(ステップSPu10)。これは、エ
ンベロープ値が0でないということは、そのチャンネル
の音が未だ消音していないということであり、したがっ
て、同時発音数を記憶するレジスタの内容をインクリメ
ントする必要があるからである。
【0077】一方、ステップSPu9で「YES」と判
定された場合は、当該チャンネルが消音した場合である
ので、状態を示すレジスタST(CH)の内容を「0」
にして空きチャンネルであることを示し、さらに、レジ
スタANC(CH)の内容をクリアする(ステップSP
u11、SPu12)。そして、ステップSPu12ま
たはSPu10の後は、ステップSPu13においてチ
ャンネル番号をインクリメントし、ステップSPu14
を介してステップSPu3に戻る。
定された場合は、当該チャンネルが消音した場合である
ので、状態を示すレジスタST(CH)の内容を「0」
にして空きチャンネルであることを示し、さらに、レジ
スタANC(CH)の内容をクリアする(ステップSP
u11、SPu12)。そして、ステップSPu12ま
たはSPu10の後は、ステップSPu13においてチ
ャンネル番号をインクリメントし、ステップSPu14
を介してステップSPu3に戻る。
【0078】ステップSPu14は、全てのチャンネル
のスキャンが終了したか否かを判定する処理であり、こ
の判定が「YES」の場合はステップSPu15に進
み、同時発音数の最大値が、今回のスキャンによって検
出された同時発音数が、今までに検出された同時発音数
の最大値より大きいか否かが判定され、「YES」であ
れば、最大同時発音数を記憶するレジスタSNMAX
(TR)の内容をレジスタSN(TR)の内容に書き換
えてリターンし、図18のステップSPn4に戻る。一
方、ステップSPu15の判定が「NO」であれば、上
記書き換えは行わずにリターンする。以後は、上述の処
理が繰り返され、これにより、レジスタSNMAX(T
R)には、シーケンサの各トラックについての最大同時
発音数が書き込まれる。
のスキャンが終了したか否かを判定する処理であり、こ
の判定が「YES」の場合はステップSPu15に進
み、同時発音数の最大値が、今回のスキャンによって検
出された同時発音数が、今までに検出された同時発音数
の最大値より大きいか否かが判定され、「YES」であ
れば、最大同時発音数を記憶するレジスタSNMAX
(TR)の内容をレジスタSN(TR)の内容に書き換
えてリターンし、図18のステップSPn4に戻る。一
方、ステップSPu15の判定が「NO」であれば、上
記書き換えは行わずにリターンする。以後は、上述の処
理が繰り返され、これにより、レジスタSNMAX(T
R)には、シーケンサの各トラックについての最大同時
発音数が書き込まれる。
【0079】チャンネル分配処理 以上の処理が全てのトラックについて行われると、図1
8に示すステップSPn13の判定が「YES」にな
り、ステップSPu14のチャンネル配分処理が行われ
る。チャンネル配分処理は、図24に示すステップから
成っており、まず、ステップSPv1において、各トラ
ック最大同時発音数(すなわち、レジスタSNMAX
(TR)の内容)に応じ、バッファBUF0−1〜BU
F7−1にデータを転送する。この実施例の場合、転送
されるデータは、トーンジェネレータで用いられるマイ
クロプログラムである。
8に示すステップSPn13の判定が「YES」にな
り、ステップSPu14のチャンネル配分処理が行われ
る。チャンネル配分処理は、図24に示すステップから
成っており、まず、ステップSPv1において、各トラ
ック最大同時発音数(すなわち、レジスタSNMAX
(TR)の内容)に応じ、バッファBUF0−1〜BU
F7−1にデータを転送する。この実施例の場合、転送
されるデータは、トーンジェネレータで用いられるマイ
クロプログラムである。
【0080】また、分配の方法は、予め定めた配分規則
に基づいて行われる。規則としては、同時発音数の多い
ものや、重要度の高い楽器を優先する方法がある。例え
ば、ピアノの音が最大8音同時発音、ストリングス音が
最大6音同時発音、また、ブラス音およびベース音が各
々1音のみの場合は、バッファBUF0−1〜BUF3
−1にピアノ音のデータ、バッファBUF4−1〜BU
F6−1にストリングス音のデータ、BUF7−1にベ
ース音のデータを各々転送する。さらに、ステップSP
v1においては、各バッファに書き込んだデータの内容
に応じて、図2に示す音色アサインバッファ23のグル
ープ1の内容を書き換え、また、レジスタATC1(C
H)に各音色番号を設定する。
に基づいて行われる。規則としては、同時発音数の多い
ものや、重要度の高い楽器を優先する方法がある。例え
ば、ピアノの音が最大8音同時発音、ストリングス音が
最大6音同時発音、また、ブラス音およびベース音が各
々1音のみの場合は、バッファBUF0−1〜BUF3
−1にピアノ音のデータ、バッファBUF4−1〜BU
F6−1にストリングス音のデータ、BUF7−1にベ
ース音のデータを各々転送する。さらに、ステップSP
v1においては、各バッファに書き込んだデータの内容
に応じて、図2に示す音色アサインバッファ23のグル
ープ1の内容を書き換え、また、レジスタATC1(C
H)に各音色番号を設定する。
【0081】次に、ステップSPv2に進み、上述のグ
ループ1に割り当てられた数と、各トラックの最大同時
発音数との差が大きいものを優先してグループ2のバッ
ファに割り当てる。例えば、上記の例で言えば、ピアノ
については、8音の中からグループ1に4音割り当てら
れているのでその差は4音であり、ストリングスについ
ては6音の中からグループ1に3音割り当てられている
のでその差は3音である。また、ブラス音については、
割当がなされていないので差は1音である。
ループ1に割り当てられた数と、各トラックの最大同時
発音数との差が大きいものを優先してグループ2のバッ
ファに割り当てる。例えば、上記の例で言えば、ピアノ
については、8音の中からグループ1に4音割り当てら
れているのでその差は4音であり、ストリングスについ
ては6音の中からグループ1に3音割り当てられている
のでその差は3音である。また、ブラス音については、
割当がなされていないので差は1音である。
【0082】このような場合には、バッファBUF0−
2〜BUF3−2にピアノ音のデータ、バッファBUF
4−2〜BUF6−2にストリングス音のデータを各々
転送し、バッファBUF7−2にブラス音のデータを転
送する。さらに、ステップSPv2においては、各バッ
ファに書き込んだデータの内容に応じて、図2に示す音
色アサインバッファ23のグループ2の内容を書き換
え、また、レジスタATC2(CH)に各音色番号を設
定する。
2〜BUF3−2にピアノ音のデータ、バッファBUF
4−2〜BUF6−2にストリングス音のデータを各々
転送し、バッファBUF7−2にブラス音のデータを転
送する。さらに、ステップSPv2においては、各バッ
ファに書き込んだデータの内容に応じて、図2に示す音
色アサインバッファ23のグループ2の内容を書き換
え、また、レジスタATC2(CH)に各音色番号を設
定する。
【0083】ところで、ステップSPv2の処理におい
て、仮にピアノ音の差が5音あったときは、これを優先
して分配するとブラス音の割当がなくなってしまう。そ
こで、このような場合は、ピアノ音の割当を4音にとど
め、ブラス音の割当を確保する。すなわち、鳴らない音
が生じないように分配を調整するように分配規則を設定
する。
て、仮にピアノ音の差が5音あったときは、これを優先
して分配するとブラス音の割当がなくなってしまう。そ
こで、このような場合は、ピアノ音の割当を4音にとど
め、ブラス音の割当を確保する。すなわち、鳴らない音
が生じないように分配を調整するように分配規則を設定
する。
【0084】F:変形例 上述した各実施例においては、音色データを記憶する
ためのバッファをトーンジェネレータ1つに対し2個ず
つ設けたが、これは2個に限らず多数設けるようにして
もよい。例えば、図26に示す例は、バッファを4個ず
つ設けた例であり、グループは1から4まで設定され
る。また、この変形例の場合、トーンジェネレータはT
G0〜TGnまで設けられており、各バッファに転送さ
れる音色データは、音色データメモリ50に100音色
分程度が記憶されている。図26に示す音色データ転送
指示部52は、前述した実施例の音色アサインバッファ
に対応する部分であり、図27にその内容の例を示す。
そして、音色データ転送制御部51が音色データ転送指
示部52の指示を受けると、図27の内容を参照して音
色データメモリ50内の音色データを各バッファに転送
する。また、図26に示す演奏情報入力部53は、例え
ば、キーボードであり、上述の実施例におけるMIDI
信号と同様の信号を出力する。チャンネル割当部54
は、演奏情報入力部53の出力信号(ノードコード等)
を各トーンジェネレータTGに割り当てる。
ためのバッファをトーンジェネレータ1つに対し2個ず
つ設けたが、これは2個に限らず多数設けるようにして
もよい。例えば、図26に示す例は、バッファを4個ず
つ設けた例であり、グループは1から4まで設定され
る。また、この変形例の場合、トーンジェネレータはT
G0〜TGnまで設けられており、各バッファに転送さ
れる音色データは、音色データメモリ50に100音色
分程度が記憶されている。図26に示す音色データ転送
指示部52は、前述した実施例の音色アサインバッファ
に対応する部分であり、図27にその内容の例を示す。
そして、音色データ転送制御部51が音色データ転送指
示部52の指示を受けると、図27の内容を参照して音
色データメモリ50内の音色データを各バッファに転送
する。また、図26に示す演奏情報入力部53は、例え
ば、キーボードであり、上述の実施例におけるMIDI
信号と同様の信号を出力する。チャンネル割当部54
は、演奏情報入力部53の出力信号(ノードコード等)
を各トーンジェネレータTGに割り当てる。
【0085】上記に示した例のようにグループを多
数設ける場合において、番号の小さいグループの音色を
優先的に割り当てるようにしたり、あるいは、グループ
1だけを優先して他のグループは同一の優先順位とする
ような割り当てを行うようにしてもよい。
数設ける場合において、番号の小さいグループの音色を
優先的に割り当てるようにしたり、あるいは、グループ
1だけを優先して他のグループは同一の優先順位とする
ような割り当てを行うようにしてもよい。
【0086】第2の実施例においては、仮想的にシー
ケンサを駆動して各トラックにおける重複発音数を検出
するようにしたが、これに代えて、実際にシーケンサと
楽音合成回路とを駆動して重複発音数を求めるようにし
てもよい。この場合にあっては、より正確に重複発音数
を求めることができる。
ケンサを駆動して各トラックにおける重複発音数を検出
するようにしたが、これに代えて、実際にシーケンサと
楽音合成回路とを駆動して重複発音数を求めるようにし
てもよい。この場合にあっては、より正確に重複発音数
を求めることができる。
【0087】また、上記実施例は、音色データとして
マイクロプログラムを転送する場合の例であったが、本
発明の適用は、これに限らず、音色設定用のパラメータ
等を転送する場合にも有効である。
マイクロプログラムを転送する場合の例であったが、本
発明の適用は、これに限らず、音色設定用のパラメータ
等を転送する場合にも有効である。
【0088】
【発明の効果】以上説明したように、本発明によれば、
バッファの記憶容量を増大させることがなく、しかも、
キーオンに対するレスポンスを極めて良くすることがで
きる。また、請求項2記載の発明によれば、楽音情報に
含まれる音色情報に対応する音色データがバッファに記
憶された発音チャンネルの全てが音色情報が指示する音
色の楽音信号を発生させることができる。また、請求項
3記載の発明によれば、不自然さのない再生音が得られ
る。
バッファの記憶容量を増大させることがなく、しかも、
キーオンに対するレスポンスを極めて良くすることがで
きる。また、請求項2記載の発明によれば、楽音情報に
含まれる音色情報に対応する音色データがバッファに記
憶された発音チャンネルの全てが音色情報が指示する音
色の楽音信号を発生させることができる。また、請求項
3記載の発明によれば、不自然さのない再生音が得られ
る。
【図1】 この発明の第1の実施例の構成を示すブロッ
ク図である。
ク図である。
【図2】 同実施例における音色アサインバッファの内
容を示す概念図である。
容を示す概念図である。
【図3】 同実施例における楽音合成回路15の内部構
成を示すブロック図である。
成を示すブロック図である。
【図4】 同実施例のメインルーチンを示すフローチャ
ートである。
ートである。
【図5】 同実施例におけるMIDI処理を示すフロー
チャートである。
チャートである。
【図6】 同実施例におけるノートオン処理を示すフロ
ーチャートである。
ーチャートである。
【図7】 同実施例におけるノートオフ処理を示すフロ
ーチャートである。
ーチャートである。
【図8】 同実施例における発音チャンネルを示すフロ
ーチャートである。
ーチャートである。
【図9】 同実施例におけるチャンネル割当処理動作を
示すフローチャートである。
示すフローチャートである。
【図10】 同実施例におけるトランケート処理を示す
フローチャートである。
フローチャートである。
【図11】 同実施例におけるトランケート処理2を示
すフローチャートである。
すフローチャートである。
【図12】 この発明の第2の実施例の構成を示すブロ
ック図である。
ック図である。
【図13】 同実施例におけるパネル処理を示すフロー
チャートである。
チャートである。
【図14】 同実施例におけるシーケンサ関連処理を示
すフローチャート出ある。
すフローチャート出ある。
【図15】 同実施例におけるスタート処理を示すフロ
ーチャートである。
ーチャートである。
【図16】 同実施例におけるストップ処理を示すフロ
ーチャートである。
ーチャートである。
【図17】 同実施例における割込処理を示すフローチ
ャートである。
ャートである。
【図18】 同実施例における自動アサイン処理を示す
フローチャートである。
フローチャートである。
【図19】 同実施例における疑似MIDI処理を示す
フローチャートである。
フローチャートである。
【図20】 同実施例における疑似ノートオン処理を示
すフローチャートである。
すフローチャートである。
【図21】 同実施例における疑似チャンネル割当処理
を示すフローチャートである。
を示すフローチャートである。
【図22】 同実施例における疑似ノートオフ処理を示
すフローチャート出ある。
すフローチャート出ある。
【図23】 同実施例における疑似減衰処理を示すフロ
ーチャートである。
ーチャートである。
【図24】 同実施例におけるチャンネル配分処理を示
すフローチャートである。
すフローチャートである。
【図25】 楽音波形のエンベロープの一例を示す波形
図である。
図である。
【図26】 この発明の他の実施例の構成を示すブロッ
ク図である。
ク図である。
【図27】 図26に示す実施例の音色アサインバッフ
ァの内容を示す概念図である。
ァの内容を示す概念図である。
【図28】 従来装置の構成を示すブロック図である。
【図29】 従来装置の構成を示すブロック図である。
【図30】 従来装置の構成を示すブロック図である。
012……CPU(転送手段、割当制御手段)20……
ROM(音色データ記憶部)、23……音色アサインバ
ッファ(音色割当指示手段)、50……音色データメモ
リ(音色データ記憶部)、51……音色データ転送制御
部(転送手段)、52……音色データ転送指示部(音色
割当指示手段)、54……チャンネル割当部(割当制御
手段)CH0〜CH7……発音チャンネル、TG0〜T
G7……トーンジェネレータ(楽音信号発生手段)、、
BUF0−1〜BUF7−1,BUF0−2〜BUF7
−2……バッファ(第1、第2……第m番のバッフ
ァ)。
ROM(音色データ記憶部)、23……音色アサインバ
ッファ(音色割当指示手段)、50……音色データメモ
リ(音色データ記憶部)、51……音色データ転送制御
部(転送手段)、52……音色データ転送指示部(音色
割当指示手段)、54……チャンネル割当部(割当制御
手段)CH0〜CH7……発音チャンネル、TG0〜T
G7……トーンジェネレータ(楽音信号発生手段)、、
BUF0−1〜BUF7−1,BUF0−2〜BUF7
−2……バッファ(第1、第2……第m番のバッフ
ァ)。
Claims (4)
- 【請求項1】 少なくとも音色を指示する音色情報を含
む楽音情報の入力に応答して前記音色情報が指示する音
色の楽音情報を発生するものであって、n個の音色の楽
音信号を発生可能な楽音発生装置において、各発音チャンネルが所定の音色データを記憶したバッフ
ァをm(n>m≧2)個有し、その内の1つの バッファ
に記憶された音色データに基づき楽音信号を発生する複
数の発音チャンネルと、 前記楽音情報の入力に応答し、楽音信号の発生を行って
いない発音チャンネルであって、前記入力された楽音情
報に含まれる音色情報の指示する音色データを記憶した
バッファを有する発音チャンネルに前記入力された楽音
情報を割当てるとともに、その音色データに基づいて楽
音信号を発生させる制御手段とを具備することを特徴と
する楽音発生装置。 - 【請求項2】 前記制御手段は、前記楽音信号の発生を
行っていない発音チャンネルであって、前記楽音情報に
含まれる音色情報が指示する音色の楽音信号を発生する
ための前記音色データが前記バッファに記憶された発音
チャンネルが検出されなかった場合には、前記楽音情報
に含まれる音色情報が指示する音色の楽音信号を発生す
るための前記音色データが前記バッファに記憶された発
音チャンネルで発音されている前記楽音信号を消音し、
該消音された発音チャンネルに前記入力された楽音情報
を割当てて、該消音された発音チャンネルで前記入力さ
れた楽音情報に含まれる音色情報が指示する音色の楽音
情報を発生させることを特徴とする請求項1記載の楽音
発生装置。 - 【請求項3】 前記発音チャンネルのm(n>m≧2)
個のバッファは、所定の優先順位を有し、 前記制御手段は、入力された前記楽音情報を前記発音チ
ャンネルに割当てるに際し、前記音色情報の指示する音
色データを記憶したバッファを有する空き発音チャンネ
ルであって、該バッファの優先順位が最も高い発音チャ
ンネルに前記楽音情報を割り当てる一方、 空き発音チャンネルの無い場合に、前記音色情報の指示
する音色データを記憶したバッファを有し、該バッファ
の優先順位が最も高い発音チャンネルに前記楽音情報を
割り当てるこ とを特徴とする請求項2記載の楽音発生装
置。 - 【請求項4】 所定の音色の楽音信号を発生するための
音色データをn個記憶した記憶手段と、 前記複数の発音チャンネルの各バッファに転送すべき音
色データを指示する楽音割当指示手段と、 前記楽音割当指示手段の指示に従い、前記記憶手段に記
憶された前記音色データを前記複数の発音チャンネルの
各バッファに予め転送する転送手段とを具備することを
特徴とする請求項1ないし3のいずれかに記載の楽音発
生装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4184185A JP2755051B2 (ja) | 1992-07-10 | 1992-07-10 | 楽音発生装置 |
US08/089,091 US5345035A (en) | 1992-07-10 | 1993-07-08 | Musical tone generating apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4184185A JP2755051B2 (ja) | 1992-07-10 | 1992-07-10 | 楽音発生装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0627955A JPH0627955A (ja) | 1994-02-04 |
JP2755051B2 true JP2755051B2 (ja) | 1998-05-20 |
Family
ID=16148852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4184185A Expired - Fee Related JP2755051B2 (ja) | 1992-07-10 | 1992-07-10 | 楽音発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2755051B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2962217B2 (ja) | 1995-11-22 | 1999-10-12 | ヤマハ株式会社 | 楽音生成装置及び方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5483723A (en) * | 1977-12-16 | 1979-07-04 | Mitsubishi Electric Corp | Printer for information processing |
JPS59139093A (ja) * | 1983-01-29 | 1984-08-09 | ヤマハ株式会社 | 電子楽器のデータ伝送システム |
-
1992
- 1992-07-10 JP JP4184185A patent/JP2755051B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0627955A (ja) | 1994-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5345035A (en) | Musical tone generating apparatus | |
US5422431A (en) | Electronic musical tone synthesizing apparatus generating tones with variable decay rates | |
CN110299128A (zh) | 电子乐器、方法、存储介质 | |
EP0730260B1 (en) | Computerized music apparatus with sound emulation | |
JPH0381157B2 (ja) | ||
JP2500489B2 (ja) | 電子楽器 | |
JP2661468B2 (ja) | 自動演奏装置 | |
JP2755051B2 (ja) | 楽音発生装置 | |
US7271330B2 (en) | Rendition style determination apparatus and computer program therefor | |
JPH0631980B2 (ja) | 電子楽器の自動伴奏装置 | |
JP3398554B2 (ja) | 自動アルペジオ演奏装置 | |
JP3314564B2 (ja) | 演奏データ編集装置 | |
JPH11202866A (ja) | 楽音発生方法および楽音発生装置 | |
JPH0638192B2 (ja) | 楽音発生装置 | |
JPH08335082A (ja) | 自動演奏機能を有する電子楽器 | |
JP2578327B2 (ja) | 自動演奏装置 | |
JP3082294B2 (ja) | 伴奏音信号形成装置 | |
JP2814479B2 (ja) | 電子楽器 | |
JP3022496B2 (ja) | 自動伴奏装置 | |
JPH073639B2 (ja) | オ−トリズム装置 | |
JP3307286B2 (ja) | 自動演奏装置 | |
JP3048526B2 (ja) | 電子楽器 | |
JP3190103B2 (ja) | 楽音合成装置 | |
JPH0727382B2 (ja) | 自動伴奏装置 | |
JPH067331B2 (ja) | 自動伴奏装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19980203 |
|
LAPS | Cancellation because of no payment of annual fees |