(57)【特許請求の範囲】
【請求項１】
楽音の列を各音の識別子の列によって表現した音楽データを記憶する音楽データ記憶手段と、
コード機能を指定するコード機能指定手段と、
前記音楽データにおける各音の識別子を、前記指定されたコード機能に従って音高に変換する音高解読手段と、
前記コード機能指定手段で指定されたコード機能が所定の構成音数をもつコードを示しており、かつ前記音楽データにおいて予め設定されている区間であった場合には、前記音高解読手段によって音高に変換された音高列が形成する形状を異ならせるように変形する形状変更手段と、
を有することを特徴とする楽音音高解読機能付音楽装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明はコード機能に合わせて楽音音高を決定可能な楽音音高解読機能付き音楽装置に関し、例えば自動伴奏機能をもつ電子楽器に応用できる。
【０００２】
【従来の技術】
従来の代表的な自動伴奏装置は、伴奏パターンメモリに伴奏の各音をコード根音からの音程（相対音高）で表現した伴奏原データを用意し、鍵盤操作からコードの根音とタイプを検出し、検出したコードのタイプによって音程データを変更し、それに検出根音データを加算することによって実際の伴奏音高を求めていた。
この種の従来装置はコードの根音とタイプとによって伴奏音高を決定する方式であり、調性和声機能を定めなければ使用できる伴奏音高を決定できないという音楽的事実に反している。この結果、この種の装置は音楽的に不自然な音が出る問題があった。
この問題を解消するため、本件出願人に係る特開平３−０６８９２２号は各コードを根音とタイプとで表現したコードの列（コード進行）を調性分析して各コードの機能（調性和声機能）を抽出する調判定技術を提案している。また、自動伴奏のための伴奏原データとしてコード機能ごとに伴奏の各音の音高データを用意している。
この技術によれば音楽的に不自然な音が出ることは少なくなる。
しかしながら、いずれの従来技術も、音高を確立的に決定しており、いったん決定した音高を音楽的状況に合わせて修正するような能力はもちあわせていない。
【０００３】
【発明が解決しようとする課題】
この発明では、新しいアプローチとして音楽原データには音高情報をもたせず、楽音列を各音の音楽的意味を表わす識別子で表現し、各識別子をコード機能に従って解読して音高に変換するような楽音音高解読機能付音楽装置を用いる。
そしてこの発明の目的はこの種の音楽装置にいったん解読した音高を自動的に修正する能力を与えることである。
【０００４】
【手段、作用】
この発明によれば、楽音の列を各音の識別子の列によって表現した音楽データを記憶する音楽データ記憶手段と、コード機能を指定するコード機能指定手段と、前記音楽データにおける各音の識別子を、前記指定されたコード機能に従って音高に変換する音高解読手段と、前記コード機能指定手段で指定されたコード機能が所定の構成音数をもつコードを示しており、かつ前記音楽データにおいて予め設定されている区間であった場合には、前記音高解読手段によって音高に変換された音高列が形成する形状を異ならせるように変形する形状変更手段と、を有することを特徴とする楽音音高解読機能付音楽装置が提供される。
【０００５】
この構成によれば、形状変更手段が音高解読手段の解読結果を適宜修正するので、音高解読手段が実行する音高解読アルゴリズム特有のくせを除去でき、音楽的に自然な楽音列を得ることができ、さらに楽音列の形状にバリエーションを付けることができる。また、音楽データ記憶手段は楽音列を各音の識別子の列のデータ形式で記憶するので少ない記憶容量で実現できる。
【０００７】
【実施例】
以下、図面を参照してこの発明の実施例を説明する。
図１はこの発明を自動伴奏機能をもつ電子楽器（自動伴奏装置）に適用した場合のハードウェア構成を示すブロック図である。
図１においてＣＰＵ１０２はプログラムメモリ１０４に置かれるプログラムを実行して装置各部を制御する。
この実施例に従い、ＳＤＢメモリ１０６は種々の伴奏スタイルのために複数の音階音データベースを記憶する。各音階音データベースはコード機能別に音階音の音高セットに関する情報を含んでいる。
【０００８】
ＫＭＡＰメモリ１０８は種々の伴奏スタイルのために複数のコード構成音テーブルを記憶する。各コード構成音テーブルはコード機能別に和声音（コード構成音）の音高セットに関する情報を含んでいる。
【０００９】
伴奏ヘッダメモリ１１０は伴奏スタイル別に各パートの伴奏パターンのためのヘッダ情報を記憶する。後述するように、ヘッダ情報のなかには、ＳＤＢメモリ１０６上のどの音階音データベースを使用するかを示す情報、ＫＭＡＰメモリ１０８上のどのコード構成音テーブルを使用するかを示す情報、伴奏原データメモリ１１２上の使用する伴奏原データを指示する情報等が含まれている。
伴奏原データメモリ１１２は種々の伴奏スタイルの伴奏のための伴奏原データを記憶する。伴奏原データは和声音と非和声音とを含む伴奏音の列を各音の識別子の列によって表現する。
【００１０】
調・機能評価知識メモリ１１４は各コードを根音とタイプで表現したコードの列（コード進行）における各コードの機能、調の主音（キーノート）を評価するための音楽知識データを記憶する。
ＲＡＭ１１６はＣＰＵ１０２のワークメモリとして使用される。
【００１１】
鍵盤１１８は演奏データの入力装置である。自動伴奏モード下では、鍵盤１１８の左手領域で順次押鍵パターンによって指定されるコードに対し、ＣＰＵ１０２は指定コードの根音とタイプを検知する。このようにして各コードを根音とタイプで表現したコードの列（コード進行）が得られる。このコード進行に対し、ＣＰＵ１０２は調・機能評価知識メモリ１１４に置かれる音楽知識データを参照して調・機能判定処理を実行し、各コードのキーノートとコード機能を判定する。この調・機能判定処理としては本件出願人に係る特願平３−６８９２２号に開示するものが使用できる。
【００１２】
伴奏スタイルセレクタ１２０は伴奏スタイルを選択するための入力装置である。
音源１２２はＣＰＵ１０２の制御の下にメロディと伴奏のための楽音信号を電子的に発生する装置である。
サウンドシステム１２４は音源１２２からの楽音信号を音として再生する。
【００１３】
本自動伴奏装置は伴奏原データメモリ１１２にある伴奏音の各識別子を与えられた伴奏スタイルとコード機能に基づき音楽的に解読して音高データ（キーノートに対する音程を表わす）に変換する音高解読機能を有している。
セレクタ１２０から入力される伴奏スタイルは伴奏ヘッダ情報を介して使用する伴奏原データと音階音データベース（ＳＤＢ）とコード構成音テーブルを特定するのに用いられる。
【００１４】
コード機能が指定されると音高解読機能はまず伴奏原データにおける各和声音の識別子をコード構成音テーブルに書かれた、指定コード機能に対する和声音の音高セットを用いて音高データに変換する。その後、音高解読機能は伴奏原データにおける各非和声音識別子を和声音の音高解読結果と、音階音データベースに書かれた、指定コード機能に対する音階音の音高セットとに基づき音高データに変換する。
【００１５】
更に本自動伴奏装置は上記の音高解読機能のみならず、音高解読結果を音楽的にテストして、適時修正を行う修正機能を備えている。
第１の修正機能は音高列が形成する形状を音楽的状況に合わせて修正する。このために形状調整区間が用意され、所定のコード機能の場合には伴奏原データ中に含ませた変更データに従って形状調整区間内の音高列を修正する。第２の修正機能は非和声音の音高解読結果が音楽的に好ましくないアボイド音かどうかを調べ、該当する場合にはその伴奏音をアボイド音以外の音高に修正する。
【００１６】
図２と図３に音階音データベースの例を参照符号１０６Ｅで示す。これらの図において、左端の列はコード機能（例えばＩ）を示している。図示のように音階音データベース１０６Ｅはコード機能別に音階音の音高セットに関する情報をもっている。例えば第１行のコード機能Ｉのとき、音階音はＣ、Ｄ、Ｅ、Ｆ、Ｇ、Ａ、Ｂで構成される。図ではＣに対しては第１音階音を示す記号ＳＴ１、Ｄに対しては第２音階音を示す記号ＳＴ２、以下同様にして、ＥにはＳＴ３、ＦにはＳＴ４、ＧにはＳＴ５、ＡにはＳＴ６、ＢにはＳＴ７の記号がつけられている。更に、これらの音階音のうちＣ、Ｅ、Ｇはコード構成音（和声音）でもあるため、それぞれ、Ｋ１、Ｋ２、Ｋ３の記号をつけてある。また、Ｆはアボイド音であるため、記号ＡＶをつけている。いいかえると実施例の音階音データベースはアボイド音のテーブルを兼ねている。更に、音階音データベース１０６Ｅには矢印
【外１】
、→、←の記号が記入されている。このうち
【外１】
は、その音階音が上（右）と下（左）の隣接音階音と結合する強さが同じであることを示す。→は上の音階音と結合しやすいことを、←は下の音階音と結合しやすいことを表わしている。
【００１７】
なお、図２、図３に示す音名Ｃ〜Ｂは実際にはキーノートがＣのときの音名、いいかえるとキーノートからの音程（キーノートに対する相対音高）を表わし、Ｃがキーノートから１度（数値表現で０）、Ｃ＃（Ｄｂ）がキーノートから短２度（１）、以下同様である。
また、ＳＴとＫにつけた番号は便宜上であり、必ずしも必要ではない。例えば、コード機能ＩのときＣ（キーノートと同じ音名）は音階音かつ和声音であることを示せば足りる。
したがって１音名に付き５ビット、即ち、音階音かどうかを示す１ビット、和声音かどうかを示す１ビット、アボイド音かどうかを示す１ビット、結合を表わす２ビットのデータフォーマットで音階音データベースを構成できる。
【００１８】
図４にコード構成音テーブルの例を参照符号１０８Ｅで示す。コード構成音テーブルはコード機能別に和声音（コード構成音）の音高セットに関する情報をもっている。図示のコード構成音テーブル１０８Ｅは３ポリ用（Ｋ１〜Ｋ３）と４ポリ用（Ｋ１〜Ｋ４）のテーブルをまとめて示したものである。例えばコード機能Ｉのとき、３ポリではＫ１がＣ４（第４オクターブのＣ）、Ｋ２がＥ４、Ｋ３がＧ４であり、４ポリではＫ４としてＣ５が加わる。なお、コード構成音テーブル１０８ＥにおけるＣ４等の音高データはキーノートがＣのときの和声音の音高、いいかえるとキーノートからの音程を表わしている。
【００１９】
また、図示のコード構成音テーブル１０８Ｅはコード機能によらず、できるだけ伴奏音域を維持する“隣接”モード用のテーブルである。そのためにいくつかのコード機能に対する和声音の配置は最低音Ｋ１が根音ではない転回形をとっている。例えばコード機能ＩＶに対する３ポリの和声音としてＫ１に本来第３構成音であるＣ４を割り当て、その上にＫ２としてＦ４（コード根音）、Ｋ３としてＡ４（本来、第２構成音）がくるようにしている。
“隣接”モード用のコード構成音テーブルとは対照的に、伴奏音域をコードの根音に従って平行シフトさせる“平行”モード用のコード構成音テーブルも用意される。
【００２０】
図５に伴奏パートに対するヘッダの例を参照符号１１０Ｅで示す。ヘッダメモリ１１０Ｅは記号アドレス“ＳＤＢ”に使用する音階音データベースのアドレスポインタを記憶する。また記号アドレス“ＫＭＡＰ”には使用するコード構成音テーブルのアドレスポインタを記憶する。これらにより、伴奏原データの各音識別子を音高解読するために使用する音階音データベースとコード構成音テーブルが特定される。
また、“スタイル”、“拍子”、“パターン長”の各記号アドレスには伴奏のスタイル、拍子、パターン長さの情報がそれぞれ記憶される。
【００２１】
記号アドレス“ライン数”には伴奏パートを構成する伴奏のライン数が記憶され、後続するライン数分のアドレスには伴奏原データメモリ１１２における、各ラインデータのアドレスポインタが記憶される。
記号アドレス“ＡＶＴ”にはアボイド音の許容長（例えば１６分音符の長さ）が記憶される。後述するように、許容長を超えるアボイド音が発生した場合、そのアボイド音は除去される。
記号アドレス“形状調整区間”には伴奏の音高列の形状を調整する区間情報が記憶される（なおそのような区間をもたない伴奏に対してはＮＵＬＬ値が設定される）。
【００２２】
図６に伴奏パートを構成する伴奏原データメモリの例を参照番号１１２Ｅで示す。図示の例では伴奏パートは３つのラインから成る。各ラインデータはそれぞれ記号アドレス“ライン１”、“ライン２”、“ライン３”から始まる。
ライン１の最初のアドレスには和声音の識別子として第３コードトーンを示す符号Ｋ３が記憶される。次のアドレスにはそのリズムのアドレスポインタが記憶される。リズムアドレスポインタが指すリズムメモリには２１２に示すようにその伴奏音の発音タイミングパターンと消音タイミングパターンが書かれている。その次のアドレスはラインの終了符号ＥＮＤが記憶されている。
したがってライン１はＫ３の伴奏音のみから成る。
同様にしてライン２はＫ２（第２和声音）の伴奏音のみから成る。
【００２３】
これに対し、ライン３は倚音（Ａ）とＫ１（第１和声音）の伴奏音から成る。このため、ライン３の最初のアドレスには第１の伴奏音である非和声音の識別子として倚音を意味する符号Ａが記憶される。次のアドレスには基本の調性和声モード、即ちキーノートが“Ｃ”でコード機能が“Ｉ”のときの倚音Ａの音高データが記憶される。なお、本実施例では伴奏原データメモリ上の非和声音についてはその識別子とともに基本の調性和声モードにおける音高データを記憶するようにしている。その次のアドレスに倚音Ａのリズム情報としてそのリズムデータの格納アドレスポインタが記憶される。更に次アドレスに和声音の識別子として第１和声音を示す符号Ｋ１が記憶され、その次のアドレスに和声音Ｋ１のリズム情報のアドレスポインタが記憶される。
【００２４】
なお、図６の伴奏原データが示す伴奏パートはパターン長が１小節であり、図７に示す形式で各ラインが構成される。
このように伴奏原データは和声音と非和声音を含む伴奏音列の各音を識別子の列で表現するものである。
したがって、自動伴奏のために、与えられたコード機能に対して各識別子をヘッダが指定する音階音データベースとコード構成音テーブルを用いて音高データに変換する必要がある。
【００２５】
図８において、（Ａ）は図６の伴奏原データに対し、キーが“Ｃ”でコード機能がＩ（コード名がＣＭａｊｏｒ）のときの音高解読結果をそのリズムとともに楽譜で示したものである。コード機能Ｉの場合、ライン１のＫ３＝Ｇ４、ライン２のＫ２＝Ｅ４、ライン３のＡ＝Ｄ４、Ｋ１＝Ｃ４に音高変換されている。図８（Ｂ）は同じ伴奏原データに対し、キーが“Ｃ”でコード機能がＩＶ（コード名がＦＭａｊｏｒ）のときの音高解読結果を示したものである。コード機能ＩＶの場合、ライン１のＫ３＝Ａ４、ライン２のＫ２＝Ｆ４、ライン３のＡ＝Ｄ４、Ｋ１＝Ｃ４に音高変換されている。
【００２６】
図９は本自動伴奏装置により実行されるコード機能別伴奏パターン作成処理９−Ｇのフローチャートである。
この処理９−Ｇの目的は伴奏原データにおける各音識別子をコード機能別に解読してその音高を決定することである。本実施例ではこのコード機能別伴奏パターン作成処理９−Ｇはステップ９−０に示すように、伴奏スタイルセレクタ１２０による伴奏スタイルの選択操作に応答して実行される。
コード機能別伴奏パターン作成処理の最初のステップ９−１でＣＰＵ１０２は選択伴奏スタイルに対応づけられたヘッダを読み込む。そしてヘッダに書かれている音階音データベースアドレスポインタを用いて、選択伴奏スタイルに合う音階音データベースＳＤＢをアクセスし、そのＳＤＢの最初のコード機能を選択する（９−２）。
【００２７】
以下、９−３〜９−１２で選択コード機能に対する伴奏の音高解読処理を実行する。
まずステップ９−３でＣＰＵ１０２は伴奏原データを走査するポインタをヘッダに書かれている最初のラインアドレスポインタの値にセットすることにより、最初の伴奏ラインを選択する。そして９−４〜９−１０で選択伴奏ラインに対する音高解読処理を実行する。
まず和声音高解読ステップ９−４でＣＰＵ１０２は選択伴奏ラインに含まれる各和声音の識別子をコード構成音テーブルを用いて音高に変換する。次に選択伴奏ラインに形状調整区間が含まれ、かつ選択コード機能が４和音、即ち４つの構成音をもつ和音かどうかチェックし（９−５）該当する場合には形状修正ステップ９−６で伴奏ラインの形状を修正する。
【００２８】
次にステップ９−７で選択伴奏ラインに非和声音が含まれるかどうかをチェックし、該当すれば非和声音解読処理９−８を実行してライン中の各非和声音の識別子を音高に変換する。
次にアボイドチェック・修正ステップ９−９で非和声音解読処理の結果をテストし、好ましくないアボイド音、即ち許容長ＡＶＴを超えるアボイド音が発生している場合にはその音をアボイド音でない音高に変更する。
ステップ９−１０ですべてのラインについて音高解読処理が完了したかどうかをチェックし、未完了なら次の伴奏ラインを選択して（９−１１）、９−４に戻る。
【００２９】
ステップ９−１２ではすべてのコード機能について音高解読処理が完了したかどうかをチェックし、未完了なら、ＳＤＢから次のコード機能を選択して（９−１３）、９−３へ戻る。
このように、コード機能別伴奏パターン処理９−Ｇではコード機能別に伴奏パートの各ラインの伴奏音高列を決定し、結果をＲＡＭ１１６の所定エリアに格納する。
【００３０】
その後、鍵盤１１８で演奏が始まると、ＣＰＵ１０２はコード判定処理で左手鍵域の押鍵パターンからコードのタイプと根音を検出し、調性分析処理でコードの機能とキーノートを判別する。そして伴奏処理を実行し、判別されたコード機能に対する伴奏パートの各ラインの伴奏音高をＲＡＭ１１６から読み出し、発音の各タイミングでＲＡＭ１１６からの該当する伴奏音高データにキーノートデータを加算して実音高データを生成し、それによって音源１２２を制御する。これにより、伴奏スタイルとコード機能に合った自動伴奏が実現される。
【００３１】
図１０に和声音解読処理９−４のフローチャートを示す。まず１０−１でＣＰＵ１０２は伴奏原データの走査ポインタをライン開始アドレスから進めていって伴奏ラインの最初の和声音識別子をロケートする。次に１０−２でＣＰＵ１０２はヘッダが指すコード構成音テーブルＫＭＡＰをルックアップして、選択コード機能における該当和声音識別子に対する音高データを取り出す。例えば伴奏原データの和声音識別子がＫ３でコード機能がＩＩｍ、使用するＫＭＡＰが図４に示す４ポリの隣接型コード構成音テーブル１０８Ｅであれば、このテーブルの４ポリＫ３の列とＩＩｍの行との交点に示す音高データＡ４がＫ３の音高解読結果として取り出される。
【００３２】
１つの和声音識別子について音高を解読したら、伴奏原データ走査ポインタを進めていって次の和声音識別子をロケートし（１０−４）、その音高解読１０−２を実行する。伴奏原データ走査ポインタがライン終了符号ＥＮＤに達したら
（１０−３）、処理終了である。
形状修正処理９−６は伴奏原データの音高列の形状を調整する機能を実現するものである。この形状修正処理９−６は伴奏パターンに形状調整区間があり、コード機能が４和音の場合に、その形状調整区間に対して実行される。
このためにヘッダは形状調整区間の有無や領域に関する情報をもっており、伴奏原データメモリにも必要に応じ形状調整のための情報をもたせている。
【００３３】
図１１に形状調整が行われる伴奏原データの例を参照符号１１２Ｇで部分的に示してある。図示のように和声音識別子の隣りに変更データが置かれる。変更データ“０”は和声音高解読処理９−４で解読した和声音高データを変更しないことを表わし、変更データ“＋１”は解読した和声音高データを１つ上の和声音に変更することを意味し、変更データ“−１”は解読和声音高データを１つ下の和声音に変更することを意味している。
【００３４】
図１２は形状修正処理９−６のフローチャートである。
まず１２−１でＣＰＵ１０２は伴奏ラインの原データメモリから最初の和声音識別子をロケートする。１２−２でロケートした和声音識別子が形状調整区間内の音かどうかをチェックする。これは、ヘッダに置かれた形状調整区間情報と和声音識別子のリズム情報とを比較することで行われる。
【００３５】
形状調整区間内の音ならば１２−３へ進み、ロケートした和声音識別子に対する音高解読結果である音高データをＲＡＭ１１６から読み出す。次に１２−４で伴奏原データメモリ１１２からロケートした和声音識別子に対する変更データを読み取る。この変更データが“０”以外の値をもつときは（１２−５）、１２−６へ進み、変更データを音程の値に換算する。これはコード構成音テーブルから選択コード機能に対する和声音間の音高差（音程）を計算することで得られる。例えばコード構成音テーブルＫＭＡＰとして図４に示す４ポリの隣接型テーブル１０８Ｅを用いたとし、コード機能がＶ７、和声音識別子がＫ４、変更データが“＋１”だとすると、Ｋ４に対する解読結果はＢ４（数値表現で４×１２＋１１＝５９）である。コード機能Ｖ７について、Ｋ４とそれより１つ上の和声音との間の音程はＫ４の音名ＢとＫ１の音名Ｄとの差（１２ｍｏｄ（２−１１＋１２））、即ち短３度（数値表現で３）である。したがってＢ４に短３度を加えるとＤ５（６２＝５９＋３）となり、これが変更後の和声音高を定める（１２−７）。
【００３６】
以下、伴奏ラインの終了（１２−８）に至るまで原データから和声音の識別子を見つける（１２−９）ごとに１２−２〜１２−７に示す処理を実行することにより、形状調整区間内の和声音高列の形状を修正する。
例えば、形状調整区間の和声音の識別子がＫ３−Ｋ４−Ｋ４−Ｋ３、その変更データ列が０−０−１−１、使用コード構成音テーブルＫＭＡＰが図４の４ポリ・隣接型だとすると、コード機能がＩのときは音高列Ｇ４−Ｃ５−Ｃ５−Ｇ４が得られる。コード機能がＩＭ７のときは和声音解読処理９−４の結果、音高列Ｇ４−Ｂ４−Ｂ４−Ｇ４が形成される。更に形状修正処理９−６により、この音高列はＧ４−Ｂ４−Ｃ５−Ｂ４に変更される。
【００３７】
図１３は非和声音高解読処理９−８のフローチャートである。
まず、原データ走査ポインタをライン開始位置から進めていって最初の非和声音識別子をロケートする（１３−１）。１３−２でロケートした非和声音識別子の種類を判別する。本実施例では非和声音識別子として倚音Ａと経過音Ｐと逸音Ｅを使用している。そこで判別した非和声音の種類に対応して倚音解読処理１３−３、経過音解読処理１３−４、逸音解読処理１３−５をそれぞれ実行して非和声音の音高を決定する。
【００３８】
１つの非和声音識別子について音高解読処理を行ったら、原データ走査ポインタを進めていって次の非和声音識別子をサーチし、見つかれば（１３−７）、同様の音高解読処理１３−２〜１３−５を繰り返す。原データ走査ポインタがライン終了符号ＥＮＤに達したら処理完了である。
【００３９】
図１４に倚音解読処理１３−３のフローチャートを示す。
まず１４−１でＣＰＵ１０２はコード機能が基準のコード機能Ｉかどうかをチェックし、該当すれば１４−２に進み、原データの倚音音高データを読む（１４−３）。次に倚音に後続する和声音の音高データ（和声音解読処理９−４、形状修正処理９−６によって既に得られている）を読み（１４−４）、倚音から後続和声音への音程の方向ＤＩＲを求める（１４−４）。この倚音の方向情報ＤＩＲは他のコード機能に対する倚音の音高解読に利用される。
【００４０】
以上述べるように実施例では倚音から後続和声音への音の進行方向がすべてのコード機能で同じになるようにしている。
即ち、基準コード機能以外のコード機能に対しては（１４−１）、後続する和声音の音高データを読み出し（１４−５）、音階音データベースＳＤＢから後続和声音の音高に隣接し、ＤＩＲの方向をもつ音階音（同時に和声音であるケースもある得る）の音高を倚音として読む（１４−６）。
【００４１】
例えばコード機能＝IV、後続和声音の音高＝Ｃ４＝１２×４、ＳＤＢ＝図２の音階音データベース１０６Ｅ、ＤＩＲ＝“−”（下向）、だとすると、ＣＰＵ１０２は音階音データベース１０６Ｅのコード機能IVの行を和声音の音高クラスＣの列から右方に向って見ていく。すると、音高クラスＤが音階音であることが見つけ出される。したがって倚音の音高は後続和声音より長２度以上（Ｃから右方に動かした値２で示される）であり、倚音音高＝Ｄ４（＝１２×４＋２）が求められる。
【００４２】
図１５に経過音解読処理１３−４のフローチャートを示す。
コード機能が基準機能Ｉのときは（１５−１）原データメモリに書かれている経過音高データを写しとる（１５−２）。ほかのコード機能のときは１５−３へ進み、経過音の前後の和声音高データを読み（１５−３）、高さを比較する（１５−４）。
前後の和声音の音高が異なるときは１５−５に進み、経過音の音高データを前の和声音の音高に初期化する。次に（１５−６）、前の和声音の音高から後の音高に向けて音階音データベースＳＤＢをサーチし、音階音を見つける都度、その音高に経過音音高データを更新する。
【００４３】
解読例を表１と表２に示す。
【表１】
【表２】
【００４４】
一方、前後の和声音が同じ高さの場合には１５−７へ進み、音階音データベースＳＢＤから、和声音の音高に隣接する上と下の音階音の結合度データをとり出す。そして強い方の結合度をもつ音階音があればそれを経過音の音高とする。また両結合度データが同じか結合度データが書かれていないときは下側の音階音を経過音の音高とする。
【００４５】
解読例を表３に示す
【表３】
【００４６】
図１６に逸音解読処理１３−５のフローチャートを示す。
コード機能が基準機能Ｉのときは（１６−１）、原データメモリから逸音音高データを写しとる（１６−２）。更に後続する和声音の音高データを読み（１６−３）、後続和声音に対する逸音の音程ＩＮＴを求める（１６−４）。この音程情報ＩＮＴはすべてのコード機能について逸音から後続和声音への跳躍進行を同様なものにするのに利用される。
即ち、基準機能以外のコード機能に対しては後続する和声音の音高データを読み（１６−４）、音階音データベースから（ＩＮＴ＋和声音の音高）に最も近い音階音を見つけ出し、それを逸音の音高とする（１６−５）。
【００４７】
以上述べたように、非和声音解読処理では和声音の音高解読結果と音階音データベースとに基づいて各非和声音の識別子を音高に変換する。
なお、上記の例では伴奏原データメモリ上に基準コード機能に対する非和声音の音高データをもたせているがもたせない方法も考えられる。これは非和声音の意味づけ（非和声音識別子の種類）を細かく分け、各意味づけに沿う解読処理を行うことで実現できる。
【００４８】
例えば倚音Ａを後続和声音に対して下向する倚音“＋Ａ”と上行する倚音“−Ａ”とに分け、＋Ａ（−Ａ）の解読においてＳＤＢを後続和声音より高い方向（低い方向）にサーチする。
また、経過音については前後の和声音の音高が異なるものをＰグループ、前後の和声音の音高が同じになるものをＮグループとする。更にＰグループの経過音について、ＳＤＢ上で前後の和声音間に２の音階音が含まれる場合に前の和声音に近い音階音で定義される音をＰ１、後の和声音に近い音階音で定義される音をＰ２で区別化する。またＮグループを前後和声音の上側の音階音としての意味を持つ＋Ｎと前後和声音の下側の音階音としての意味を持つ−Ｎとに分ける。
【００４９】
また逸音については後続する和声音に対する音程情報を含む識別子で表現する。例えばＥ（＋５）は後続する和声音より５半音高いかそれに最も近い音階音としての意味を持つ逸音識別子である。
このように非和声音識別子を豊富化し、それぞれの意味づけに合った処理を行うことで一層きめの細かい音高解読が可能となるとともに伴奏原データから基準コード機能に対する非和声音音高データを除去することができる。
【００５０】
図１７にアボイドチェック修正処理９−９のフローチャートを示す。
まず１７−１で原データ操作ポインタを伴長ライン開始位置から進めていって最初の非和声音識別子をロケートする。１７−２ではロケートした非和声音識別子に対する非和声音解読処理結果、即ち音高データを読む。そしてその音高クラスとコード機能を用いて音階音データベースＳＤＢをルックアップし、解読した音高がアボイド音かどうかをテストする（１７−３）。アボイド音ならばその音長がヘッダ（図５）にかかれた許容長ＡＶＴを越えるかどうかを調べる。該当すれば音楽的に好ましくないアボイド音なのでアボイド除去処理１７−４を実行して、その音をアボイド音でない音に変更する。
【００５１】
以降、伴奏ラインの原データから非和声音識別子を見つける都度（１７−７）、以上の処理を繰り返し原データポインタがライン終了符号ＥＮＤに達したら（１７−６）処理を抜ける。
【００５２】
図１８はアボイド除去処理１７−５のフローチャートである。
まず１８−１でアボイド音の前後の和声音の音高を取り出す。次に（１８−２）、アボイド音として解読された非和声音の種類を識別する。
非和声音が倚音Ａの場合には音階音データベースＳＤＢを参照して、後の和声音の音高に隣接し、かつアボイド音とは反対側にある音階音を見つけ出し、それを修正音高とする（１８−３）。
逸音Ｅの場合は、音階音データベースＳＤＢを参照し、アボイド音に隣接する音階音を見つけ出し、それを修正音高とする（１８−４）。
経過音Ｐの場合は前後の和声音高を比較し、同じなら（１８−５）、その音を倚音Ａとみなして１８−３の倚音修正処理を実行する。異なるなら音階音データベースＳＤＢを参照し、前後の和声音間にあるアボイド音以外の音階音をサーチする。そのような音階音が見つかればそれを経過音の修正音高とする。見つからなければ（１８−７）、倚音とみなして倚音修正処理１８−３を実行する。
【００５３】
このようにアボイドチェック・修正処理を行うことで音楽的に好ましくないアボイド音を発生しない伴奏を実現できる。
なお、アボイドチェック・修正処理は非和声音解読処理で１つの非和声音を解読する都度行った方が処理速度上好ましい。
なお、この発明は伴奏に限らずメロディ生成の音楽装置にも適用できる。その場合、音楽原データメモリとして伴奏原データメモリの代りにメロディ原データメモリを用いる。ここにメロディ原データメモリは楽音列であるメロディ音列の各音の識別子を記憶する。
以上で実施例の説明を終えるがこの発明の範囲内で種々の変形が可能である。
【００５４】
【発明の効果】
以上詳細に説明したように、この発明によれば音楽データ（実施例では伴奏原データ）に楽音列の各音の音楽的意味を表わす識別子をもたせ、指定されたコード機能に従って各音の音高を解読するとともに、解読結果を所定の音楽条件にしたがって検査して適宜修正するようにしているので音楽的に自然な音高列を生成でき、かつ記憶容量を節約できる。
【図面の簡単な説明】
【図１】この発明の実施例に係る音楽装置のハードウェア構成を示すブロック図。
【図２】音階音データベースの一部を示す図。
【図３】音階音データベースの一部を示す図。
【図４】コード構成音テーブルの一例を示す図。
【図５】伴奏ヘッダーメモリの例を示す図。
【図６】伴奏原データメモリの例を示す図。
【図７】３つの伴奏ラインの音識別子の列を示す図。
【図８】伴奏例を楽譜で示す図。
【図９】コード機能別に音高解読を行う伴長パターン作成処理のフローチャート。
【図１０】和声音高解読処理のフローチャート。
【図１１】音高例の形状修正が行われる伴奏原データを示す図。
【図１２】形状修正処理のフローチャート。
【図１３】非和声音高解読処理のフローチャート。
【図１４】倚音解読処理のフローチャート。
【図１５】経過音解読処理のフローチャート。
【図１６】倚音解読処理のフローチャート。
【図１７】アボイドチェック・修正処理のフローチャート。
【図１８】アボイド除去処理のフローチャート。
【符号の説明】
１０２  ＣＰＵ
１０４  プログラムメモリ
１０６  ＳＤＢ（音階音データベース）メモリ
１０８  ＫＭＡＰ（コード構成音テーブル）メモリ
１１０  伴奏ヘッダメモリ
１１２  伴奏原データメモリ
１２０  伴奏スタイルセレクタ
【図１】
0003548871.tif 000002
【図２】
0003548871.tif 000003
【図３】
0003548871.tif 000004
【図４】
0003548871.tif 000005
【図５】
0003548871.tif 000006
【図６】
0003548871.tif 000007
【図７】
0003548871.tif 000008
【図８】
0003548871.tif 000009
【図９】
0003548871.tif 000010
【図１０】
0003548871.tif 000011
【図１１】
0003548871.tif 000012
【図１２】
0003548871.tif 000013
【図１３】
0003548871.tif 000014
【図１４】
0003548871.tif 000015
【図１５】
0003548871.tif 000016
【図１６】
0003548871.tif 000017
【図１７】
0003548871.tif 000018
【図１８】
0003548871.tif 000019