JPH04311000A - 和音検出記憶装置 - Google Patents

和音検出記憶装置

Info

Publication number
JPH04311000A
JPH04311000A JP3103367A JP10336791A JPH04311000A JP H04311000 A JPH04311000 A JP H04311000A JP 3103367 A JP3103367 A JP 3103367A JP 10336791 A JP10336791 A JP 10336791A JP H04311000 A JPH04311000 A JP H04311000A
Authority
JP
Japan
Prior art keywords
chord
register
pitch
bit string
pitch name
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.)
Granted
Application number
JP3103367A
Other languages
English (en)
Other versions
JP2717461B2 (ja
Inventor
Tsutomu Saito
勉 斉藤
Taichi Kosugi
太一 小杉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kawai Musical Instrument Manufacturing Co Ltd
Original Assignee
Kawai Musical Instrument Manufacturing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kawai Musical Instrument Manufacturing Co Ltd filed Critical Kawai Musical Instrument Manufacturing Co Ltd
Priority to JP3103367A priority Critical patent/JP2717461B2/ja
Priority to US07/866,374 priority patent/US5250746A/en
Publication of JPH04311000A publication Critical patent/JPH04311000A/ja
Application granted granted Critical
Publication of JP2717461B2 publication Critical patent/JP2717461B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えば電子楽器等に用
いられる和音検出記憶装置に関し、特に和音検出のため
のコード表を小さくし、且つ高速に和音を検出するよう
にした和音検出記憶装置に関する。
【0002】
【従来の技術】従来、電子楽器等に用いられる和音検出
記憶装置には、例えば特公昭56−51630号公報に
開示されたものがある。この発明によれば、コードルー
トを「C」としたコードタイプだけを記憶したコード表
を備え、押鍵された音名ビット情報と、上記コード表と
を逐次比較し、一致するまでローテイトシフトを繰り返
し、一致した時点で和音情報を得るというものである。
【0003】この和音検出記憶装置によれば、コード表
が小さくて済むという利点があるが、逐次比較及びロー
テイトシフトという現在の中央処理装置(CPU)には
不得意な処理が多く、和音検出に時間がかかるという問
題がある。
【0004】また、他の和音検出記憶装置として、特公
昭62−27717号公報に開示されたものがある。こ
の発明によれば、音名「C」がオンである全てのコード
パターンを記憶したコード表を備え、押鍵された音名ビ
ット情報を、音名「C」のところにオンになっているビ
ットがくるまでローテイトシフトした後、上記コードパ
ターンと比較して和音検出するようにしたものである。
【0005】この発明によれば、ローテイトシフト動作
は一度だけで済むので処理時間が短くなるという利点が
ある。しかしながら、ローテイトシフト動作を行ったに
もかかわらず全ての音名ビットをアドレスとするコード
表を用いるので、コード表を記憶するメモリ、例えばR
OMを有効に活用しているとは言えない。
【0006】さらに、他の和音検出記憶装置として、特
公昭62−27717号公報に開示されたものがある。 これは全音名ビット情報を展開したコード表を備え、押
鍵された音名ビット情報をそのままアドレスとして用い
てコード表を参照し、直接和音を検出するというもので
ある。
【0007】しかしながら、この発明においては、「2
12」もの膨大なコード表を必要とするという問題があ
った。
【0008】
【発明が解決しようとする課題】この発明は、上記事情
に鑑みてなされたもので、CPUが不得手とするローテ
イトシフトや比較の量を減らして和音検出処理の高速化
を図るとともに、プログラムやコード表を小さくできる
のでこれらを記憶するメモリの容量を小さくできる和音
検出記憶装置を提供することを目的とする。
【0009】
【課題を解決するための手段】この発明の和音検出記憶
装置は、上記目的を達成するために、和音を構成する音
高を指定する音高指定手段と、該音高指定手段から出力
される音高情報に基づいて各音名の有無を検出する音名
検出手段と、該音名検出手段から出力される音名情報の
うちの1つの音名を抽出する音名抽出手段と、該音名抽
出手段で抽出された音名に基づいて、少なくとも1つの
音名を除いた音名ビット列を作成する音名ビット列作成
手段と、該音名ビット列作成手段で作成される音名ビッ
ト列の各パターンに対応して和音情報が記憶されたコー
ド表と、を具備し、前記音名ビット列作成手段で作成さ
れた音名ビット列を用いて前記コード表を検索し、和音
情報を読み出すことにより和音を検出することを特徴と
する。
【0010】また、本発明の和音検出記憶装置は、同様
の目的で、和音を構成する音高を指定する音高指定手段
と、該音高指定手段から出力される音高情報に基づいて
各音名の有無を検出する音名検出手段と、該音名検出手
段から出力される音名情報を少なくとも2つの音名ビッ
ト列に分割する音名ビット列分割手段と、該音名ビット
列分割手段で分割された各音名ビット列の各パターンに
対応して、アドレス情報が記憶されたコード表と、和音
情報が記憶されたコード表と、を具備し、前記音名ビッ
ト列分割手段で分割して作成された所定の音名ビット列
を用いてアドレス情報が記憶されたコード表を少なくと
も1回参照し、得られたアドレス情報と他の音名ビット
列とを用いて和音情報が記憶されたコード表を検索し、
和音情報を読み出すことにより和音を検出することを特
徴とする。
【0011】
【作用】本発明に係る第1の和音検出記憶装置は、和音
コードが成立するためにはコードルートを基準とすると
、音名ビット列の一部分は特定パターンになるという特
性を利用し、該特定パターンを除外した残りの音名ビッ
ト列でコード表を参照し、和音を検出するようにしてい
る。
【0012】これにより、コード表の大きさを大幅に小
さくすることができる。例えば、1ビットの特定パター
ンが存在すると、この1ビットを除外することによりコ
ード表の大きさを半分にすることができ、2ビットの特
定パターンが存在すると、この2ビットを除外すること
によりコード表の大きさを4分の1にすることができる
。以下、同様に、特定パターンのビット数により、2の
階乗でコード表を小さくすることができる。
【0013】本発明に係る第2の和音検出記憶装置は、
音名ビット列を2以上に分割し、各音名ビット列毎にア
ドレス情報又は和音情報を記憶したコード表を用意し、
少なくとも1回は分割された一の音名ビット列を用いて
コード表を参照し、この参照で得られたアドレス情報と
、分割された他の音名ビット列を用いて他の和音情報が
記憶されたコード表を参照して和音を検出するようにし
ている。
【0014】これにより、各音名ビット列をローテイト
シフトする必要がなくなり、また、各音名ビット列のビ
ット数で指定できる容量を合計した容量のメモリを備え
れば済む。例えば、12ビットの音名ビット列を8ビッ
トと4ビットとに分割すれば、本来、「212=409
6」番地のメモリ容量を必要とするところ、計算上は、
「28 +24 ×256=256+4096=435
2」番地のメモリ容量が必要であるが、「28 」の中
に和音として有り得ないパターンが約半分存在するので
、「24」を調べるのは半分程度で良く、メモリ容量が
削減される。したがって、この場合も、上記の場合と同
様に、コード表を小さくすることができる。
【0015】
【実施例】図1は、本発明に係る和音検出記憶装置を包
含する電子楽器の全体的な構成を示す概略ブロック図で
ある。
【0016】図において、10はシリアル入出力を行う
インタフェース回路である。このインタフェース回路1
0は、本装置と外部装置との間でMIDI(Music
al  In−strument  Digital 
 Interface)情報の送受を行うものである。
【0017】このインタフェース回路10は、外部装置
側に「MIDI  IN」端子と「MIDI  OUT
」端子とを有している。また、CPU側はシステムバス
30に接続されるようになっている。そして、外部装置
側は、規格化されたMIDIインタフェースにより、C
PU側は、キーコード(キーナンバ)により、それぞれ
情報の送受を行うようになっている。
【0018】ここでキーナンバとは、各キーに割り当て
られた番号であってMIDI規格に準じており、C−1
=0、C0 =12、C1=24、C2 =36、…の
ように、1オクターブで「12」づつ増加する数値であ
る。
【0019】このインタフェース回路10からは、割り
込み要求信号が出力されるようになっている。この割り
込み要求信号は、CPU16の割り込み端子INT2に
供給される。インタフェース回路10は、この割り込み
信号をアクティブにすることにより、CPU16に割り
込みをかけ、RAM18内のMIDIバッファへの情報
転送を要求する。
【0020】11はキースイッチである。このキースイ
ッチ11は、キーボードの各キーに対応して設けられて
おり、押鍵/離鍵によりオン/オフするスイッチである
。このキースイッチ11の出力はキースキャン回路12
に供給される。
【0021】キースキャン回路12は、キースイッチ1
1のオン/オフ状態を検出するものである。このキース
キャン回路12で検出されたキースイッチ11のオン/
オフ状態は、キーコード(キーナンバ)としてシステム
バス30に出力される。また、このキースキャン回路1
2からは、割り込み要求信号が出力されるようになって
いる。この割り込み要求信号は、CPU16の割り込み
端子INT3に供給される。キースキャン回路12は、
この割り込み要求信号をアクティブにすることにより、
CPU16に割り込みをかけ、RAM18内のマニュア
ルバッファへのキーナンバの転送を要求する。
【0022】13はパネルスイッチであり、図示しない
パネルに設けられた音色スイッチ、音量スイッチ等で構
成されている。このパネルスイッチ13の出力は、パネ
ルスキャン回路14に供給される。
【0023】パネルスキャン回路14は、パネルスイッ
チ13のオン/オフ状態を検出するものである。このパ
ネルスキャン回路14で検出されたパネルスイッチ13
のオン/オフ状態は、該パネルスイッチ13に対応した
ナンバ(トーンナンバ)としてシステムバス30に出力
される。
【0024】15はタイマである。このタイマ15は、
テンポスピードを制御するために使用される。このタイ
マ15には、CPU16から任意のカウント値がセット
されるようになっている。このタイマ15は、セットさ
れたカウント値の計数を終了した際に、割り込み要求信
号を発生する。このタイマ15が出力する割り込み要求
信号は、CPU16の割り込み端子INT1に供給され
るようになっている。CPU16は、タイマ15が発生
する割り込み要求信号のインターバルに同期するべく、
テンポスピードを制御する。
【0025】CPU16は、この実施例の電子楽器の全
体を制御するとともに、和音検出記憶装置としての諸機
能を実現するものである。
【0026】即ち、音高指定情報としてのキーナンバを
受け取ると、その時選択されている音色にて発音するべ
く、音源回路21を駆動する。また、上記キーナンバに
基づき、和音情報や補正情報を検出し、自動演奏を行わ
せる。さらに、上記で検出した和音情報や補正情報を記
憶・再生する制御を行う。これらCPU16の処理内容
については、後に詳細に説明する。
【0027】17はリードオンリメモリ(以下「ROM
」という。)である。このROM17には、上記CPU
16を動作させるためのプログラム、和音を検出するた
めのコード表(詳細は後述する)等が記憶される。
【0028】18はランダムアクセスメモリ(以下「R
AM」という。)である。このRAM18には、CPU
16の作業用のレジスタ、コードシーケンサ用の記憶エ
リア、MIDIバッファ、マニュアルバッファ、ディス
クバッファ、ニューキーエリア、オールドキーエリア等
が定義されている。これらの詳細については、後述する
【0029】19はディスク駆動回路であり、ディスク
装置20を制御するものである。このディスク駆動装置
19は、MIDI入出力と同じ方法で、ディスク装置2
0に演奏情報を書き込み、また、ディスク装置20から
演奏情報を読み出す処理を行う。この際、ディスク装置
20を効率よく使用するために、RAM18上に設けら
れたディスクバッファを介してブロック単位(例えば、
256〜1024バイト)でデータ転送を行うようにな
っている。
【0030】また、このディスク駆動回路19からは、
割り込み要求信号が出力されるようになっている。この
割り込み要求信号は、CPU16の割り込み端子INT
4に供給される。ディスク駆動回路19は、この割り込
み要求信号をアクティブにすることにより、CPU16
に割り込みをかけ、RAM18内のディスクバッファへ
のデータの転送を要求する。
【0031】21は音源回路である。この音源回路21
は、CPU16によってアサインされた32チャネルの
キーナンバとトーンナンバとに基づき、デジタル楽音信
号を時分割で生成するものである。この音源回路21で
生成されたデジタル楽音信号は、D/A変換器22に供
給される。
【0032】D/A変換器22は、入力されたデジタル
楽音信号をアナログ楽音信号に変換するものである。こ
のD/A変換器22で変換されたアナログ楽音信号は、
サウンドシステム23に供給されるようになっている。
【0033】サウンドシステム23は、入力された電気
信号としてのアナログ楽音信号を音響信号に変換するも
のである。つまり、サウンドシステム23は、例えばス
ピーカやヘッドホン等に代表される音響発生手段であり
放音を行うものである。
【0034】上記インタフェース回路10、キースキャ
ン回路12、パネルスキャン回路14、タイマ15、C
PU16、ROM17、RAM18、ディスク駆動回路
19及び音源回路21は、システムバス30を介して相
互に接続されるようになっている。
【0035】次に、上記構成において、動作を説明する
。図2は本発明の実施例に係る和音検出記憶装置のメイ
ンフローチャートを示す。
【0036】先ず、電源投入又はリセット操作が行われ
ると、イニシャライズが行われる(ステップS100)
。このイニシャライズ処理では、各種ハードウエアの初
期化、初期値設定、RAM18の内容の初期化等が行わ
れる。
【0037】次いで、RECスイッチのオンイベントが
あるか否かが調べられる(ステップS101)。このR
ECスイッチは、パネルスイッチ13の中の1つのスイ
ッチである。このRECスイッチは、後に行う和音検出
処理(ステップS112)で検出した和音情報を、RA
M18内のコードシーケンサに記憶するか否かを指示す
るスイッチである。
【0038】このステップS101で、RECスイッチ
のオンイベントがあったことが判断されると、RECフ
ラグを「1」、PLYフラグを「0」にセットする(ス
テップS102)。このRECフラグ、PLYフラグは
、RAM18内の所定領域に定義されるフラグである。 一方、RECスイッチのオンイベントがなかったことが
判断されると、上記ステップS102はスキップされる
【0039】次いで、PLYスイッチのオンイベントが
あるか否かが調べられる(ステップS103)。このP
LYスイッチも、パネルスイッチ13の中の1つのスイ
ッチである。このPLYスイッチは、RAM18内のコ
ードシーケンサに記憶されている和音情報をテンポスピ
ードに合わせて再生するか否かを指示するスイッチであ
る。
【0040】このステップS103で、PLYスイッチ
のオンイベントがあったことが判断されると、PLYフ
ラグを「1」、RECフラグを「0」にセットする(ス
テップS104)。一方、PLYスイッチのオンイベン
トがなかったことが判断されると、上記ステップS10
4はスキップされる。
【0041】以上の処理から理解できるように、PLY
フラグとRECフラグは同時に「1」になることはなく
、したがって、検出した和音情報の記憶と、記憶された
和音情報の再生を同時に行うことはできない。
【0042】次いで、STARTスイッチのオンイベン
トがあるか否かが調べられる(ステップS105)。こ
のSTARTスイッチは、パネルスイッチ13の中の1
つのスイッチである。このSTARTスイッチは、和音
を検出して記憶する処理(REC)又は記憶された和音
情報を再生する処理(PLY)を開始するか否かを指示
するスイッチである。
【0043】このステップS105で、STARTスイ
ッチのオンイベントがあったことが判断されると、RU
Nフラグを「1」にセットする(ステップS106)。 このRUNフラグは、RAM18内の所定領域に定義さ
れるフラグである。また、RAM18内のコードシーケ
ンサのポインタPNT及びタイマカウンタTIMNをゼ
ロにクリアする(ステップS107)。ポインタPNT
は、現在読出中又は記録中のコードシーケンサのデータ
位置を指すものである。またタイマカウンタTIMNは
、タイマ15からの割り込み要求信号に応じて、RUN
中であるという条件で、インクリメントされるカウンタ
である(図15(A)参照)。これらは何れもRAM1
8内に設けられる。
【0044】一方、STARTスイッチのオンイベント
がなかったことが判断されると、上記ステップS106
、S107はスキップされる。
【0045】次いで、キーデータのミキシング処理を行
う(ステップS108)。このキーデータのミキシング
処理は、MIDI入力キーナンバとマニュアル入力キー
ナンバ及びディスク再生キーナンバの論理和をとる処理
である。MIDI入力キーナンバとマニュアル入力キー
ナンバ及びディスク再生キーナンバは、それぞれ、RA
M18のMIDIバッファ、マニュアルバッファ及びデ
ィスクバッファに記憶されている。このミキシング処理
により、キーナンバ0〜127に対する新たなキー情報
が、RAM18内のニューキーエリアに作成される。
【0046】次いで、キーイベントの有無が調べられる
(ステップS109)。これは、RAM18内のニュー
キーエリアの内容とオールドキーエリアの内容との排他
的論理和をとり、その結果がゼロであるか否かを調べる
ことにより行われる。したがって、MIDI入力キーナ
ンバとマニュアル入力キーナンバ及びディスク再生キー
ナンバのキーイベントが共通に調べられることになる。
【0047】ここで、キーイベントがなかったことが判
断されると、処理シーケンスはステップS116へ移る
。即ち、和音検出処理、REC処理等は行われない。 一方、キーイベントがあったことが判断されると、キー
イベントがあったキーのキーナンバが、スプリットポイ
ント(SP)のキーナンバ以下であるか否かが調べられ
る(ステップS110)。
【0048】ここで、スプリットポイント(SP)とは
、和音検出を行うキーボードの境界を示すキーナンバで
ある。通常、このスプリットポイント以下のキーナンバ
を有する領域が和音エリアのキーとなり、和音検出の対
象となる。したがって、和音検出を行う場合、そのキー
ナンバが、スプリットポイントの上であるか下であるか
を判別する必要がある。勿論、全キー領域において和音
を検出する場合があるが、この時は、SP=127に設
定すれば良い。このスプリットポイントは、通常、可変
にできるように構成される。
【0049】上記ステップS110で、キーイベントが
あったキーのキーナンバが、スプリットポイント(SP
)のキーナンバより大きいことが判断されると、以下の
和音検出処理、REC処理は行われずに、処理シーケン
スはステップS115へ移る。したがって、通常のキー
押下による発音処理(ステップS115)が行われるこ
とになる。
【0050】一方、スプリットポイント(SP)のキー
ナンバ以下であることが判断されると、ノートチャネル
アサイン処理が実行される(ステップS111)。ここ
で、ノートチャネルアサインとは、和音は特別の12個
の各ノートに対応した発音チャネルを余分に有し、同じ
音名(ノート)に関しては、1音しか発音できないとす
る処理である。このノートチャネルアサインは、自動伴
奏(オートアカンパニメント、オートアルペジオ)に使
用され、適宜タイミングで刻まれる。
【0051】次いで、和音検出処理が実行される(ステ
ップS112)。この和音検出処理の詳細については、
後述する。
【0052】次いで、「REC=1且つRUN=1」で
あるか否かが調べられる(ステップS113)。つまり
、和音情報の記憶を行うべきことが指定されているか否
かが調べられる。そして、和音情報の記憶を行うべきこ
とが指定されていることが判断されると、REC処理を
行う(ステップS114)。つまり、検出した和音情報
を、RAM18内のコードシーケンサに記憶する処理を
行う。このREC処理の詳細については後述する。一方
、ステップS113で、和音情報の記憶を行うべきこと
が指定されていないことが判断されると、このREC処
理はスキップされる。
【0053】次いで、発音制御処理が行われる(ステッ
プS115)。この発音制御処理は、キーイベントがあ
ったキーナンバが、スプリットポイントの上か下かによ
り、アッパー音色かロワー音色かを選択して、キーイベ
ントに応じた発音を行うものである。即ち、キーのオン
イベントであれば、そのキーをいずれかのチャネルにア
サインして発音を開始させ、オフイベントであれば、対
応するキーナンバのチャネルを捜し出して発音をリリー
ス状態に移行させる。
【0054】次いで、「PLY=1且つRUN=1」で
あるか否かが調べられる(ステップS116)。つまり
、和音情報の再生が指定されているか否かが調べられる
。そして、和音情報の再生が指定されていることが判断
されると、PLY処理を行い、RAM18内のコードシ
ーケンサに記憶された和音情報を再生する(ステップS
117)。このPLY処理の詳細については後述する。
【0055】このPLY処理で、上記ステップS111
で行ったノートチャネルアサイン処理と同様の処理が行
われると、次いで、上記ステップS115で行ったと同
様の発音制御が行われる(ステップS118)。
【0056】一方、ステップS116で、和音情報の再
生が指定されていないことが判断されると、このPLY
処理(ステップS117)及び発音制御処理(ステップ
S118)はスキップされる。
【0057】次いで、「その他の処理」が行われる(ス
テップS119)。この「その他の処理」では、本発明
に直接関係しない上述以外の処理、例えばパネル処理、
MIDI出力処理、ディスク装置書込み処理、その他の
自動演奏処理(オートベース処理等)等が行われる。そ
の後、ステップS101に戻り、以下同様の処理が繰り
返し実行される。
【0058】なお、上記自動演奏処理は、後述するCO
DOレジスタとROTOレジスタの内容及びノートチャ
ネルアサインの内容を参照して行われる。
【0059】次に、上記メインルーチンのステップS1
12で行われる和音検出処理の詳細について説明する。
【0060】図3及び図4は、和音検出処理の第1の実
施例を示すフローチャートである。
【0061】先ず、和音エリアのキーナンバのうち、最
高音のノートナンバをHIGBレジスタに、最低音のノ
ートナンバをLOWBレジスタに入れる(ステップS2
00)。ここでHIGBレジスタ、LOWBレジスタは
、RAM18に定義されるレジスタである。これらHI
GBレジスタ、LOWBレジスタには、オクターブナン
バも同時に入れられる。
【0062】ここで、ノートナンバとは、C  =00
00B 、 C♯=0001B 、 D  =0010B 、 D♯=0011B 、 E  =0100B 、 F  =0101B 、 F♯=0110B 、 G  =0111B 、 G♯=1000B 、 A  =1001B 、 A♯=1010B 、 B  =1011B である。ここで、添字の「B 」
は2進数であることを示し、以下、同様の意味で用いる
【0063】また、オクターブナンバは、B1 以下 
 =00B 、 C2 〜B2 =01B 、 C3 〜B3 =10B 、 C4 以上  =11B である。
【0064】次いで、和音エリアのキーのオン/オフ状
態について、各オクターブ間で論理和をとり、その結果
をビット列としてBITBレジスタに入れる(ステップ
S201)。BITBレジスタは、図5に示すような、
RAM18に定義される12ビットのレジスタである。
【0065】次いで、BITBレジスタの内容が全てゼ
ロであるか否か、つまり、和音エリアに、オンになって
いるキーが1個もないか否かが調べられる(ステップS
202)。
【0066】そして、全てゼロであることが判断される
と、CODBレジスタを「0」に、ROTBレジスタを
「FH 」に(添字の「H 」は16進数であることを
示す。以下、同様。)、POSBレジスタを「00B 
」にセットし、さらに、BITOレジスタを「0」にし
(ステップS203)、その後、本和音検出ルーチンか
らリターンする。
【0067】ここで、CODBレジスタ、ROTBレジ
スタ、POSBレジスタ、BITOレジスタの各レジス
タは、RAM18に定義されるレジスタである。
【0068】CODBレジスタは、コードタイプを記憶
するレジスタである。コードタイプは、表1の右側部に
示す7種類があり、それぞれ「0〜7」のコード値で表
される。このCODBレジスタに「0」を入れるという
ことは、和音エリアにキーオンが1つもないということ
を意味する。
【0069】
【表1】 ROTBレジスタは、コードルートを記憶するレジスタ
である。コードルートは、ノートナンバと同じコードで
表され、C=0000B 、C♯=0001B 、D=
0010B 、…、B=1011B の12種類がある
。このROTBレジスタに「FH 」を入れるというこ
とは、対応するコードルートが存在しないということを
意味する。
【0070】POSBレジスタは、補正音を記憶するレ
ジスタである。このPOSBレジスタに「00B 」を
入れるということは、後述する補正音がないことを意味
する。
【0071】BITOレジスタは、今回の和音検出処理
で得たビット列、つまりBITBの内容を格納するレジ
スタであり、次回の和音検出処理において参照される。
【0072】上記ステップS202で、BITBレジス
タの内容が全てゼロでない、つまり和音エリアに何らか
のキーオンがあったことが判断されると、RTATレジ
スタをクリアする(ステップS204)。このRTAT
レジスタは、RAM18に定義されるレジスタであり、
ビット列をローテイトシフトした回数を記憶するもので
ある。
【0073】次いで、BITBレジスタの内容をBIT
Aレジスタに入れる(ステップS205)。このBIT
Aレジスタは、RAM18に定義されるレジスタであり
、ビット列をローテイトシフトするための作業用のレジ
スタである。
【0074】そして、このBITAレジスタの下位3ビ
ットが「001B 」であるか否かを調べる(ステップ
S206)。これは、表1に示すように、コードが成立
する場合は、下位3ビットが「001B 」になること
に着目したものである。なお、全てゼロの場合は、上記
ステップS202で調べられて既に除外されている。
【0075】このステップS206で、BITAレジス
タの下位3ビットが「001B 」でないことが判断さ
れると、RTATレジスタの内容をインクリメントし(
ステップS207)、その後、BITAレジスタを1ビ
ット分ローテイトシフトする(ステップS208)。こ
のローテイトシフトの方向は、左右いずれであっても良
い。
【0076】次いで、RTATレジスタの内容が「12
」になったか否か、つまり、BITAレジスタを12回
ローテイトシフトしたか(一巡したか)否かを調べる(
ステップS209)。そして、「12」でなければステ
ップS206へ戻り、ステップS206〜S209の動
作を繰り返す。
【0077】この繰り返し実行過程において、ステップ
S209で、「12」になったことが判断されると、和
音コードが成立しなかったものと判断し、ステップS2
10以下のコード不成立の場合の処理を実行する。
【0078】即ち、先ず、CODBレジスタ及びROT
Bレジスタのそれぞれに「FH 」を入れる(ステップ
S210)。ここで、CODBレジスタの内容が「FH
 」であることは、和音エリアでのキーオンはあったが
、コードが成立しなかったことを意味する。
【0079】次いで、BITBレジスタの内容と、前回
の和音検出処理で得たビット列が入っているBITOレ
ジスタの内容との排他的論理和(図中、記号「∀」で示
す。)をとり、結果をBITXレジスタに格納する。そ
の後、BITBレジスタの内容をBITOレジスタに入
れる(ステップS211)。ここで、BITXレジスタ
は、RAM18に定義されるレジスタであり、前回のビ
ット列に対し、今回のビット列中で変化があったビット
を記憶するものである。上記排他的論理和をとることに
より、変化があったビットが「1」として、BITXレ
ジスタに記憶されることになる。
【0080】次いで、図6(B)に示す形式のデータが
作成されることになる。これらのデータが格納される各
レジスタは何れもRAM18に定義される。即ち、BI
TXレジスタで「1」となっているビットをノートナン
バに変換してNOTBレジスタに入れる(ステップS2
12)。NOTBレジスタは、ノートナンバを記憶する
レジスタである。
【0081】次いで、BITXレジスタで「1」となっ
たビットが、今回新たにオンになったのかオフになった
のかを、BITBレジスタを参照することにより判断し
、その結果をON/OFレジスタに入れる(ステップS
213)。
【0082】次いで、NOTBレジスタと、HIGBレ
ジスタ及びLOWBレジスタとを比較して補正音を作成
しPOSBレジスタに入れる(ステップS214)。即
ち、NOTBレジスタの内容とHIGBレジスタの内容
及びLOWBレジスタの内容とが同じであるか否かを調
べ、下記の条件により2ビットのデータを作成してPO
SBレジスタに記憶する。
【0083】■NOTB=HIGBであれば、POSB
=10B (最高音) ■NOTB=LOWBであれば、POSB=01B (
最低音) ■上記のいずれでもない場合は、POSB=11B (
中間音) なお、補正ノートなしの場合は、POSB=00B が
入れられる。
【0084】次いで、LOWBレジスタのオクターブナ
ンバを取り出し、OCTBレジスタに入れる(ステップ
S215)。
【0085】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れる(ステップS216)。ここで、O
CTOレジスタは、RAM18に定義されるレジスタで
あり、前回の和音検出処理で得たオクターブナンバを格
納しているレジスタである。そして、このステップS2
16の処理を終了後、本和音検出ルーチンをリターンす
る。以上でコードが成立しなかった場合の処理を終了す
る。
【0086】一方、上記ステップS206で、BITA
レジスタの下位3ビットが「001B 」であることが
判断されると、図6(A)に示す形式のデータが作成さ
れることになる。即ち、BITAレジスタの下位3ビッ
トを除く9ビットからなるビット列を作成する(ステッ
プS217)。例えば、BITAレジスタの内容が、

0087】BITA=「000010010001」で
あったなら、 ビット列=「000010010」という9ビットのビ
ット列を得る。
【0088】次いで、該ビット列をアドレスとして、例
えば表2に示すように構成されたコード表を参照し、対
応するアドレスから読み出したコードタイプ、準コード
ルートをそれぞれCODBレジスタ、ROTBレジスタ
に入れる(ステップS218)。つまり、コードが成立
しなければ「FFH 」が、コードが成立すれば、コー
ドタイプ0〜7と準コードルート0〜BH が得られる
ので、上位4ビットのコードタイプをCODBレジスタ
へ、下位4ビットの準コードルートをROTBレジスタ
に入れる。
【0089】
【表2】 次いで、CODBレジスタ、ROTBレジスタの内容が
双方共「FH 」であるか否かを調べる(ステップS2
19)。即ち、コード不成立であるか否かを調べる。
【0090】ここで、CODBレジスタ、ROTBレジ
スタの内容が双方共「FH 」であることが判断される
と、コード不成立であったことを認識し、ステップS2
11へ分岐する。ステップS211以降の処理は上述し
た通りであるので、ここでは説明を省略する。
【0091】一方、ステップS219で、CODBレジ
スタの内容、又はROTBレジスタの内容のいずれかが
「FH 」でないことが判断されると、表2を参照して
得られたROTBレジスタの準コードルートと、先にロ
ーテイトシフトした際に、その回数を記憶しているRT
ATレジスタの内容を加算し、結果をROTBレジスタ
に入れる(ステップS220)。但し、この加算結果が
「12」より大きい値になったときは、「12」を減算
する。これにより、ROTBレジスタ内に本当のコード
ルート(正コードルート)が得られることになる。
【0092】次いで、CODBレジスタの内容をCOD
Oレジスタに、ROTBレジスタの内容をROTOレジ
スタに、BITBレジスタの内容をBITOレジスタに
、それぞれ格納する(ステップS221)。
【0093】次いで、和音エリアのキーオンの中で、最
低音のノートが何であったかを少ないビット数(2ビッ
ト)で表す処理を行う(ステップS222)。
【0094】即ち、表1において、正コードルート(R
OTBレジスタに記憶されている)に対して、どれだけ
離れた位置に最低音のノート(LOWBレジスタ)が存
在するかを調べる。
【0095】実際には、ROTBレジスタの内容からL
OWBレジスタの内容を減算し、結果が「12」以上で
あれば「12」を減じ、結果が負であれば「12」を加
算してSUBTレジスタに入れる。そして、SUBTレ
ジスタに得られた値「0〜11」を、下記のように分類
してMINBレジスタに入れる。
【0096】 ■SUBTレジスタの内容が0、1、2の時、MINB
レジスタ←00B  ■SUBTレジスタの内容が3、4、5の時、MINB
レジスタ←01B  ■SUBTレジスタの内容が6、7、8の時、MINB
レジスタ←10B  ■SUBTレジスタの内容が9、10、11の時、MI
NBレジスタ←11B  これは、表1から明らかなように、コードルートを基準
として3音ずつに4等分すると、各ブロックにはキーオ
ンが1つしかないという特性を利用したものである。
【0097】このMINBレジスタに格納すべき値をさ
らに確実に得るために、コードルートからキーオンの数
を数え、それがLOWBレジスタのノートと同じになっ
た時の値を用いるように構成しても良い。
【0098】次いで、LOWBレジスタのオクターブナ
ンバを、OCTBレジスタに入れる(ステップS223
)。
【0099】そして、OCTOレジスタの内容とOCT
Bレジスタの内容とを比較することにより、前回の和音
検出処理が行われた際に得られたオクターブナンバから
、今回得られたオクターブナンバが変化しているか否か
を調べる(ステップS224)。
【0100】そして、変化していないことが判断される
と、ステップS227へ分岐し、POSBレジスタの内
容を「11B 」にセットし、オクターブ変更はないこ
とを伝えてリターンする。この際のPOSBレジスタの
値は、中間音であることを示す本来の意味ではなく、オ
クターブ変更がないことを伝える特殊な意味で使用され
る。
【0101】一方、上記ステップS224でオクターブ
ナンバが変化していることが判断されると、POSBレ
ジスタの内容を「00B 」にセットする(ステップS
225)。これは、オクターブ変更があり、補正ノート
はないことを表す。
【0102】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れ(ステップS226)、その後、この
和音検出ルーチンをリターンする。
【0103】以上説明した和音検出処理の第1の実施例
では、ビット列の下位3ビットに注目してビット列パタ
ーンをチェックしたが、これに限定されるものでなく、
例えば上位の3ビットでも良く、さらに、その他の任意
の3ビットでも良い。
【0104】また、ビットパターンとしてチェックする
ビット数も3ビットに限定されるものでなく、例えば下
位2ビットを「01B 」とし、同じビットパターンが
見つかった時点で、その他の10ビットをアドレスとし
て、表2よりも1ビット多いアドレスで構成されるコー
ド表を参照してコード成立の有無をチェックすることも
可能である。
【0105】また、下位1ビットの「1」の状態を検出
して、その他の11ビットをアドレスとして、表2より
も2ビット多いアドレスで構成されるコード表を参照し
てコード成立の有無をチェックすることも可能である。
【0106】さらに、上記実施例では、ビットパターン
中に必ず「1」が存在したが、「00B 」というビッ
トパターンをチェックして残り10ビットのコード表を
参照してコード成立の有無をチェックすることも可能で
ある。
【0107】以上、要するに、12ビットのフルパター
ンから1ビット以上を除外したパターン表を参照するよ
うに構成することで、コード表の大きさを小さくするこ
とができ、メモリ容量の減少を図ることができる。
【0108】次に、和音検出ルーチンの第2の実施例に
ついて、図7及び図8のフローチャートを参照しながら
説明する。
【0109】図において、ステップS250、251は
、上記第1の実施例のステップS200、S201と同
じである。即ち、和音エリアのキーナンバのうち、最高
音のノートナンバをHIGBレジスタに、最低音のノー
トナンバをLOWBレジスタに入れる(ステップS25
0)。このHIGBレジスタ、LOWBレジスタは、オ
クターブナンバも同時に入れられる。
【0110】次いで、和音エリアのキーのオン/オフ状
態について、各オクターブ間で論理和をとり、その結果
をビット列としてBITBレジスタに入れる(ステップ
S251)。
【0111】次いで、BITBレジスタの内容を2つに
分けて上位ビット列をBITHレジスタに、下位ビット
列をBITLレジスタに入れる(ステップS252)。 BITHレジスタ、BITLレジスタの一例を図9に示
す。
【0112】同図では、BITHレジスタとしてBIT
Bレジスタの上位4ビット、BITLレジスタとしてB
ITBレジスタの下位8ビットを記憶するように構成し
たが、この分け方は任意である。即ち、BITHレジス
タ、BITLレジスタの各ビット数は任意であり、ビッ
トの並び方も任意に構成して良い。さらに、2分割に限
定されず、3分割さらにはそれ以上の数に分割しても良
い。
【0113】次いで、BITLレジスタの内容をアドレ
スとして、例えば表3に示すように構成される第1コー
ド表を参照し、該当情報を読み出してREFAレジスタ
に入れる(ステップS253)。
【0114】
【表3】 この第1コード表は、下位ビット列だけでコードとして
成立する可能性のあるパターンには、残りの上位ビット
列を参照するためのヘッドアドレスが格納されている。 一方、下位ビット列だけで見ても既にコードとして成立
する可能性がない場合は、不成立として「FFH 」が
格納されている。
【0115】次に、REFAレジスタの内容を参照して
「FFH 」であるか否かを調べる(ステップS254
)。ここで、「FFH 」であることが判断されると、
和音コードが成立しなかったものと判断し、コード不成
立の場合の処理を実行する。
【0116】即ち、先ず、CODBレジスタ及びROT
Bレジスタのそれぞれに「FH 」を入れる(ステップ
S255)。ここで、CODBレジスタの内容が「FH
 」であることは、演奏エリアでのキーオンはあったが
、コードが成立しなかったことを意味する。
【0117】次いで、BITBレジスタの内容と、前回
の和音検出処理で得たビット列が入っているBITOレ
ジスタとの排他的論理和をとり、結果をBITXレジス
タに格納する。その後、BITBレジスタの内容をBI
TOレジスタに入れる(ステップS256)。これによ
り、変化があったビットが「1」として、BITXレジ
スタに記憶されることになる。
【0118】次いで、図11(B)に示す形式のデータ
が作成されることになる。即ち、BITXレジスタで「
1」となったビットが存在するグループの番号(グルー
プナンバ)をBGRPレジスタに入れる(ステップS2
57)。BGRPレジスタは、RAM18に定義される
レジスタである。
【0119】このBGRPレジスタに入れられるデータ
は、下記のように定義される。
【0120】 ■BGRPレジスタ=00B :  D  ,C♯,C
■BGRPレジスタ=01B :  F  ,E  ,
D♯■BGRPレジスタ=10B :  G♯,G  
,F♯■BGRPレジスタ=11B :  B  ,A
♯,A次いで、BITBレジスタの中で、BGRPのグ
ループナンバに対応したビット列を選択し、BPTNレ
ジスタに格納する(ステップS258)。
【0121】そして、BITXレジスタの中で、「1」
であるノートナンバαと、HIGBレジスタ及びLOW
Bレジスタとを比較して補正音を作成しPOSBレジス
タに入れる(ステップS259)。即ち、BITXレジ
スタの内容とHIGBレジスタ内容及びLOWBレジス
タ内容とが同じであるか否かを調べ、下記の条件により
POSBレジスタに記憶するデータを作成する。
【0122】■α=HIGBであれば、POSB=10
B (最高音) ■α=LOWBであれば、POSB=01B (最低音
)■上記のいずれでもない場合は、POSB=11B 
(中間音) なお、補正ノートなしの場合は、POSB=00B が
入れられる。
【0123】次いで、HIGBレジスタのオクターブナ
ンバを取り出し、OCTBレジスタに入れる(ステップ
S260)。
【0124】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れる(ステップS261)。そして、こ
のステップS261の処理を終了後、本和音検出ルーチ
ンをリターンする。
【0125】一方、上記ステップS254で、REFA
レジスタの内容が「FFH 」でないことが判断される
と、図11(A)に示す形式のデータが作成されること
になる。即ち、BITAレジスタの内容が「FFH 」
でなければ、残りのビット列のパターン次第ではコード
が成立する可能性があるので、REFAレジスタの内容
を高位アドレス、残りのビット列(BITHレジスタの
内容)を下位アドレスとして表4に示すように構成され
た第2コード表を参照し、該当データを読み出す。
【0126】
【表4】 そして、読み出したデータの上位4ビット(コードタイ
プ)をCODBレジスタに、下位4ビット(コードルー
ト)をROTBレジスタに入れる(ステップS262)
【0127】次いで、CODBレジスタ、ROTBレジ
スタの内容が双方共「FH 」であるか否かを調べる(
ステップS263)。即ち、コード不成立であるか否か
を調べる。
【0128】ここで、CODBレジスタ、ROTBレジ
スタの内容が双方共「FH 」であることが判断される
と、コード不成立であることを認識し、ステップS25
6へ分岐する。ステップS256以降の処理は上述した
通りであるので、ここでは説明を省略する。
【0129】一方、ステップS263で、CODBレジ
スタの内容、又はROTBレジスタの内容のいずれかが
「FH 」でないことが判断されると、CODBレジス
タの内容をCODOレジスタに、ROTBレジスタの内
容をROTOレジスタに、BITBレジスタの内容をB
ITOレジスタに、それぞれ格納する(ステップS26
4)。
【0130】次いで、和音エリアのキーオンの中で、最
低音のノートが何であったかを少ないビット数(2ビッ
ト)で表す処理、つまりコードルート(ROTBレジス
タの内容)と最低音(LOWBレジスタの内容)との差
を検出する処理を行う(ステップS265)。この処理
は、上記第1実施例のステップS222と同じ処理であ
るので、詳細は省略する。
【0131】次いで、LOWBレジスタのオクターブナ
ンバを、OCTBレジスタに入れる(ステップS266
)。
【0132】そして、OCTOレジスタの内容とOCT
Bレジスタの内容とを比較することにより、前回の和音
検出処理が行われた際に得られたオクターブナンバから
、今回得られたオクターブナンバが変化しているか否か
を調べる(ステップS267)。
【0133】そして、変化していないことが判断される
と、ステップS270へ分岐し、POSBレジスタの内
容を「11B 」にセットし、オクターブ変更はないこ
とを伝えてリターンする。ここでのPOSBレジスタの
値は、中間音であることを示す本来の意味ではなく、オ
クターブ変更がないことを伝える特殊な意味で使用され
る。
【0134】一方、上記ステップS267でオクターブ
ナンバが変化していることが判断されると、POSBレ
ジスタの内容を「00B 」にセットする(ステップS
268)。これは、オクターブナンバの修正はあるが、
補正ノートはないことを意味する。
【0135】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れ(ステップS269)、その後、この
和音検出ルーチンをリターンする。
【0136】以上説明した和音検出処理の第2の実施例
では、12ビット列を高位4ビットと低位8ビットに分
割し、先に低位8ビットを参照するようにしたがこれに
限定されるものではない。
【0137】例えば、図10に示すような分け方もある
。また、コード表を参照する場合に、先にBITHレジ
スタで参照するか、BITLレジスタで参照するかも任
意である。
【0138】また、分割は2つに限定されるものでなく
、例えば、BITH,BITM,BITLのように3つ
に分割することもできるし、それ以上の数に分割するこ
ともできる。
【0139】以上、要するに、212の全ビットパター
ン中、コード成立の可能性があるグループだけを表とし
て用意し、これを複数回参照することによりコード表を
小さくすることができ、メモリ容量の減少を図ることが
できる。
【0140】次に、メインルーチン(図2)のステップ
S114で行うREC処理の第1の実施例の詳細につい
て、図12に示すフローチャートを参照しながら説明す
る。
【0141】なお、本REC処理ルーチン(実施例1)
は、上記和音検出処理の第1の実施例に対応させて記載
しているが、第2の実施例でも略同様の処理で実現でき
る。
【0142】先ず、CODBレジスタ、ROTBレジス
タの内容が双方共「FH 」であるか否か、つまりコー
ド不成立であるか否かを調べる(ステップS300)。
【0143】そして、コード不成立であることが判断さ
れるとステップS307へ分岐する。一方、コード成立
であることが判断されると、前回変化のあったタイム(
TIMO)と今回のタイム(TIMN)との時間差を求
め、TIMBレジスタに格納する(ステップS301)
。そして、今回のタイムTIMNをTIMOレジスタに
入れる(ステップS302)。
【0144】次いで、MINBレジスタの内容とTIM
Bレジスタの内容とを、シーケンスポインタPNTで示
されるアドレスへ格納する(ステップS303)。また
、CODBレジスタの内容とROTBレジスタの内容と
を、シーケンスポインタPNT+1で示されるアドレス
へ格納する(ステップS304)。そして、シーケンス
ポインタを「+2」する(ステップS305)。
【0145】次いで、POSBレジスタの内容が「00
B 」であるか否か、つまり、オクターブナンバの更新
があるか否かを調べる(ステップS306)。そして、
更新がないことが判断されると、このREC処理ルーチ
ンからリターンする。
【0146】一方、オクターブナンバの更新があること
が判断されると(コード不成立の場合も同様。)、前回
変化のあったタイム(TIMO)と今回のタイム(TI
MN)との時間差を求め、TIMBレジスタに格納する
(ステップS307)。そして、今回のタイムTIMN
をTIMOレジスタに入れる(ステップS308)。
【0147】次いで、OCTBレジスタの内容とTIM
Bレジスタの内容とを、シーケンスポインタPNTで示
されるアドレスへ格納する(ステップS309)。また
、POSBレジスタの内容、ON/OFレジスタの内容
、及びNOTBレジスタの内容とを、シーケンスポイン
タPNT+1で示されるアドレスへ格納する(ステップ
S310)。そして、シーケンスポインタを「+2」す
る(ステップS311)。その後、本REC処理ルーチ
ンからリターンする。
【0148】次に、メインルーチン(図2)のステップ
S117で行うPLY処理の詳細について、図13及び
図14に示すフローチャートを参照しながら説明する。
【0149】なお、本PLY処理ルーチンは、上記和音
検出処理の第1の実施例に対応させて記載しているが、
第2の実施例でも略同様の処理で実現できるものである
【0150】先ず、ポインタPNTが現在示している、
RAM18内のシーケンスメモリから読み出したデータ
をAREGレジスタに入れる(ステップS400)。
【0151】次いで、AREGレジスタの下位6ビット
を抽出し、TIMBレジスタに入れる(ステップS40
1)。そして、前回にPLY処理ルーチンがアクセスさ
れたタイミング(TIMO)に、上記で求めたTIMB
レジスタの内容を加算した値が、現在のタイミング(T
IMN)以下であるか否かを調べる(ステップS402
)。
【0152】ここで、現在のタイミング(TIMN)が
「TIMO+TIMB」よりも小さいことが判断される
と、新しいシーケンスデータを読み出すには未だ早すぎ
るので、そのまま、このPLY処理ルーチンからリター
ンする。
【0153】一方、現在のタイミング(TIMN)が「
TIMO+TIMB」よりも大きいか、又は等しいこと
が判断されると、新しいシーケンスデータを読み出す必
要があるので、ステップS403以下の処理に移る。
【0154】即ち、先ず、TIMNレジスタの内容をT
IMOレジスタに入れることにより、TIMOレジスタ
の内容を更新する(ステップS403)。そして、シー
ケンスポインタPNT+1で示されるアドレスの内容を
読み出し、BREGレジスタに入れる(ステップS40
4)。そして、シーケンスポインタPNTの内容を「+
2」する(ステップS405)。
【0155】そして、BREGレジスタのMSBが「1
」であるか否かを調べる(ステップS406)。これは
、AREGレジスタ、BREGレジスタの内容が、コー
ド成立時の和音情報であるのか、コード不成立時のオク
ターブナンバと補正ノート情報であるのかを調べること
になる。
【0156】そして、上記MSBが「0」であることが
判断されると、AREGレジスタ、BREGレジスタの
内容が、図6(A)に示すコード成立時の和音情報であ
るものとして以下の処理を実行する。
【0157】先ず、AREGレジスタの上位2ビットを
抽出し、MINBレジスタに入れる(ステップS407
)。これにより、最低音情報がMINBレジスタに入れ
られる。
【0158】次いで、BREGレジスタの最上位の次の
ビットから3ビットを抽出してCODOレジスタへ、B
REGレジスタの下位4ビットを抽出してROTOレジ
スタへいれる(ステップS408)。
【0159】次いで、CODOレジスタに格納されたコ
ードタイプから表1のC基準コード表を参照し、12音
ビット列を読み出し、BITAレジスタにいれる(ステ
ップS409)。
【0160】次いで、MINBレジスタの値から、BI
TAレジスタのうち最低音が何であったかを検出する(
ステップS410、S411)。即ち、MINBレジス
タの内容が「00B 」であれば、下位3ビットが「1
」であるパターンを生成し、MINBレジスタの内容が
「01B 」であれば、次の3ビットが「1」であるパ
ターンを生成し、MINBレジスタの内容が「10B 
」であれば、さらに次の3ビットが「1」であるパター
ンを生成し、MINBレジスタの内容が「11B 」で
あれば、上位3ビットが「1」であるパターンを生成し
てKKレジスタに入れる(ステップS410)。
【0161】そして、上記で求めたKKレジスタの値と
BITAレジスタの値との論理積をとり、LOWBレジ
スタに入れる(ステップS411)。
【0162】最低音の情報MINBは、「C」をコード
ルートとすると、「C,C♯,D」、「D♯,E,F」
、「F♯,G,G♯」、「A,A♯,B」の4つの各ブ
ロックにキーオンは1つしか存在しないという性質を利
用して、MINBレジスタには2ビットのコードとして
格納されている。
【0163】つまり、 ■MINB=00B ならば、「C,C♯,D」■MI
NB=01B ならば、「D♯,E,F」■MINB=
10B ならば、「F♯,G,G♯」■MINB=11
B ならば、「F♯,G,G♯」の3音のうち、キーオ
ンになっているのが最低音であったということを意味す
る。
【0164】ここで、コードルートと最低音の違いを説
明すると、同じコードタイプとコードルートであっても
、表5のように分けられる。
【0165】
【表5】 コードタイプとコードルートは、従来から使用されてい
るが、最低音をいかに使用するかは区々である。まら、
コード成立時には、従来は、最低音は使用されないこと
が多かった。
【0166】この実施例では、和音の最低音が何である
かを、検出し、記憶し、さらに再生することにより、例
えばバッキングの構成音やアルペジオの構成音をより忠
実に再現できる。また、最低音を用いて、オートベース
演奏のベースルートとして利用することも可能である。
【0167】次に、BITAレジスタの内容を、ROT
Bレジスタに記憶されている値分だけローテイトシフト
してBITBレジスタに格納する(ステップS412)
。これにより、REC処理時と同じ12ビット列が生成
できたことになる。
【0168】次いで、BITBレジスタのうちLOWB
レジスタのビットより高いビットはそのままノートナン
バに変換し、OCTOレジスタの内容によってオクター
ブデータを付加し、そのノートチャネルへキー音として
入れる(ステップS413)。即ち、このステップでは
、和音が成立しているため、コードタイプが「0」の場
合を除き、BITBレジスタには、通常、3〜4個のキ
ーオンビットが存在する。
【0169】これらのキーオンビットの中からLOWB
レジスタの最低音と、それよりも高い側のオンビットを
検出してノートコードとし、OCTOレジスタのオクタ
ーブナンバを付加して、対応するノートチャネルへキー
オンとして割り当てる。
【0170】次いで、BITBレジスタのうちLOWB
レジスタのビットより低いビットはそのままノートナン
バに変換し、OCTOレジスタの内容に「1」を加えた
値をオクターブデータとして付加し、そのノートチャネ
ルへキーオンとして入れる(ステップS414)。即ち
、このステップでは、BITBレジスタのうちLOWB
レジスタの音名より低いところにあるキーオンビットは
、ノートコードに変換した後、OCTOレジスタに格納
されているオクターブナンバに「+1」したオクターブ
ナンバを付加し、キーオンにて、対応するノートチャネ
ルに割り当てる。
【0171】例えば、             B  A♯A  G♯G  
F♯F  E  D♯D  C♯C  BITB=0 
 0  1  0  0  1  0  0  0  
0  0  1  CODB=Major(1)   ROTB=2(D)   LOWB=F♯   OCTB=01B  であれば、 F♯の音は、オクターブナンバ=2、ノートナンバ=6
A  の音は、オクターブナンバ=2、ノートナンバ=
9D  の音は、オクターブナンバ=3、ノートナンバ
=2となることを意味する。
【0172】次いで、他のノートチャネルをキーオフと
する(ステップS415)。すなわち、上記ステップS
413、S414で割り当てられなかった他のノートチ
ャネルをクリアして、本PLY処理ルーチンからリター
ンする。なお、コードタイプが「0」、つまり全キーオ
フである場合は、12個の全ノートチャネルをクリアす
るとになる。
【0173】一方、上記ステップS406で、MSBが
「1」であることが判断されると、AREGレジスタ、
BREGレジスタの内容が、図6(B)に示すコード成
立時の情報であるものとして以下の処理を実行する。
【0174】先ず、AREGレジスタの上位2ビットを
抽出し、OCTBレジスタに入れる(ステップS416
)。
【0175】次いで、前回のオクターブナンバ(OCT
O)と今回のオクターブナンバ(OCTB)とを比較す
る(ステップS417)。そして、異なることが判断さ
れると、今回のオクターブナンバ(OCTO)をOCT
Oレジスタに入れる(ステップS418)。そして、全
ノートチャネルKYEN1〜12のオクターブナンバO
CTを修正する(ステップS419)。
【0176】上記ステップS417で同じことが判断さ
れると、ステップS418、S419はスキップされる
【0177】次いで、BREGレジスタから補正音の相
対的位置、オンオフ、音名を取り出し、それぞれ、PO
SBレジスタ、ON/OFレジスタ、NOTBレジスタ
に格納する(ステップS420)。
【0178】次いで、ON/OFレジスタの内容が「1
」であるか否かが調べられる(ステップS421)。つ
まり、補正音は、現在の和音に付加される(オン)のか
、現在の和音から或る音を削除する(オフ)のかが調べ
られる。そして、ON/OFレジスタの内容が「0」、
つまり、現在の和音から或る音を削除することが判断さ
れると、KEYN1〜12の中でNOTBレジスタの内
容と同じノートのチャネルをキーオフ状態にする(ステ
ップS422)。その後、このPLY処理ルーチンから
リターンする。
【0179】一方、上記ステップS421で、ON/O
Fレジスタの内容が「1」、つまり、現在の和音に或る
音を付加することが判断されると、POSBレジスタの
内容が「00B 」であるか否かを調べる(ステップS
423)。
【0180】ここで、POSBレジスタの内容は、次の
ようにセットされている。
【0181】■POSBレジスタ=00B …補正(付
加)ノートなし ■POSBレジスタ=01B …補正(付加)ノートあ
り(最低音) ■POSBレジスタ=10B …補正(付加)ノートあ
り(最高音) ■POSBレジスタ=11B …補正(付加)ノートあ
り(中間音) したがって、上記ステップS423でPOSBレジスタ
の内容が「00B 」であることが判断されると、補正
ノートがないので、そのままリターンする。
【0182】一方、POSBレジスタの内容が「00B
 」でないことが判断されると、補正ノートがあるので
、NOTBレジスタ、POSBレジスタ、OCTOレジ
スタのの内容から、ノートナンバとオクターブナンバを
作成し、該当チャネルにキーオンとして入れる(ステッ
プS424)。
【0183】即ち、NOTBレジスタからノートナンバ
を得、POSBレジスタの内容から、補正(付加)音を
現在の和音構成の上位に付加するのか、下位に付加する
のか、或いは中間に付加するのかを認識し、さらにOC
TOレジスタに格納されているオクターブナンバを参照
して、当該音のオクターブ情報とし、該当するノートチ
ャネルにキーオンとして割り当てる(ステップS424
)。その後、このPLY処理ルーチンからリターンし、
メインルーチンに戻る。
【0184】次に、割り込み処理について説明する。図
15は、この電子楽器が有する4種類の割り込み処理を
説明するフローチャートである。
【0185】同図(A)は、タイマ割り込み処理を示す
ものである。タイマ15が所定値(時間)を計数すると
、CPU16のINT1端子に割り込み要求信号が供給
され、CPU16は、実行中の処理を一時中断して割り
込み処理を行う。即ち、先ず、RUNフラグが「1」で
あるか否かが調べられる。このRUNフラグは、パネル
のSTARTスイッチが押されることにより「1」にセ
ットされるフラグである。したがって、動作中に「1」
にされる。
【0186】ここで、RUNフラグが「1」でないこと
が判断されると、つまり動作中でないことが判断される
と、何等の処理も行わずにこの割り込み処理ルーチンか
らリターンする。
【0187】一方、RUNフラグが「1」であることが
判断されると、TIMNレジスタの内容をインクリメン
トする。これにより、現在の時刻が更新されることにな
る。同図(B)は、MIDI割り込み処理を示すもので
ある。インタフェース回路10がMIDI  IN端子
からデータを受け取ると、CPU16のINT2端子に
割り込み要求信号が供給され、CPU16は、実行中の
処理を一時中断して割り込み処理を行う。この割り込み
処理では、インタフェース回路10からの入力情報を、
RAM18のMIDIバッファに格納する。その後、こ
の割り込み処理ルーチンからリターンする。このMID
Iバッファに格納された情報が、上述したように、種々
の処理に使用されることになる。
【0188】同図(C)は、キースイッチ割り込み処理
を示すものである。キースイッチ11が押されたことを
キースキャン回路12が検出すると、CPU16のIN
T3端子に割り込み要求信号が供給される。CPU16
は、実行中の処理を一時中断して割り込み処理を行う。 この割り込み処理では、キースキャン回路12からのキ
ースイッチ情報を、RAM18のマニュアルバッファに
格納する。その後、この割り込み処理ルーチンからリタ
ーンする。このマニュアルバッファに格納された情報が
、上述したように、種々の処理に使用されることになる
【0189】同図(D)は、ディスク入力割り込み処理
を示すものである。ディスク駆動回路19でデータ転送
要求が発生すると、CPU16のINT4端子に割り込
み要求信号が供給される。CPU16は、実行中の処理
を一時中断して割り込み処理を行う。この割り込み処理
では、ディスク装置20からディスク駆動回路19を介
して供給されるデータを、RAM18のディスクバッフ
ァに格納する。その後、この割り込み処理ルーチンから
リターンする。このディスクバッファに格納された情報
が、上述したように、種々の処理に使用されることにな
る。
【0190】次に、REC処理の第2の実施例について
説明する。図16はREC処理ルーチン(実施例2)の
処理を示すフローチャートである。
【0191】この処理は、図3及び図4、又は図7及び
図8に示した和音検出ルーチンを使用せず、音色ビット
マップを直接記憶する方式である。この処理では、図1
7に示すデータ形式で和音シーケンスを記憶する。
【0192】この実施例によれば、常に3バイトのデー
タを必要とするが、コード成立、不成立にかかわらず、
同じデータ形式で記憶することができるという利点があ
る。
【0193】また、最低音のノートナンバとオクターブ
ナンバも可能な限り少ないビット数で一緒に記憶するこ
とによりPLY時の再現性を良くしている。
【0194】
【発明の効果】以上詳述したように、この発明によれば
CPUが不得手とするローテイトシフトや比較の量を減
らして和音検出処理の高速化を図るとともに、プログラ
ムやコード表を小さくできるのでこれらを記憶するメモ
リの容量を小さくできる和音検出記憶装置を提供するこ
とができる。
【図面の簡単な説明】
【図1】本発明の和音検出記憶装置が包含される電子楽
器の一実施例の構成を示すブロック図である。
【図2】本発明の和音検出記憶装置が包含される電子楽
器の主動作を示すメインフローチャートである。
【図3】図2の和音検出処理の第1の実施例の動作を示
すフローチャートである。
【図4】図2の和音検出処理の第1の実施例の動作を示
すフローチャートである。
【図5】本発明の第1の実施例で使用するBITBレジ
スタの形式を説明するための図である。
【図6】本発明の第1の実施例で採用するデータ形式を
説明するための図である。
【図7】図2の和音検出処理の第2の実施例の動作を示
すフローチャートである。
【図8】図2の和音検出処理の第2の実施例の動作を示
すフローチャートである。
【図9】本発明の第2の実施例で使用するBITBレジ
スタの形式を説明するための図である。
【図10】本発明の他の実施例を説明するための図であ
る。
【図11】本発明の第2の実施例で採用するデータ形式
を説明するための図である。
【図12】図2のREC処理(実施例1)を詳細に示す
フローチャートである。
【図13】図2のPLY処理を詳細に示すフローチャー
トである。
【図14】図2のPLY処理を詳細に示すフローチャー
トである。
【図15】本発明の第1、第2の実施例における割り込
み処理を説明するためのフローチャートである。
【図16】本発明の伴奏音検出処理を示すフローチャー
トである。
【図17】図2のREC処理(実施例2)を詳細に示す
フローチャートである。
【符号の説明】
11  キースイッチ(音高指定手段)13  パネル
スイッチ 15  タイマ 16  CPU(音名検出手段、音名抽出手段、音名ビ
ット列作成手段、コードルート変更手段、音名ビット列
分割手段) 17  ROM(コード表) 18  RAM 21  音源回路

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】  和音を構成する音高を指定する音高指
    定手段と、該音高指定手段から出力される音高情報に基
    づいて各音名の有無を検出する音名検出手段と、該音名
    検出手段から出力される音名情報のうちの1つの音名を
    抽出する音名抽出手段と、該音名抽出手段で抽出された
    音名に基づいて、少なくとも1つの音名を除いた音名ビ
    ット列を作成する音名ビット列作成手段と、該音名ビッ
    ト列作成手段で作成される音名ビット列の各パターンに
    対応して和音情報が記憶されたコード表と、を具備し、
    前記音名ビット列作成手段で作成された音名ビット列を
    用いて前記コード表を検索し、和音情報を読み出すこと
    により和音を検出することを特徴とする和音検出記憶装
    置。
  2. 【請求項2】  請求項1において、前記音名抽出手段
    で抽出された音名に基づき、前記コード表から読み出さ
    れた和音情報のコードルートを変更するコードルート変
    更手段を具備したことを特徴とする和音検出記憶装置。
  3. 【請求項3】  和音を構成する音高を指定する音高指
    定手段と、該音高指定手段から出力される音高情報に基
    づいて各音名の有無を検出する音名検出手段と、該音名
    検出手段から出力される音名情報を少なくとも2つの音
    名ビット列に分割する音名ビット列分割手段と、該音名
    ビット列分割手段で分割された各音名ビット列の各パタ
    ーンに対応して、アドレス情報が記憶されたコード表と
    、和音情報が記憶されたコード表と、を具備し、前記音
    名ビット列分割手段で分割して作成された所定の音名ビ
    ット列を用いてアドレス情報が記憶されたコード表を少
    なくとも1回参照し、得られたアドレス情報と他の音名
    ビット列とを用いて和音情報が記憶されたコード表を検
    索し、和音情報を読み出すことにより和音を検出するこ
    とを特徴とする和音検出記憶装置。
JP3103367A 1991-04-09 1991-04-09 和音検出記憶装置 Expired - Fee Related JP2717461B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP3103367A JP2717461B2 (ja) 1991-04-09 1991-04-09 和音検出記憶装置
US07/866,374 US5250746A (en) 1991-04-09 1992-04-09 Chord detecting apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3103367A JP2717461B2 (ja) 1991-04-09 1991-04-09 和音検出記憶装置

Publications (2)

Publication Number Publication Date
JPH04311000A true JPH04311000A (ja) 1992-11-02
JP2717461B2 JP2717461B2 (ja) 1998-02-18

Family

ID=14352149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3103367A Expired - Fee Related JP2717461B2 (ja) 1991-04-09 1991-04-09 和音検出記憶装置

Country Status (1)

Country Link
JP (1) JP2717461B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6227717A (ja) * 1985-07-29 1987-02-05 Nissan Motor Co Ltd 撮像装置
JPH0493892U (ja) * 1991-01-07 1992-08-14

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6227717A (ja) * 1985-07-29 1987-02-05 Nissan Motor Co Ltd 撮像装置
JPH0493892U (ja) * 1991-01-07 1992-08-14

Also Published As

Publication number Publication date
JP2717461B2 (ja) 1998-02-18

Similar Documents

Publication Publication Date Title
US5119710A (en) Musical tone generator
KR100200290B1 (ko) 자동연주장치
US5612501A (en) Automatic accompaniment information producing apparatus
US6103965A (en) Musical tone synthesizing apparatus, musical tone synthesizing method and storage medium
US4300430A (en) Chord recognition system for an electronic musical instrument
US5221802A (en) Device for detecting contents of a bass and chord accompaniment
JPH02137890A (ja) 電子楽器
US4232581A (en) Automatic accompaniment apparatus
US4248118A (en) Harmony recognition technique application
US5250746A (en) Chord detecting apparatus
JPH04311000A (ja) 和音検出記憶装置
JP2822281B2 (ja) 伴奏情報処理装置
US4920849A (en) Automatic performance apparatus for an electronic musical instrument
GB2091470A (en) Electronic Musical Instrument
JPH07113829B2 (ja) 自動演奏装置
JP2640992B2 (ja) 電子楽器の発音指示装置及び発音指示方法
JPH0638192B2 (ja) 楽音発生装置
JP3245611B2 (ja) コード判別装置
JPH0827624B2 (ja) 自動演奏装置
JP2603462B2 (ja) 演奏データ記録装置
JPH0619468A (ja) 電子楽器の自動演奏装置
JPH0642146B2 (ja) 楽音発生装置
JPH02135496A (ja) ハープ効果付電子楽器
JPH0863159A (ja) 自動演奏装置
JPH0659676A (ja) 自動伴奏装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees