(57)【要約】【課題】自動伴奏パターン等の演奏データから和音を検出する際に、和音の検出精度を高める。【解決手段】供給された演奏データに対して、音色に応じてカテゴリー分けしてチャンネルに割り当てる。優先順位付けにより特定音色（音色情報）、同時音率（同時音数）、有音率に基づいてチャンネルにパートを割り当てる。指定された区間を切り出し、平均ベロシティによりベロシティの小さな音符データの削除、参照音譜長以下の音符データの削除により、ミスタッチ等の音符データを削除する。データ削除を行った演奏データのパートに基づいて和音を検出する。検出和音に基づいて演奏データを音高変換して修正する。修正された演奏データを鍵盤から指定された和音で音高変換して自動伴奏を行う。【選択図】図２
2004192013.tif 000002
【特許請求の範囲】
【請求項１】
供給された演奏データの所定区間内の平均ベロシティを算出する平均ベロシティ算出手段と、
上記平均ベロシティ算出手段で算出された平均ベロシティに基づいてベロシティの小さな音符データを削除して該演奏データから和音を検出する和音検出手段と、
を備えたことを特徴とする和音検出装置。
【請求項２】
供給された演奏データから予め設定された参照音符長以下の音符データを削除して該演奏データから和音を検出する和音検出手段を備えたことを特徴とする和音検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、供給された演奏データから和音を検出する和音検出装置に関する。
【背景技術】
【０００２】
従来、電子楽器の分野で、メモリに記憶した演奏データに基づいて自動伴奏を行うものがある。例えば、特開平５−２３２９３８号公報に開示されている自動演奏装置では、メモリに記憶した演奏データの指定された任意の区間のデータを繰り返し読み出しつつ、鍵盤の左鍵域で和音を検出し、この検出和音によって演奏データのキーコードを音高変換して自動伴奏の楽音を発生する。
【０００３】
また、この従来の装置では、自動伴奏で演奏データの任意の区間を繰り返し読み出して再生し、鍵盤の左鍵域での演奏に基づいて、この任意の区間の演奏データについての一部挿入、置換、重ね合わせなど、演奏データの編集を行えるようになっている。
【特許文献１】特開昭５９−１９５２８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、この従来の装置では、演奏データは予め決められた特定の基準和音（例えばＣメジャー）に対応する音高の情報を記憶してこの演奏データを基準和音と検出和音の根音の関係に基づいて音高変換するようにしているので、編集時に鍵盤で演奏するときも、この基準和音に対応する伴奏音の演奏を行わないと、音楽的に不自然になってしまう。また、編集された演奏データは鍵盤の鍵域すなわち音域によって決まる。
【０００５】
さらに、自動伴奏時に鍵盤演奏でミスタッチした演奏音まで和音検出に使用されることになるので、正確な和音検出ができないという問題がある。これ対して、特開昭５９−１９５２８１号公報に開示されている技術のように強い鍵タッチすなわちベロシティの大きなキーイベントのキーコードから和音を検出すればミスタッチの影響を低減できるが、演奏者や曲によってタッチが異なる場合、正確な和音検出ができないといいう問題がある。
【０００６】
したがって、これらの従来の技術においては、編集対象とする演奏データや編集で得られる演奏データの自由度が小さいという問題がある。
【０００７】
本発明は、上記の点に鑑み、自動伴奏の伴奏パターン等の演奏データにから和音を検出する際に、和音の検出精度を高めることを課題とする。
【課題を解決するための手段】
【０００８】
本発明の請求項１記載の和音検出装置は、供給された演奏データの所定区間内の平均ベロシティを算出する平均ベロシティ算出手段と、上記平均ベロシティ算出手段で算出された平均ベロシティに基づいてベロシティの小さな音符データを削除して該演奏データから和音を検出する和音検出手段と、を備えたことを特徴とする。
【０００９】
また、本発明の請求項２記載の和音検出装置は、供給された演奏データから予め設定された参照音符長以下の音符データを削除して該演奏データから和音を検出する和音検出手段を備えたことを特徴とする。
【００１０】
本発明の請求項１記載の和音検出装置において、平均ベロシティ算出手段は供給された演奏データの所定区間内の平均ベロシティを算出し、和音検出手段は平均ベロシティ算出手段で算出された平均ベロシティに基づいてベロシティの小さな音符データを削除して該演奏データから和音を検出する。したがって、ミスタッチの音符データを正確に削除することができ、和音の検出精度が高まる。
【００１１】
本発明の請求項２記載の和音検出装置において、和音検出手段は供給された演奏データから予め設定された参照音符長以下の音符データを削除して該演奏データから和音を検出する。したがって、和音構成音となる確率の低い音符データを削除して和音を検出することができるので検出精度が高まる。
【発明の効果】
【００１２】
本発明の請求項１記載の和音検出装置によれば、供給された演奏データの所定区間内の平均ベロシティを算出し、この平均ベロシティに基づいてベロシティの小さな音符データを削除して該演奏データから和音を検出するようにしたので、ミスタッチの音符データを正確に削除することができ、和音の検出精度が高まる。
【００１３】
本発明の請求項２記載の和音検出装置によれば、供給された演奏データから予め設定された参照音符長以下の音符データを削除して該演奏データから和音を検出するようにしたので、和音構成音となる確率の低い音符データを削除して和音を検出することができるので検出精度が高まる。
【発明を実施するための最良の形態】
【００１４】
図１は本発明を適用した電子楽器のブロック図である。ＣＰＵ１はプログラムメモリ２に格納されている制御プログラムに基づいてワーキングメモリ３のワーキングエリアを使用して電子楽器全体の制御を行い、鍵盤４の操作による鍵盤演奏と演奏情報メモリ５に記憶した演奏データに基づく自動伴奏を行う。
【００１５】
音源６は時分割多重処理により複数チャンネルで楽音信号を発生するように構成されており、この音源６の各チャンネルの音色はＣＰＵ１によって設定される。そして、ＣＰＵ１からチャンネルの指定とともにキーコードとキーオン信号が入力されると音源６は指定されたチャンネルの楽音信号を発生してサウンドシステム７に出力し、サウンドシステム７で楽音を発生する。
【００１６】
ＣＰＵ１は鍵盤４のキーイベントを検出して、キーイベントのあた鍵に対応するキーコードをキーオン信号またはキーオフ信号とともに取り込み、音源６にキーコードとキーオンまたはキーオフ等を出力して鍵盤演奏に対応する発音処理と消音処理を行う。
【００１７】
また、ＣＰＵ１はインターフェース８を介してディスク９から楽曲情報を読み出して演奏情報メモリ５に記憶し、後述説明するように編集モードでこの楽曲情報中の演奏データの編集処理を行う。そして、自動伴奏モードで、この演奏情報メモリ５の演奏データを鍵盤４から検出した和音に基づいて音高変換し、そのキーコードとキーオンまたはキーオフ等を音源６に出力して自動伴奏を行う。
【００１８】
さらに、ＣＰＵ１は、スイッチ群１０の操作に応じて、楽音情報の入力処理、鍵盤４についての音色の選択処理、自動伴奏のテンポの入力処理、編集モードの選択、自動伴奏のスタート／ストップ処理等を行う。なお、自動伴奏のテンポが入力されるとＣＰＵ１は入力されたテンポをタイマ１１に設定し、タイマ１１は設定されたテンポに応じて１小節当たり９６個のテンポクロックすなわち９６分長毎に一個のテンポクロックをＣＰＵ１に発生する。そして、ＣＰＵ１はこのテンポクロックにより割込み処理を行って自動伴奏を行う。
【００１９】
ここで、実施例における演奏データの編集処理について説明する。図２は実施例における演奏データの処理を概念的に示す図であり、同図に太枠で示した各機能は後述説明するＣＰＵ１による制御プログラムの実行により実現される。先ず、ディスク９から楽曲情報を入力して演奏情報メモリ５に記憶すると、この楽曲情報中の演奏データは図３のようなフォーマットで演奏情報メモリ５に記憶される。
【００２０】
すなわち、演奏データは楽曲の楽譜に対応する音符データを含んでおり、一つの音の音符データは、音色を示す音色データ（音色データ１，音色データ２，…）とキーイベントデータとをセットにしたデータである。さらに、キーイベントデータはキーコード、ベロシティおよび発音時間（音符長）で構成されており、各音の発音タイミングの間隔はデュレーションデータで指定される。
【００２１】
例えば、図３に１音発音と２音同時発音の場合を示したように、異なるタイミングで発音する音の音符データの間には発音タイミングの間隔を示すデュレーションデータが記録され、同時に発音する音の音符データの間にはデュレーションデータが記録されない。
【００２２】
（カテゴリー分け）  このような演奏データに対して、編集モードでは、先ず、図４に示したように、同じ音色のデータを同じチャンネルに纏めるカテゴリー分けを行う。このとき、各チャンネルを独立に再生しても元の演奏データと同じタイミングで再生できるように、各チャンネルに記録するデュレーションデータは元のデュレーションデータを変換して求める。
【００２３】
（優先順位付け）  次に、各チャンネルをパートに割り当てる優先順位付けの処理を行う。この優先順位付けの処理では、先ず、各チャンネルについて、全ての音符の発音時間の合計Ｔ、１音でも発音している時間の合計ｔをそれぞれ求め、Ｔ／ｔを同時に発音する音の数の度合い（本明細書において「同時音率」という。）に相当するＰＲとする。また、各チャンネルについて、曲の時間に対する発音時間の割合（本明細書において「有音率」という。）として音符が存在する小節の数をＥＲとする。
【００２４】
そして、ベース、ウッディベース等の特定の音色のチャンネルを「ベースパート」とし、残りのチャンネルのうち同時音率ＰＲが最も大きいチャンネルを「コードパート１」とし、残りのチャンネルのうち有音率ＥＲが最も大きいチャンネルを「パッドパート」（ストリングスの持続音のようなパート）とし、さらに残りのチャンネルのうち同時音率ＰＲが最も大きいチャンネルを「コードパート２」とし、それぞれのチャンネルを各パートに割り当てる。
【００２５】
（区間抜出し）  この実施例では、演奏データのうちの所望の区間を自動伴奏の伴奏パターンとして使用できるようになっており、編集モードにおいて、演奏者が演奏データの所望の区間をスイッチ群１０から入力指定する。そして、上記の各パートに割り当てた各チャンネルから上記区間の演奏データを抜き出し、各チャンネルの再生タイミングが相対的に変わらないようにデュレーションデータを補充して、再度、演奏情報メモリ５に記憶する。
【００２６】
（データ削除）  次に、上記のようなカテゴリー分け、優先順位付けおよび区間の抜き出しを行った演奏データについて、各チャンネルの平均ベロシティを求め、この平均ベロシティに重み係数Ｋ１（１＞Ｋ１）で重み付けをしててベロシティの閾値とする。そして、この平均ベロシティの閾値以下の不要なデータを削除する。また、発音時間の閾値としてとして入力設定された参照音符長Ｋ２以下のデータを削除する。
【００２７】
すなわち、演奏データ中に含まれるミスタッチによるデータはそのベロシティが平均ベロシティに比べて小さいはずであるから、このようなデータを削除する。また、発音時間が際立って短いデータは、和音構成音への引っかけの音やスケール駆け上がりの音であったりするので、和音構成音以外の音である場合が多く、このようなデータを削除する。
【００２８】
そして、上記のように不要なデータの削除および区間の抜き出しを行った演奏データについて、優先順位付けで優先的に割り当てたパートに基づいて和音検出を行い、その検出和音の根音、種類、ベース音（音名）をデュレーションデータとともに記憶する。
【００２９】
（和音除去）  さらに、上記演奏データを、上記検出した和音の情報と逆音程変換テーブルによりＣMaj7に対応する音高に変換し、演奏情報メモリ５に記憶する。図５は逆音程変換テーブルの一例であり、例えば、演奏データの音符データが“Ａ♯”で検出した和音が“Ｇｍ”であったとすると、検出和音の根音は“Ｇ”であるので、この“Ｇ”のノートコードを“Ａ♯”のノートコードから減算（ただし、mod 12の演算) することにより“Ａ♯”を“Ｄ♯”に逆シフトする。そして、検出和音の種類は“ｍｉｎ（マイナー）”であるので、図５の逆音程変換テーブルの「Ｄ♯」と「ｍｉｎ」から逆変換データ“１”を読み出し、この逆変換データ“１”を“Ｄ♯”のノートコードに加算（ただし、mod 12の演算) することにより“Ｅ”に逆変換する。これにより、和音“Ｇｍ”の構成音（短３度）の音符データ“Ａ♯”が和音ＣMaj7の構成音の対応する音（長３度）の“Ｅ”に変換される。
【００３０】
すなわち、演奏データの音符データ（キーコード）を、検出した和音の根音に基づいてその音符データの対応する根音がＣとなるように逆シフトするとともに、この逆シフトした音符データを、この音符データと検出した和音の種類に基づいて逆音程変換テーブルでＣMaj7の和音に対応する音高に変換し、演奏情報メモリ５に記憶する。
【００３１】
なお、以上のようにカテゴリー分け、優先順位付け、区間の抜き出し、和音検出および音高変換の編集が終了すると、自動伴奏モードではこの編集後の演奏データに基づいて自動伴奏が行われる。
【００３２】
自動伴奏モードでは、演奏情報メモリ５の編集後の演奏データの各チャンネルについてキーイベントデータおよびデュレーションデータを指定区間内で繰り返して読み出しつつ、鍵盤４のキーイベントから検出した和音に基づいてキーイベントデータのキーコードを音高変換し、変換したキーコードを音源６に出力して自動伴奏を行う。
【００３３】
図６は制御プログラムのメインルーチンのフローチャート、図７〜１２図はサブルーチンおよび割込み処理ルーチンのフローチャートであり、各フローチャートに基づいて実施例の動作を説明する。なお、以下の説明および各フローチャートにおいて、制御に用いられる各レジスタおよびフラグを下記のラベルで表記し、それらの記憶内容は特に断らない限り同一のラベルで表す。
【００３４】
ＲＴ：鍵盤から検出した和音の根音を格納するレジスタ
ＴＰ：鍵盤から検出した和音の種類を格納するレジスタ
ＶＬ：演算した平均ベロシティを格納するレジスタ
ＶＬＫ：ベロシティの閾値を格納するレジスタ
Ｋ１：平均ベロシティの重み係数を格納するレジスタ
Ｋ２：データ削除の閾値として入力される参照音符長を格納するレジスタ
ＮＤ：Ｋ２の値を格納するレジスタ
Ｉ：入力された区間を１／２拍でカウントするカウンタとしてのレジスタ
Ｎ：編集モードでのチャンネル番号を管理するレジスタ
ＲＵＮ：自動伴奏のスタート／ストップを示すフラグ
Ｍ，Ｋ：自動伴奏モードでのチャンネル番号を管理するレジスタ
Ｄ（Ｍ）：チャンネルＭのデュレーションタイムを格納するレジスタ
ＧＴ（Ｍ）：チャンネルＭの発音時間を格納するレジスタ
【００３５】
電源の投入によって図６のメインルーチンの処理を開始すると、ステップＳ１で各レジスタのリセット等の初期設定を行い、ステップＳ２で鍵盤４におけるキーイベントの有無を判定し、キーイベントが無ければステップＳ４に進み、キーイベントが有ればステップＳ３で図７のキーイベントの処理を行ってステップＳ４に進む。
【００３６】
ステップＳ４では、スイッチ群１０のロードスイッチのオンイベントの有無を判定し、オンイベントが無ければステップＳ６に進み、オンイベントが有ればステップＳ５でディスク９から記憶されている楽曲情報を読み出し、演奏情報メモリ５に書き込む。そして、ステップＳ６に進む。
【００３７】
ステップＳ６では、スイッチ群１０の編集スイッチのオンイベントの有無を判定し、オンイベントが無ければステップＳ８に進み、オンイベントが有ればステップＳ７で図８の編集の処理を行ってステップＳ８に進む。
【００３８】
ステップＳ８では、スイッチ群１０のスタート／ストップスイッチのオンイベントの有無を判定し、オンイベントが無ければステップＳ１３に進み、オンイベントが有ればステップＳ９でフラグＲＵＮを反転してステップＳ１０でＲＵＮ＝１となったか否かを判定する。
【００３９】
そして、ＲＵＮ＝１となっていなければ（ＲＵＮ＝０）自動伴奏状態でストップが指示されたことになるのでステップＳ１１で自動伴奏のストップ処理を行ってステップＳ１３に進み、ＲＵＮ＝１となっていれば自動伴奏のスタートが指示されたことになるので、ステップＳ１２で図１１の自動伴奏スタートの処理を行ってステップＳ１３に進む。そして、ステップＳ１３で、音色の選択などその他の処理を行い、ステップＳ２以降の処理を繰り返す。
【００４０】
図７のキーイベントの処理では、ステップＳ２１でキーオンイベントであるか否かを判定し、キーオンイベントでなければステップＳ２２で消音処理を行ってステップＳ２４に進み、キーオンイベントであればステップＳ２３で発音処理を行ってステップＳ２４に進む。
【００４１】
ステップＳ２４では、イベントキーのキーコードに基づいて和音を検出し、ステップＳ２５で和音が検出されたか否かを判定して、和音が検出されなければそのまま元のルーチンに復帰し、和音が検出されればステップＳ２６で検出された和音の根音をレジスタＲＴに格納するとともに検出された和音の種類をレジスタＴＰに格納し、元のルーチンに復帰する。
【００４２】
以上のキーイベントの処理により、鍵盤演奏の発音および消音が行われる。また、自動伴奏時の指定和音が鍵盤４から検出され、指定和音が検出される毎にその根音がレジスタＲＴに、種類がＴＰに格納される。
【００４３】
図８の編集の処理では、先ず、ステップＳ３１で、前記図４について説明したカテゴリー分けの処理を行って各トラックを音色に応じてチャンネルに割り当てて、ステップＳプＳ３２に進む。ステップＳ３２では、前記のように優先順位付けを行って、優先的に選択されたそれぞれのチャンネルを各パートに割り当てて、ステップＳ３３に進む。
【００４４】
ステップＳ３３では、スイッチ群１０の操作に応じて、演奏者によって各チャンネルの区間を指定する区間指定の入力処理を行い、ステップＳ３４に進む。ステップＳ３４では、指定された区間の演奏データを抜き出し、各チャンネルの再生タイミングが相対的に変わらないようにデュレーションデータを補充し、再生タイミングが相対的に揃えられた各チャンネルの演奏データを演奏情報メモリ５に記憶する。そして、ステップＳ３５で図９の和音検出の処理を行い、ステップＳ３６で図１０の和音除去の処理を行い、元のルーチンに復帰する。
【００４５】
以上の編集の処理により、先ず演奏データが音色に応じてチャンネルに割り当てられ、これらのチャンネルが、ベース、ウッディベース等の特定の音色、同時音率および有音率に基づいて優先的に選択されたパートにそれぞれ割り当てられる。そして、入力指定された各チャンネルの区間の区間の演奏データが抜きだされて再生タイミングが相対的に揃えられた各チャンネルの演奏データとして演奏情報メモリ５に再記憶され、図９の和音検出の処理および図１０の和音除去の処理が行われる。
【００４６】
図９の和音検出の処理では、ステップＳ４１で音符データのベロシティデータから平均ベロシティを求めてレジスタＶＬに格納し、ステップＳ４２でこの平均ベロシティＶＬに入力された重み係数Ｋ１を乗算してその乗算値をベロシティの閾値としてレジスタＶＬＫに格納するとともに、発音時間の閾値として入力設定された参照音符長Ｋ２をレジスタＮＤに格納し、ステップＳ４３に進む。ステップＳ４３では、各チャンネルの音符データ中でベロシティがベロシティの閾値ＶＬＫ以下または発音時間が参照音符長ＮＤ以下のデータを削除する。
【００４７】
なお、Ｋ１は例えば０．５程度の値であり、平均ベロシティ以下でミスタッチに相当するベロシティを考慮して設定する。これにより、ミスタッチに対応する音符データが削除される。また、参照音符長としてのＫ２は、例えば１６分音符や３２分音符など発音時間の短い値として設定する。これにより、例えば、コード音への引っかけの音やスケールの駆け上がりの音が削除される。
【００４８】
このコード音への引っかけの音やスケールの駆け上がりの音は、和音構成音でない可能性が高いので、このような音のデータを削除することにより和音検出の精度が高くなる。
【００４９】
次に、ステップＳ４４で、指定された区間を１／２拍でカウントするカウンタＩに“１”をセットし、ステップＳ４０４でのＩのインクリメントとステップＳ４０３での判定処理により、ステップＳ４５以降の処理を指定された区間内で１／２拍毎に繰り返して１／２拍単位でパートに応じて和音検出を行う。
【００５０】
先ず、ステップＳ４５でコードパート１とコードパート２の区間Ｉの音符データによって和音を検出し、ステップＳ４６で和音が検出されたか否かを判定して、和音が検出されていればステップＳ４９に進み、和音が検出されていなければステップＳ４７でコードパート１、コードパート２およびベースパートの区間Ｉの音符データによって和音を検出する。そして、ステップＳ４８で和音が検出されたか否かを判定し、和音が検出されていればステップＳ４９に進み、和音が検出されていなければステップＳ４０３に進む。
【００５１】
ステップＳ４９では、検出された和音の根音がベース音であるか否かを判定し、ベース音であれば、ステップＳ４０１で和音の根音、和音の種類、ベース音の音名を“ＦＦH ”（デフォルト値）としてデュレーションデータとともに演奏情報メモリ５に記憶して、ステップＳ４０３に進む。一方、検出された和音の根音がベース音でなければ、ステップＳ４０２で和音の根音、和音の種類、ベース音の音名をデュレーションデータとともに演奏情報メモリ５に記憶し、ステップＳ４０３に進む。なお、ステップＳ４０１の処理では通常の和音として記憶され、ステップＳ４０２の処理ではベース音の指定付き和音として記憶される。
【００５２】
ステップＳ４０３では、Ｉが指定された区間内の最終区間（最後の１／２拍）であるか否かを判定し、最終区間でなければステップＳ４０４に進んで同様の処理を繰り返し、最終区間であればステップＳ４０５でエンドコードを記憶して元のルーチンに復帰する。
【００５３】
以上の和音検出の処理により、先ず、音符データの平均ベロシティおよび参照音符長に応じてミスタッチや和音構成音でない可能性が高い音の音符データが削除され、指定された区間について１／２拍単位でパートに応じて和音検出が行われる。そして、検出された和音の情報がデュレーションデータとともに演奏情報メモリ５に記憶される。
【００５４】
図１０の和音除去の処理では、ステップＳ５１でチャンネル番号を管理するレジスタＮに“１”をセットし、ステップＳ５８でのＮのインクリメントとステップＳ５７での判定処理により、ステップＳ５２以降の処理を各チャンネルについて繰り返す。
【００５５】
ステップＳ５２では１／２拍の各区間をカウントするレジスタＩに“１”をセットし、ステップＳ５６でのＩのインクリメントとステップＳ５５での判定処理により、ステップＳ５３以降の処理を指定された区間内で繰り返して１／２拍単位で検出された和音に基づいて音符データのキーコードをＣMaj7の和音に対応する音高に変換する。
【００５６】
すなわち、ステップＳ５３で、チャンネル番号Ｎの区間Ｉの音符データを検出した和音の根音で逆シフトし、さらに、前記図５について説明したように、検出した和音の種類とこの逆シフトした音符データのキーコードに応じて逆音符変換テーブルから逆変換データを読み出し、キーコードに加算する。次に、ステップＳ５４で、変換したキーコードを編集後の演奏データとして演奏情報メモリ５に記憶する。そして、ステップＳ５５およびステップＳ５７の判定により、以上の処理を各区間、各チャンネルについて終了すると元のルーチンに復帰する。
【００５７】
以上の和音除去の処理により、各チャンネル毎に、指定された区間内で繰り返して１／２拍単位で検出された和音に基づいて音符データのキーコードがＣMaj7の和音に対応する音高に修正され、編集後の演奏データとして演奏情報メモリ５に記憶される。
【００５８】
図１１の自動伴奏スタートの処理では、ステップＳ６１で、全チャンネルの読み出しポインタを、演奏情報メモリ５の編集後の演奏データのそれぞれの区間開始に対応する記憶領域の先頭にセットし、ステップＳ６２で、全チャンネルの音色データを読み出し、対応するチャンネル番号とともに音源に出力する。そして、ステップＳ６３で、チャンネル毎のデュレーションデータを格納する全チャンネルの配列レジスタＤ（Ｋ）に“０”をセットして元のルーチンに復帰する。
【００５９】
図１２の割り込みの処理はタイマ１１からのテンポクロックにより９６分長毎に起動され、先ずステップＳ７１でＲＵＮ＝１であるか否かを判定する。ＲＵＮ＝１でなければ元のルーチンに復帰し、ＲＵＮ＝１であれば、ステップＳ７２で、チャンネル番号を管理するレジスタＭに“１”をセットし、ステップＳ７０８でのＭのインクリメントとステップＳ７０７での判定処理により、ステップＳ７３〜ステップＳ７０６までの処理を各チャンネルについて繰り返す。
【００６０】
先ずステップＳ７３で、チャンネルＭのデュレーションをカウントするレジスタＤ（Ｍ）の内容が“０”であるか否かを判定し、“０”でなければ発音するタイミングになっていないのでステップＳ７４でレジスタＤ（Ｍ）の内容をデクリメントしてステップＳ７０８に進み、次のチャンネルに移る。デュレーションＤ（Ｍ）が“０”であれば、ステップＳ７５でチャンネルＭの演奏データから読出しポインタが指すデータを読み出し、ステップＳ７６でチャンネルＭの区間の終了であるか否かを判定する。
【００６１】
チャンネルＭの区間の終了であれば、ステップＳ７７でチャンネルＭの読出しポインタを区間開始に対応する演奏データの先頭にセットしてステップＳ７５に戻る。チャンネルＭの区間の終了でなければ、ステップＳ７８で、読み出したデータがキーイベントデータであるか否かを判定し、キーイベントデータであれば、ステップＳ７９〜ステップＳ７０３で発音処理を行う。
【００６２】
先ず、ステップＳ７９で、キーイベントデータのキーコードを鍵盤４から検出した和音の根音ＲＴと種類ＴＰとに基づいて音高変換し、ステップＳ７０１でその音高変換したキーコード、チャンネル番号Ｍおよびベロシティを音源６に出力する。次に、ステップＳ７０２でキーイベントデータの発音時間をチャンネルＭのレジスタＧＴ（Ｍ）に格納し、ステップＳ７０３でチャンネルＭの読出しポインタを歩進してステップＳ７５に戻る。
【００６３】
一方、ステップＳ７８で、読み出したデータがキーイベントデータでなければ、ステップＳ７０４でそのデータがデュレーションデータであるか否かを判定する。デュレーションデータであれば、ステップＳ７０５でデュレーションデータをチャンネルＭのレジスタＤ（Ｍ）に格納し、ステップＳ７０６で読出しポインタを歩進してステップＳ７０８に進む。また、デュレーションデータでなければ、ステップＳ７０７で現在のチャンネル番号Ｍが最終チャンネル番号であるか否かを判定し、最終チャンネル番号でなければステップＳ７０８に進み、最終チャンネル番号であればステップＳ７０９に進む。
【００６４】
ステップＳ７０９では、全チャンネルについて発音時間ＧＴ（Ｋ）をデクリメントし、ステップＳ７１０で、発音時間ＧＴ（Ｋ）＝０となったチャンネルについてそのチャンネル番号ともにキーオフ信号を音源６に出力し、元のルーチンに復帰する。
【００６５】
以上の割込み処理により、ＲＵＮ＝１のとき、各チャンネルについて、読み出したキーイベントデータのキーコードが鍵盤４から検出された和音の根音ＲＴと種類ＴＰとに基づいて音高変換され、各チャンネルが実質的に同時に発音される。また、読み出した発音時間とデュレーションデータに応じて、消音処理および発音処理のタイミングが取られ、９６分長のテンポクロックに同調して自動伴奏が行われる。
【００６６】
以上のように、演奏情報メモリに記憶した演奏データから予め和音を検出し、演奏データをその検出和音に応じて例えばＣMaj7など予め決められた特定の基準和音に対応する音高の情報に変換しているので、供給される演奏データは基準和音に対応する音高のデータでなくても音楽的に不自然になることがない。
【００６７】
また、供給される演奏データに対して、音色によってパートに分解したり、音色、同時音率、有音率によってパートの種類を認識し、各チャンネルの演奏データをパートに割り当てるようにしているので、幅広い演奏データに対応することができる。
【００６８】
さらに、供給される演奏データから平均ベロシティに基づいて音符データの削除を行うようにしているのでミスタッチの音符データを正確に削除することができ、正確な和音検出を行うことができる。
【００６９】
また、供給される演奏データから参照音符長以下の音符データを削除するようにしているので、和音構成音でない可能性が高い音符データを削除でき、正確な和音検出を行うことができる。
【００７０】
したがって、供給される演奏データとしての自由度が高く、その演奏データを自動伴奏の伴奏パターンに変換、修正しても自動伴奏を音楽的に自然なものとすることができる。
【００７１】
なお、実施例では、演奏データをディスクから供給するようにしているが、鍵盤演奏によって演奏データを供給するようにしてもよい。
【００７２】
また、実施例では、供給された元の演奏データをその検出和音に基づいて特定の基準和音に対応するように音高変換して一旦メモリに記憶するようにしているが、元の演奏データの和音の情報を記憶しているので、自動伴奏時に読み出した演奏データのキーコードを、元の演奏データの和音の情報と鍵盤で指定された和音の情報とに基づいてノート変換テーブル等によりリアルタイムに音高変換するようにしてもよい。
【００７３】
なお、実施例のような和音の検出方法を自動編曲あるいは自動作曲に利用することもできる。
【図面の簡単な説明】
【００７４】
【図１】本発明を適用した電子楽器のブロック図である。
【図２】実施例における演奏データの処理を概念的に示す図である。
【図３】実施例における供給される演奏データのフォーマットを示す図である。
【図４】実施例におけるカテゴリー分けを説明する図である。
【図５】実施例における逆音程変換テーブルの一例を示す図である。
【図６】実施例における制御プログラムのメインルーチンのフローチャートである。
【図７】実施例におけるキーイベントの処理のフローチャートである。
【図８】実施例における編集の処理の処理のフローチャートである。
【図９】実施例における和音検出の処理の処理のフローチャートである。
【図１０】実施例における和音除去の処理の処理のフローチャートである。
【図１１】実施例における自動伴奏スタートの処理の処理のフローチャートである。
【図１２】実施例における割り込みの処理の処理のフローチャートである。
【符号の説明】
【００７５】
１…ＣＰＵ、２…プログラムメモリ、３…ワーキングメモリ、４…鍵盤、５…演奏情報メモリ、９…ディスク
【図１】
2004192013.tif 000003
【図２】
2004192013.tif 000004
【図３】
2004192013.tif 000005
【図４】
2004192013.tif 000006
【図５】
2004192013.tif 000007
【図６】
2004192013.tif 000008
【図７】
2004192013.tif 000009
【図８】
2004192013.tif 000010
【図９】
2004192013.tif 000011
【図１０】
2004192013.tif 000012
【図１１】
2004192013.tif 000013
【図１２】
2004192013.tif 000014