(57)【特許請求の範囲】
【請求項１】
互いに異なる音高が割り当てられた複数の演奏操作子の操作状態を特定する特定部と、
前記操作状態に基づいて、第１及び第２のいずれかの状態に移行する状態移行部と、
前記第１の状態に移行した場合に、前記操作状態に基づいて歌詞を決定する歌詞決定部と、
前記第２の状態に移行した場合に、前記操作状態に基づいて音高を決定する音高決定部と、
前記決定した歌詞を前記決定した音高で発音させる発音データを生成する発音生成部と、
を備えた歌唱生成装置。
【請求項２】
前記操作状態は、操作された複数の前記演奏操作子の組み合わせ、操作された前記演奏操作子の数、のうちのいずれかの操作の状態を含む、
請求項１に記載の歌唱生成装置。
【請求項３】
前記歌詞決定部は、前記第１の状態に移行した場合に、前記移行の判定に用いた前記操作状態に基づいて歌詞を決定し、
前記音高決定部は、前記第２の状態に移行した場合に、前記移行の判定に用いた前記操作状態に基づいて音高を決定する、
請求項１または２に記載の歌唱生成装置。
【請求項４】
前記第２の状態に移行した場合に、前記歌詞決定部により既に決定された歌詞を、前記音高決定部により決定された音高で歌唱させるための歌唱データを生成する歌唱生成部、を更に備え、
前記発音生成部は、前記歌唱生成部にて生成された歌唱データに基づいて発音させる発音データを生成する、
請求項３に記載の歌唱生成装置。
【請求項５】
前記歌詞決定部はさらに、前記決定された歌詞を順次メモリに記憶させ、
前記歌唱生成部は、前記音高決定部にて音高が決定される毎に、前記メモリに記憶されている歌詞を予め記憶された順に読み出すとともに、前記読み出された歌詞を前記決定された音高で歌唱させる歌唱データを生成する、請求項４に記載の歌唱生成装置。
【請求項６】
前記状態移行部は、予め定められた期間内に操作が行われた前記演奏操作子の数に基づいて、前記第１の状態及び前記第２の状態のいずれかの状態に移行する、
請求項１乃至５のいずれかに記載の歌唱生成装置。
【請求項７】
前記状態移行部は、予め定められた期間内に前記演奏操作子が複数同時に操作された場合に前記第１の状態に移行し、前記予め定められた期間内に前記演奏操作子を単数操作した場合に前記第２の状態に移行する、請求項６に記載の歌唱生成装置。
【請求項８】
前記操作状態は、演奏操作子の操作が終了したタイミングを含み、
前記状態移行部は、前記操作の終了を判別する毎に、第１及び第２のいずれか一方の状態から他方の状態に移行する、
請求項１乃至５のいずれかに記載の歌唱生成装置。
【請求項９】
請求項１乃至８のいずれかに記載の歌唱生成装置と、
複数の演奏操作子と、
前記歌唱生成装置からの発音データに基づいて歌唱音を発音する発音部と、
を備えた電子楽器。
【請求項１０】
装置が、
互いに異なる音高が割り当てられた複数の演奏操作子の操作状態を特定する特定処理と、
前記操作状態に基づいて、第１及び第２のいずれかの状態に移行する状態移行処理と、
前記第１の状態に移行した場合に、前記操作状態に基づいて歌詞を決定する歌詞決定処理と、
前記第２の状態に移行した場合に、前記操作状態に基づいて音高を決定する音高決定処理と、
前記決定した歌詞を前記決定した音高で発音させる発音データを生成する発音生成処理と、
を実行する歌唱生成方法。
【請求項１１】
コンピュータに、
互いに異なる音高が割り当てられた複数の演奏操作子の操作状態を特定する特定処理と、
前記操作状態に基づいて、第１及び第２のいずれかの状態に移行する状態移行処理と、
前記第１の状態に移行した場合に、前記操作状態に基づいて歌詞を決定する歌詞決定処理と、
前記第２の状態に移行した場合に、前記操作状態に基づいて音高を決定する音高決定処理と、
前記決定した歌詞を前記決定した音高で発音させる発音データを生成する発音生成処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏操作にて歌詞を指定して歌唱生成を行う歌唱生成装置、電子楽器、方法、およびプログラムに関する。
【背景技術】
【０００２】
キーボードや操作パネル、鍵盤の鍵等の演奏操作子から楽曲の歌詞を予め入力し、その後モードを切り換えて再び演奏操作子の操作等で決定される音高に基づいて、予め記憶されている人の歌声の波形データの中から予め入力された歌詞に対応する波形データを読み出して歌唱生成を行うようにした電子楽器が知られている（例えば特開平６−３２４６７７号公報に記載の技術）。このような電子楽器により、人の歌声を発声させることが可能となる。
【０００３】
また、片方の手で発音内容（歌詞）を、もう片方の手で発音音高を入力することにより、歌唱生成を行う電子楽器も知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−３２４６７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、モードを切り換えて歌詞入力と音高入力を行う従来技術では、リアルタイムの歌詞入力を行うことができないという課題があった。
【０００６】
また、両手を使って歌詞入力と音高入力を行う従来技術では、リアルタイムの歌唱入力は可能であるが、歌唱操作のみで両手が塞がってしまうため、フェーダーなど、手で操作する演奏操作子を歌唱中に操作することが困難であるという課題があった。
【０００７】
そこで、本発明は、リアルタイムの歌唱入力を片手で行えるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
態様の一例では、互いに異なる音高が割り当てられた複数の演奏操作子の操作状態を特定する特定部と、前記操作状態に基づいて、第１及び第２のいずれかの状態に移行する状態移行部と、前記第１の状態に移行した場合に、前記操作状態に基づいて歌詞を決定する歌詞決定部と、前記第２の状態に移行した場合に、前記操作状態に基づいて音高を決定する音高決定部と、前記決定した歌詞を前記決定した音高で発音させる発音データを生成する発音生成部と、を備える。
【発明の効果】
【０００９】
本発明によれば、リアルタイムの歌唱入力を片手で行うことが可能となる。
【図面の簡単な説明】
【００１０】
【図１】歌唱生成装置の第１、第２、第３の実施形態のハードウェア構成例を示す図である。
【図２】各実施形態におけるメイン処理の例を示すフローチャートである。
【図３】第１、第２の実施形態における鍵盤処理の詳細例を示すフローチャートである。
【図４】第１、第３の実施形態における歌詞決定処理の詳細例を示すフローチャートである。
【図５】第１、第３の実施形態における歌唱生成処理の詳細例を示すフローチャートである。
【図６】第２の実施形態における歌詞決定処理の詳細例を示すフローチャートである。
【図７】第２の実施形態における歌唱生成処理の詳細例を示すフローチャートである。
【図８】第３の実施形態における鍵盤処理の詳細例を示すフローチャートである。
【図９】歌唱生成装置の第４の実施形態のハードウェア構成例を示す図である。
【図１０】第４の実施形態における鍵盤処理の詳細例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。まず、本発明の第１の実施形態を説明する。第１の実施形態における歌唱生成処理では、演奏者は、演奏操作子としての鍵盤上の複数（２つ以上）の鍵を、Ｎミリ秒未満（「同時」と見なせる短い時間内で、例えば４ミリ秒未満）のうちに押鍵する。この鍵の組み合わせにより、歌詞（ここでは、発音内容の単位、たとえば「あ」「か」などのかな一文字や、発音記号などを指す）が指定され、記憶される。この動作を、歌詞決定処理と呼ぶ。その後、演奏者は、複数鍵の押鍵からＮミリ秒以上経ってから、単一の鍵を押鍵する。単一鍵の押鍵からＮミリ秒経っても他の押鍵が無い場合は、その単一鍵に割り当てられた音高で歌詞の発音が指示される。この動作を、歌唱生成処理と呼ぶ。単一鍵の押鍵からＮミリ秒未満の内に他の押鍵があった場合は、これは複数鍵の同時押鍵の扱いになるため、歌詞決定処理の制御となり、記憶されている歌詞が上書きされる。以上の鍵盤の鍵の制御処理を鍵盤処理と呼ぶ。
【００１２】
図１は、歌唱生成装置の第１の実施形態（後述する第２、第３の実施形態も同じ）のハードウェア構成例を示す図である。図１に示される歌唱合成装置１００は、ＲＯＭ（リードオンリーメモリ：読出し専用メモリ）１０２、ＲＡＭ（ランダムアクセスメモリ）１０３、および鍵盤１０４が、ＣＰＵ（中央演算処理装置）１０１に接続される構成を備える。また、ＣＰＵ１０１には、歌唱合成ユニット１０５が接続され、歌唱合成ユニット１０５には発音ユニット１０６が接続される。同図に示される構成は上記歌唱合成装置１００を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【００１３】
ＲＯＭ３０２は、コンピュータを制御する歌唱合成プログラムを含む各プログラムを記憶するメモリである。ＲＡＭ３０３は、各プログラムの実行時に、ＲＯＭ３０２に記憶されているプログラム又はデータを一時的に格納するメモリである。ＣＰＵ１０１は、各プログラムを、ＲＯＭ３０２からＲＡＭ３０３に読み出して実行することにより、当該コンピュータ全体の制御を行う。
【００１４】
鍵盤１０４は、複数の鍵を備え、演奏者がピアノ式の鍵盤演奏をできるようにする演奏入力装置である。
【００１５】
歌唱合成ユニット１０５は、ＣＰＵ１０１から指示された歌詞に対応する波形データを内部の波形メモリから選択し、その歌詞の波形データをＣＰＵ１０１から指示された音高に対応する読出し速度（サンプリング間隔）で読み出し、歌唱データを合成し出力する。
【００１６】
発音ユニット１０６は、歌唱合成ユニット１０５が出力するデジタルの歌唱データをアナログの音響信号に変換し、特には図示しないが、内部の増幅器で増幅し、スピーカから放音する。
【００１７】
図２は、第１の実施形態（第２、第３、第４の実施形態でも同じ）における歌唱合成処理のメイン処理の例を示すフローチャートである。この処理は、ＣＰＵ１０１が、ＲＯＭ１０２に記憶されている歌唱合成処理プログラムを実行する動作である。
【００１８】
ＣＰＵ１０１はまず、ＲＡＭ１０３の内容の初期化を行った後（ステップＳ２０１）、演奏者が特には図示しない電源スイッチを操作してステップＳ２０２で演奏が終了したと判定するまで、ステップＳ２０３の鍵盤処理を繰り返し実行する。
【００１９】
図３は、第１実施形態（第２の実施形態でも同じ）における鍵盤処理の詳細例を示すフローチャートである。
【００２０】
まず、ＣＰＵ１０１は、鍵盤１０４をスキャンし、押鍵されている鍵の集合をＲＡＭ１０３上の鍵集合変数ｃ＿ｋｅｙｓに代入する（ステップＳ３０１）。
【００２１】
次に、ＣＰＵ１０１は、今回鍵集合変数ｃ＿ｋｅｙｓと前回処理時の鍵集合変数の内容が保持されているＲＡＭ１０３の前回鍵集合変数ｐ＿ｋｅｙｓの差集合を演算し、その結果をＲＡＭ１０３上の集合変数ｋに代入する（ステップＳ３０２）。すなわち、前回の鍵盤処理時から今回の鍵盤処理時までに新たに押鍵された分が集合変数ｋに代入される。
【００２２】
次に、ＣＰＵ１０１は、ＲＡＭ１０３上の状態を示す状態変数ｓｔａｔｅの値がＩＤＬＥ（準備完了状態）であるかＡＣＴＩＶＥ（押鍵動作中状態）であるかを判定する（ステップＳ３０３）。
【００２３】
状態変数ｓｔａｔｅの初期値は、図２のステップＳ２０１においてＩＤＬＥ状態になっているため、ＣＰＵ１０１は、最初は処理をステップＳ３０４に進める。ここでは、ＣＰＵ１０１は、集合変数ｋの元の数を判定する。
【００２４】
集合変数ｋの元の数が０のときは前回から何も変わっていないので、ＣＰＵ１０１は、次のステップＳ３０５をスキップし、次回の鍵盤処理のためにステップＳ３０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納した後に（ステップＳ３１３）、そのまま図３のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００２５】
集合変数ｋの元の数が１以上であれば、ＣＰＵ１０１は、押鍵開始時の時刻を保持するＲＡＭ１０３上の押鍵開始時刻変数ｔ＿ｓｔａｒｔに現在時刻を格納する。また、ＣＰＵ１０１は、状態変数ｓｔａｔｅに押鍵が開始されたことを示す状態値ＡＣＴＩＶＥを格納する。さらに、ＣＰＵ１０１は、押鍵開始後現在までに押鍵されている鍵の情報を保持する押鍵済集合変数ｏｎ＿ｋｅｙｓに、ステップＳ３０２で今回新たに押鍵された鍵の集合が格納されている集合変数ｋの内容を格納する（以上、ステップＳ２０５）。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ３０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納した後に（ステップＳ３１３）、図３のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００２６】
図３のフローチャートで示される図２のステップＳ２０３の鍵盤処理は、例えば１ミリ秒ごとに繰り返し実行されている。この結果、次回の鍵盤処理では、状態変数ｓｔａｔｅの値判定はステップＳ２０５によりＡＣＴＩＶＥとなっているため、ＣＰＵ１０１は、ステップＳ３０３からステップＳ３０６に処理を進める。ステップＳ３０６では、押鍵済集合変数ｏｎ＿ｋｅｙｓに、新たに押鍵された鍵の集合変数ｋの内容が加えられる。
【００２７】
続いて、ＣＰＵ１０１は、現在時刻から押鍵開始時刻変数ｔ＿ｓｔａｒｔの値を減算し、その結果が前述したＮミリ秒以上であるかＮミリ秒未満であるかを判定する（ステップＳ３０７）。
【００２８】
ステップＳ３０７の判定がＮミリ秒未満を示していれば、同時押鍵とみなされる。この場合、次回の鍵盤処理のためにステップＳ３０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納した後に（ステップＳ３１３）、そのまま図３のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。押鍵開始時刻変数ｔ＿ｓｔａｒｔが示す押鍵開始時刻から現在時刻までがＮミリ秒未満であればこの処理が繰り返し実行され、押鍵済集合変数ｏｎ＿ｋｅｙｓに押鍵開始後現在までに押鍵されている鍵の情報が蓄積されてゆく。
【００２９】
やがて、押鍵開始時刻から時間が経過して、ステップＳ３０７の判定がＮミリ秒以上を示すと、ＣＰＵ１０１は、ステップＳ３０７からＳ３０８に処理を進める。ステップＳ３０８において、ＣＰＵ１０１は、押鍵済集合変数ｏｎ＿ｋｅｙｓの元の数が１であるか２以上であるかを判定する。
【００３０】
押鍵済集合変数ｏｎ＿ｋｅｙｓの元の数が２以上であれば、同時に押鍵された複数の鍵によって歌詞を決定する歌詞決定処理が実行される（ステップＳ３０９）。この処理の後、ＣＰＵ１０１は、状態変数ｓｔａｔｅの内容をＩＤＬＥ状態に戻し、押鍵済集合変数ｏｎ＿ｋｅｙｓの内容を空集合φとする（ステップＳ３１２）。そして、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ３０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納した後に（ステップＳ３１３）、図３のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００３１】
以上のようにして、演奏者は、複数鍵の押鍵により歌詞決定処理を実行させた後、今度は前述したように単数鍵の押鍵での音高指定による歌唱生成処理を実行させる。この場合には、図３の鍵処理において、まず単数鍵が押鍵された状態でステップＳ３０４の判定がＹＥＳとなり、ステップＳ３０５により押鍵開始時刻変数ｔ＿ｓｔａｒｔに現在時刻が格納され、状態変数ｓｔａｔｅの値が押鍵を示す値ＡＣＴＩＶＥにされ、押鍵済集合変数ｏｎ＿ｋｅｙｓに今回押鍵された鍵の内容を示す集合変数ｋの内容が格納される。その後、鍵盤処理が何回か実行される間ステップ３０７の判定がＮミリ秒未満となり、やがてＮミリ秒以上となってステップＳ３０７からステップＳ３０８に移行し、単数鍵の押鍵であるためステップＳ３０８の判定が「１」となる。
【００３２】
この場合、ＣＰＵ１０１は、押鍵済集合変数ｏｎ＿ｋｅｙｓの内容を再生鍵集合変数ｐｌａｙ＿ｋｅｙｓに格納し（ステップＳ３１０）、歌唱合成ユニット１０５に対して歌唱音の発音を指示する（ステップＳ３１１）。これにより、歌唱合成ユニット１０５では、新たに押鍵された単数鍵による音高で、ステップＳ３０９で決定された歌詞に対応する歌唱データが生成され発音される。歌唱生成処理の後、単数鍵による押鍵状態をクリアするために、状態を示す変数ｓｔａｔｅに待ち状態を示すＩＤＬＥ状態に戻し、押鍵済集合変数ｏｎ＿ｋｅｙｓの内容を空集合φとする（ステップＳ３１２）。そして、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ３０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納した後に（ステップＳ３１３）、図３のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００３３】
図４は、第１の実施形態（第３の実施形態でも同じ）における図３のステップＳ３０９の歌詞決定処理の詳細例を示すフローチャートである。ここでは、ＣＰＵ１０１は、押鍵済集合変数ｏｎ＿ｋｅｙｓの内容に基づいて、ＲＯＭ１０２に記憶されている鍵盤・歌詞変換テーブル上の歌詞データを引き（参照し）、ＲＡＭ１０３上の歌詞変数ｌｙｌｉｃに格納する（ステップＳ４０１）。鍵盤・歌詞変換テーブルは、例えば２鍵ずつの鍵の組合せごとに、その組合せによって「あ」「い」「う」等のどの歌詞が選択されるかを登録したデータである。
【００３４】
図５は、第１の実施形態（第３の実施形態でも同じ）における図３のステップＳ３１１の歌唱生成処理の詳細例を示すフローチャートである。ここでは、ＣＰＵ１０１は、図４のステップＳ４０１で設定された歌詞変数ｌｙｌｉｃの内容と、図３のステップＳ３１０で設定された再生鍵集合変数ｐｌａｙ＿ｋｅｙｓの内容とに基づいて、歌唱合成ユニット１０５に対して歌唱音の発音を指示し、歌唱合成ユニット１０５においては、歌唱データの出力波形Ｗを生成する（ステップＳ５０１）。
具体的には、ＣＰＵ１０１は、歌詞変数ｌｙｌｉｃが示す歌詞の歌唱データの生成と、再生鍵集合変数ｐｌａｙ＿ｋｅｙｓが示す音高での生成を指示する発音指示データを、図１の歌唱合成ユニット１０５に供給する。
【００３５】
その後、ＣＰＵ１０１は、歌唱データの出力波形Ｗの発音を、歌唱合成ユニット１０５に対して指示する。この結果、歌唱合成ユニット１０５は、内部の波形データメモリに記憶している複数の歌唱データのうち、ＣＰＵ１０１から指示された歌詞の歌唱データを選択し、その歌唱データを、ＣＰＵ１０１から指示された音高に対応する読出し速度で読み出して、必要に応じて波形サンプルデータの補間処理を実行し、最終的な出力波形Ｗを生成し、それを図１の発音ユニット１０６に出力する。これにより、出力波形Ｗの歌唱音声が放音される。
【００３６】
以上説明した第１の実施形態において、歌詞決定処理における鍵の組合せパターンについてであるが、歌詞決定処理のための歌詞指定の押鍵の後、歌唱生成処理のための押鍵を素早く行うために、歌詞指定のための鍵の組合せパターンと、発音したい音高の鍵は近い距離であることが好ましい。その一例として、歌詞指定の鍵の組合せパターンは図１の鍵盤１０４の１オクターブ内に収まるようにし、鍵盤１０４のどのオクターブにおいても同じ操作で同じ歌詞が指定できるようにすることが望ましい。
【００３７】
上記第１の実施形態において、単一鍵の押鍵からＮミリ秒以上経ってから他の鍵の押鍵があった場合については、例えば以下のような制御処理が採用されてよい。
・単一鍵の押鍵からＮミリ秒以上経ってから、その単一鍵が離鍵され他の単一鍵の押鍵があった場合は、その新規の押鍵の音で、歌詞を発音する（例えば、「かーかー」と発音する）。
・単一鍵の押鍵からＮミリ秒以上経ってから、その単一鍵が離鍵されずに他の単一鍵の押鍵があった場合は、その新規の押鍵の音で、母音を繋げる形で歌唱する（例えば、「かーあー」と発音する）。
上記例は、逆でも良い。また、基本的に鍵盤操作のみでは常に現在の歌詞で発音しなおすようにし、サステインペダルを踏んでいる時のみ母音をつなげる、という制御動作が実行されてもよい。
【００３８】
なお、押鍵が歌詞指定か歌唱生成指定かの区別は、あるタイミングでの同時押鍵数が単一か複数かで区別可能である。よって、例えば、歌詞指定のために２つの鍵を同時押鍵した後、離鍵せずに別の鍵を押鍵した場合、上記ではその押鍵は発音と見なされるが、その押鍵も歌詞指定の一部と見なし、３つの鍵の組み合わせによる歌詞に記憶されている歌詞を上書きするという制御動作が実行されてもよい。また、発音後に離鍵せずに別の鍵を押鍵した場合、上記では先の発音から後の発音に独唱として遷移するように発音するが、先の発音を残したまま新たな発音をするという制御動作が実行されてもよい。
【００３９】
離鍵動作については、第１の実施形態では特に言及していないが、押鍵後所定時間で自然にリリースさせるか、あるいは演奏者の離鍵動作に対して所定の制御動作を実行させてもよい。
【００４０】
次に、本発明の第２の実施形態について説明する。図６は、第２の実施形態における歌詞決定処理の詳細例を示すフローチャートである。第２の実施形態では、ＲＡＭ１０３上に歌詞のＦＩＦＯ（ファーストインファーストアウト：先入れ先出し）方式の歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅを持っておく。そして、演奏者が複数鍵の同時押鍵を連続して実行するごとに、ＣＰＵ１０１は、第１の実施形態と同様の図３のフローチャートで例示される鍵盤処理におけるステップＳ３０９の歌詞決定処理を繰り返し実行し、この処理において、図６のステップＳ６０１に示されるように、各押鍵に対応する押鍵済集合変数ｏｎ＿ｋｅｙｓの内容でＲＯＭ１０２内の鍵盤・歌詞変換テーブルを参照して決定される歌詞データを、第１の実施形態で示したＲＡＭ１０３上の歌詞変数ｌｙｌｉｃに上書きすることはせずに、歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅに積んでゆく。
【００４１】
図７は、第２の実施形態における歌唱生成処理の詳細例を示すフローチャートである。上述の複数鍵の同時押鍵の連続処理の後、今度は演奏者が単数鍵の押鍵を連続して実行するごとに、ＣＰＵ１０１は、図３の鍵盤処理におけるステップＳ３１１の歌唱生成処理を繰り返し実行する。この処理において、ＣＰＵ１０１は、歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅに積まれている先頭の歌詞データをｐｏｐし（取り出して先頭を取り去り）、それに対応する歌唱データを歌詞変数ｌｙｌｉｃに代入する（ステップＳ７０１）。その後は、第１の実施形態における図５のステップＳ５０１およびＳ５０２と同様の、ステップＳ７０２およびＳ７０３の処理を実行し、歌唱データの出力波形Ｗを生成して発音する。演奏者が単数鍵の押鍵を行うごとに、図７のフローチャートで例示される歌唱生成処理が実行され、歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅ中の歌唱データが１つずつｐｏｐされてゆく。このようにして、単数鍵による音高が指定されるごとに、最初に一括して指定された各歌詞に対応する各歌唱データを順次生成し発音させることができる。
【００４２】
なお、歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅが空の場合は、発音しない、最後の歌詞で発音する、最後の歌詞の母音で発音する、というような制御動作を実行してよい。また、歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅがあふれる場合は、キューの先頭の歌詞データを捨て最後に追加、キューの最後の歌詞データを上書き、というような制御動作を実行してよい。第１の実施形態は、第２の実施形態において、歌詞キュー変数ｌｙｌｉｃ＿ｑｕｅｕｅの最大長が１である場合に相当する。
【００４３】
次に、本発明の第３の実施形態について説明する。第３の実施形態は、前述した第１の実施形態に対して、歌詞決定処理と歌唱生成処理が必ず交互に実行されるようにしたものである。第３の実施形態では、複数鍵による音高指定が可能となるため、歌唱は独唱に限らず、合唱演奏が可能になる。
【００４４】
図８は、第３の実施形態における図２のステップＳ２０３の鍵盤処理の詳細例を示すフローチャートである。各集合変数については、図３で前述した第１の実施形態の場合と同様である。
【００４５】
まず、ＣＰＵ１０１は、鍵盤１０４をスキャンし、押鍵されている鍵の集合をＲＡＭ１０３上の鍵集合変数ｃ＿ｋｅｙｓに代入する（ステップＳ８０１）。
【００４６】
次に、ＣＰＵ１０１は、前回鍵集合変数ｐ＿ｋｅｙｓの内容が空集合φではなく、かつ今回鍵集合変数ｃ＿ｋｅｙｓの内容が空集合φであるか否かを判定する（ステップＳ８０２）。ステップ８０２の判定が真（以下「ＴＲＵＥ」と記載）である場合は、前回までの押鍵の全てが離鍵された状態を示し、偽（以下「ＦＡＬＳＥ」と記載）である場合、今回いずれかの鍵が押鍵されている状態を示している。
【００４７】
ステップＳ８０２の判定がＦＡＬＳＥの場合、ＣＰＵ１０１は次に、前回鍵集合変数ｐ＿ｋｅｙｓの内容と今回鍵集合変数ｃ＿ｋｅｙｓの内容が異なっているか否かを判定する（ステップＳ８０３）。
【００４８】
前回鍵集合変数ｐ＿ｋｅｙｓの内容と今回鍵集合変数ｃ＿ｋｅｙｓの内容が同じ（ステップＳ８０３の判定がＦＡＬＳＥ）である場合には、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ８０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納した後に（ステップＳ８１３）、そのまま図８のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００４９】
前回鍵集合変数ｐ＿ｋｅｙｓの内容と今回鍵集合変数ｃ＿ｋｅｙｓの内容が異なっている（ステップＳ８０３の判定がＴＲＵＥである）場合には、ＣＰＵ１０１は、現在の段階が歌詞決定処理を実行する段階ＬＹＬＩＣであるか歌唱生成処理を実行する段階ＰＬＡＹであるかを示すＲＡＭ１０３上の段階変数ｐｈａｓｅの内容がチェックされる。
【００５０】
この段階変数ｐｈａｓｅの初期値は、図２のステップＳ２０１で歌詞決定処理を実行する段階ＬＹＬＩＣに設定されているため、ＣＰＵ１０１は、最初はステップＳ８０４からＳ８０５に移行する。ここでは、ＣＰＵ１０１は、押鍵済集合変数ｏｎ＿ｋｅｙｓの内容に、今回鍵集合変数ｃ＿ｋｅｙｓと前回鍵集合変数ｐ＿ｋｅｙｓの差分集合の内容を加えた後（ステップＳ８０５）、第１の実施形態における図３のステップＳ３０９と同様の歌詞決定処理を実行する（ステップＳ８０６）。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ８０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納し（ステップＳ８１３）、図８のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００５１】
その後、演奏者が、歌詞決定処理のために押鍵していた鍵を離鍵すると、その直後に図２のステップＳ２０３の鍵盤処理が実行されるタイミングで、図８のステップＳ８０２の判定がＴＲＵＥとなる。この場合、ＣＰＵ１０１は、段階変数ｐｈａｓｅの内容が歌詞決定処理を実行する段階ＬＹＬＩＣであるか歌唱生成処理を実行する段階ＰＬＡＹであるかを判定する。
【００５２】
歌詞決定処理が実行されたときには段階変数ｐｈａｓｅの内容はＬＹＬＩＣであるため（ステップＳ８０４→Ｓ８０５）、ＣＰＵ１０１は、ステップＳ８０９からＳ８１０に移行する。ここでは、ＣＰＵ１０１は、段階変数ｐｈａｓｅの内容を歌唱発音処理を実行する段階ＰＬＡＹに変更する。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ８０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納し（ステップＳ８１３）、図８のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００５３】
この結果、次に演奏者が押鍵をしてから鍵盤処理が実行されるタイミングでは、ステップＳ８０２の判定がＦＡＬＳＥ、ステップＳ８０３の判定がＴＲＵＥ、ステップＳ８０４の判定がＰＬＡＹとなる。この結果、ＣＰＵ１０１は、第１の実施形態における図３のステップＳ３１０およびＳ３１１と同様のステップＳ８０７およびＳ８０８を実行し、歌唱生成処理を実行する。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ８０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納し（ステップＳ８１３）、図８のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００５４】
その後、演奏者が、歌唱生成処理のために押鍵していた鍵を離鍵すると、その直後に図２のステップＳ２０３の鍵盤処理が実行されるタイミングで、図８のステップＳ８０２の判定がＴＲＵＥとなり、ＣＰＵ１０１は、ステップＳ８０９で、段階変数ｐｈａｓｅの内容を再びチェックする。
【００５５】
歌唱生成処理が実行されたときには段階変数ｐｈａｓｅの内容はＰＬＡＹであるため（ステップＳ８０４→Ｓ８０７）、ＣＰＵ１０１は、ステップＳ８０９からＳ８１１に移行する。ここでは、ＣＰＵ１０１は、段階変数ｐｈａｓｅの内容を歌詞決定処理を実行する段階ＬＹＬＩＣに変更する。また、ＣＰＵ１０１は、押鍵済集合変数ｏｎ＿ｋｅｙｓの内容を空集合φにする（ステップＳ８１２）。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ８０１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納し（ステップＳ８１３）、図８のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００５６】
以上のようにして、第３の実施形態では、演奏者が押鍵と離鍵を繰り返すごとに、歌詞決定処理を実行する段階ＬＹＬＩＣと歌唱生成処理を実行する段階ＰＬＡＹがトグル的に交互に繰り返される。このため、演奏者は、歌唱生成処理を実行させるために押鍵を行う場合、第１の実施形態のように単数鍵の押鍵を行う必要は必ずしもなく、複数鍵での押鍵指定も行うことができ、合唱歌唱が可能となる。
【００５７】
歌唱発音処理において同時でなく複数鍵を順に押鍵した場合は、押鍵された鍵毎に対応して発音を制御するようにしてもよい。この際も、前述のように、
・単一鍵の押鍵からＮミリ秒以上経ってから、その単一鍵が離鍵されずに他の単一鍵の押鍵があった場合は、その新規の押鍵の音で、母音を繋げる形で歌唱する（例えば、「かーあー」と発音する）。
としてもよい。また、後から押鍵した分の発音は、母音だけでなく、子音を含んでもよい。なお、第３の実施形態では、歌唱生成処理を実行する段階ＰＬＡＹから歌詞決定処理を実行する段階ＬＹＬＩＣに戻るのは全て離鍵したタイミングであるが、最終的に全て離鍵する直前まで押鍵されていた鍵の組み合わせで歌詞を決定して、歌唱生成処理を実行する段階ＰＬＡＹに移るようにしてもよい。
また、歌詞決定処理を実行する段階ＬＹＬＩＣにおいて、最初の押鍵時において、そのときに同時に押した鍵の組み合わせで歌詞を決定して、その後の押鍵では歌詞は変化しないようにし、全鍵の離鍵後に、歌唱生成処理を実行する段階ＰＬＡＹに移る（実際の発音は再押鍵後）ようにしてもよい。
さらに、歌詞決定処理を実行する段階ＬＹＬＩＣで、最初に離鍵が為された場合にその離鍵した鍵の組み合わせで歌詞を決定、その後に歌唱生成処理を実行する段階ＰＬＡＹに移行してもよい。
【００５８】
図９は、歌唱合成装置の第４の実施形態のハードウェア構成例を示す図である。この構成が、第１、第２、第３の実施形態の図１に示される構成と異なるのは、フットペダル１０７が備えられている点である。第４の実施形態では、歌詞決定処理を実行する段階と歌唱生成処理を実行する段階の切替えが、フットペダル１０７によって行われる。例えば、フットペダル１０７を踏んでいる時は歌詞決定処理が実行される段階、離しているときは歌唱生成処理が実行される段階とする（トグルによる切替えでもよい）。
【００５９】
図１０は、第４の実施形態における図２のステップＳ２０３の鍵盤処理の詳細例を示すフローチャートである。
【００６０】
まず、ＣＰＵ１０１は、鍵盤１０４をスキャンし、押鍵されている鍵の集合をＲＡＭ１０３上の鍵集合変数ｃ＿ｋｅｙｓに代入する（ステップＳ１００１）。
【００６１】
次に、ＣＰＵ１０１は、今回鍵集合変数ｃ＿ｋｅｙｓの内容から前回鍵集合変数ｐ＿ｋｅｙｓの内容を差し引いた結果が空集合φでるか否か、すなわち、前回鍵集合変数ｐ＿ｋｅｙｓの内容と今回鍵集合変数ｃ＿ｋｅｙｓの内容が同じであるか否かを判定する（ステップＳ１００２）。
【００６２】
ステップＳ１００２の判定がＴＲＵＥである場合には、ＣＰＵ１０１は、そのまま図１０のフローチャートで示される図２のステップＳ２０３の鍵盤処理を終了する。
【００６３】
ステップＳ１００２の判定がＦＡＬＳＥである場合には、ＣＰＵ１０１は、図９のフットペダル１０７の状態を確認する（ステップＳ１００３）。
【００６４】
フットペダル１０７が踏まれている状態である場合には、ＣＰＵ１０１は、第３の実施形態におけるステップＳ８０５およびＳ８０６と同様のステップＳ１００４およびＳ１００５の処理で示される歌詞決定処理を実行する。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ１００１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納し（ステップＳ１００８）、図１０のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００６５】
フットペダル１０７が踏まれていない状態である場合には、ＣＰＵ１０１は、第３の実施形態におけるステップＳ８０７およびＳ８０８と同様のステップＳ１００６およびＳ１００７の処理で示される歌唱生成処理を実行する。その後、ＣＰＵ１０１は、次回の鍵盤処理のためにステップＳ１００１にて算出された今回鍵集合変数ｃ＿ｋｅｙｓの内容を前回鍵集合変数ｐ＿ｋｅｙｓに格納し（ステップＳ１００８）、図１０のフローチャートで示される図２のステップＳ２０３の今回の鍵盤処理を終了する。
【００６６】
従来技術では、リアルタイムの歌詞の指定ができなかったり、歌唱演奏のみで両手が塞がってしまっていたりしたが、以上説明した第１、第２、第３、および第４の実施形態により、片手のみで歌唱演奏が可能になるため、もう片方の手で他の演奏操作子を操作することが可能になり、演奏の幅を広げることができる。また、例えば鍵盤を上半分と下半分に分け、それぞれの鍵域で別個の歌手データを使用し、異なる歌詞で同時に歌唱させるといったことができるようになる。
第１〜第４実施形態においては、演奏操作子として鍵盤の鍵を用いているが、これに限るものでない。例えば打楽器音を発音させる複数種のパッド、ＰＣ等に用いられるキーボードなど、演奏操作子として用いられるものであれば何でもよい。
【００６７】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
演奏操作子により行われる演奏操作を判別し、当該判別結果に基づいて第１及び第２のいずれかの状態に移行する状態移行部と、
前記第１の状態に移行した場合に、前記判別された演奏操作に基づいて歌詞を決定する歌詞決定部と、
前記第２の状態に移行した場合に、前記判別された演奏操作に基づいた音高で歌唱させるための歌唱データ生成する歌唱生成部と、
前記歌詞生成部にて生成された歌唱データに基づいて発音させる発音データを生成する発音生成部と、
を備えた歌唱生成装置。
（付記２）
前記歌詞決定部は、予め定められた期間内に前記演奏操作子が複数同時に操作された場合に前記第１の状態に移行し、前記演奏操作子を単数操作した場合に第２の状態に移行する処理を実行する、付記１に記載の歌唱生成装置。
（付記３）
前記歌詞決定部はさらに、前記決定された歌詞を順次メモリに記憶させ、
前記歌唱生成部は、前記音高決定部にて音高が決定される毎に、前記メモリに記憶されている歌詞を予め記憶された順に読み出すとともに、当該読み出された歌詞を前記決定された音高で歌唱させる歌唱データを生成する、付記１又は２に記載の歌唱生成装置。
（付記４）
演奏操作子により行われる演奏操作の内容及び当該演奏操作の終了を判別し、当該演奏操作子の終了を判別する毎に、第１及び第２のいずれか一方の状態から他方の状態に移行する状態移行部と、
前記第１の状態に移行した場合に、前記判別された演奏操作の内容に基づいて歌詞を決定する歌詞決定部と、
前記第２の状態に移行した場合に、前記判別された演奏操作の内容に基づいた音高で歌唱させるための歌唱データ生成する歌唱生成部と、
前記歌詞生成部にて生成された歌唱データに基づいて発音させるための発音データを生成する歌唱生成部と、
を備えた歌唱生成装置。
（付記５）
前記演奏操作子は、フットペダルを含み、前記状態移行部は、前記フットペダルが操作される毎に、前記第１及び第２の状態のいずれか一方の状態から他方の状態に移行させる、付記１に記載の歌唱生成装置。
（付記６）
演奏操作子により行われる演奏操作を判別し、当該判別結果に基づいて第１及び第２のいずれかの状態に移行する処理と、前記第１の状態に移行した場合に、前記判別された演奏操作に基づいて歌詞を決定する処理と、前記第２の状態に移行した場合に、前記判別された演奏操作に基づいた音高で歌唱させるための歌唱データ生成する処理と、を実行する制御部と、
前記歌詞生成部にて生成された歌唱データに基づいて発音させるための発音データを生成する歌唱生成部と、
を備えた歌唱生成装置。
（付記７）
制御部と歌唱生成部とを備えた歌唱生成装置に用いられる歌唱生成方法であって、
前記制御部が、
演奏操作子により行われる演奏操作を判別し、当該判別結果に基づいて第１及び第２のいずれかの状態に移行させ、
前記第１の状態に移行した場合に、前記判別された演奏操作に基づいて歌詞を決定し、
前記第２の状態に移行した場合に、前記判別された演奏操作に基づいた音高で歌唱させるための歌唱データ生成し、
前記歌唱生成部が、
前記生成された歌唱データに基づいて発音させるための発音データを生成する、歌唱生成方法。
（付記８）
生成された歌唱データに基づいて発音させるための発音データを生成する歌唱生成部を有する歌唱生成装置として用いられるコンピュータに、
演奏操作子により行われる演奏操作を判別し、当該判別結果に基づいて第１及び第２のいずれかの状態に移行するステップと、
前記第１の状態に移行した場合に、前記判別された演奏操作に基づいて歌詞を決定するステップと、
前記第２の状態に移行した場合に、前記判別された演奏操作に基づいた音高で歌唱させるための歌唱データ生成するステップと、
を実行させるプログラム。
（付記９）
付記１に記載の歌唱生成装置と、
複数の演奏操作子と、
前記歌唱生成装置からの発音データに基づいて歌唱音を発音する発音部と、
を備えた電子楽器。
【符号の説明】
【００６８】
１００  歌唱生成装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  鍵盤
１０５  歌唱合成ユニット
１０６  発音ユニット
１０７  フットペダル１０７
【図１】
0006492629.tif 000002
【図２】
0006492629.tif 000003
【図３】
0006492629.tif 000004
【図４】
0006492629.tif 000005
【図５】
0006492629.tif 000006
【図６】
0006492629.tif 000007
【図７】
0006492629.tif 000008
【図８】
0006492629.tif 000009
【図９】
0006492629.tif 000010
【図１０】
0006492629.tif 000011