JPH04317100A - 伴奏情報処理装置 - Google Patents
伴奏情報処理装置Info
- Publication number
- JPH04317100A JPH04317100A JP3109679A JP10967991A JPH04317100A JP H04317100 A JPH04317100 A JP H04317100A JP 3109679 A JP3109679 A JP 3109679A JP 10967991 A JP10967991 A JP 10967991A JP H04317100 A JPH04317100 A JP H04317100A
- Authority
- JP
- Japan
- Prior art keywords
- information
- chord
- register
- note
- sound
- 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
Links
Landscapes
- Electrophonic Musical Instruments (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、例えば電子楽器等に用
いられる伴奏情報処理装置に関し、特にキーボード等の
音高指定手段で指定された音高を検出し、所定の加工を
施して伴奏情報として記憶する伴奏情報処理装置に関す
る。
いられる伴奏情報処理装置に関し、特にキーボード等の
音高指定手段で指定された音高を検出し、所定の加工を
施して伴奏情報として記憶する伴奏情報処理装置に関す
る。
【0002】
【従来の技術】従来、電子楽器等に用いられる伴奏情報
処理装置として、例えば特開昭62−187388号公
報に開示された自動演奏装置付電子楽器がある。この発
明は、キーボードの押鍵状態により和音が成立したとき
のみ、その和音のコードタイプとコードルートを記憶す
るようにしたものである。
処理装置として、例えば特開昭62−187388号公
報に開示された自動演奏装置付電子楽器がある。この発
明は、キーボードの押鍵状態により和音が成立したとき
のみ、その和音のコードタイプとコードルートを記憶す
るようにしたものである。
【0003】また、他の伴奏情報処理装置として、例え
ば特開平1−179087号公報に開示された自動演奏
装置がある。この発明は、和音が成立したときは、その
和音のコードタイプとコードルートとを記憶し、和音が
成立しなかったときは、その時の構成音を、例えば数音
まで記憶するというものである。
ば特開平1−179087号公報に開示された自動演奏
装置がある。この発明は、和音が成立したときは、その
和音のコードタイプとコードルートとを記憶し、和音が
成立しなかったときは、その時の構成音を、例えば数音
まで記憶するというものである。
【0004】上記公報に開示されている発明は、和音情
報を効率良く記憶するという観点からは、一定の効果を
発揮するが、以下のような欠点がある。
報を効率良く記憶するという観点からは、一定の効果を
発揮するが、以下のような欠点がある。
【0005】■和音が成立した場合に、該和音のコード
タイプとコードルートしか記憶しないので、キーボード
上での最低音が何であるかを判別できない。また、どの
オクターブで押鍵された和音であるかも判断することが
できない。したがって、再生時は、例えばコードルート
を最低音にし、特定のオクターブで再生する等の固定的
な処理しかできず、伴奏の忠実な再現ができない。
タイプとコードルートしか記憶しないので、キーボード
上での最低音が何であるかを判別できない。また、どの
オクターブで押鍵された和音であるかも判断することが
できない。したがって、再生時は、例えばコードルート
を最低音にし、特定のオクターブで再生する等の固定的
な処理しかできず、伴奏の忠実な再現ができない。
【0006】■和音が不成立のときは、その時の構成音
を、音名で記憶するので、和音不成立時には記憶する情
報量が増大する。
を、音名で記憶するので、和音不成立時には記憶する情
報量が増大する。
【0007】■和音が不成立のときは、伴奏パターンと
して、Major 若しくは和音不成立用の独自の情報
を記憶・再生するので、演奏の流れが生きてこない。
して、Major 若しくは和音不成立用の独自の情報
を記憶・再生するので、演奏の流れが生きてこない。
【0008】■和音としての成立は注意深く記憶するが
、伴奏エリアにキーオンがあるか否かを検出し、記憶す
ることはできない。
、伴奏エリアにキーオンがあるか否かを検出し、記憶す
ることはできない。
【0009】
【発明が解決しようとする課題】この発明は、上記諸欠
点を解消するためになれたもので、和音成立時に和音情
報に特定音情報を付加して記憶することにより記録時の
内容を忠実に再生することができる伴奏情報処理装置を
提供することを目的とする。
点を解消するためになれたもので、和音成立時に和音情
報に特定音情報を付加して記憶することにより記録時の
内容を忠実に再生することができる伴奏情報処理装置を
提供することを目的とする。
【0010】また他の目的は、和音不成立時であっても
演奏の流れを生かしつつ記憶すべき情報量を減らすこと
のできる伴奏情報処理装置を提供することを目的とする
。
演奏の流れを生かしつつ記憶すべき情報量を減らすこと
のできる伴奏情報処理装置を提供することを目的とする
。
【0011】さらに他の目的は、和音情報の記録時の処
理を高速に行うとともに、記録時の内容を忠実に再生す
ることのできる伴奏情報処理装置を提供することを目的
とする。
理を高速に行うとともに、記録時の内容を忠実に再生す
ることのできる伴奏情報処理装置を提供することを目的
とする。
【0012】
【課題を解決するための手段】この発明の伴奏情報処理
装置は、上記第1の目的を達成するために、音高を指定
する音高指定手段と、該音高指定手段で指定された音高
情報の構成音を検出する構成音検出手段と、該構成音検
出手段で検出した構成音から和音を検出して和音情報を
生成する和音情報生成手段と、該和音情報生成手段で生
成された和音情報に係る特定音情報を生成する特定音情
報生成手段と、該特定音情報生成手段で生成された特定
音情報と前記和音情報生成手段で生成された和音情報と
を関連付けて記憶する記憶手段とを具備したことを特徴
とする。
装置は、上記第1の目的を達成するために、音高を指定
する音高指定手段と、該音高指定手段で指定された音高
情報の構成音を検出する構成音検出手段と、該構成音検
出手段で検出した構成音から和音を検出して和音情報を
生成する和音情報生成手段と、該和音情報生成手段で生
成された和音情報に係る特定音情報を生成する特定音情
報生成手段と、該特定音情報生成手段で生成された特定
音情報と前記和音情報生成手段で生成された和音情報と
を関連付けて記憶する記憶手段とを具備したことを特徴
とする。
【0013】また、本発明の伴奏情報処理装置は、上記
第2の目的を達成するために、音高を指定する音高指定
手段と、該音高指定手段で指定された音高情報の構成音
を検出する構成音検出手段と、該構成音検出手段で検出
した構成音により和音が成立することが判断されたとき
は和音情報を生成し、和音が成立しないことが判断され
たときは、直前に記憶した和音情報又は構成音情報に対
する補正情報を生成する和音/補正情報生成手段と、該
和音/補正情報生成手段で生成された和音情報又は補正
情報を記憶する記憶手段とを具備したことを特徴とする
。
第2の目的を達成するために、音高を指定する音高指定
手段と、該音高指定手段で指定された音高情報の構成音
を検出する構成音検出手段と、該構成音検出手段で検出
した構成音により和音が成立することが判断されたとき
は和音情報を生成し、和音が成立しないことが判断され
たときは、直前に記憶した和音情報又は構成音情報に対
する補正情報を生成する和音/補正情報生成手段と、該
和音/補正情報生成手段で生成された和音情報又は補正
情報を記憶する記憶手段とを具備したことを特徴とする
。
【0014】さらに、本発明の伴奏情報処理装置は、上
記第2の目的を達成するために、音高を指定する音高指
定手段と、該音高指定手段で指定された音高情報の構成
音を検出し、所定の音ビット列を作成する音ビット列作
成手段と、該音ビット列作成手段で作成された所定の音
ビット列に係る特定音情報を生成する特定音情報生成手
段と、前記音ビット列作成手段で作成された所定の音ビ
ット列と該特定音情報生成手段で生成された特定音情報
を関連付けて記憶する記憶手段とを具備したことを特徴
とする。
記第2の目的を達成するために、音高を指定する音高指
定手段と、該音高指定手段で指定された音高情報の構成
音を検出し、所定の音ビット列を作成する音ビット列作
成手段と、該音ビット列作成手段で作成された所定の音
ビット列に係る特定音情報を生成する特定音情報生成手
段と、前記音ビット列作成手段で作成された所定の音ビ
ット列と該特定音情報生成手段で生成された特定音情報
を関連付けて記憶する記憶手段とを具備したことを特徴
とする。
【0015】
【作用】本発明に係る第1の伴奏情報処理装置は、検出
した和音情報に、該和音情報に係る特定音情報、例えば
和音構成音の最低音又は最高音に関する情報、オクター
ブ情報等を関連付けて記憶するようにしたものである。
した和音情報に、該和音情報に係る特定音情報、例えば
和音構成音の最低音又は最高音に関する情報、オクター
ブ情報等を関連付けて記憶するようにしたものである。
【0016】これにより、同一の構成音の和音であって
も、該和音の最低音又は最高音を基準にして展開するこ
とにより所定のバリエーションで和音を再生することが
でき、また、所定の音域で和音を再生することができる
こととなり、記録時の伴奏を忠実に再現できるものとな
っている。
も、該和音の最低音又は最高音を基準にして展開するこ
とにより所定のバリエーションで和音を再生することが
でき、また、所定の音域で和音を再生することができる
こととなり、記録時の伴奏を忠実に再現できるものとな
っている。
【0017】本発明に係る第2の伴奏情報処理装置は、
和音の不成立は、所定の和音から次の和音に移行する過
程で数鍵を余分に押鍵したり離鍵したりすることにより
発生する場合が多いという特性に着目してなされたもの
で、和音が成立しなかったことを検出した場合は、直前
に記憶した和音情報に対する変化分を補正情報として記
憶するようにしたものである。
和音の不成立は、所定の和音から次の和音に移行する過
程で数鍵を余分に押鍵したり離鍵したりすることにより
発生する場合が多いという特性に着目してなされたもの
で、和音が成立しなかったことを検出した場合は、直前
に記憶した和音情報に対する変化分を補正情報として記
憶するようにしたものである。
【0018】これにより、和音不成立時の記憶すべき情
報量を大幅に減少させることができるものとなっている
。また、和音不成立時には直前に成立した和音情報を重
視して、例えば少なくともコードタイプは直前に成立し
た和音情報を用いるようにしたので、演奏の流れが自然
なものとなっている。
報量を大幅に減少させることができるものとなっている
。また、和音不成立時には直前に成立した和音情報を重
視して、例えば少なくともコードタイプは直前に成立し
た和音情報を用いるようにしたので、演奏の流れが自然
なものとなっている。
【0019】本発明に係る第3の伴奏情報処理装置は、
伴奏情報を記憶する際に、和音検出してコードタイプ、
コードルートとして記憶するのではなく、和音成立/不
成立とは無関係に、音高指定手段で指定された構成音を
所定の音ビット列、例えば12音(1オクターブ)のビ
ット列として、例えば最高音、最低音又はオクターブ情
報等の特定音情報とともに記憶するようにしたものであ
る。
伴奏情報を記憶する際に、和音検出してコードタイプ、
コードルートとして記憶するのではなく、和音成立/不
成立とは無関係に、音高指定手段で指定された構成音を
所定の音ビット列、例えば12音(1オクターブ)のビ
ット列として、例えば最高音、最低音又はオクターブ情
報等の特定音情報とともに記憶するようにしたものであ
る。
【0020】これにより、和音情報の記録時の処理が高
速になるとともに、記憶する情報に余分な加工が施され
ないので、伴奏の再生時には、より忠実な再生が容易に
できるものとなっている。また、和音の検出は、必要に
応じて再生時に行うことにより、記憶した情報を、その
使用目的に応じて汎用的に用いることができ、応用範囲
をより広げることができるものとなっている。
速になるとともに、記憶する情報に余分な加工が施され
ないので、伴奏の再生時には、より忠実な再生が容易に
できるものとなっている。また、和音の検出は、必要に
応じて再生時に行うことにより、記憶した情報を、その
使用目的に応じて汎用的に用いることができ、応用範囲
をより広げることができるものとなっている。
【0021】
【実施例】図1は、本発明に係る伴奏情報処理装置を包
含する電子楽器の全体的な構成を示す概略ブロック図で
ある。
含する電子楽器の全体的な構成を示す概略ブロック図で
ある。
【0022】図において、10はシリアル入出力を行う
インタフェース回路である。このインタフェース回路1
0は、本装置と外部装置との間でMIDI(Music
al In−strument Digital
Interface)情報の送受を行うものである。
インタフェース回路である。このインタフェース回路1
0は、本装置と外部装置との間でMIDI(Music
al In−strument Digital
Interface)情報の送受を行うものである。
【0023】このインタフェース回路10は、外部装置
側に「MIDI IN」端子と「MIDI OUT
」端子とを有している。また、CPU側はシステムバス
30に接続されるようになっている。そして、外部装置
側は、規格化されたMIDIインタフェースにより、C
PU側は、キーコード(キーナンバ)により、それぞれ
情報の送受を行うようになっている。
側に「MIDI IN」端子と「MIDI OUT
」端子とを有している。また、CPU側はシステムバス
30に接続されるようになっている。そして、外部装置
側は、規格化されたMIDIインタフェースにより、C
PU側は、キーコード(キーナンバ)により、それぞれ
情報の送受を行うようになっている。
【0024】ここでキーナンバとは、キーボードの各キ
ーに割り当てられた番号であってMIDI規格に準じて
おり、C−1=0、C0 =12、C1 =24、C2
=36、…のように、1オクターブで「12」ずつ増
加する数値である。
ーに割り当てられた番号であってMIDI規格に準じて
おり、C−1=0、C0 =12、C1 =24、C2
=36、…のように、1オクターブで「12」ずつ増
加する数値である。
【0025】このインタフェース回路10からは、割り
込み要求信号が出力されるようになっている。この割り
込み要求信号は、CPU16の割り込み端子INT2に
供給される。インタフェース回路10は、この割り込み
信号をアクティブにすることにより、CPU16に割り
込みをかけ、該インタフェース回路10からRAM18
内のMIDIバッファへの情報転送を要求する。
込み要求信号が出力されるようになっている。この割り
込み要求信号は、CPU16の割り込み端子INT2に
供給される。インタフェース回路10は、この割り込み
信号をアクティブにすることにより、CPU16に割り
込みをかけ、該インタフェース回路10からRAM18
内のMIDIバッファへの情報転送を要求する。
【0026】11はキースイッチである。このキースイ
ッチ11は、キーボードの各キーに対応して設けられて
おり、押鍵/離鍵によりオン/オフするスイッチである
。このキースイッチ11の出力はキースキャン回路12
に供給される。
ッチ11は、キーボードの各キーに対応して設けられて
おり、押鍵/離鍵によりオン/オフするスイッチである
。このキースイッチ11の出力はキースキャン回路12
に供給される。
【0027】キースキャン回路12は、キースイッチ1
1のオン/オフ状態を検出するものである。このキース
キャン回路12で検出されたキースイッチ11のオン/
オフ状態は、キーコード(キーナンバ)としてシステム
バス30に出力される。また、このキースキャン回路1
2からは、割り込み要求信号が出力されるようになって
いる。この割り込み要求信号は、CPU16の割り込み
端子INT3に供給される。キースキャン回路12は、
この割り込み要求信号をアクティブにすることにより、
CPU16に割り込みをかけ、該キースキャン回路12
からRAM18内のマニュアルバッファへのキーナンバ
の転送を要求する。
1のオン/オフ状態を検出するものである。このキース
キャン回路12で検出されたキースイッチ11のオン/
オフ状態は、キーコード(キーナンバ)としてシステム
バス30に出力される。また、このキースキャン回路1
2からは、割り込み要求信号が出力されるようになって
いる。この割り込み要求信号は、CPU16の割り込み
端子INT3に供給される。キースキャン回路12は、
この割り込み要求信号をアクティブにすることにより、
CPU16に割り込みをかけ、該キースキャン回路12
からRAM18内のマニュアルバッファへのキーナンバ
の転送を要求する。
【0028】13はパネルスイッチであり、図示しない
パネルに設けられた音色スイッチ、音量スイッチ等で構
成されている。このパネルスイッチ13の出力は、パネ
ルスキャン回路14に供給される。
パネルに設けられた音色スイッチ、音量スイッチ等で構
成されている。このパネルスイッチ13の出力は、パネ
ルスキャン回路14に供給される。
【0029】パネルスキャン回路14は、パネルスイッ
チ13のオン/オフ状態を検出するものである。このパ
ネルスキャン回路14で検出されたパネルスイッチ13
のオン/オフ状態は、該パネルスイッチ13に対応した
ナンバ(トーンナンバ)としてシステムバス30に出力
される。
チ13のオン/オフ状態を検出するものである。このパ
ネルスキャン回路14で検出されたパネルスイッチ13
のオン/オフ状態は、該パネルスイッチ13に対応した
ナンバ(トーンナンバ)としてシステムバス30に出力
される。
【0030】15はタイマである。このタイマ15は、
テンポスピードを制御するために使用される。このタイ
マ15には、CPU16から任意のカウント値がセット
されるようになっている。このタイマ15は、セットさ
れたカウント値の計数を終了した際に、割り込み要求信
号を発生する。このタイマ15が出力する割り込み要求
信号は、CPU16の割り込み端子INT1に供給され
るようになっている。CPU16は、タイマ15が発生
する割り込み要求信号のインターバルに同期するべく、
テンポスピードを制御する。
テンポスピードを制御するために使用される。このタイ
マ15には、CPU16から任意のカウント値がセット
されるようになっている。このタイマ15は、セットさ
れたカウント値の計数を終了した際に、割り込み要求信
号を発生する。このタイマ15が出力する割り込み要求
信号は、CPU16の割り込み端子INT1に供給され
るようになっている。CPU16は、タイマ15が発生
する割り込み要求信号のインターバルに同期するべく、
テンポスピードを制御する。
【0031】CPU16は、この実施例の電子楽器の全
体を制御するとともに、伴奏情報処理装置としての諸機
能を実現するものである。
体を制御するとともに、伴奏情報処理装置としての諸機
能を実現するものである。
【0032】即ち、音高情報としてのキーナンバを受け
取ると、その時選択されている音色にて発音するべく、
音源回路21を駆動する。また、上記キーナンバに基づ
き、和音情報や補正情報を検出し、自動演奏を行わせる
。さらに、上記で検出した和音情報や補正情報を記憶・
再生する制御を行う。これらCPU16の処理内容につ
いては、後に詳細に説明する。
取ると、その時選択されている音色にて発音するべく、
音源回路21を駆動する。また、上記キーナンバに基づ
き、和音情報や補正情報を検出し、自動演奏を行わせる
。さらに、上記で検出した和音情報や補正情報を記憶・
再生する制御を行う。これらCPU16の処理内容につ
いては、後に詳細に説明する。
【0033】17はリードオンリメモリ(以下「ROM
」という。)である。このROM17には、上記CPU
16を動作させるためのプログラム、和音を検出するた
めのコード表(詳細は後述する)等が記憶される。
」という。)である。このROM17には、上記CPU
16を動作させるためのプログラム、和音を検出するた
めのコード表(詳細は後述する)等が記憶される。
【0034】18はランダムアクセスメモリ(以下「R
AM」という。)である。このRAM18には、CPU
16の作業用のレジスタ、コードシーケンサ用の記憶エ
リア、MIDIバッファ、マニュアルバッファ、ディス
クバッファ、ニューキーエリア、オールドキーエリア等
が定義されている。これらの詳細については、後述する
。
AM」という。)である。このRAM18には、CPU
16の作業用のレジスタ、コードシーケンサ用の記憶エ
リア、MIDIバッファ、マニュアルバッファ、ディス
クバッファ、ニューキーエリア、オールドキーエリア等
が定義されている。これらの詳細については、後述する
。
【0035】19はディスク駆動回路であり、ディスク
装置20を制御するものである。このディスク駆動回路
19は、MIDI入出力と同じ方法で、記憶手段として
のディスク装置20に演奏情報を書き込み、また、ディ
スク装置20から演奏情報を読み出す処理を行う。この
際、ディスク装置20を効率よく使用するために、RA
M18上に設けられたディスクバッファを介してブロッ
ク単位(例えば、256〜1024バイト)でデータ転
送を行うようになっている。
装置20を制御するものである。このディスク駆動回路
19は、MIDI入出力と同じ方法で、記憶手段として
のディスク装置20に演奏情報を書き込み、また、ディ
スク装置20から演奏情報を読み出す処理を行う。この
際、ディスク装置20を効率よく使用するために、RA
M18上に設けられたディスクバッファを介してブロッ
ク単位(例えば、256〜1024バイト)でデータ転
送を行うようになっている。
【0036】また、このディスク駆動回路19からは、
割り込み要求信号が出力されるようになっている。この
割り込み要求信号は、CPU16の割り込み端子INT
4に供給される。ディスク駆動回路19は、この割り込
み要求信号をアクティブにすることにより、CPU16
に割り込みをかけ、ディスク装置20からRAM18内
のディスクバッファへのデータの転送を要求する。
割り込み要求信号が出力されるようになっている。この
割り込み要求信号は、CPU16の割り込み端子INT
4に供給される。ディスク駆動回路19は、この割り込
み要求信号をアクティブにすることにより、CPU16
に割り込みをかけ、ディスク装置20からRAM18内
のディスクバッファへのデータの転送を要求する。
【0037】21は音源回路である。この音源回路21
は、CPU16によってアサインされた32チャネルの
キーナンバとトーンナンバとに基づき、デジタル楽音信
号を時分割で生成するものである。この音源回路21で
生成されたデジタル楽音信号は、D/A変換器22に供
給される。
は、CPU16によってアサインされた32チャネルの
キーナンバとトーンナンバとに基づき、デジタル楽音信
号を時分割で生成するものである。この音源回路21で
生成されたデジタル楽音信号は、D/A変換器22に供
給される。
【0038】D/A変換器22は、入力されたデジタル
楽音信号をアナログ楽音信号に変換するものである。こ
のD/A変換器22で変換されたアナログ楽音信号は、
サウンドシステム23に供給されるようになっている。
楽音信号をアナログ楽音信号に変換するものである。こ
のD/A変換器22で変換されたアナログ楽音信号は、
サウンドシステム23に供給されるようになっている。
【0039】サウンドシステム23は、入力された電気
信号としてのアナログ楽音信号を音響信号に変換するも
のである。つまり、サウンドシステム23は、例えばス
ピーカやヘッドホン等に代表される音響発生手段であり
放音を行うものである。
信号としてのアナログ楽音信号を音響信号に変換するも
のである。つまり、サウンドシステム23は、例えばス
ピーカやヘッドホン等に代表される音響発生手段であり
放音を行うものである。
【0040】上記インタフェース回路10、キースキャ
ン回路12、パネルスキャン回路14、タイマ15、C
PU16、ROM17、RAM18、ディスク駆動回路
19及び音源回路21は、システムバス30を介して相
互に接続されるようになっている。
ン回路12、パネルスキャン回路14、タイマ15、C
PU16、ROM17、RAM18、ディスク駆動回路
19及び音源回路21は、システムバス30を介して相
互に接続されるようになっている。
【0041】次に、上記構成において、動作を説明する
。図2は本発明の実施例に係る伴奏情報処理装置のメイ
ンフローチャートを示す。
。図2は本発明の実施例に係る伴奏情報処理装置のメイ
ンフローチャートを示す。
【0042】先ず、電源投入又はリセット操作が行われ
ると、イニシャライズが行われる(ステップS100)
。このイニシャライズ処理では、各種ハードウエアの初
期化、初期値設定、RAM18の内容の初期化等が行わ
れる。
ると、イニシャライズが行われる(ステップS100)
。このイニシャライズ処理では、各種ハードウエアの初
期化、初期値設定、RAM18の内容の初期化等が行わ
れる。
【0043】次いで、RECスイッチのオンイベントが
あるか否かが調べられる(ステップS101)。このR
ECスイッチは、パネルスイッチ13の中の1つのスイ
ッチである。このRECスイッチは、後に行う和音検出
処理(ステップS112)で検出した和音情報を、RA
M18内のコードシーケンサに記憶するか否かを指示す
るスイッチである。
あるか否かが調べられる(ステップS101)。このR
ECスイッチは、パネルスイッチ13の中の1つのスイ
ッチである。このRECスイッチは、後に行う和音検出
処理(ステップS112)で検出した和音情報を、RA
M18内のコードシーケンサに記憶するか否かを指示す
るスイッチである。
【0044】このステップS101で、RECスイッチ
のオンイベントがあったことが判断されると、RECフ
ラグを「1」、PLYフラグを「0」にセットする(ス
テップS102)。このRECフラグ、PLYフラグは
、RAM18内の所定領域に定義されるフラグである。 一方、RECスイッチのオンイベントがなかったことが
判断されると、上記ステップS102はスキップされる
。
のオンイベントがあったことが判断されると、RECフ
ラグを「1」、PLYフラグを「0」にセットする(ス
テップS102)。このRECフラグ、PLYフラグは
、RAM18内の所定領域に定義されるフラグである。 一方、RECスイッチのオンイベントがなかったことが
判断されると、上記ステップS102はスキップされる
。
【0045】次いで、PLYスイッチのオンイベントが
あるか否かが調べられる(ステップS103)。このP
LYスイッチも、パネルスイッチ13の中の1つのスイ
ッチである。このPLYスイッチは、RAM18内のコ
ードシーケンサに記憶されている和音情報をテンポスピ
ードに合わせて再生するか否かを指示するスイッチであ
る。
あるか否かが調べられる(ステップS103)。このP
LYスイッチも、パネルスイッチ13の中の1つのスイ
ッチである。このPLYスイッチは、RAM18内のコ
ードシーケンサに記憶されている和音情報をテンポスピ
ードに合わせて再生するか否かを指示するスイッチであ
る。
【0046】このステップS103で、PLYスイッチ
のオンイベントがあったことが判断されると、PLYフ
ラグを「1」、RECフラグを「0」にセットする(ス
テップS104)。一方、PLYスイッチのオンイベン
トがなかったことが判断されると、上記ステップS10
4はスキップされる。
のオンイベントがあったことが判断されると、PLYフ
ラグを「1」、RECフラグを「0」にセットする(ス
テップS104)。一方、PLYスイッチのオンイベン
トがなかったことが判断されると、上記ステップS10
4はスキップされる。
【0047】以上の処理から理解できるように、PLY
フラグとRECフラグは同時に「1」になることはなく
、したがって、検出した和音情報の記憶と、記憶された
和音情報の再生を同時に行うことはできない。
フラグとRECフラグは同時に「1」になることはなく
、したがって、検出した和音情報の記憶と、記憶された
和音情報の再生を同時に行うことはできない。
【0048】次いで、STARTスイッチのオンイベン
トがあるか否かが調べられる(ステップS105)。こ
のSTARTスイッチは、パネルスイッチ13の中の1
つのスイッチである。このSTARTスイッチは、和音
を検出して記憶する処理(REC処理)又は記憶された
和音情報を再生する処理(PLY処理)を開始するか否
かを指示するスイッチである。
トがあるか否かが調べられる(ステップS105)。こ
のSTARTスイッチは、パネルスイッチ13の中の1
つのスイッチである。このSTARTスイッチは、和音
を検出して記憶する処理(REC処理)又は記憶された
和音情報を再生する処理(PLY処理)を開始するか否
かを指示するスイッチである。
【0049】このステップS105で、STARTスイ
ッチのオンイベントがあったことが判断されると、RU
Nフラグを「1」にセットする(ステップS106)。 このRUNフラグは、RAM18内の所定領域に定義さ
れるフラグである。
ッチのオンイベントがあったことが判断されると、RU
Nフラグを「1」にセットする(ステップS106)。 このRUNフラグは、RAM18内の所定領域に定義さ
れるフラグである。
【0050】また、RAM18内のコードシーケンサの
ポインタPNT及びタイマカウンタTIMNをゼロにク
リアする(ステップS107)。ポインタPNTは、現
在読出中又は記録中のコードシーケンサのデータ位置を
指すものである。またタイマカウンタTIMNは、タイ
マ15からの割り込み要求信号に応じて、RUN中(R
UNフラグが「1」)であるという条件で、インクリメ
ントされるカウンタである(図15(A)参照)。これ
らは何れもRAM18内に設けられる。
ポインタPNT及びタイマカウンタTIMNをゼロにク
リアする(ステップS107)。ポインタPNTは、現
在読出中又は記録中のコードシーケンサのデータ位置を
指すものである。またタイマカウンタTIMNは、タイ
マ15からの割り込み要求信号に応じて、RUN中(R
UNフラグが「1」)であるという条件で、インクリメ
ントされるカウンタである(図15(A)参照)。これ
らは何れもRAM18内に設けられる。
【0051】一方、STARTスイッチのオンイベント
がなかったことが判断されると、上記ステップS106
、S107はスキップされる。
がなかったことが判断されると、上記ステップS106
、S107はスキップされる。
【0052】次いで、キーデータのミキシング処理が行
われる(ステップS108)。このキーデータのミキシ
ング処理は、MIDI入力キーナンバとマニュアル入力
キーナンバ及びディスク再生キーナンバの論理和をとる
処理である。MIDI入力キーナンバとマニュアル入力
キーナンバ及びディスク再生キーナンバは、それぞれ、
RAM18のMIDIバッファ、マニュアルバッファ及
びディスクバッファに記憶されている。このミキシング
処理により、キーナンバ0〜127に対する新たなキー
情報が、RAM18内のニューキーエリアに作成される
。
われる(ステップS108)。このキーデータのミキシ
ング処理は、MIDI入力キーナンバとマニュアル入力
キーナンバ及びディスク再生キーナンバの論理和をとる
処理である。MIDI入力キーナンバとマニュアル入力
キーナンバ及びディスク再生キーナンバは、それぞれ、
RAM18のMIDIバッファ、マニュアルバッファ及
びディスクバッファに記憶されている。このミキシング
処理により、キーナンバ0〜127に対する新たなキー
情報が、RAM18内のニューキーエリアに作成される
。
【0053】次いで、キーイベントの有無が調べられる
(ステップS109)。これは、RAM18内のニュー
キーエリアの内容とオールドキーエリアの内容との排他
的論理和をとり、その結果がゼロであるか否かを調べる
ことにより行われる。したがって、MIDI入力キーナ
ンバとマニュアル入力キーナンバ及びディスク再生キー
ナンバのキーイベントの有無が共通に調べられることに
なる。
(ステップS109)。これは、RAM18内のニュー
キーエリアの内容とオールドキーエリアの内容との排他
的論理和をとり、その結果がゼロであるか否かを調べる
ことにより行われる。したがって、MIDI入力キーナ
ンバとマニュアル入力キーナンバ及びディスク再生キー
ナンバのキーイベントの有無が共通に調べられることに
なる。
【0054】ここで、キーイベントがなかったことが判
断されると、処理シーケンスはステップS116へ移る
。即ち、和音検出処理、REC処理等は行われない。 一方、キーイベントがあったことが判断されると、キー
イベントがあったキーのキーナンバが、スプリットポイ
ント(SP)のキーナンバ以下であるか否かが調べられ
る(ステップS110)。
断されると、処理シーケンスはステップS116へ移る
。即ち、和音検出処理、REC処理等は行われない。 一方、キーイベントがあったことが判断されると、キー
イベントがあったキーのキーナンバが、スプリットポイ
ント(SP)のキーナンバ以下であるか否かが調べられ
る(ステップS110)。
【0055】ここで、スプリットポイント(SP)とは
、和音検出を行うキーボードの境界を示すキーナンバで
ある。通常、このスプリットポイント以下のキーナンバ
を有する領域が和音エリアのキーとなり、和音検出の対
象となる。したがって、和音検出を行う場合、そのキー
ナンバが、スプリットポイントの上であるか下であるか
を判別する必要がある。勿論、全キー領域において和音
を検出する場合があるが、この時は、SP=127に設
定すれば良い。このスプリットポイントは、通常、可変
にできるように構成される。
、和音検出を行うキーボードの境界を示すキーナンバで
ある。通常、このスプリットポイント以下のキーナンバ
を有する領域が和音エリアのキーとなり、和音検出の対
象となる。したがって、和音検出を行う場合、そのキー
ナンバが、スプリットポイントの上であるか下であるか
を判別する必要がある。勿論、全キー領域において和音
を検出する場合があるが、この時は、SP=127に設
定すれば良い。このスプリットポイントは、通常、可変
にできるように構成される。
【0056】上記ステップS110で、キーイベントが
あったキーのキーナンバが、スプリットポイント(SP
)のキーナンバより大きいことが判断されると、和音検
出対象外のキーであるので、以下の和音検出処理、RE
C処理は行われずに、処理シーケンスはステップS11
5へ移る。したがって、通常のキー押下による発音処理
(ステップS115)が行われることになる。
あったキーのキーナンバが、スプリットポイント(SP
)のキーナンバより大きいことが判断されると、和音検
出対象外のキーであるので、以下の和音検出処理、RE
C処理は行われずに、処理シーケンスはステップS11
5へ移る。したがって、通常のキー押下による発音処理
(ステップS115)が行われることになる。
【0057】一方、スプリットポイント(SP)のキー
ナンバ以下であることが判断されると、ノートチャネル
アサイン処理が実行される(ステップS111)。ここ
で、ノートチャネルアサインとは、和音は特別の12個
の各ノートに対応した発音チャネルを余分に有し、同じ
音名(ノート)に関しては、1音しか発音できないとす
る処理である。このノートチャネルアサインは、自動伴
奏(オートアカンパニメント、オートアルペジオ)に使
用され、適宜タイミングで刻まれる。
ナンバ以下であることが判断されると、ノートチャネル
アサイン処理が実行される(ステップS111)。ここ
で、ノートチャネルアサインとは、和音は特別の12個
の各ノートに対応した発音チャネルを余分に有し、同じ
音名(ノート)に関しては、1音しか発音できないとす
る処理である。このノートチャネルアサインは、自動伴
奏(オートアカンパニメント、オートアルペジオ)に使
用され、適宜タイミングで刻まれる。
【0058】次いで、和音検出処理が実行される(ステ
ップS112)。この和音検出処理の詳細については、
後述する。
ップS112)。この和音検出処理の詳細については、
後述する。
【0059】次いで、「REC=1且つRUN=1」で
あるか否かが調べられる(ステップS113)。つまり
、和音情報の記憶を行うべきことが指定されているか否
かが調べられる。そして、和音情報の記憶を行うべきこ
とが指定されていることが判断されると、REC処理を
行う(ステップS114)。つまり、検出した和音情報
を、RAM18内のコードシーケンサに記憶する処理を
行う。このREC処理の詳細については後述する。一方
、ステップS113で、和音情報の記憶を行うべきこと
が指定されていないことが判断されると、このREC処
理はスキップされる。
あるか否かが調べられる(ステップS113)。つまり
、和音情報の記憶を行うべきことが指定されているか否
かが調べられる。そして、和音情報の記憶を行うべきこ
とが指定されていることが判断されると、REC処理を
行う(ステップS114)。つまり、検出した和音情報
を、RAM18内のコードシーケンサに記憶する処理を
行う。このREC処理の詳細については後述する。一方
、ステップS113で、和音情報の記憶を行うべきこと
が指定されていないことが判断されると、このREC処
理はスキップされる。
【0060】次いで、発音制御処理が行われる(ステッ
プS115)。この発音制御処理は、キーイベントがあ
ったキーナンバが、スプリットポイントの上か下かによ
り、アッパー音色かロワー音色かを選択して、キーイベ
ントに応じた発音を行うものである。即ち、キーのオン
イベントであれば、そのキーをいずれかのチャネルにア
サインして発音を開始させ、オフイベントであれば、対
応するキーナンバのチャネルを捜し出して発音をリリー
ス状態に移行させる。
プS115)。この発音制御処理は、キーイベントがあ
ったキーナンバが、スプリットポイントの上か下かによ
り、アッパー音色かロワー音色かを選択して、キーイベ
ントに応じた発音を行うものである。即ち、キーのオン
イベントであれば、そのキーをいずれかのチャネルにア
サインして発音を開始させ、オフイベントであれば、対
応するキーナンバのチャネルを捜し出して発音をリリー
ス状態に移行させる。
【0061】次いで、「PLY=1且つRUN=1」で
あるか否かが調べられる(ステップS116)。つまり
、和音情報の再生が指定されているか否かが調べられる
。そして、和音情報の再生が指定されていることが判断
されると、PLY処理を行い、RAM18内のコードシ
ーケンサに記憶された和音情報を再生する(ステップS
117)。このPLY処理の詳細については後述する。
あるか否かが調べられる(ステップS116)。つまり
、和音情報の再生が指定されているか否かが調べられる
。そして、和音情報の再生が指定されていることが判断
されると、PLY処理を行い、RAM18内のコードシ
ーケンサに記憶された和音情報を再生する(ステップS
117)。このPLY処理の詳細については後述する。
【0062】このPLY処理で、上記ステップS111
で行ったノートチャネルアサイン処理と同様の処理が行
われると、次いで、上記ステップS115で行ったと同
様の発音制御が行われる(ステップS118)。
で行ったノートチャネルアサイン処理と同様の処理が行
われると、次いで、上記ステップS115で行ったと同
様の発音制御が行われる(ステップS118)。
【0063】一方、ステップS116で、和音情報の再
生が指定されていないことが判断されると、このPLY
処理(ステップS117)及び発音制御処理(ステップ
S118)はスキップされる。
生が指定されていないことが判断されると、このPLY
処理(ステップS117)及び発音制御処理(ステップ
S118)はスキップされる。
【0064】次いで、「その他の処理」が行われる(ス
テップS119)。この「その他の処理」では、本発明
に直接には関係しない上述以外の処理、例えばパネル処
理、MIDI出力処理、ディスク装置書込み処理、その
他の自動演奏処理(オートベース処理等)等が行われる
。その後、ステップS101に戻り、以下同様の処理が
繰り返し実行される。
テップS119)。この「その他の処理」では、本発明
に直接には関係しない上述以外の処理、例えばパネル処
理、MIDI出力処理、ディスク装置書込み処理、その
他の自動演奏処理(オートベース処理等)等が行われる
。その後、ステップS101に戻り、以下同様の処理が
繰り返し実行される。
【0065】なお、上記自動演奏処理は、後述するCO
DOレジスタとROTOレジスタの内容及びノートチャ
ネルアサインの内容を参照して行われる。
DOレジスタとROTOレジスタの内容及びノートチャ
ネルアサインの内容を参照して行われる。
【0066】次に、上記メインルーチンのステップS1
12で行われる和音検出処理の詳細について説明する。
12で行われる和音検出処理の詳細について説明する。
【0067】図3及び図4は、和音検出処理の第1の実
施例を示すフローチャートである。
施例を示すフローチャートである。
【0068】先ず、和音エリアのキーナンバのうち、最
高音のノートナンバをHIGBレジスタに、最低音のノ
ートナンバをLOWBレジスタに入れる(ステップS2
00)。ここでHIGBレジスタ、LOWBレジスタは
、RAM18に定義されるレジスタである。これらHI
GBレジスタ、LOWBレジスタには、オクターブナン
バも同時に入れられる。
高音のノートナンバをHIGBレジスタに、最低音のノ
ートナンバをLOWBレジスタに入れる(ステップS2
00)。ここでHIGBレジスタ、LOWBレジスタは
、RAM18に定義されるレジスタである。これらHI
GBレジスタ、LOWBレジスタには、オクターブナン
バも同時に入れられる。
【0069】ここで、ノートナンバとは、C =00
00B 、C♯=0001B 、D =0010B
、D♯=0011B 、E =0100B 、F
=0101B 、F♯=0110B 、G =011
1B 、G♯=1000B 、A =1001B 、
A♯=1010B 、B =1011B である。こ
こで、添字の「B 」は2進数であることを示し、以下
、同様の意味で用いる。
00B 、C♯=0001B 、D =0010B
、D♯=0011B 、E =0100B 、F
=0101B 、F♯=0110B 、G =011
1B 、G♯=1000B 、A =1001B 、
A♯=1010B 、B =1011B である。こ
こで、添字の「B 」は2進数であることを示し、以下
、同様の意味で用いる。
【0070】また、オクターブナンバは、B1 以下
=00B 、C2 〜B2 =01B 、C3 〜B
3 =10B 、C4 以上 =11B である。
=00B 、C2 〜B2 =01B 、C3 〜B
3 =10B 、C4 以上 =11B である。
【0071】次いで、和音エリアのキーのオン/オフ状
態について、各オクターブ間で論理和をとり、その結果
をビット列としてBITBレジスタに入れる(ステップ
S201)。BITBレジスタは、図5に示すような、
RAM18に定義される12ビットのレジスタである。
態について、各オクターブ間で論理和をとり、その結果
をビット列としてBITBレジスタに入れる(ステップ
S201)。BITBレジスタは、図5に示すような、
RAM18に定義される12ビットのレジスタである。
【0072】次いで、BITBレジスタの内容が全てゼ
ロであるか否か、つまり、和音エリアに、オンになって
いるキーが1個もないか否かが調べられる(ステップS
202)。
ロであるか否か、つまり、和音エリアに、オンになって
いるキーが1個もないか否かが調べられる(ステップS
202)。
【0073】そして、全てゼロであることが判断される
と、CODBレジスタを「0」に、ROTBレジスタを
「FH 」に(添字の「H 」は16進数であることを
示す。以下、同様。)、POSBレジスタを「00B
」にセットし、さらに、BITOレジスタを「0」にし
(ステップS203)、その後、本和音検出ルーチンか
らリターンする。
と、CODBレジスタを「0」に、ROTBレジスタを
「FH 」に(添字の「H 」は16進数であることを
示す。以下、同様。)、POSBレジスタを「00B
」にセットし、さらに、BITOレジスタを「0」にし
(ステップS203)、その後、本和音検出ルーチンか
らリターンする。
【0074】ここで、CODBレジスタ、ROTBレジ
スタ、POSBレジスタ、BITOレジスタの各レジス
タは、RAM18に定義されるレジスタである。
スタ、POSBレジスタ、BITOレジスタの各レジス
タは、RAM18に定義されるレジスタである。
【0075】CODBレジスタは、コードタイプを記憶
するレジスタである。コードタイプは、表1の右側部に
示す7種類があり、それぞれ「0〜7」のコード値で表
される。このCODBレジスタに「0」を入れるという
ことは、和音エリアにキーオンが1つもないということ
を意味する。
するレジスタである。コードタイプは、表1の右側部に
示す7種類があり、それぞれ「0〜7」のコード値で表
される。このCODBレジスタに「0」を入れるという
ことは、和音エリアにキーオンが1つもないということ
を意味する。
【0076】
【表1】
ROTBレジスタは、コードルートを記憶するレジスタ
である。コードルートは、ノートナンバと同じコードで
表され、C=0000B 、C♯=0001B 、D=
0010B 、…、B=1011B の12種類がある
。このROTBレジスタに「FH 」を入れるというこ
とは、対応するコードルートが存在しないということを
意味する。
である。コードルートは、ノートナンバと同じコードで
表され、C=0000B 、C♯=0001B 、D=
0010B 、…、B=1011B の12種類がある
。このROTBレジスタに「FH 」を入れるというこ
とは、対応するコードルートが存在しないということを
意味する。
【0077】POSBレジスタは、補正音を記憶するレ
ジスタである。このPOSBレジスタに「00B 」を
入れるということは、後述する補正音がないことを意味
する。
ジスタである。このPOSBレジスタに「00B 」を
入れるということは、後述する補正音がないことを意味
する。
【0078】BITOレジスタは、今回の和音検出処理
で得たビット列、つまりBITBの内容を格納するレジ
スタであり、次回の和音検出処理において参照される。
で得たビット列、つまりBITBの内容を格納するレジ
スタであり、次回の和音検出処理において参照される。
【0079】上記ステップS202で、BITBレジス
タの内容が全てゼロでない、つまり和音エリアに何らか
のキーオンがあったことが判断されると、RTATレジ
スタをクリアする(ステップS204)。このRTAT
レジスタは、RAM18に定義されるレジスタであり、
ビット列をローテイトシフトした回数を記憶するもので
ある。
タの内容が全てゼロでない、つまり和音エリアに何らか
のキーオンがあったことが判断されると、RTATレジ
スタをクリアする(ステップS204)。このRTAT
レジスタは、RAM18に定義されるレジスタであり、
ビット列をローテイトシフトした回数を記憶するもので
ある。
【0080】次いで、BITBレジスタの内容をBIT
Aレジスタに入れる(ステップS205)。このBIT
Aレジスタは、RAM18に定義されるレジスタであり
、ビット列をローテイトシフトするための作業用のレジ
スタである。
Aレジスタに入れる(ステップS205)。このBIT
Aレジスタは、RAM18に定義されるレジスタであり
、ビット列をローテイトシフトするための作業用のレジ
スタである。
【0081】そして、このBITAレジスタの下位3ビ
ットが「001B 」であるか否かを調べる(ステップ
S206)。これは、表1に示すように、コードが成立
する場合は、下位3ビットが「001B 」になること
に着目したものである。なお、全てゼロの場合は、上記
ステップS202で調べられて既に除外されている。
ットが「001B 」であるか否かを調べる(ステップ
S206)。これは、表1に示すように、コードが成立
する場合は、下位3ビットが「001B 」になること
に着目したものである。なお、全てゼロの場合は、上記
ステップS202で調べられて既に除外されている。
【0082】このステップS206で、BITAレジス
タの下位3ビットが「001B 」でないことが判断さ
れると、RTATレジスタの内容をインクリメントし(
ステップS207)、その後、BITAレジスタを1ビ
ット分ローテイトシフトする(ステップS208)。こ
のローテイトシフトの方向は、左右いずれであっても良
い。
タの下位3ビットが「001B 」でないことが判断さ
れると、RTATレジスタの内容をインクリメントし(
ステップS207)、その後、BITAレジスタを1ビ
ット分ローテイトシフトする(ステップS208)。こ
のローテイトシフトの方向は、左右いずれであっても良
い。
【0083】次いで、RTATレジスタの内容が「12
」になったか否か、つまり、BITAレジスタを12回
ローテイトシフトしたか(一巡したか)否かを調べる(
ステップS209)。そして、「12」でなければステ
ップS206へ戻り、ステップS206〜S209の動
作を繰り返す。
」になったか否か、つまり、BITAレジスタを12回
ローテイトシフトしたか(一巡したか)否かを調べる(
ステップS209)。そして、「12」でなければステ
ップS206へ戻り、ステップS206〜S209の動
作を繰り返す。
【0084】この繰り返し実行過程において、ステップ
S209で、「12」になったことが判断されると、和
音コードが成立しなかったものと判断し、ステップS2
10以下のコード不成立の場合の処理を実行する。
S209で、「12」になったことが判断されると、和
音コードが成立しなかったものと判断し、ステップS2
10以下のコード不成立の場合の処理を実行する。
【0085】即ち、先ず、CODBレジスタ及びROT
Bレジスタのそれぞれに「FH 」を入れる(ステップ
S210)。ここで、CODBレジスタの内容が「FH
」であることは、和音エリアでのキーオンはあったが
、コードが成立しなかったことを意味する。
Bレジスタのそれぞれに「FH 」を入れる(ステップ
S210)。ここで、CODBレジスタの内容が「FH
」であることは、和音エリアでのキーオンはあったが
、コードが成立しなかったことを意味する。
【0086】次いで、BITBレジスタの内容と、前回
の和音検出処理で得たビット列が入っているBITOレ
ジスタの内容との排他的論理和(図中、記号「∀」で示
す。)をとり、結果をBITXレジスタに格納する。 (ステップS211)。ここで、BITXレジスタは、
RAM18に定義されるレジスタであり、前回のビット
列に対し、今回のビット列中で変化があったビットを記
憶するものである。上記排他的論理和をとることにより
、変化があったビットが「1」として、BITXレジス
タに記憶されることになる。
の和音検出処理で得たビット列が入っているBITOレ
ジスタの内容との排他的論理和(図中、記号「∀」で示
す。)をとり、結果をBITXレジスタに格納する。 (ステップS211)。ここで、BITXレジスタは、
RAM18に定義されるレジスタであり、前回のビット
列に対し、今回のビット列中で変化があったビットを記
憶するものである。上記排他的論理和をとることにより
、変化があったビットが「1」として、BITXレジス
タに記憶されることになる。
【0087】次に、ステップS211aを実行するが、
このステップは省略しても良い。即ち、省略した場合は
、BITOレジスタの内容がコード不成立のときには変
化せず、メモリへ記憶される情報は、常に、それ以前に
成立した和音コード(全鍵離鍵時もその1つであるが)
に対しての変化ビットとなるため、現在の基本としてい
る和音が分かり易い。
このステップは省略しても良い。即ち、省略した場合は
、BITOレジスタの内容がコード不成立のときには変
化せず、メモリへ記憶される情報は、常に、それ以前に
成立した和音コード(全鍵離鍵時もその1つであるが)
に対しての変化ビットとなるため、現在の基本としてい
る和音が分かり易い。
【0088】これに対し、ステップS211aを省略し
ない場合は、BITOレジスタの内容が、コード成立/
不成立に関係なく変化し、メモリへ記憶される情報は、
常に、直前にこのルーチンへ入ったビットマップに対し
ての変化ビットのみとなるため、記憶情報量を最低限に
保つことができる。
ない場合は、BITOレジスタの内容が、コード成立/
不成立に関係なく変化し、メモリへ記憶される情報は、
常に、直前にこのルーチンへ入ったビットマップに対し
ての変化ビットのみとなるため、記憶情報量を最低限に
保つことができる。
【0089】次いで、図6(B)に示す形式のデータが
作成されることになる。これらのデータが格納される各
レジスタは何れもRAM18に定義される。即ち、BI
TXレジスタで「1」となっているビットをノートナン
バに変換してNOTBレジスタに入れる(ステップS2
12)。NOTBレジスタは、ノートナンバを記憶する
レジスタである。
作成されることになる。これらのデータが格納される各
レジスタは何れもRAM18に定義される。即ち、BI
TXレジスタで「1」となっているビットをノートナン
バに変換してNOTBレジスタに入れる(ステップS2
12)。NOTBレジスタは、ノートナンバを記憶する
レジスタである。
【0090】次いで、BITXレジスタで「1」となっ
たビットが、今回新たにオンになったのかオフになった
のかを、BITBレジスタを参照することにより判断し
、その結果をON/OFレジスタに入れる(ステップS
213)。
たビットが、今回新たにオンになったのかオフになった
のかを、BITBレジスタを参照することにより判断し
、その結果をON/OFレジスタに入れる(ステップS
213)。
【0091】次いで、NOTBレジスタと、HIGBレ
ジスタ及びLOWBレジスタとを比較して補正音を作成
しPOSBレジスタに入れる(ステップS214)。即
ち、NOTBレジスタの内容とHIGBレジスタの内容
又はLOWBレジスタの内容とが同じであるか否かを調
べ、下記の条件により2ビットのデータを作成してPO
SBレジスタに記憶する。 ■NOTB=HIGBであれば、POSB=10B (
最高音) ■NOTB=LOWBであれば、POSB=01B (
最低音) ■上記のいずれでもない場合は、POSB=11B (
中間音) なお、補正ノートなしの場合は、POSB=00B が
入れられる。
ジスタ及びLOWBレジスタとを比較して補正音を作成
しPOSBレジスタに入れる(ステップS214)。即
ち、NOTBレジスタの内容とHIGBレジスタの内容
又はLOWBレジスタの内容とが同じであるか否かを調
べ、下記の条件により2ビットのデータを作成してPO
SBレジスタに記憶する。 ■NOTB=HIGBであれば、POSB=10B (
最高音) ■NOTB=LOWBであれば、POSB=01B (
最低音) ■上記のいずれでもない場合は、POSB=11B (
中間音) なお、補正ノートなしの場合は、POSB=00B が
入れられる。
【0092】次いで、LOWBレジスタのオクターブナ
ンバを取り出し、OCTBレジスタに入れる(ステップ
S215)。次いで、OCTBレジスタの内容をOCT
Oレジスタに入れる(ステップS216)。ここで、O
CTOレジスタは、RAM18に定義されるレジスタで
あり、前回の和音検出処理で得たオクターブナンバを格
納しているレジスタである。そして、このステップS2
16の処理を終了後、本和音検出ルーチンをリターンす
る。以上でコードが成立しなかった場合の処理を終了す
る。
ンバを取り出し、OCTBレジスタに入れる(ステップ
S215)。次いで、OCTBレジスタの内容をOCT
Oレジスタに入れる(ステップS216)。ここで、O
CTOレジスタは、RAM18に定義されるレジスタで
あり、前回の和音検出処理で得たオクターブナンバを格
納しているレジスタである。そして、このステップS2
16の処理を終了後、本和音検出ルーチンをリターンす
る。以上でコードが成立しなかった場合の処理を終了す
る。
【0093】一方、上記ステップS206で、BITA
レジスタの下位3ビットが「001B 」であることが
判断されると、図6(A)に示す形式のデータが作成さ
れることになる。即ち、BITAレジスタの下位3ビッ
トを除く9ビットからなるビット列を作成する(ステッ
プS217)。例えば、BITAレジスタの内容が、
レジスタの下位3ビットが「001B 」であることが
判断されると、図6(A)に示す形式のデータが作成さ
れることになる。即ち、BITAレジスタの下位3ビッ
トを除く9ビットからなるビット列を作成する(ステッ
プS217)。例えば、BITAレジスタの内容が、
【
0094】BITA=「000010010001」で
あったなら、ビット列=「000010010」という
9ビットのビット列を得る。
0094】BITA=「000010010001」で
あったなら、ビット列=「000010010」という
9ビットのビット列を得る。
【0095】次いで、該ビット列をアドレスとして、例
えば表2に示すように構成されたコード表を参照し、対
応するアドレスから読み出したコードタイプ、準コード
ルートをそれぞれCODBレジスタ、ROTBレジスタ
に入れる(ステップS218)。つまり、コードが成立
しなければ「FFH 」が、コードが成立すれば、コー
ドタイプ0〜7と準コードルート0〜BH が得られる
ので、上位4ビットのコードタイプをCODBレジスタ
へ、下位4ビットの準コードルートをROTBレジスタ
に入れる。
えば表2に示すように構成されたコード表を参照し、対
応するアドレスから読み出したコードタイプ、準コード
ルートをそれぞれCODBレジスタ、ROTBレジスタ
に入れる(ステップS218)。つまり、コードが成立
しなければ「FFH 」が、コードが成立すれば、コー
ドタイプ0〜7と準コードルート0〜BH が得られる
ので、上位4ビットのコードタイプをCODBレジスタ
へ、下位4ビットの準コードルートをROTBレジスタ
に入れる。
【0096】
【表2】
次いで、CODBレジスタ、ROTBレジスタの内容が
双方共「FH 」であるか否かを調べる(ステップS2
19)。即ち、コード不成立であるか否かを調べる。
双方共「FH 」であるか否かを調べる(ステップS2
19)。即ち、コード不成立であるか否かを調べる。
【0097】ここで、CODBレジスタ、ROTBレジ
スタの内容が双方共「FH 」であることが判断される
と、コード不成立であったことを認識し、ステップS2
11へ分岐する。ステップS211以降の処理は上述し
た通りであるので、ここでは説明を省略する。
スタの内容が双方共「FH 」であることが判断される
と、コード不成立であったことを認識し、ステップS2
11へ分岐する。ステップS211以降の処理は上述し
た通りであるので、ここでは説明を省略する。
【0098】一方、ステップS219で、CODBレジ
スタの内容、又はROTBレジスタの内容のいずれかが
「FH 」でないことが判断されると、表2を参照して
得られたROTBレジスタの準コードルートと、先にロ
ーテイトシフトした際に、その回数を記憶しているRT
ATレジスタの内容を加算し、結果をROTBレジスタ
に入れる(ステップS220)。但し、この加算結果が
「12」より大きい値になったときは、「12」を減算
する。これにより、ROTBレジスタ内に本当のコード
ルート(正コードルート)が得られることになる。
スタの内容、又はROTBレジスタの内容のいずれかが
「FH 」でないことが判断されると、表2を参照して
得られたROTBレジスタの準コードルートと、先にロ
ーテイトシフトした際に、その回数を記憶しているRT
ATレジスタの内容を加算し、結果をROTBレジスタ
に入れる(ステップS220)。但し、この加算結果が
「12」より大きい値になったときは、「12」を減算
する。これにより、ROTBレジスタ内に本当のコード
ルート(正コードルート)が得られることになる。
【0099】次いで、CODBレジスタの内容をCOD
Oレジスタに、ROTBレジスタの内容をROTOレジ
スタに、BITBレジスタの内容をBITOレジスタに
、それぞれ格納する(ステップS221)。
Oレジスタに、ROTBレジスタの内容をROTOレジ
スタに、BITBレジスタの内容をBITOレジスタに
、それぞれ格納する(ステップS221)。
【0100】次いで、和音エリアのキーオンの中で、最
低音のノートが何であったかを少ないビット数(2ビッ
ト)で表す処理を行う(ステップS222)。
低音のノートが何であったかを少ないビット数(2ビッ
ト)で表す処理を行う(ステップS222)。
【0101】即ち、表1において、正コードルート(R
OTBレジスタに記憶されている)に対して、どれだけ
離れた位置に最低音のノート(LOWBレジスタ)が存
在するかを調べる。
OTBレジスタに記憶されている)に対して、どれだけ
離れた位置に最低音のノート(LOWBレジスタ)が存
在するかを調べる。
【0102】実際には、ROTBレジスタの内容からL
OWBレジスタの内容を減算し、結果が「12」以上で
あれば「12」を減じ、結果が負であれば「12」を加
算してSUBTレジスタに入れる。そして、SUBTレ
ジスタに得られた値「0〜11」を、下記のように分類
してMINBレジスタに入れる。
OWBレジスタの内容を減算し、結果が「12」以上で
あれば「12」を減じ、結果が負であれば「12」を加
算してSUBTレジスタに入れる。そして、SUBTレ
ジスタに得られた値「0〜11」を、下記のように分類
してMINBレジスタに入れる。
【0103】■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つしかないという特性を利用したものである。
時、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つしかないという特性を利用したものである。
【0104】このMINBレジスタに格納すべき値をさ
らに確実に得るために、コードルートからキーオンの数
を数え、それがLOWBレジスタのノートと同じになっ
た時の値を用いるように構成しても良い。
らに確実に得るために、コードルートからキーオンの数
を数え、それがLOWBレジスタのノートと同じになっ
た時の値を用いるように構成しても良い。
【0105】次いで、LOWBレジスタのオクターブナ
ンバを、OCTBレジスタに入れる(ステップS223
)。
ンバを、OCTBレジスタに入れる(ステップS223
)。
【0106】そして、OCTOレジスタの内容とOCT
Bレジスタの内容とを比較することにより、前回の和音
検出処理が行われた際に得られたオクターブナンバから
、今回得られたオクターブナンバが変化しているか否か
を調べる(ステップS224)。
Bレジスタの内容とを比較することにより、前回の和音
検出処理が行われた際に得られたオクターブナンバから
、今回得られたオクターブナンバが変化しているか否か
を調べる(ステップS224)。
【0107】そして、変化していないことが判断される
と、ステップS227へ分岐し、POSBレジスタの内
容を「11B 」にセットし、オクターブ変更はないこ
とを伝えてリターンする。この際のPOSBレジスタの
値は、中間音であることを示す本来の意味ではなく、オ
クターブ変更がないことを伝える特殊な意味で使用され
る。
と、ステップS227へ分岐し、POSBレジスタの内
容を「11B 」にセットし、オクターブ変更はないこ
とを伝えてリターンする。この際のPOSBレジスタの
値は、中間音であることを示す本来の意味ではなく、オ
クターブ変更がないことを伝える特殊な意味で使用され
る。
【0108】一方、上記ステップS224でオクターブ
ナンバが変化していることが判断されると、POSBレ
ジスタの内容を「00B 」にセットする(ステップS
225)。これは、オクターブ変更があり、補正ノート
はないことを表す。
ナンバが変化していることが判断されると、POSBレ
ジスタの内容を「00B 」にセットする(ステップS
225)。これは、オクターブ変更があり、補正ノート
はないことを表す。
【0109】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れ(ステップS226)、その後、この
和音検出ルーチンをリターンする。
Oレジスタに入れ(ステップS226)、その後、この
和音検出ルーチンをリターンする。
【0110】以上説明した和音検出処理の第1の実施例
では、ビット列の下位3ビットに注目してビット列パタ
ーンをチェックしたが、これに限定されるものでなく、
例えば上位の3ビットでも良く、さらに、その他の任意
の3ビットでも良い。
では、ビット列の下位3ビットに注目してビット列パタ
ーンをチェックしたが、これに限定されるものでなく、
例えば上位の3ビットでも良く、さらに、その他の任意
の3ビットでも良い。
【0111】また、ビットパターンとしてチェックする
ビット数も3ビットに限定されるものでなく、例えば下
位2ビットを「01B 」とし、同じビットパターンが
見つかった時点で、その他の10ビットをアドレスとし
て、表2よりも1ビット多いアドレスで構成されるコー
ド表を参照してコード成立の有無をチェックすることも
可能である。
ビット数も3ビットに限定されるものでなく、例えば下
位2ビットを「01B 」とし、同じビットパターンが
見つかった時点で、その他の10ビットをアドレスとし
て、表2よりも1ビット多いアドレスで構成されるコー
ド表を参照してコード成立の有無をチェックすることも
可能である。
【0112】また、下位1ビットの「1」の状態を検出
して、その他の11ビットをアドレスとして、表2より
も2ビット多いアドレスで構成されるコード表を参照し
てコード成立の有無をチェックすることも可能である。
して、その他の11ビットをアドレスとして、表2より
も2ビット多いアドレスで構成されるコード表を参照し
てコード成立の有無をチェックすることも可能である。
【0113】さらに、上記実施例では、ビットパターン
中に必ず「1」が存在したが、「00B 」というビッ
トパターンをチェックして残り10ビットのコード表を
参照してコード成立の有無をチェックすることも可能で
ある。
中に必ず「1」が存在したが、「00B 」というビッ
トパターンをチェックして残り10ビットのコード表を
参照してコード成立の有無をチェックすることも可能で
ある。
【0114】以上、要するに、12ビットのフルパター
ンから1ビット以上を除外したパターン表を参照するよ
うに構成することで、コード表の大きさを小さくするこ
とができ、メモリ容量の減少を図ることができる。
ンから1ビット以上を除外したパターン表を参照するよ
うに構成することで、コード表の大きさを小さくするこ
とができ、メモリ容量の減少を図ることができる。
【0115】次に、和音検出ルーチンの第2の実施例に
ついて、図7及び図8のフローチャートを参照しながら
説明する。
ついて、図7及び図8のフローチャートを参照しながら
説明する。
【0116】図において、ステップS250、251は
、上記第1の実施例のステップS200、S201と同
じである。即ち、和音エリアのキーナンバのうち、最高
音のノートナンバをHIGBレジスタに、最低音のノー
トナンバをLOWBレジスタに入れる(ステップS25
0)。このHIGBレジスタ、LOWBレジスタは、オ
クターブナンバも同時に入れられる。
、上記第1の実施例のステップS200、S201と同
じである。即ち、和音エリアのキーナンバのうち、最高
音のノートナンバをHIGBレジスタに、最低音のノー
トナンバをLOWBレジスタに入れる(ステップS25
0)。このHIGBレジスタ、LOWBレジスタは、オ
クターブナンバも同時に入れられる。
【0117】次いで、和音エリアのキーのオン/オフ状
態について、各オクターブ間で論理和をとり、その結果
をビット列としてBITBレジスタに入れる(ステップ
S251)。
態について、各オクターブ間で論理和をとり、その結果
をビット列としてBITBレジスタに入れる(ステップ
S251)。
【0118】次いで、BITBレジスタの内容を2つに
分けて上位ビット列をBITHレジスタに、下位ビット
列をBITLレジスタに入れる(ステップS252)。 BITHレジスタ、BITLレジスタの一例を図9に示
す。
分けて上位ビット列をBITHレジスタに、下位ビット
列をBITLレジスタに入れる(ステップS252)。 BITHレジスタ、BITLレジスタの一例を図9に示
す。
【0119】同図では、BITHレジスタとしてBIT
Bレジスタの上位4ビット、BITLレジスタとしてB
ITBレジスタの下位8ビットを記憶するように構成し
たが、この分け方は任意である。即ち、BITHレジス
タ、BITLレジスタの各ビット数は任意であり、ビッ
トの並び方も任意に構成して良い。さらに、2分割に限
定されず、3分割さらにはそれ以上の数に分割しても良
い。
Bレジスタの上位4ビット、BITLレジスタとしてB
ITBレジスタの下位8ビットを記憶するように構成し
たが、この分け方は任意である。即ち、BITHレジス
タ、BITLレジスタの各ビット数は任意であり、ビッ
トの並び方も任意に構成して良い。さらに、2分割に限
定されず、3分割さらにはそれ以上の数に分割しても良
い。
【0120】次いで、BITLレジスタの内容をアドレ
スとして、例えば表3に示すように構成される第1コー
ド表を参照し、該当情報を読み出してREFAレジスタ
に入れる(ステップS253)。
スとして、例えば表3に示すように構成される第1コー
ド表を参照し、該当情報を読み出してREFAレジスタ
に入れる(ステップS253)。
【0121】
【表3】
この第1コード表は、下位ビット列だけでコードとして
成立する可能性のあるパターンには、残りの上位ビット
列を参照するためのヘッドアドレスが格納されている。 一方、下位ビット列だけで見ても既にコードとして成立
する可能性がない場合は、不成立として「FFH 」が
格納されている。
成立する可能性のあるパターンには、残りの上位ビット
列を参照するためのヘッドアドレスが格納されている。 一方、下位ビット列だけで見ても既にコードとして成立
する可能性がない場合は、不成立として「FFH 」が
格納されている。
【0122】次に、REFAレジスタの内容を参照して
「FFH 」であるか否かを調べる(ステップS254
)。ここで、「FFH 」であることが判断されると、
和音コードが成立しなかったものと判断し、コード不成
立の場合の処理を実行する。
「FFH 」であるか否かを調べる(ステップS254
)。ここで、「FFH 」であることが判断されると、
和音コードが成立しなかったものと判断し、コード不成
立の場合の処理を実行する。
【0123】即ち、先ず、CODBレジスタ及びROT
Bレジスタのそれぞれに「FH 」を入れる(ステップ
S255)。ここで、CODBレジスタの内容が「FH
」であることは、和音エリアでのキーオンはあったが
、コードが成立しなかったことを意味する。
Bレジスタのそれぞれに「FH 」を入れる(ステップ
S255)。ここで、CODBレジスタの内容が「FH
」であることは、和音エリアでのキーオンはあったが
、コードが成立しなかったことを意味する。
【0124】次いで、BITBレジスタの内容と、前回
の和音検出処理で得たビット列が入っているBITOレ
ジスタとの排他的論理和をとり、結果をBITXレジス
タに格納する(ステップS256)。これにより、変化
があったビットが「1」として、BITXレジスタに記
憶されることになる。次に、ステップS256aを実行
するが、このステップは省略しても良い。省略した場合
又は省略しない場合のそれぞれの効果は、図4のステッ
プS211aで説明した通りである。
の和音検出処理で得たビット列が入っているBITOレ
ジスタとの排他的論理和をとり、結果をBITXレジス
タに格納する(ステップS256)。これにより、変化
があったビットが「1」として、BITXレジスタに記
憶されることになる。次に、ステップS256aを実行
するが、このステップは省略しても良い。省略した場合
又は省略しない場合のそれぞれの効果は、図4のステッ
プS211aで説明した通りである。
【0125】次いで、図11(B)に示す形式のデータ
が作成されることになる。即ち、BITXレジスタで「
1」となったビットが存在するグループの番号(グルー
プナンバ)をBGRPレジスタに入れる(ステップS2
57)。BGRPレジスタは、RAM18に定義される
レジスタである。
が作成されることになる。即ち、BITXレジスタで「
1」となったビットが存在するグループの番号(グルー
プナンバ)をBGRPレジスタに入れる(ステップS2
57)。BGRPレジスタは、RAM18に定義される
レジスタである。
【0126】このBGRPレジスタに入れられるデータ
は、下記のように定義される。
は、下記のように定義される。
【0127】
■BGRPレジスタ=00B : D ,C♯,C
■BGRPレジスタ=01B : F ,E ,
D♯■BGRPレジスタ=10B : G♯,G
,F♯■BGRPレジスタ=11B : B ,A
♯,A次いで、BITBレジスタの中で、BGRPのグ
ループナンバに対応したビット列を選択し、BPTNレ
ジスタに格納する(ステップS258)。
■BGRPレジスタ=01B : F ,E ,
D♯■BGRPレジスタ=10B : G♯,G
,F♯■BGRPレジスタ=11B : B ,A
♯,A次いで、BITBレジスタの中で、BGRPのグ
ループナンバに対応したビット列を選択し、BPTNレ
ジスタに格納する(ステップS258)。
【0128】そして、BITXレジスタの中で、「1」
であるノートナンバαと、HIGBレジスタ及びLOW
Bレジスタとを比較して補正音を作成しPOSBレジス
タに入れる(ステップS259)。即ち、BITXレジ
スタの内容とHIGBレジスタ内容及びLOWBレジス
タ内容とが同じであるか否かを調べ、下記の条件により
POSBレジスタに記憶するデータを作成する。
であるノートナンバαと、HIGBレジスタ及びLOW
Bレジスタとを比較して補正音を作成しPOSBレジス
タに入れる(ステップS259)。即ち、BITXレジ
スタの内容とHIGBレジスタ内容及びLOWBレジス
タ内容とが同じであるか否かを調べ、下記の条件により
POSBレジスタに記憶するデータを作成する。
【0129】
■α=HIGBであれば、POSB=10B (最高音
)■α=LOWBであれば、POSB=01B (最低
音)■上記のいずれでもない場合は、POSB=11B
(中間音) なお、補正ノートなしの場合は、POSB=00B が
入れられる。
)■α=LOWBであれば、POSB=01B (最低
音)■上記のいずれでもない場合は、POSB=11B
(中間音) なお、補正ノートなしの場合は、POSB=00B が
入れられる。
【0130】次いで、HIGBレジスタのオクターブナ
ンバを取り出し、OCTBレジスタに入れる(ステップ
S260)。
ンバを取り出し、OCTBレジスタに入れる(ステップ
S260)。
【0131】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れる(ステップS261)。そして、こ
のステップS261の処理を終了後、本和音検出ルーチ
ンをリターンする。
Oレジスタに入れる(ステップS261)。そして、こ
のステップS261の処理を終了後、本和音検出ルーチ
ンをリターンする。
【0132】一方、上記ステップS254で、REFA
レジスタの内容が「FFH 」でないことが判断される
と、図11(A)に示す形式のデータが作成されること
になる。即ち、REFAレジスタの内容が「FFH 」
でなければ、残りのビット列のパターン次第ではコード
が成立する可能性があるので、REFAレジスタの内容
を高位アドレス、残りのビット列(BITHレジスタの
内容)を下位アドレスとして表4に示すように構成され
た第2コード表を参照し、該当データを読み出す。
レジスタの内容が「FFH 」でないことが判断される
と、図11(A)に示す形式のデータが作成されること
になる。即ち、REFAレジスタの内容が「FFH 」
でなければ、残りのビット列のパターン次第ではコード
が成立する可能性があるので、REFAレジスタの内容
を高位アドレス、残りのビット列(BITHレジスタの
内容)を下位アドレスとして表4に示すように構成され
た第2コード表を参照し、該当データを読み出す。
【0133】
【表4】
そして、読み出したデータの上位4ビット(コードタイ
プ)をCODBレジスタに、下位4ビット(コードルー
ト)をROTBレジスタに入れる(ステップS262)
。
プ)をCODBレジスタに、下位4ビット(コードルー
ト)をROTBレジスタに入れる(ステップS262)
。
【0134】次いで、CODBレジスタ、ROTBレジ
スタの内容が双方共「FH 」であるか否かを調べる(
ステップS263)。即ち、コード不成立であるか否か
を調べる。
スタの内容が双方共「FH 」であるか否かを調べる(
ステップS263)。即ち、コード不成立であるか否か
を調べる。
【0135】ここで、CODBレジスタ、ROTBレジ
スタの内容が双方共「FH 」であることが判断される
と、コード不成立であることを認識し、ステップS25
6へ分岐する。ステップS256以降の処理は上述した
通りであるので、ここでは説明を省略する。
スタの内容が双方共「FH 」であることが判断される
と、コード不成立であることを認識し、ステップS25
6へ分岐する。ステップS256以降の処理は上述した
通りであるので、ここでは説明を省略する。
【0136】一方、ステップS263で、CODBレジ
スタの内容、又はROTBレジスタの内容のいずれかが
「FH 」でないことが判断されると、CODBレジス
タの内容をCODOレジスタに、ROTBレジスタの内
容をROTOレジスタに、BITBレジスタの内容をB
ITOレジスタに、それぞれ格納する(ステップS26
4)。
スタの内容、又はROTBレジスタの内容のいずれかが
「FH 」でないことが判断されると、CODBレジス
タの内容をCODOレジスタに、ROTBレジスタの内
容をROTOレジスタに、BITBレジスタの内容をB
ITOレジスタに、それぞれ格納する(ステップS26
4)。
【0137】次いで、和音エリアのキーオンの中で、最
低音のノートが何であったかを少ないビット数(2ビッ
ト)で表す処理、つまりコードルート(ROTBレジス
タの内容)と最低音(LOWBレジスタの内容)との差
を検出する処理を行う(ステップS265)。この処理
は、上記第1実施例のステップS222と同じ処理であ
るので、詳細は省略する。
低音のノートが何であったかを少ないビット数(2ビッ
ト)で表す処理、つまりコードルート(ROTBレジス
タの内容)と最低音(LOWBレジスタの内容)との差
を検出する処理を行う(ステップS265)。この処理
は、上記第1実施例のステップS222と同じ処理であ
るので、詳細は省略する。
【0138】次いで、HIGBレジスタのオクターブナ
ンバを、OCTBレジスタに入れる(ステップS266
)。
ンバを、OCTBレジスタに入れる(ステップS266
)。
【0139】そして、OCTOレジスタの内容とOCT
Bレジスタの内容とを比較することにより、前回の和音
検出処理が行われた際に得られたオクターブナンバから
、今回得られたオクターブナンバが変化しているか否か
を調べる(ステップS267)。
Bレジスタの内容とを比較することにより、前回の和音
検出処理が行われた際に得られたオクターブナンバから
、今回得られたオクターブナンバが変化しているか否か
を調べる(ステップS267)。
【0140】そして、変化していないことが判断される
と、ステップS270へ分岐し、POSBレジスタの内
容を「11B 」にセットし、オクターブ変更はないこ
とを伝えてリターンする。ここでのPOSBレジスタの
値は、中間音であることを示す本来の意味ではなく、オ
クターブ変更がないことを伝える特殊な意味で使用され
る。
と、ステップS270へ分岐し、POSBレジスタの内
容を「11B 」にセットし、オクターブ変更はないこ
とを伝えてリターンする。ここでのPOSBレジスタの
値は、中間音であることを示す本来の意味ではなく、オ
クターブ変更がないことを伝える特殊な意味で使用され
る。
【0141】一方、上記ステップS267でオクターブ
ナンバが変化していることが判断されると、POSBレ
ジスタの内容を「00B 」にセットする(ステップS
268)。これは、オクターブナンバの修正はあるが、
補正ノートはないことを意味する。
ナンバが変化していることが判断されると、POSBレ
ジスタの内容を「00B 」にセットする(ステップS
268)。これは、オクターブナンバの修正はあるが、
補正ノートはないことを意味する。
【0142】次いで、OCTBレジスタの内容をOCT
Oレジスタに入れ(ステップS269)、その後、この
和音検出ルーチンをリターンする。
Oレジスタに入れ(ステップS269)、その後、この
和音検出ルーチンをリターンする。
【0143】以上説明した和音検出処理の第2の実施例
では、12ビット列を高位4ビットと低位8ビットに分
割し、先に低位8ビットを参照するようにしたがこれに
限定されるものではない。
では、12ビット列を高位4ビットと低位8ビットに分
割し、先に低位8ビットを参照するようにしたがこれに
限定されるものではない。
【0144】例えば、図10に示すような分け方もある
。また、コード表を参照する場合に、先にBITHレジ
スタで参照するか、BITLレジスタで参照するかも任
意である。
。また、コード表を参照する場合に、先にBITHレジ
スタで参照するか、BITLレジスタで参照するかも任
意である。
【0145】また、分割は2つに限定されるものでなく
、例えば、BITH,BITM,BITLのように3つ
に分割することもできるし、それ以上の数に分割するこ
ともできる。
、例えば、BITH,BITM,BITLのように3つ
に分割することもできるし、それ以上の数に分割するこ
ともできる。
【0146】以上、要するに、212の全ビットパター
ン中、コード成立の可能性があるグループだけを表とし
て用意し、これを複数回参照することによりコード表を
小さくすることができ、メモリ容量の減少を図ることが
できる。
ン中、コード成立の可能性があるグループだけを表とし
て用意し、これを複数回参照することによりコード表を
小さくすることができ、メモリ容量の減少を図ることが
できる。
【0147】次に、メインルーチン(図2)のステップ
S114で行うREC処理の第1の実施例の詳細につい
て、図12に示すフローチャートを参照しながら説明す
る。
S114で行うREC処理の第1の実施例の詳細につい
て、図12に示すフローチャートを参照しながら説明す
る。
【0148】なお、本REC処理ルーチン(実施例1)
は、上記和音検出処理の第1の実施例に対応させて記載
しているが、第2の実施例でも略同様の処理で実現でき
る。
は、上記和音検出処理の第1の実施例に対応させて記載
しているが、第2の実施例でも略同様の処理で実現でき
る。
【0149】先ず、CODBレジスタ、ROTBレジス
タの内容が双方共「FH 」であるか否か、つまりコー
ド不成立であるか否かを調べる(ステップS300)。
タの内容が双方共「FH 」であるか否か、つまりコー
ド不成立であるか否かを調べる(ステップS300)。
【0150】そして、コード不成立であることが判断さ
れるとステップS307へ分岐する。一方、コード成立
であることが判断されると、前回変化のあったタイム(
TIMO)と今回のタイム(TIMN)との時間差を求
め、TIMBレジスタに格納する(ステップS301)
。そして、今回のタイムTIMNをTIMOレジスタに
入れる(ステップS302)。
れるとステップS307へ分岐する。一方、コード成立
であることが判断されると、前回変化のあったタイム(
TIMO)と今回のタイム(TIMN)との時間差を求
め、TIMBレジスタに格納する(ステップS301)
。そして、今回のタイムTIMNをTIMOレジスタに
入れる(ステップS302)。
【0151】次いで、図6(A)に示すように、MIN
Bレジスタの内容とTIMBレジスタの内容とを、シー
ケンスポインタPNTで示されるアドレスへ格納する(
ステップS303)。また、CODBレジスタの内容と
ROTBレジスタの内容とを、シーケンスポインタPN
T+1で示されるアドレスへ格納する(ステップS30
4)。そして、シーケンスポインタを「+2」する(ス
テップS305)。
Bレジスタの内容とTIMBレジスタの内容とを、シー
ケンスポインタPNTで示されるアドレスへ格納する(
ステップS303)。また、CODBレジスタの内容と
ROTBレジスタの内容とを、シーケンスポインタPN
T+1で示されるアドレスへ格納する(ステップS30
4)。そして、シーケンスポインタを「+2」する(ス
テップS305)。
【0152】次いで、POSBレジスタの内容が「00
B 」であるか否か、つまり、オクターブナンバの更新
があるか否かを調べる(ステップS306)。そして、
更新がないことが判断されると、このREC処理ルーチ
ンからリターンする。
B 」であるか否か、つまり、オクターブナンバの更新
があるか否かを調べる(ステップS306)。そして、
更新がないことが判断されると、このREC処理ルーチ
ンからリターンする。
【0153】一方、オクターブナンバの更新があること
が判断されると(コード不成立の場合も同様。)、前回
変化のあったタイム(TIMO)と今回のタイム(TI
MN)との時間差を求め、TIMBレジスタに格納する
(ステップS307)。そして、今回のタイムTIMN
をTIMOレジスタに入れる(ステップS308)。
が判断されると(コード不成立の場合も同様。)、前回
変化のあったタイム(TIMO)と今回のタイム(TI
MN)との時間差を求め、TIMBレジスタに格納する
(ステップS307)。そして、今回のタイムTIMN
をTIMOレジスタに入れる(ステップS308)。
【0154】次いで、図6(B)に示すように、OCT
Bレジスタの内容とTIMBレジスタの内容とを、シー
ケンスポインタPNTで示されるアドレスへ格納する(
ステップS309)。また、POSBレジスタの内容、
ON/OFレジスタの内容、及びNOTBレジスタの内
容とを、シーケンスポインタPNT+1で示されるアド
レスへ格納する(ステップS310)。そして、シーケ
ンスポインタを「+2」する(ステップS311)。そ
の後、本REC処理ルーチンからリターンする。以上で
、REC処理を終了する。
Bレジスタの内容とTIMBレジスタの内容とを、シー
ケンスポインタPNTで示されるアドレスへ格納する(
ステップS309)。また、POSBレジスタの内容、
ON/OFレジスタの内容、及びNOTBレジスタの内
容とを、シーケンスポインタPNT+1で示されるアド
レスへ格納する(ステップS310)。そして、シーケ
ンスポインタを「+2」する(ステップS311)。そ
の後、本REC処理ルーチンからリターンする。以上で
、REC処理を終了する。
【0155】次に、メインルーチン(図2)のステップ
S117で行うPLY処理の詳細について、図13及び
図14に示すフローチャートを参照しながら説明する。
S117で行うPLY処理の詳細について、図13及び
図14に示すフローチャートを参照しながら説明する。
【0156】なお、本PLY処理ルーチンは、上記和音
検出処理の第1の実施例に対応させて記載しているが、
第2の実施例でも略同様の処理で実現できるものである
。
検出処理の第1の実施例に対応させて記載しているが、
第2の実施例でも略同様の処理で実現できるものである
。
【0157】先ず、ポインタPNTが現在示している、
RAM18内のシーケンスメモリから読み出したデータ
をAREGレジスタに入れる(ステップS400)。
RAM18内のシーケンスメモリから読み出したデータ
をAREGレジスタに入れる(ステップS400)。
【0158】次いで、AREGレジスタの下位6ビット
を抽出し、TIMBレジスタに入れる(ステップS40
1)。そして、前回にPLY処理ルーチンがアクセスさ
れたタイミング(TIMO)に、上記で求めたTIMB
レジスタの内容を加算した値が、現在のタイミング(T
IMN)以下であるか否かを調べる(ステップS402
)。
を抽出し、TIMBレジスタに入れる(ステップS40
1)。そして、前回にPLY処理ルーチンがアクセスさ
れたタイミング(TIMO)に、上記で求めたTIMB
レジスタの内容を加算した値が、現在のタイミング(T
IMN)以下であるか否かを調べる(ステップS402
)。
【0159】ここで、現在のタイミング(TIMN)が
「TIMO+TIMB」よりも小さいことが判断される
と、新しいシーケンスデータを読み出すには未だ早すぎ
るので、そのまま、このPLY処理ルーチンからリター
ンする。
「TIMO+TIMB」よりも小さいことが判断される
と、新しいシーケンスデータを読み出すには未だ早すぎ
るので、そのまま、このPLY処理ルーチンからリター
ンする。
【0160】一方、現在のタイミング(TIMN)が「
TIMO+TIMB」よりも大きいか、又は等しいこと
が判断されると、新しいシーケンスデータを読み出す必
要があるので、ステップS403以下の処理に移る。
TIMO+TIMB」よりも大きいか、又は等しいこと
が判断されると、新しいシーケンスデータを読み出す必
要があるので、ステップS403以下の処理に移る。
【0161】即ち、先ず、TIMNレジスタの内容をT
IMOレジスタに入れることにより、TIMOレジスタ
の内容を更新する(ステップS403)。そして、シー
ケンスポインタPNT+1で示されるアドレスの内容を
読み出し、BREGレジスタに入れる(ステップS40
4)。そして、シーケンスポインタPNTの内容を「+
2」する(ステップS405)。
IMOレジスタに入れることにより、TIMOレジスタ
の内容を更新する(ステップS403)。そして、シー
ケンスポインタPNT+1で示されるアドレスの内容を
読み出し、BREGレジスタに入れる(ステップS40
4)。そして、シーケンスポインタPNTの内容を「+
2」する(ステップS405)。
【0162】そして、BREGレジスタのMSBが「1
」であるか否かを調べる(ステップS406)。これは
、AREGレジスタ、BREGレジスタの内容が、コー
ド成立時の和音情報であるのか、コード不成立時のオク
ターブナンバと補正ノート情報であるのかを調べること
になる。
」であるか否かを調べる(ステップS406)。これは
、AREGレジスタ、BREGレジスタの内容が、コー
ド成立時の和音情報であるのか、コード不成立時のオク
ターブナンバと補正ノート情報であるのかを調べること
になる。
【0163】そして、上記MSBが「0」であることが
判断されると、AREGレジスタ、BREGレジスタの
内容が、図6(A)に示すコード成立時の和音情報であ
るものとして以下の処理を実行する。
判断されると、AREGレジスタ、BREGレジスタの
内容が、図6(A)に示すコード成立時の和音情報であ
るものとして以下の処理を実行する。
【0164】先ず、AREGレジスタの上位2ビットを
抽出し、MINBレジスタに入れる(ステップS407
)。これにより、最低音情報がMINBレジスタに入れ
られる。
抽出し、MINBレジスタに入れる(ステップS407
)。これにより、最低音情報がMINBレジスタに入れ
られる。
【0165】次いで、BREGレジスタの最上位の次の
ビットから3ビットを抽出してCODOレジスタへ、B
REGレジスタの下位4ビットを抽出してROTOレジ
スタへ入れる(ステップS408)。
ビットから3ビットを抽出してCODOレジスタへ、B
REGレジスタの下位4ビットを抽出してROTOレジ
スタへ入れる(ステップS408)。
【0166】次いで、CODOレジスタに格納されたコ
ードタイプから表1のC基準コード表を参照し、12音
ビット列を読み出し、BITAレジスタに入れる(ステ
ップS409)。
ードタイプから表1のC基準コード表を参照し、12音
ビット列を読み出し、BITAレジスタに入れる(ステ
ップS409)。
【0167】次いで、MINBレジスタの値から、BI
TAレジスタのうち最低音が何であったかを検出する(
ステップS410、S411)。即ち、MINBレジス
タの内容が「00B 」であれば、下位3ビットが「1
」であるパターンを生成し、MINBレジスタの内容が
「01B 」であれば、次の3ビットが「1」であるパ
ターンを生成し、MINBレジスタの内容が「10B
」であれば、さらに次の3ビットが「1」であるパター
ンを生成し、MINBレジスタの内容が「11B 」で
あれば、上位3ビットが「1」であるパターンを生成し
てKKレジスタに入れる(ステップS410)。
TAレジスタのうち最低音が何であったかを検出する(
ステップS410、S411)。即ち、MINBレジス
タの内容が「00B 」であれば、下位3ビットが「1
」であるパターンを生成し、MINBレジスタの内容が
「01B 」であれば、次の3ビットが「1」であるパ
ターンを生成し、MINBレジスタの内容が「10B
」であれば、さらに次の3ビットが「1」であるパター
ンを生成し、MINBレジスタの内容が「11B 」で
あれば、上位3ビットが「1」であるパターンを生成し
てKKレジスタに入れる(ステップS410)。
【0168】そして、上記で求めたKKレジスタの値と
BITAレジスタの値との論理積をとり、LOWBレジ
スタに入れる(ステップS411)。
BITAレジスタの値との論理積をとり、LOWBレジ
スタに入れる(ステップS411)。
【0169】最低音の情報MINBは、「C」をコード
ルートとすると、「C,C♯,D」、「D♯,E,F」
、「F♯,G,G♯」、「A,A♯,B」の4つの各ブ
ロックにキーオンは1つしか存在しないという性質を利
用して、MINBレジスタには2ビットのコードとして
格納されている。
ルートとすると、「C,C♯,D」、「D♯,E,F」
、「F♯,G,G♯」、「A,A♯,B」の4つの各ブ
ロックにキーオンは1つしか存在しないという性質を利
用して、MINBレジスタには2ビットのコードとして
格納されている。
【0170】つまり、
■MINB=00B ならば、「C,C♯,D」■MI
NB=01B ならば、「D♯,E,F」■MINB=
10B ならば、「F♯,G,G♯」■MINB=11
B ならば、「F♯,G,G♯」の3音のうち、キーオ
ンになっているのが最低音であったということを意味す
る。
NB=01B ならば、「D♯,E,F」■MINB=
10B ならば、「F♯,G,G♯」■MINB=11
B ならば、「F♯,G,G♯」の3音のうち、キーオ
ンになっているのが最低音であったということを意味す
る。
【0171】ここで、コードルートと最低音の違いを説
明すると、同じコードタイプとコードルートであっても
、表5のように分けられる。
明すると、同じコードタイプとコードルートであっても
、表5のように分けられる。
【0172】
【表5】
コードタイプとコードルートは、従来から使用されてい
るが、最低音をいかに使用するかは区々である。また、
コード成立時には、従来は、最低音は使用されないこと
が多かった。
るが、最低音をいかに使用するかは区々である。また、
コード成立時には、従来は、最低音は使用されないこと
が多かった。
【0173】この実施例では、和音の最低音が何である
かを、検出し、記憶し、さらに再生することにより、例
えばバッキングの構成音やアルペジオの構成音をより忠
実に再現できる。また、最低音を用いて、オートベース
演奏のベースルートとして利用することも可能である。
かを、検出し、記憶し、さらに再生することにより、例
えばバッキングの構成音やアルペジオの構成音をより忠
実に再現できる。また、最低音を用いて、オートベース
演奏のベースルートとして利用することも可能である。
【0174】次に、BITAレジスタの内容を、ROT
Bレジスタに記憶されている値分だけローテイトシフト
してBITBレジスタに格納する(ステップS412)
。これにより、REC処理時と同じ12ビット列が生成
できたことになる。
Bレジスタに記憶されている値分だけローテイトシフト
してBITBレジスタに格納する(ステップS412)
。これにより、REC処理時と同じ12ビット列が生成
できたことになる。
【0175】次いで、BITBレジスタのうちLOWB
レジスタのビットより高いビットはそのままノートナン
バに変換し、OCTOレジスタの内容によってオクター
ブデータを付加し、そのノートチャネルへキーオンとし
て入れる(ステップS413)。即ち、このステップで
は、和音が成立しているため、コードタイプが「0」の
場合を除き、BITBレジスタには、通常、3〜4個の
キーオンビットが存在する。
レジスタのビットより高いビットはそのままノートナン
バに変換し、OCTOレジスタの内容によってオクター
ブデータを付加し、そのノートチャネルへキーオンとし
て入れる(ステップS413)。即ち、このステップで
は、和音が成立しているため、コードタイプが「0」の
場合を除き、BITBレジスタには、通常、3〜4個の
キーオンビットが存在する。
【0176】これらのキーオンビットの中からLOWB
レジスタの最低音と、それよりも高い側のオンビットを
検出してノートコードとし、OCTOレジスタのオクタ
ーブナンバを付加して、対応するノートチャネルへキー
オンとして割り当てる。
レジスタの最低音と、それよりも高い側のオンビットを
検出してノートコードとし、OCTOレジスタのオクタ
ーブナンバを付加して、対応するノートチャネルへキー
オンとして割り当てる。
【0177】次いで、BITBレジスタのうちLOWB
レジスタのビットより低いビットはそのままノートナン
バに変換し、OCTOレジスタの内容に「1」を加えた
値をオクターブデータとして付加し、そのノートチャネ
ルへキーオンとして入れる(ステップS414)。即ち
、このステップでは、BITBレジスタのうちLOWB
レジスタの音名より低いところにあるキーオンビットは
、ノートコードに変換した後、OCTOレジスタに格納
されているオクターブナンバに「+1」したオクターブ
ナンバを付加し、キーオンにて、対応するノートチャネ
ルに割り当てる。
レジスタのビットより低いビットはそのままノートナン
バに変換し、OCTOレジスタの内容に「1」を加えた
値をオクターブデータとして付加し、そのノートチャネ
ルへキーオンとして入れる(ステップS414)。即ち
、このステップでは、BITBレジスタのうちLOWB
レジスタの音名より低いところにあるキーオンビットは
、ノートコードに変換した後、OCTOレジスタに格納
されているオクターブナンバに「+1」したオクターブ
ナンバを付加し、キーオンにて、対応するノートチャネ
ルに割り当てる。
【0178】例えば、
B A♯A G♯G
F♯F E D♯D C♯C BITB=0
0 1 0 0 1 0 0 0
0 0 1CODB=Major(1) ROTB=2(D) LOWB=F♯ OCTB=01B であれば、 F♯の音は、オクターブナンバ=2、ノートナンバ=6
A の音は、オクターブナンバ=2、ノートナンバ=
9D の音は、オクターブナンバ=3、ノートナンバ
=2となることを意味する。
F♯F E D♯D C♯C BITB=0
0 1 0 0 1 0 0 0
0 0 1CODB=Major(1) ROTB=2(D) LOWB=F♯ OCTB=01B であれば、 F♯の音は、オクターブナンバ=2、ノートナンバ=6
A の音は、オクターブナンバ=2、ノートナンバ=
9D の音は、オクターブナンバ=3、ノートナンバ
=2となることを意味する。
【0179】次いで、他のノートチャネルをキーオフと
する(ステップS415)。すなわち、上記ステップS
413、S414で割り当てられなかった他のノートチ
ャネルをクリアして、本PLY処理ルーチンからリター
ンする。なお、コードタイプが「0」、つまり全キーオ
フである場合は、12個の全ノートチャネルをクリアす
るとになる。
する(ステップS415)。すなわち、上記ステップS
413、S414で割り当てられなかった他のノートチ
ャネルをクリアして、本PLY処理ルーチンからリター
ンする。なお、コードタイプが「0」、つまり全キーオ
フである場合は、12個の全ノートチャネルをクリアす
るとになる。
【0180】一方、上記ステップS406で、MSBが
「1」であることが判断されると、AREGレジスタ、
BREGレジスタの内容が、図6(B)に示すコード成
立時の情報であるものとして以下の処理を実行する。
「1」であることが判断されると、AREGレジスタ、
BREGレジスタの内容が、図6(B)に示すコード成
立時の情報であるものとして以下の処理を実行する。
【0181】先ず、AREGレジスタの上位2ビットを
抽出し、OCTBレジスタに入れる(ステップS416
)。
抽出し、OCTBレジスタに入れる(ステップS416
)。
【0182】次いで、前回のオクターブナンバ(OCT
O)と今回のオクターブナンバ(OCTB)とを比較す
る(ステップS417)。そして、異なることが判断さ
れると、今回のオクターブナンバ(OCTB)をOCT
Oレジスタに入れる(ステップS418)。そして、全
ノートチャネルKYEN1〜12のオクターブナンバO
CTを修正する(ステップS419)。
O)と今回のオクターブナンバ(OCTB)とを比較す
る(ステップS417)。そして、異なることが判断さ
れると、今回のオクターブナンバ(OCTB)をOCT
Oレジスタに入れる(ステップS418)。そして、全
ノートチャネルKYEN1〜12のオクターブナンバO
CTを修正する(ステップS419)。
【0183】上記ステップS417で同じことが判断さ
れると、ステップS418、S419はスキップされる
。
れると、ステップS418、S419はスキップされる
。
【0184】次いで、BREGレジスタから補正音の相
対的位置、オンオフ、音名を取り出し、それぞれ、PO
SBレジスタ、ON/OFレジスタ、NOTBレジスタ
に格納する(ステップS420)。
対的位置、オンオフ、音名を取り出し、それぞれ、PO
SBレジスタ、ON/OFレジスタ、NOTBレジスタ
に格納する(ステップS420)。
【0185】次いで、ON/OFレジスタの内容が「1
」であるか否かが調べられる(ステップS421)。つ
まり、補正音は、現在の和音に付加される(オン)のか
、現在の和音から或る音を削除する(オフ)のかが調べ
られる。そして、ON/OFレジスタの内容が「0」、
つまり、現在の和音から或る音を削除することが判断さ
れると、KEYN1〜12の中でNOTBレジスタの内
容と同じノートのチャネルをキーオフ状態にする(ステ
ップS422)。その後、このPLY処理ルーチンから
リターンする。
」であるか否かが調べられる(ステップS421)。つ
まり、補正音は、現在の和音に付加される(オン)のか
、現在の和音から或る音を削除する(オフ)のかが調べ
られる。そして、ON/OFレジスタの内容が「0」、
つまり、現在の和音から或る音を削除することが判断さ
れると、KEYN1〜12の中でNOTBレジスタの内
容と同じノートのチャネルをキーオフ状態にする(ステ
ップS422)。その後、このPLY処理ルーチンから
リターンする。
【0186】一方、上記ステップS421で、ON/O
Fレジスタの内容が「1」、つまり、現在の和音に或る
音を付加することが判断されると、POSBレジスタの
内容が「00B 」であるか否かを調べる(ステップS
423)。
Fレジスタの内容が「1」、つまり、現在の和音に或る
音を付加することが判断されると、POSBレジスタの
内容が「00B 」であるか否かを調べる(ステップS
423)。
【0187】ここで、POSBレジスタの内容は、次の
ようにセットされている。
ようにセットされている。
【0188】
■POSBレジスタ=00B …補正(付加)ノートな
し■POSBレジスタ=01B …補正(付加)ノート
あり(最低音) ■POSBレジスタ=10B …補正(付加)ノートあ
り(最高音) ■POSBレジスタ=11B …補正(付加)ノートあ
り(中間音) したがって、上記ステップS423でPOSBレジスタ
の内容が「00B 」であることが判断されると、補正
ノートがないので、そのままリターンする。
し■POSBレジスタ=01B …補正(付加)ノート
あり(最低音) ■POSBレジスタ=10B …補正(付加)ノートあ
り(最高音) ■POSBレジスタ=11B …補正(付加)ノートあ
り(中間音) したがって、上記ステップS423でPOSBレジスタ
の内容が「00B 」であることが判断されると、補正
ノートがないので、そのままリターンする。
【0189】一方、POSBレジスタの内容が「00B
」でないことが判断されると、補正ノートがあるので
、NOTBレジスタ、POSBレジスタ、OCTOレジ
スタのの内容から、ノートナンバとオクターブナンバを
作成し、該当チャネルにキーオンとして入れる(ステッ
プS424)。
」でないことが判断されると、補正ノートがあるので
、NOTBレジスタ、POSBレジスタ、OCTOレジ
スタのの内容から、ノートナンバとオクターブナンバを
作成し、該当チャネルにキーオンとして入れる(ステッ
プS424)。
【0190】即ち、NOTBレジスタからノートナンバ
を得、POSBレジスタの内容から、補正(付加)音を
現在の和音構成の上位に付加するのか、下位に付加する
のか、或いは中間に付加するのかを認識し、さらにOC
TOレジスタに格納されているオクターブナンバを参照
して、当該音のオクターブ情報とし、該当するノートチ
ャネルにキーオンとして割り当てる(ステップS424
)。
を得、POSBレジスタの内容から、補正(付加)音を
現在の和音構成の上位に付加するのか、下位に付加する
のか、或いは中間に付加するのかを認識し、さらにOC
TOレジスタに格納されているオクターブナンバを参照
して、当該音のオクターブ情報とし、該当するノートチ
ャネルにキーオンとして割り当てる(ステップS424
)。
【0191】なお、ここで、ステップS425に示すよ
うに、NOTBレジスタの内容をROTOレジスタに入
れることにより、最低音をコードルートとすることも可
能である。この処理は、必須ではない。
うに、NOTBレジスタの内容をROTOレジスタに入
れることにより、最低音をコードルートとすることも可
能である。この処理は、必須ではない。
【0192】その後、このPLY処理ルーチンからリタ
ーンし、メインルーチンに戻る。
ーンし、メインルーチンに戻る。
【0193】次に、割り込み処理について説明する。図
15は、この電子楽器が有する4種類の割り込み処理を
説明するフローチャートである。
15は、この電子楽器が有する4種類の割り込み処理を
説明するフローチャートである。
【0194】同図(A)は、タイマ割り込み処理を示す
ものである。タイマ15が所定値(時間)を計数すると
、CPU16のINT1端子に割り込み要求信号が供給
され、CPU16は、実行中の処理を一時中断して割り
込み処理を行う。即ち、先ず、RUNフラグが「1」で
あるか否かが調べられる。このRUNフラグは、パネル
のSTARTスイッチが押されることにより「1」にセ
ットされるフラグである。したがって、動作中に「1」
にされる。
ものである。タイマ15が所定値(時間)を計数すると
、CPU16のINT1端子に割り込み要求信号が供給
され、CPU16は、実行中の処理を一時中断して割り
込み処理を行う。即ち、先ず、RUNフラグが「1」で
あるか否かが調べられる。このRUNフラグは、パネル
のSTARTスイッチが押されることにより「1」にセ
ットされるフラグである。したがって、動作中に「1」
にされる。
【0195】ここで、RUNフラグが「1」でないこと
が判断されると、つまり動作中でないことが判断される
と、何等の処理も行わずにこの割り込み処理ルーチンか
らリターンする。
が判断されると、つまり動作中でないことが判断される
と、何等の処理も行わずにこの割り込み処理ルーチンか
らリターンする。
【0196】一方、RUNフラグが「1」であることが
判断されると、TIMNレジスタの内容をインクリメン
トする。これにより、現在の時刻が更新されることにな
る。同図(B)は、MIDI割り込み処理を示すもので
ある。インタフェース回路10がMIDI IN端子
からデータを受け取ると、CPU16のINT2端子に
割り込み要求信号が供給され、CPU16は、実行中の
処理を一時中断して割り込み処理を行う。この割り込み
処理では、インタフェース回路10からの入力情報を、
RAM18のMIDIバッファに格納する。その後、こ
の割り込み処理ルーチンからリターンする。このMID
Iバッファに格納された情報が、上述したように、種々
の処理に使用されることになる。
判断されると、TIMNレジスタの内容をインクリメン
トする。これにより、現在の時刻が更新されることにな
る。同図(B)は、MIDI割り込み処理を示すもので
ある。インタフェース回路10がMIDI IN端子
からデータを受け取ると、CPU16のINT2端子に
割り込み要求信号が供給され、CPU16は、実行中の
処理を一時中断して割り込み処理を行う。この割り込み
処理では、インタフェース回路10からの入力情報を、
RAM18のMIDIバッファに格納する。その後、こ
の割り込み処理ルーチンからリターンする。このMID
Iバッファに格納された情報が、上述したように、種々
の処理に使用されることになる。
【0197】同図(C)は、キースイッチ割り込み処理
を示すものである。キースイッチ11が押されたことを
キースキャン回路12が検出すると、CPU16のIN
T3端子に割り込み要求信号が供給される。CPU16
は、実行中の処理を一時中断して割り込み処理を行う。 この割り込み処理では、キースキャン回路12からのキ
ースイッチ情報を、RAM18のマニュアルバッファに
格納する。その後、この割り込み処理ルーチンからリタ
ーンする。このマニュアルバッファに格納された情報が
、上述したように、種々の処理に使用されることになる
。
を示すものである。キースイッチ11が押されたことを
キースキャン回路12が検出すると、CPU16のIN
T3端子に割り込み要求信号が供給される。CPU16
は、実行中の処理を一時中断して割り込み処理を行う。 この割り込み処理では、キースキャン回路12からのキ
ースイッチ情報を、RAM18のマニュアルバッファに
格納する。その後、この割り込み処理ルーチンからリタ
ーンする。このマニュアルバッファに格納された情報が
、上述したように、種々の処理に使用されることになる
。
【0198】同図(D)は、ディスク入力割り込み処理
を示すものである。ディスク駆動回路19でデータ転送
要求が発生すると、CPU16のINT4端子に割り込
み要求信号が供給される。CPU16は、実行中の処理
を一時中断して割り込み処理を行う。この割り込み処理
では、ディスク装置20からディスク駆動回路19を介
して供給されるデータを、RAM18のディスクバッフ
ァに格納する。その後、この割り込み処理ルーチンから
リターンする。このディスクバッファに格納された情報
が、上述したように、種々の処理に使用されることにな
る。
を示すものである。ディスク駆動回路19でデータ転送
要求が発生すると、CPU16のINT4端子に割り込
み要求信号が供給される。CPU16は、実行中の処理
を一時中断して割り込み処理を行う。この割り込み処理
では、ディスク装置20からディスク駆動回路19を介
して供給されるデータを、RAM18のディスクバッフ
ァに格納する。その後、この割り込み処理ルーチンから
リターンする。このディスクバッファに格納された情報
が、上述したように、種々の処理に使用されることにな
る。
【0199】次に、REC処理の第2の実施例について
説明する。図16はREC処理ルーチン(実施例2)の
処理を示すフローチャートである。
説明する。図16はREC処理ルーチン(実施例2)の
処理を示すフローチャートである。
【0200】この処理は、図3及び図4、又は図7及び
図8に示した和音検出ルーチンを使用せず、音色ビット
マップを直接記憶する方式である。この処理では、図1
7に示すデータ形式で和音シーケンスを記憶する。
図8に示した和音検出ルーチンを使用せず、音色ビット
マップを直接記憶する方式である。この処理では、図1
7に示すデータ形式で和音シーケンスを記憶する。
【0201】先ず、和音エリアのキーナンバのうち、最
低音のノートナンバをLOWBレジスタに入れる(ステ
ップS900)。このLOWBレジスタには、オクター
ブナンバも同時に入れられる。
低音のノートナンバをLOWBレジスタに入れる(ステ
ップS900)。このLOWBレジスタには、オクター
ブナンバも同時に入れられる。
【0202】次いで、最高音のノートナンバをOCTB
レジスタに入れる(ステップS901)。次いで、和音
エリアのキーのオン/オフ状態について、各オクターブ
間で論理和をとり、その結果をビット列としてBITB
レジスタに入れる(ステップS902)。
レジスタに入れる(ステップS901)。次いで、和音
エリアのキーのオン/オフ状態について、各オクターブ
間で論理和をとり、その結果をビット列としてBITB
レジスタに入れる(ステップS902)。
【0203】次いで、前回変化のあったタイム(TIM
O)と今回のタイム(TIMN)との時間差を求め、T
IMBレジスタに格納する(ステップS903)。そし
て、今回のタイムTIMNをTIMOレジスタに入れる
(ステップS904)。
O)と今回のタイム(TIMN)との時間差を求め、T
IMBレジスタに格納する(ステップS903)。そし
て、今回のタイムTIMNをTIMOレジスタに入れる
(ステップS904)。
【0204】次いで、図17に示すように、OCTBレ
ジスタの内容とTIMBレジスタの内容とをつなげ、シ
ーケンスポインタPNTで示されるアドレスへ格納する
(ステップS905)。また、BITBレジスタの内容
の下位8ビットを、シーケンスポインタPNT+1で示
されるアドレスへ格納する(ステップS906)。
ジスタの内容とTIMBレジスタの内容とをつなげ、シ
ーケンスポインタPNTで示されるアドレスへ格納する
(ステップS905)。また、BITBレジスタの内容
の下位8ビットを、シーケンスポインタPNT+1で示
されるアドレスへ格納する(ステップS906)。
【0205】さらに、LOWBレジスタの内容とBIT
Bレジスタの上位4ビットとをつなげ、シーケンスポイ
ンタPNT+2で示されるアドレスへ格納する(ステッ
プS907)。
Bレジスタの上位4ビットとをつなげ、シーケンスポイ
ンタPNT+2で示されるアドレスへ格納する(ステッ
プS907)。
【0206】そして、シーケンスポインタを「+3」し
て(ステップS908)、このREC処理ルーチンから
リターンする。
て(ステップS908)、このREC処理ルーチンから
リターンする。
【0207】この実施例によれば、常に3バイトのデー
タを必要とするが、コード成立、不成立にかかわらず、
同じデータ形式で記憶することができるという利点があ
る。
タを必要とするが、コード成立、不成立にかかわらず、
同じデータ形式で記憶することができるという利点があ
る。
【0208】また、最低音のノートナンバとオクターブ
ナンバも可能な限り少ないビット数で一緒に記憶するこ
とによりPLY時の再現性を良くしている。
ナンバも可能な限り少ないビット数で一緒に記憶するこ
とによりPLY時の再現性を良くしている。
【0209】以上、上述した各実施例によれば、CPU
が不得手とするローテイトシフトや比較の量が削減され
和音検出処理が高速化されるとともに、プログラムやコ
ード表を小さくできるのでこれらを記憶するメモリの容
量を小さくできる
が不得手とするローテイトシフトや比較の量が削減され
和音検出処理が高速化されるとともに、プログラムやコ
ード表を小さくできるのでこれらを記憶するメモリの容
量を小さくできる
【0210】また、和音成立時にもその和音中の特定音
情報(最高音、最低音)を一緒に記憶することにより、
再生する際に、記録時に近い構成音パターンを得ること
ができる。
情報(最高音、最低音)を一緒に記憶することにより、
再生する際に、記録時に近い構成音パターンを得ること
ができる。
【0211】また、オクターブ情報が変化した時に、該
オクターブ情報も記憶するので、再生時の伴奏音を、記
録時の音域で再生できるものとなっている。
オクターブ情報も記憶するので、再生時の伴奏音を、記
録時の音域で再生できるものとなっている。
【0212】また、和音が不成立のときは、前回の伴奏
音パターンの変化分の音に対応する情報を補正情報とし
て記憶するようにしたので、和音が不成立時に記憶する
情報量を減少させることができる。
音パターンの変化分の音に対応する情報を補正情報とし
て記憶するようにしたので、和音が不成立時に記憶する
情報量を減少させることができる。
【0213】また、和音不成立のときに、Majorパ
ターンや不成立特有のパターンを用いるのではなく、直
前に成立した和音パターンを重視し、少なくともコード
タイプはその直前に成立した和音パターンのものを用い
、各構成音に関しては直前の和音パターンからの変化分
を加味して記憶するようにしたので、演奏の流れが生き
てくるという利点がある。
ターンや不成立特有のパターンを用いるのではなく、直
前に成立した和音パターンを重視し、少なくともコード
タイプはその直前に成立した和音パターンのものを用い
、各構成音に関しては直前の和音パターンからの変化分
を加味して記憶するようにしたので、演奏の流れが生き
てくるという利点がある。
【0214】また、和音エリアにキーオンがない状態も
1つの和音と同じパターンとして扱うことにより、常に
伴奏音を付加するのではなく、伴奏音を削除するという
処理も可能となっている。これにより、統一的な処理を
行うことができ、簡単になるという効果がある。
1つの和音と同じパターンとして扱うことにより、常に
伴奏音を付加するのではなく、伴奏音を削除するという
処理も可能となっている。これにより、統一的な処理を
行うことができ、簡単になるという効果がある。
【0215】さらに、和音検出のコードタイプ、コード
ルートを基準に記憶するのではなく、常に12音ビット
列を記憶し、同時に特定音情報をも記憶するという構成
により、忠実な再生を容易に実現することができるもの
となっている。
ルートを基準に記憶するのではなく、常に12音ビット
列を記憶し、同時に特定音情報をも記憶するという構成
により、忠実な再生を容易に実現することができるもの
となっている。
【0216】
【発明の効果】以上詳述したように、この発明によれば
和音成立時に和音情報に特定音情報を付加して記憶する
ことにより記録時の内容を忠実に再生することができ、
また、和音不成立時であっても演奏の流れを生かしつつ
記憶すべき情報量を減らすことができ、さらに、和音情
報の記録時の処理を高速に行うとともに、記録時の内容
を忠実に再生することのできる伴奏情報処理装置を提供
できる。
和音成立時に和音情報に特定音情報を付加して記憶する
ことにより記録時の内容を忠実に再生することができ、
また、和音不成立時であっても演奏の流れを生かしつつ
記憶すべき情報量を減らすことができ、さらに、和音情
報の記録時の処理を高速に行うとともに、記録時の内容
を忠実に再生することのできる伴奏情報処理装置を提供
できる。
【図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】図2のREC処理(実施例2)を詳細に示す
フローチャートである。
フローチャートである。
【図17】図16で使用するデータ形式を示す図である
。
。
11 キースイッチ(音高指定手段)13 パネル
スイッチ 15 タイマ 16 CPU(構成音検出手段、和音情報生成手段、
特定音情報生成手段、和音/補正情報生成手段、音ビッ
ト列作成手段) 17 ROM 18 RAM(記憶手段) 20 ディスク装置(記憶手段) 21 音源回路
スイッチ 15 タイマ 16 CPU(構成音検出手段、和音情報生成手段、
特定音情報生成手段、和音/補正情報生成手段、音ビッ
ト列作成手段) 17 ROM 18 RAM(記憶手段) 20 ディスク装置(記憶手段) 21 音源回路
Claims (9)
- 【請求項1】 音高を指定する音高指定手段と、該音
高指定手段で指定された音高情報の構成音を検出する構
成音検出手段と、該構成音検出手段で検出した構成音か
ら和音を検出して和音情報を生成する和音情報生成手段
と、該和音情報生成手段で生成された和音情報に係る特
定音情報を生成する特定音情報生成手段と、該特定音情
報生成手段で生成された特定音情報と前記和音情報生成
手段で生成された和音情報とを関連付けて記憶する記憶
手段とを具備したことを特徴とする伴奏情報処理装置。 - 【請求項2】 前記特定音情報生成手段で生成される
特定音情報は、和音の構成音の最低音又は最高音を指定
する所定の情報であることを特徴とする請求項1記載の
伴奏情報処理装置。 - 【請求項3】 前記特定音情報生成手段で生成される
特定音情報は、和音の構成音の最低音又は最高音を指定
する音名又はキーコードであることを特徴とする請求項
1記載の伴奏情報処理装置。 - 【請求項4】 前記特定音情報生成手段で生成される
特定音情報は、和音の構成音のオクターブ情報であるこ
とを特徴とする請求項1記載の伴奏情報処理装置。 - 【請求項5】 音高を指定する音高指定手段と、該音
高指定手段で指定された音高情報の構成音を検出する構
成音検出手段と、該構成音検出手段で検出した構成音に
より和音が成立することが判断されたときは和音情報を
生成し、和音が成立しないことが判断されたときは、直
前に記憶した和音情報又は構成音情報に対する補正情報
を生成する和音/補正情報生成手段と、該和音/補正情
報生成手段で生成された和音情報又は補正情報を記憶す
る記憶手段とを具備したことを特徴とする伴奏情報処理
装置。 - 【請求項6】 前記和音/補正情報生成手段で生成さ
れる補正情報は、和音の構成音に係る情報であることを
特徴とする請求項5記載の和音情報処理装置。 - 【請求項7】 前記和音/補正情報生成手段で生成さ
れる補正情報は、和音との相対的な音高に係る情報であ
ることを特徴とする請求項5記載の伴奏情報処理装置。 - 【請求項8】 音高を指定する音高指定手段と、該音
高指定手段で指定された音高情報の構成音を検出し、所
定の音ビット列を作成する音ビット列作成手段と、該音
ビット列作成手段で作成された所定の音ビット列に係る
特定音情報を生成する特定音情報生成手段と、前記音ビ
ット列作成手段で作成された所定の音ビット列と該特定
音情報生成手段で生成された特定音情報を関連付けて記
憶する記憶手段とを具備したことを特徴とする伴奏情報
処理装置。 - 【請求項9】 前記特定音情報生成手段で生成される
特定音情報は、最低音又は最高音を指定する情報である
ことを特徴とする請求項8記載の伴奏情報処理装置。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3109679A JP2822281B2 (ja) | 1991-04-16 | 1991-04-16 | 伴奏情報処理装置 |
| 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 |
|---|---|---|---|
| JP3109679A JP2822281B2 (ja) | 1991-04-16 | 1991-04-16 | 伴奏情報処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH04317100A true JPH04317100A (ja) | 1992-11-09 |
| JP2822281B2 JP2822281B2 (ja) | 1998-11-11 |
Family
ID=14516436
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3109679A Expired - Fee Related JP2822281B2 (ja) | 1991-04-09 | 1991-04-16 | 伴奏情報処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2822281B2 (ja) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6217756A (ja) * | 1985-07-16 | 1987-01-26 | Canon Inc | 電子写真用磁性トナ− |
| JPS6227717A (ja) * | 1985-07-29 | 1987-02-05 | Nissan Motor Co Ltd | 撮像装置 |
| JPH01179087A (ja) * | 1988-01-06 | 1989-07-17 | Yamaha Corp | 自動演奏装置 |
-
1991
- 1991-04-16 JP JP3109679A patent/JP2822281B2/ja not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6217756A (ja) * | 1985-07-16 | 1987-01-26 | Canon Inc | 電子写真用磁性トナ− |
| JPS6227717A (ja) * | 1985-07-29 | 1987-02-05 | Nissan Motor Co Ltd | 撮像装置 |
| JPH01179087A (ja) * | 1988-01-06 | 1989-07-17 | Yamaha Corp | 自動演奏装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2822281B2 (ja) | 1998-11-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5612501A (en) | Automatic accompaniment information producing apparatus | |
| KR20000011785A (ko) | 악음합성장치,악음합성방법및기억매체 | |
| JP2522343B2 (ja) | 自動演奏装置 | |
| JPH02137890A (ja) | 電子楽器 | |
| GB2066549A (en) | Electronic musical instrument with memory | |
| US4248118A (en) | Harmony recognition technique application | |
| US5250746A (en) | Chord detecting apparatus | |
| JP2822281B2 (ja) | 伴奏情報処理装置 | |
| JPH04311000A (ja) | 和音検出記憶装置 | |
| US4926736A (en) | Electronic musical instrument with automatic performance apparatus | |
| US4920849A (en) | Automatic performance apparatus for an electronic musical instrument | |
| JP2001022354A (ja) | アルペジオ生成装置及びその記録媒体 | |
| JPH07113829B2 (ja) | 自動演奏装置 | |
| GB2091470A (en) | Electronic Musical Instrument | |
| JP2640992B2 (ja) | 電子楽器の発音指示装置及び発音指示方法 | |
| JP2756799B2 (ja) | 自動リズム演奏装置 | |
| JP3690174B2 (ja) | 楽音発生装置 | |
| JP2861709B2 (ja) | 自動伴奏装置 | |
| JP2713136B2 (ja) | 自動演奏装置 | |
| JPH0827624B2 (ja) | 自動演奏装置 | |
| JP2738359B2 (ja) | リズム音発生装置およびその発音制御方注 | |
| JP3450542B2 (ja) | 伴奏パターン作成装置 | |
| JPH0863159A (ja) | 自動演奏装置 | |
| JPH0619468A (ja) | 電子楽器の自動演奏装置 | |
| JP2000020059A (ja) | 電子楽器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |