(57)【特許請求の範囲】
【請求項１】
コード情報を受け付ける第１の受付手段と、
入力音情報を受け付ける第２の受付手段と、
前記第２の受付手段によって受け付けられた入力音情報から音高情報を抽出する抽出手段と、
前記第１の受付手段によって受け付けられたコード情報および前記抽出手段によって抽出された入力音情報の音高情報に基づいてハーモニー音の音高を決定する決定手段と、
前記受け付けられたコード情報および前記抽出された入力音情報の音高情報に基づいてハーモニー音の音高を更新するかどうかを判定する判定手段であって、前記抽出された入力音情報の音高情報が前記受け付けられたコード情報のコードスケール音であるときに、ハーモニー音の音高を更新すると判定する判定手段と、
前記判定手段によってハーモニー音の音高を更新すると判定された場合に、前記受け付けられた入力音情報および前記決定手段によって決定されたハーモニー音の音高に基づいてハーモニー音を生成する生成手段と
を有することを特徴とする電子音楽装置。
【請求項２】
前記抽出手段によって入力音情報の音高情報が抽出される度に、前回抽出された入力音情報の音高情報を保存する保存手段をさらに有し、
前記判定手段は、前記保存手段によって保存された前回抽出された入力音情報の音高情報をも参照して、ハーモニー音の音高を更新するかどうかを判定することを特徴とする請求項１に記載の電子音楽装置。
【請求項３】
コード情報を受け付ける第１の受付手順と、
入力音情報を受け付ける第２の受付手順と、
前記第２の受付手順によって受け付けられた入力音情報から音高情報を抽出する抽出手順と、
前記第１の受付手順によって受け付けられたコード情報および前記抽出手順によって抽出された入力音情報の音高情報に基づいてハーモニー音の音高を決定する決定手順と、
前記受け付けられたコード情報および前記抽出された入力音情報の音高情報に基づいてハーモニー音の音高を更新するかどうかを判定する判定手順であって、前記抽出された入力音情報の音高情報が前記受け付けられたコード情報のコードスケール音であるときに、ハーモニー音の音高を更新すると判定する判定手順と、
前記判定手順によってハーモニー音の音高を更新すると判定された場合に、前記受け付けられた入力音情報および前記決定手順によって決定されたハーモニー音の音高に基づいてハーモニー音を生成する生成手順と
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたコード（和音）情報に基づいてハーモニー音を生成する電子音楽装置およびハーモニー音生成方法を実現するためのプログラムに関する。
【背景技術】
【０００２】
入力されたコード情報に基づいてハーモニー音を生成する電子音楽装置は、従来から知られている。
【０００３】
このような装置として、入力された音声を入力されたコード情報に協和する音高のハーモニー音声に変換するようにした音声処理装置がある（たとえば、特許文献１参照）。この音声処理装置では、ハーモニー音声への音高の変換は、旋律音域（伴奏音域よりも高い音域）の和音の構成音名の音高のうち直接音声に最も近い音高（ただし、同一音高でない）に変換するようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第２８７９９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、上記従来の音声処理装置が入力音声をハーモニー音声へ変換するに際して、たとえば図２のようなハーモニー音生成用テーブルを予め定義しておき、このハーモニー音生成用テーブルを参照して行うことが考えられる。ただし、図２に示すハーモニー音生成用テーブルには、本願発明に特有な情報、つまり「コードスケール音」の項目に記載の情報が含まれているので、上記従来の音声処理装置が使用するハーモニー音生成用テーブルは、この情報を除いたもの、つまり「入力音」と「ハーモニー音」を対応付けたものである（以下、このハーモニー音生成用テーブルを「従来のハーモニー音生成用テーブル」と言う）。図示例の従来のハーモニー音生成用テーブルでは、入力される（音声の）音高（音名）に対して生成すべきハーモニー音の音高（音名）がコード情報毎に定義されているので、コード情報が入力されると、そのコード情報に対応するハーモニー音生成用テーブルが参照対象として選択される。
【０００６】
このように構成された従来の音声処理装置は、コード情報が入力されるとともに音声が入力されると、入力されたコード情報に対応するハーモニー音生成用テーブルを参照対象として選択し、このハーモニー音生成用テーブルを参照して、入力された音声の音高に対応するハーモニー音の音高を決定し、決定した音高のハーモニー音を生成する。
【０００７】
しかし、この従来の音声処理装置では、生成すべきハーモニー音の音高が変わる境目に相当する音高の音声が入力され、その音声の音高が半音の境目をさまようと、それに応じてハーモニー音の音高が変動し、音高の安定しないハーモニー音が生成されることになる。そして、音声入力がユーザ自身の歌声によってなされる場合には、ユーザは生成されるハーモニー音の音高を聴きながら自身の歌声の音高を補正することが多いので、ハーモニー音の音高が不安定になると、ユーザは非常に歌いづらくなる。
【０００８】
たとえば、コード情報として“Ｃｍａｊ”（Ｃメジャ）が入力され、参照対象の従来のハーモニー音生成用テーブルとして、図２（ａ）に記載のものに相当するものが選択されたとする。このとき、ユーザが“Ａ３”の音高で歌おうとして、その音高を正確に出すことができずに“Ａ＃３”に近い音高で歌った場合には、“Ｅ４”の音高のハーモニー音が生成され、続いて歌声が“Ａ３”の音高に変動すると、“Ｃ４”の音高のハーモニー音が生成される。つまり、歌声が“Ａ＃”と“Ａ”の間で揺れると、それに伴ってハーモニー音の音高も“Ｅ＋１”と“Ｃ＋１”（ここで、“＋１”は１オクターブ上を意味する）の間で音高差のある変化をし、不安定な音高のハーモニー音が生成される結果となる。
【０００９】
本発明は、この点に着目してなされたものであり、入力音の音高に揺れが生じても安定した音高のハーモニー音を生成することが可能となる電子音楽装置およびハーモニー音生成方法を実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、請求項１に記載の電子音楽装置は、コード情報を受け付ける第１の受付手段と、入力音情報を受け付ける第２の受付手段と、前記第２の受付手段によって受け付けられた入力音情報から音高情報を抽出する抽出手段と、前記第１の受付手段によって受け付けられたコード情報および前記抽出手段によって抽出された入力音情報の音高情報に基づいてハーモニー音の音高を決定する決定手段と、前記受け付けられたコード情報および前記抽出された入力音情報の音高情報に基づいてハーモニー音の音高を更新するかどうかを判定する判定手段であって、前記抽出された入力音情報の音高情報が前記受け付けられたコード情報のコードスケール音であるときに、ハーモニー音の音高を更新すると判定する判定手段と、前記判定手段によってハーモニー音の音高を更新すると判定された場合に、前記受け付けられた入力音情報および前記決定手段によって決定されたハーモニー音の音高に基づいてハーモニー音を生成する生成手段とを有することを特徴とする。
【００１２】
請求項２に記載の電子音楽装置は、請求項１の電子音楽装置において、前記抽出手段によって入力音情報の音高情報が抽出される度に、前回抽出された入力音情報の音高情報を保存する保存手段をさらに有し、前記判定手段は、前記保存手段によって保存された前回抽出された入力音情報の音高情報をも参照して、ハーモニー音の音高を更新するかどうかを判定することを特徴とする。
【００１３】
上記目的を達成するため、請求項３に記載のプログラムは、請求項１と同様の技術的思想によって実現できる。
【発明の効果】
【００１４】
請求項１または３に記載の発明によれば、入力音情報から音高情報が抽出され、受け付けられたコード情報および前記抽出された入力音情報の音高情報に基づいてハーモニー音の音高を更新するかどうかが判定され、この判定の結果、ハーモニー音の音高を更新する場合に、前記入力音情報と、前記受け付けられたコード情報および前記抽出された入力音情報の音高情報に基づいて決定されたハーモニー音の音高とに基づいてハーモニー音が生成されるので、つまり、ハーモニー音の生成は、ハーモニー音の音高を更新するかどうかの判定後に、その判定結果に応じてなされるので、入力音の音高に揺れが生じても安定した音高のハーモニー音を生成することが可能となる。その結果、ハーモニー音が安定するので、入力音としてユーザ自身の歌声を用いた場合には、ユーザは歌い易くなる。
【００１５】
さらに、請求項１または３に記載の発明によれば、入力音が当該コードのコードスケール音のときにハーモニー音が更新されるので、入力音と調和の取れたハーモニー音を生成することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施の形態に係る電子音楽装置の概略構成を示すブロック図である。
【図２】ハーモニー音生成用テーブルの構成例を示す図である。
【図３】図１の電子音楽装置、特にＣＰＵが実行する演奏補助処理の手順を示すフローチャートである。
【図４】図３中のハーモニー音更新処理の詳細な手順を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。
【００１８】
図１は、本発明の一実施の形態に係る電子音楽装置の概略構成を示すブロック図である。
【００１９】
同図に示すように、本実施の形態の電子音楽装置は、音声を入力するためのマイクロフォン、鍵盤等の演奏操作子および各種スイッチ等の設定操作子からなる入力操作部１と、装置全体の制御を司るＣＰＵ２と、該ＣＰＵ２が実行する制御プログラムや各種テーブルデータ等を記憶するＲＯＭ３と、前記演奏操作子から入力された、コード情報を含む演奏情報、各種入力情報および演算結果等を一時的に記憶するＲＡＭ４と、前記制御プログラムを含む各種アプリケーションプログラムや各種楽曲データ、各種データ等を記憶する記憶装置５と、各種情報等を表示する、たとえばＬＣＤ（liquid crystal display）およびＬＥＤ（light emitting diode）等を備えた表示装置６と、外部ＭＩＤＩ（musical instrument digital interface）機器等の外部機器１００を接続し、この外部機器１００とデータの送受信を行う通信インターフェース（Ｉ／Ｆ）７と、前記演奏操作子から入力された演奏情報や、前記記憶装置５に記憶されたいずれかの楽曲データを再生して得られた演奏情報等を楽音信号に変換する音源回路８と、該音源回路８からの楽音信号に各種効果を付与するための効果回路９と、該効果回路９からの楽音信号を音響に変換する、たとえば、ＤＡＣ（digital-to-analog converter）やアンプ、スピーカ等のサウンドシステム１０とにより構成されている。
【００２０】
上記構成要素１〜９は、バス１１を介して相互に接続され、通信Ｉ／Ｆ７には外部機器１００が接続され、音源回路８には効果回路９が接続され、効果回路９にはサウンドシステム１０が接続されている。
【００２１】
記憶装置５は、たとえば、フレキシブルディスク（ＦＤ）、ハードディスク（ＨＤ）、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disc）、光磁気ディスク（ＭＯ）および半導体メモリなどの記憶媒体とその駆動装置である。記憶媒体は駆動装置から着脱可能であってもよいし、記憶装置５自体が本実施の形態の電子音楽装置から着脱可能であってもよい。あるいは、記憶媒体も記憶装置５も着脱不可能であってもよい。なお記憶装置５（の記憶媒体）には、前述のように、ＣＰＵ２が実行する制御プログラムも記憶でき、ＲＯＭ３に制御プログラムが記憶されていない場合には、この記憶装置５に制御プログラムを記憶させておき、それをＲＡＭ４に読み込むことにより、ＲＯＭ３に制御プログラムを記憶している場合と同様の動作をＣＰＵ２にさせることができる。このようにすると、制御プログラムの追加やバージョンアップ等が容易に行える。
【００２２】
通信Ｉ／Ｆ７には、図示例では外部機器１００が接続されているが、これに限られず、たとえばＬＡＮ（local area network）やインターネット、電話回線等の通信ネットワークを介して、サーバコンピュータが接続されるようにしてもよい。この場合、記憶装置５に上記各プログラムや各種パラメータが記憶されていなければ、通信Ｉ／Ｆ７はサーバコンピュータからプログラムやパラメータをダウンロードするために用いられる。クライアントとなる電子音楽装置は、通信Ｉ／Ｆ７および通信ネットワークを介してサーバコンピュータへとプログラムやパラメータのダウンロードを要求するコマンドを送信する。サーバコンピュータは、このコマンドを受け、要求されたプログラムやパラメータを、通信ネットワークを介して電子音楽装置へと配信し、電子音楽装置が通信Ｉ／Ｆ７を介して、これらプログラムやパラメータを受信して記憶装置５に蓄積することにより、ダウンロードが完了する。
【００２３】
音源回路８は、前述のように演奏情報を楽音信号に変換する処理に加え、後述のように、入力されたリード音データ（ユーザの歌声によるリード音をデジタル化したもの）に対応するリード音の楽音信号を生成するとともに、当該リード音データのピッチ（音高）をハーモニー音の音高に変換し、変換後の音高のリード音、つまりハーモニー音の楽音信号を生成する処理を行う。
【００２４】
なお本実施の形態の電子音楽装置は、上述の構成から分かるように電子鍵盤楽器上に構築されたものであるが、これに限らず、鍵盤を外部接続した汎用的なパーソナルコンピュータ上に構築してもよい。
【００２５】
図２は、ハーモニー音生成用テーブルの構成例を示す図であり、同図（ａ）は、Ｃｍａｊ（Ｃメジャ）についてのハーモニー音生成用テーブルの一例を示し、同図（ｂ）は、Ｃｍｉｎ（Ｃマイナ）についてのハーモニー音生成用テーブルの一例を示している。ハーモニー音生成用テーブルとは、入力音の各音高（音名）と、それに対して生成すべきハーモニー音の音高（音名）とを対応付けたものである。「発明が解決しようとする課題」の欄で前述したように、図２のハーモニー音生成用テーブルは、従来のハーモニー音生成用テーブルに「コードスケール音」の項目を追加したものである。
【００２６】
「コードスケール音」の項目には、“Ｃ”，“Ｓ”および“０”が記載されているが、“０”以外、つまり“Ｃ”と“Ｓ”は、当該コード情報のコードスケール音を示し、特に“Ｃ”は、コードスケール音の中のコード構成音を示している。なお、「コードスケール音」の項目の利用の仕方については、後述する。
【００２７】
なお図示例では、２種類のコード情報についてのハーモニー音生成用テーブルを示したが、これは便宜上そのようにしたに過ぎず、Ｃｍｉｎ７（Ｃマイナセブンス）、Ｃｍｉｎ７（♭５）（Ｃマイナセブンスフラットファイブ）、Ｃ７（Ｃドミナントセブンス）などについてのハーモニー音生成用テーブルを加えるようにしてもよい。このようなコード情報毎のハーモニー音生成用テーブルが予め作成され、たとえば前記ＲＯＭ３内に記憶されている。
【００２８】
以上のように構成された電子音楽装置が実行する制御処理を、まずその概要を説明し、次に図３および図４を参照して詳細に説明する。
【００２９】
ユーザが、たとえば前記入力操作部１に含まれるマイクロフォンから自身の歌声を入力すると、ＣＰＵ２は、入力された歌声（アナログ音声信号）をデジタル化して、リード音情報（データ）として、ＲＡＭ４に確保したリード音データ格納領域（図示せず）に格納する。ＣＰＵ２は、リード音データ格納領域に格納されたリード音データから公知の方法によりピッチ（音高）を検出してハーモニー音の生成に用いるとともに、当該リード音データを所定のタイミングで読み出して音源回路８に送信する。これにより、音源回路８は、当該リード音データに対応するリード音（の楽音信号）を生成して効果回路９に出力する。効果回路９は、入力された楽音信号に適宜効果を付与して、内蔵の信号出力制御回路（図示せず）に出力する。
【００３０】
またユーザが、たとえば入力操作部１に含まれる鍵盤を押鍵してコードを入力すると、ＣＰＵ２は、入力されたコードからコード情報を抽出し、前記ＲＯＭ３にコード情報毎に記憶されているハーモニー音生成用テーブルから、抽出したコード情報に対応するハーモニー音生成用テーブルを参照対象として選択する。そしてＣＰＵ２は、選択したハーモニー音生成用テーブルから、前記検出したリード音データ（入力音）の音高に対応付けられたハーモニー音の音高を読み出し、この音高のハーモニー音（の楽音信号）を生成するように音源回路８に依頼する。これにより音源回路８は、ハーモニー音（の楽音信号）を生成して効果回路９に出力する。効果回路９は、入力された楽音信号に適宜効果を付与して、信号出力制御回路に出力する。
【００３１】
信号出力制御回路は、入力された２種類の楽音信号をミキシングした後、所定の出力タイミングに従って後段の前記サウンドシステム１０に出力する。
【００３２】
ここまでのハーモニー音生成処理は、「発明が解決しようとする課題」の欄で説明した従来のハーモニー音生成処理と異ならない。
【００３３】
次に、ユーザが歌声の音高を変化させると、ＣＰＵ２は、変化後の音高、つまり新たに入力されたリード音データの音高が現在設定されているハーモニー音更新ルールに適合するかどうかを判定し、適合したときには、現在選択されているハーモニー音生成用テーブルから、新たに入力されたリード音データの音高に対応付けられたハーモニー音の音高を読み出し、この音高のハーモニー音（の楽音信号）を生成するように音源回路８に依頼する。この結果、現在のハーモニー音が新たに生成されたハーモニー音に更新される。一方、適合しないときには、ハーモニー音の更新はなされず、現在のハーモニー音が引き続き出力される。なお本実施の形態では、ハーモニー音更新ルールとして４種類のルール（各ルールの内容については、後述する）を設け、そのうちの１つをユーザが選択可能に構成されている。
【００３４】
このように本実施の形態では、ユーザの歌声の音高が変化したとしても、変化後の音高が現在選択されているハーモニー音更新ルールに適合しない限り、現在発音中のハーモニー音は新たな音高のハーモニー音に更新されないので、入力音の音高に揺れが生じても安定した音高のハーモニー音を生成することが可能となる。
【００３５】
次に、この制御処理を詳細に説明する。
【００３６】
図３は、本実施の形態の電子音楽装置、特にＣＰＵ２が実行する演奏補助処理の手順を示すフローチャートである。
【００３７】
本演奏補助処理は、主として、
（１）初期設定処理（ステップＳ１）
（２）入力音オフ検出時処理（ステップＳ４〜Ｓ６）
（３）入力音オン検出時処理（ステップＳ８〜Ｓ１１）
（４）入力コード検出時処理（ステップＳ１３〜Ｓ１５）
（５）演奏補助処理の終了処理（ステップＳ１６）
によって構成されている。
【００３８】
本演奏補助処理は、たとえば前記入力操作部１に含まれる電源スイッチ（図示せず）によって電源がオンされたときに起動される。起動後、前記（１）の初期設定処理が１回実行され、これに続いて、前記（２）〜（４）の各処理が適宜実行される。そして（２）〜（４）の各処理は、演奏補助処理の終了が指示されるまで、あるいは電源ボタンによって電源がオフされるまで、適宜繰り返し実行される。なお、演奏補助処理の終了が指示されると、前記（５）の演奏補助処理の終了処理が実行された後、本演奏補助処理は終了する。
【００３９】
本演奏補助処理が起動すると、ＣＰＵ２は、処理を前記（１）の初期設定処理に進める。この（１）初期設定処理では、ＣＰＵ２は、前記ＲＡＭ４のクリアやハーモニー音更新ルールの設定などを行う（ステップＳ１）。ＲＡＭ４には、入力音から検出した音高を記憶するための領域Ｌｅａｄと、その入力音の１つ前の入力音から検出した音高を記憶するための領域ＬｅａｄＯと、入力コードから抽出したコード情報を記憶するための領域Ｃｈｏｒｄと、その入力コードの１つ前の入力コードから抽出したコード情報を記憶するための領域ＣｈｏｒｄＯが設けられるが、上記ＲＡＭ４のクリアでは、これら領域Ｌｅａｄ，ＬｅａｄＯ，ＣｈｏｒｄおよびＣｈｏｒｄＯもクリアされる。また本実施の形態では、ハーモニー音更新ルールとして、
（Ｒ１）第１の更新ルール：入力音がコード構成音であるときにのみ、ハーモニー音を更新；
（Ｒ２）第２の更新ルール：入力音がコードスケール音であるときにのみ、ハーモニー音を更新；
（Ｒ３）第３の更新ルール：入力音がコードスケール音であるとき、および入力音と１つ前の入力音との間にコードスケール音が存在するときのうち、いずれか一方が成立するときに、ハーモニー音を更新；
（Ｒ４）第４の更新ルール：入力音がコードスケール音であるとき、および入力音と１つ前の入力音との音高差がｎ（たとえば“２”）半音以上であるときのうち、いずれか一方が成立するときに、ハーモニー音を更新；
の４種類が設けられている。そしてユーザは、前述のように、この４種類の更新ルールの中からいずれかを任意に選択して設定できるようになっている。したがって、初期設定処理における「ハーモニー音更新ルールの設定」とは、ユーザの選択操作に応じて選択された更新ルールを設定することであるが、これに限らず、デフォルトの更新ルールが設定されるようにしてもよいし、前回の演奏補助処理で設定された更新ルールが設定されるようにしてもよい。また本実施の形態では、「ハーモニー音更新ルールの設定」は、初期設定処理内でのみ行うようにしているが、これに加えて、本演奏補助処理中のそれ以降の任意の場所で「設定」できるようにしてもよい。
【００４０】
次にＣＰＵ２は、ユーザが本演奏補助処理の終了を指示したかどうかをチェックする（ステップＳ２）。このチェックの結果、本演奏補助処理の終了が指示されたときには、ＣＰＵ２は処理を前記（５）の演奏補助処理の終了処理に進める一方、本演奏補助処理の終了が指示されなかったときには、ＣＰＵ２は処理をステップＳ３に進める。なお、この（５）演奏補助処理の終了処理の詳細については、後述する。
【００４１】
ステップＳ３では、ＣＰＵ２は、入力音のオフを検出したかどうかをチェックする。このチェックの結果、入力音のオフを検出すると、ＣＰＵ２は処理を前記（２）の入力音オフ検出時処理に進める一方、入力音のオフを検出しなければ、ＣＰＵ２は処理をステップＳ７に進める。ここで入力音は、前記リード音データ格納領域に格納されたリード音データ、つまりユーザの歌声（のデジタルデータ）である。そして、「リード音のオフ」は、たとえばリード音データ格納領域内のリード音データのレベルが所定の閾値（歌声が入力されていないと見なされる値）以下のときに、検出したと判定し、それ以外のときに、検出しなかった（歌声が依然として入力されている）と判定すればよい。
【００４２】
（２）入力音オフ検出時処理では、ＣＰＵ２は、リード音を消音する（ステップＳ４）とともに領域Ｌｅａｄをクリアし（ステップＳ５）、さらにハーモニー音を消音する（ステップＳ６）。このリード音およびハーモニー音の消音は、本実施の形態では、音源回路８にその消音を依頼することでなされている。なお、入力音のオフが検出されたときには、リード音データのレベルは非常に低いので、そのリード音をさらに消音する必要があるかの問題はあるが、それでも敢えて消音してもよい。もちろん、何もせずにそのまま放置することも考えられる。またステップＳ５では、領域ＬｅａｄＯも一緒にクリアするようにしてもよい。
【００４３】
前記ステップＳ７では、ＣＰＵ２は、入力音のオンを検出したかどうかをチェックし、入力音のオンを検出すると、処理を前記（３）の入力音オン検出時処理に進める一方、入力音のオンを検出しなければ、処理をステップＳ１２に進める。ここで、「入力音のオン」は、リード音データ格納領域内のリード音データのうち、音源回路８が出力しようとしているデータから所定範囲のデータの、たとえば平均レベルが所定の閾値より大きいときに、オンと判定し、それ以外のときに、オンでないと判定すればよい。
【００４４】
（３）入力音オン検出時処理では、まずＣＰＵ２は、入力音の音高（ピッチ）を検出する（ステップＳ８）。本実施の形態では前述のように、入力音はユーザの歌声であるので、歌声からそのピッチを検出しなければならないが、この種のピッチの検出は、公知の方法を用いてよく行われている。そして本発明の特徴は、歌声からそのピッチを検出する方法にある訳ではないので、ステップＳ８でのピッチの検出は、公知の方法によって行うようにすればよい。
【００４５】
次にＣＰＵ２は、領域Ｌｅａｄに記憶されている入力音（現時点では、１つ前の入力音となっている）の音高を領域ＬｅａｄＯに保存するとともに、領域Ｌｅａｄを上記ステップＳ８で検出した現在の入力音の音高で更新する（ステップＳ９）。なお、初期設定処理後初めて処理がステップＳ９に進んだ場合には、領域Ｌｅａｄはクリアされた状態であって、有効な音高が記憶されていないので、この場合には、ステップＳ９の処理のうちの前者の処理、つまり「領域Ｌｅａｄに記憶されている１つ前の入力音の音高を領域ＬｅａｄＯに保存する」処理を行わないようにしてもよい。もちろん、この場合に前者の処理を行っても、領域ＬｅａｄＯはクリアの状態が継続されるだけであるので、この場合も前者の処理を行うようにしてもよい（この事情は、後述するステップＳ１４の処理のうちの前者の処理についても同様である）。以下、領域Ｌｅａｄに記憶されている入力音の音高を「リード音Ｌｅａｄ」と言う。
【００４６】
次にＣＰＵ２は、制御処理の概要で前述したように、入力されたアナログ音声信号をデジタル化して、リード音データとしてＲＡＭ４上のリード音データ格納領域に格納した後、当該リード音データを所定のタイミングで読み出して音源回路８に送信する（ステップＳ１０）。
【００４７】
さらにＣＰＵ２は、ハーモニー音更新処理を実行する（ステップＳ１１）。ハーモニー音更新処理は、リード音Ｌｅａｄなどが所定の条件を満たす場合に、リード音Ｌｅａｄに対するハーモニー音の音高を検出し、この音高のハーモニー音を生成して出力する処理であるが、その詳細な手順については、図４を用いて後述する。
【００４８】
前記ステップＳ１２では、ＣＰＵ２は、入力コードを検出したかどうかをチェックし、入力コードを検出すると、処理を前記（４）の入力コード検出時処理に進める一方、入力コードを検出しなければ、処理を前記ステップＳ２に戻す。
【００４９】
（４）入力コード検出時処理では、まずＣＰＵ２は、入力コードからコード情報を抽出する（ステップＳ１３）。ここで「コード情報」とは、コード名やコード名を特定可能な情報、たとえばルートとタイプの組などである。「入力コード」は、本実施の形態では、音高情報を含む押鍵イベント複数として検出される。この「入力コード」から「コード情報」を抽出する具体的な方法としては、たとえば、各コード情報と当該コード情報を構成する複数の音高情報の組とを対応付けたコード情報抽出用テーブルを予め作成しておき、このコード情報抽出用テーブルを検索することで、「入力コード」を構成する複数の押鍵イベント（の各音高情報）に対応する「コード情報」を抽出する方法が考えられる。この他にも、コード情報抽出用テーブルを利用せずに、「入力コード」に演算処理を施して、「入力コード」から直接「コード情報」を抽出するようにしてもよい。なお、「入力コード」に対応する「コード情報」が存在しないなどの理由により、コード情報を抽出できない場合があるが、この場合には、それ以降の処理をせずに、前記ステップＳ１２で入力コードを検出しなかったときと同様に、処理を前記ステップＳ２に戻すようにしてもよいが、何か代わりのコード情報に置き換えて、それ以降の処理を続けるようにしてもよい。
【００５０】
次にＣＰＵ２は、領域Ｃｈｏｒｄに記憶されている１つ前の入力音の音高を領域ＣｈｏｒｄＯに保存するとともに、領域Ｃｈｏｒｄを上記ステップＳ１３で抽出したコード情報で更新する（ステップＳ１４）。以下、領域Ｃｈｏｒｄに記憶されているコード情報を「コード情報Ｃｈｏｒｄ」と言う。そしてＣＰＵ２は、コード情報Ｃｈｏｒｄに対応付けられたハーモニー音生成用テーブルを参照対象として選択し、このハーモニー音生成用テーブルに基づいて、リード音Ｌｅａｄに対応するハーモニー音の音高を検出し、その音高情報を音源回路８に出力する（ステップＳ１５）。これにより音源回路８は、リード音データのピッチを入力された音高情報の音高に変換し、変換後の音高のリード音データ、つまりハーモニー音データを前記効果回路９に出力する。なお、ステップＳ１５における「ハーモニー音の音高の検出」は、リード音Ｌｅａｄが有効である場合、つまりリード音Ｌｅａｄとして何らかの意味のある音高が検出されている場合に行うようにする。
【００５１】
前記（５）の演奏補助処理の終了処理では、ＣＰＵ２は、現在選択中のハーモニー音更新ルールの種類などを記憶装置５に記憶させる。これにより、本演奏補助処理が次回起動されたときに、直前の選択状態および設定状態を再現することができる。
【００５２】
図４は、前記ステップＳ１１のハーモニー音更新処理の詳細な手順を示すフローチャートである。本ハーモニー音更新処理は、主として、
（１１）第１の更新ルールに対する適合判定処理（ステップＳ２６）
（１２）第２の更新ルールに対する適合判定処理（ステップＳ２７）
（１３）第３の更新ルールに対する適合判定処理（ステップＳ３０）
（１４）第４の更新ルールに対する適合判定処理（ステップＳ３２）
（１５）ハーモニー音更新・出力処理（ステップＳ２４）
によって構成されている。
【００５３】
本ハーモニー音更新処理が起動されると、まずＣＰＵ２は、リード音Ｌｅａｄおよびコード情報Ｃｈｏｒｄのいずれも有効であるかどうか、つまり何らかの意味のある音高およびコード情報が検出されているかどうかチェックする（ステップＳ２１，Ｓ２２）。このチェックの結果、少なくとも一方が有効でない場合には、ＣＰＵ２は本ハーモニー音更新処理を終了する一方、両方とも有効であれば、ＣＰＵ２は処理を次のステップＳ２３に進める。
【００５４】
ステップＳ２３では、ＣＰＵ２は、１つ前のコード情報ＣｈｏｒｄＯが現在のコード情報Ｃｈｏｒｄと異なっているかどうかをチェックする。このチェックの結果、ＣｈｏｒｄＯ≠Ｃｈｏｒｄであれば、ＣＰＵ２は処理を前記（１５）のハーモニー音更新・出力処理に進める一方、ＣｈｏｒｄＯ＝Ｃｈｏｒｄであれば、ＣＰＵ２は処理をステップＳ２５に進める。
【００５５】
（１５）ハーモニー音更新・出力処理では、ＣＰＵ２は、前記図３のステップＳ１５の処理と同様にして、コード情報Ｃｈｏｒｄに対応付けられたハーモニー音生成用テーブルに基づいて、新たなハーモニー音の音高を検出し、検出した音高でハーモニー音を更新して出力する。これにより、コード情報が変化したときは、（ハーモニー音の音高の更新は、入力音とは無関係になされるため）入力音の音高が変化していなくてもハーモニー音の音高は更新されるので、入力コードと調和のとれた響きを持つハーモニー音を得ることができる。
【００５６】
ステップＳ２５以降の処理では、ＣＰＵ２は、現在設定中のハーモニー音更新ルールに現在のコード情報Ｃｈｏｒｄやリード音Ｌｅａｄなどが適合しているかどうかを判定し、その判定結果に応じた処理を実行する。
【００５７】
まず、第１の更新ルールが設定されている場合には、ＣＰＵ２は、処理を前記（１１）の第１の更新ルールに対する適合判定処理に進める（ステップＳ２５→Ｓ２６）。この（１１）第１の更新ルールに対する適合判定処理では、ＣＰＵ２は、コード情報Ｃｈｏｒｄに対応付けられたハーモニー音生成用テーブルにおいて、リード音Ｌｅａｄはコード構成音に相当する（当該テーブルのコードスケール音の項目中、リード音Ｌｅａｄに対応する位置に“Ｃ”が記載されている）かどうかを判定する。この判定の結果、リード音Ｌｅａｄがコード情報Ｃｈｏｒｄのコード構成音であれば、つまり、リード音Ｌｅａｄの現在の状態が第１の更新ルールに適合すれば、ＣＰＵ２は処理を前記（１５）のハーモニー音更新・出力処理に進めて（ステップＳ２６→Ｓ２４）、新たに検出した音高でハーモニー音を更新して出力する一方、第１の更新ルールに適合していなければ、ＣＰＵ２は本ハーモニー音更新処理を終了する。
【００５８】
次に、第１の更新ルールが設定されていない場合には、ＣＰＵ２は、処理を前記（１２）の第２の更新ルールに対する適合判定処理に進める（ステップＳ２５→Ｓ２７）。この（１２）第２の更新ルールに対する適合判定処理では、ＣＰＵ２は、コード情報Ｃｈｏｒｄに対応付けられたハーモニー音生成用テーブルにおいて、リード音Ｌｅａｄはコード構成音あるいはコードスケール音に相当する（当該テーブルのコードスケール音の項目中、リード音Ｌｅａｄに対応する位置に“Ｃ”あるいは“Ｓ”が記載されている）かどうかを判定する。この判定の結果、リード音Ｌｅａｄがコード情報Ｃｈｏｒｄのコード構成音あるいはコードスケール音であれば、ＣＰＵ２は処理を前記（１５）のハーモニー音更新・出力処理に進めて（ステップＳ２７→Ｓ２４）、新たに検出した音高でハーモニー音を更新して出力する。処理がステップＳ２５からステップＳ２７に進んだ場合には、第２〜第４の更新ルールのいずれかが設定されているが、いずれの更新ルールにも第２の更新ルールに記載されている条件、つまり「入力音がコードスケール音であるとき」という条件が含まれているので、現在の更新ルールとして第２〜第４の更新ルールのいずれが設定されているかを特定する前に、「入力音がコードスケール音であるとき」であるかどうかを判定し、この判定結果が「肯定」のときには、現在の更新ルールを特定せずに処理を前記（１５）のハーモニー音更新・出力処理に進ませて、新たに検出した音高でハーモニー音を更新して出力するようにしている。
【００５９】
一方、リード音Ｌｅａｄがコード情報Ｃｈｏｒｄのコード構成音あるいはコードスケール音のいずれでもなければ、ＣＰＵ２は、第２の更新ルールが設定されているかどうかを判定する（ステップＳ２８）。この判定の結果、第２の更新ルールが設定されているときには、リード音Ｌｅａｄの現在の状態が第２の更新ルールに適合していないとして、ＣＰＵ２は本ハーモニー音更新処理を終了する一方、第２の更新ルールが設定されていないときには、ＣＰＵ２は第３の更新ルールが設定されているかどうかを判定する（ステップＳ２９）。
【００６０】
ステップＳ２９の判定の結果、第３の更新ルールが設定されているときには、ＣＰＵ２は、処理を前記（１３）の第３の更新ルールに対する適合判定処理に進める（ステップＳ３０）。この（１３）第３の更新ルールに対する適合判定処理では、ＣＰＵ２は、コード情報Ｃｈｏｒｄに対応付けられたハーモニー音生成用テーブルにおいて、１つ前のリード音ＬｅａｄＯと現在のリード音Ｌｅａｄとの間の音域にコードスケール音があるかどうかを判定する。この判定の結果、当該テーブルのコードスケール音の項目中、対応する音域、つまり１つ前のリード音ＬｅａｄＯと現在のリード音Ｌｅａｄとの間の音域に“Ｃ”あるいは“Ｓ”が記載されているときには、リード音Ｌｅａｄの現在の状態が第３の更新ルールに適合しているとして、ＣＰＵ２は処理を前記（１５）のハーモニー音更新・出力処理に進め、新たに検出した音高でハーモニー音を更新して出力する（ステップＳ３０→Ｓ２４）。一方、第３の更新ルールに適合していなければ、ＣＰＵ２は本ハーモニー音更新処理を終了する。
【００６１】
一方、ステップＳ２９の判定の結果、第３の更新ルールが設定されていないときには、ＣＰＵ２は、第４の更新ルールが設定されているかどうかを判定する（ステップＳ３１）。この判定の結果、第４の更新ルールが設定されているときには、ＣＰＵ２は、処理を前記（１４）の第４の更新ルールに対する適合判定処理に進める（ステップＳ３１→Ｓ３２）。この（１４）第４の更新ルールに対する適合判定処理では、ＣＰＵ２は、１つ前のリード音ＬｅａｄＯと現在のリード音Ｌｅａｄとの間にｎ半音以上の音高差があるかどうかを判定する。この判定の結果、１つ前のリード音ＬｅａｄＯと現在のリード音Ｌｅａｄとの間にｎ半音以上の音高差があれば、リード音Ｌｅａｄの現在の状態が第４の更新ルールに適合しているとして、ＣＰＵ２は処理を前記（１５）のハーモニー音更新・出力処理に進め（ステップＳ３２→Ｓ２４）、新たに検出した音高でハーモニー音を更新して出力する。一方、第４の更新ルールに適合していなければ、ＣＰＵ２は本ハーモニー音更新処理を終了する。
【００６２】
このように本実施の形態の電子音楽装置では、入力音が入力コードのコードスケール音のときにハーモニー音が更新されるので、入力音と調和の取れたハーモニー音を生成することができる。
【００６３】
また、入力音の音高が大きく変化したときには、ハーモニー音を更新するように制御されるので、入力音の音高がハーモニー音の音高を超えるというような和音構成の破綻を防ぐことができる。
【００６４】
なお本実施の形態では、コード入力は、鍵盤から行うようにしたが、これに限らず、予め記憶されたコード進行パターンを順次自動的に読み出して行うようにしてもよい。
【００６５】
また本実施の形態では、ハーモニー音およびリード音を同時に発生させる例を挙げて説明したが、これに限らず、伴奏音を自動生成するようにし、この伴奏音と、ハーモニー音およびリード音とを同時に発生させるようにしてもよいし、リード音を発生させずに、伴奏音とハーモニー音を同時に発生させるようにしてもよい。リード音は、本実施の形態では、ユーザの音声に基づいて生成したが、これに限らず、演奏操作子から入力された演奏情報に基づいて生成するようにしてもよい。
【００６６】
コード入力が、本実施の形態のように（鍵盤を用いた）演奏入力によって行われる場合には、押鍵状態からコード情報の検出を行うようにすればよい。コード情報の検出方法については、特に指定はなく、実際のコード構成音の鍵を押鍵することによりコードを指定するフィンガード方式や、１つから３つ程度の鍵を所定の規則に基づいて押鍵することによりコードを指定するシングルフィンガー方式などが考えられる。または、操作パネル上に配置されたスイッチ操作により、各コードのルートとタイプを順次指定して行ってもよい。
【００６７】
ハーモニー音の生成方法は、公知の方法のいずれを採用しても構わないが、コードを元にして生成するものとする。
【００６８】
ハーモニー音を更新する条件は、本実施の形態で挙げたものに加え、たとえば、テンション付きのコードのときは、入力がコード音のときおよびコードチェンジのときにハーモニー音を更新し、テンションなしのコードのときは、入力がコードスケール音のときおよびコードチェンジのときにハーモニー音を更新するなどというように、自動的に条件分けするようにしてもよい。また、曲（演奏）の途中でハーモニー音更新の条件が変わるようにしてもよい。
【００６９】
なお、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
【００７０】
この場合、記憶媒体から読出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードおよび該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７１】
プログラムコードを供給するための記憶媒体としては、たとえば、フレキシブルディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。また、通信ネットワークを介してサーバコンピュータからプログラムコードが供給されるようにしてもよい。
【００７２】
また、コンピュータが読出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００７３】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【符号の説明】
【００７４】
１…入力操作部（第１の受付手段、第２の受付手段），２…ＣＰＵ（第１の受付手段、第２の受付手段、抽出手段、決定手段、判定手段、生成手段、保存手段），４…ＲＡＭ（第１の受付手段、第２の受付手段、保存手段）
【図１】
0005560742.tif 000002
【図２】
0005560742.tif 000003
【図３】
0005560742.tif 000004
【図４】
0005560742.tif 000005