(57)【要約】【課題】鍵盤等の操作子の操作に応じて歌声を再生する電子楽器、電子楽器の制御方法、及びプログラムに関し、演奏者がどのように演奏操作子を指定しても、良好に歌詞に対応した歌声が発声されるように制御する。【解決手段】本来のタイミングの何れかのタイミング例えばｔ３において、演奏者により鍵盤の鍵等の操作子が操作されて音高が指定された場合に、指定された音高が本来指定されるべき音高に一致しない場合、又は操作がされなかった場合に、歌詞の進行及び自動伴奏の進行を停止するように制御する。【選択図】図５
2020013145.tif 000002
【特許請求の範囲】
【請求項１】
伴奏データを出力する伴奏データ出力処理と、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データの前記第２タイミングの到来を待たない出力に合わせて、前記伴奏データ出力処理が出力する前記伴奏データの出力位置を前記第２タイミングまで進める制御処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行する電子楽器。
【請求項２】
或る歌手の歌声データ及び歌詞データによる機械学習により生成された学習済みモデルに基づいて、前記或る歌手に応じた歌声を音声合成する音声合成処理、を実行し、
前記歌声出力処理は、操作子が操作されたタイミングに応じて前記音声合成処理により音声合成された歌声を、前記操作された操作子により指定された音高で出力する請求項１に記載の電子楽器。
【請求項３】
操作子を操作することにより音高を指定すべきタイミングに合わせて、指定すべき音高を示す識別子を表示する表示処理、を実行する請求項１または２に記載の電子楽器。
【請求項４】
電子楽器のコンピュータに、
伴奏データを出力する伴奏データ出力処理と、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データの前記第２タイミングの到来を待たない出力に合わせて、前記伴奏データ出力処理が出力する前記伴奏データの出力位置を前記第２タイミングまで進める制御処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行させる方法。
【請求項５】
電子楽器のコンピュータに、
伴奏データを出力する伴奏データ出力処理と、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データの前記第２タイミングの到来を待たない出力に合わせて、前記伴奏データ出力処理が出力する前記伴奏データの出力位置を前記第２タイミングまで進める制御処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鍵盤等の操作子の操作に応じて歌声を再生する電子楽器、電子楽器の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、鍵盤等の操作子の操作に応じて歌声（ボーカル）を再生するようにした電子楽器の技術が知られている（例えば特許文献１）。この従来技術は、音程を指示する鍵盤操作子と、歌詞データが記憶された記憶手段と、該記憶手段から歌詞データを読み出すべき旨を指示する指示手段と、該指示手段による指示があった場合に前記記憶手段から歌詞データを順次読み出す読出手段と、該読出手段により読み出された歌詞データに応じた音色で鍵盤操作子で指示された音程の歌声を発生する音源、とを備える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−３３２４４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上述のような従来技術では、例えば電子楽器により出力される伴奏データの進行に合わせて歌詞に応じた歌声を出力しようとした場合に、演奏者がどの鍵を指定しても鍵が指定されるごとに歌詞に応じた歌声が順次出力されると、演奏者による鍵の指定の仕方によっては、出力される歌声と伴奏データの進行とが合わない。例えば、１小節に４つの音符が含まれている場合、演奏者が１小節の区間で４つ以上音高を指定した場合は伴奏データの進行より歌詞が先に進んでしまうし、演奏者が１小節の区間で指定した音高が３つ以下の場合は伴奏データの進行より歌詞が遅れてしまう。
【０００５】
このように、演奏者が音高を鍵盤等で指定するごとに歌詞が順次進んでいってしまえば、例えば伴奏に対して歌詞が進みすぎてしまうことや、逆に遅れすぎてしまうことになる。
【課題を解決するための手段】
【０００６】
態様の一例の電子楽器は、
伴奏データを出力する伴奏データ出力処理と、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データの前記第２タイミングの到来を待たない出力に合わせて、前記伴奏データ出力処理が出力する前記伴奏データの出力位置を前記第２タイミングまで進める制御処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行する。
【発明の効果】
【０００７】
本発明によれば、歌詞の進行を良好に制御する電子楽器を提供できる。
【図面の簡単な説明】
【０００８】
【図１】電子鍵盤楽器の一実施形態の外観例を示す図である。
【図２】電子鍵盤楽器の制御システムの一実施形態のハードウェア構成例を示すブロック図である。
【図３】音声合成ＬＳＩの構成例を示すブロック図である。
【図４】音声合成ＬＳＩの動作説明図である。
【図５】歌詞制御技術の説明図である。
【図６】本実施形態のデータ構成例を示す図である。
【図７】本実施形態における電子楽器の制御処理例を示すメインフローチャートである。
【図８】初期化処理、テンポ変更処理、及びソング開始処理の詳細例を示すフローチャートである。
【図９】スイッチ処理の詳細例を示すフローチャートである。
【図１０】自動演奏割込み処理の詳細例を示すフローチャートである。
【図１１】ソング再生処理の第１の実施形態の詳細例を示すフローチャートである。
【図１２】ソング再生処理の第２の実施形態の詳細例を示すフローチャートである。
【図１３】次ソングイベント検索処理の詳細例を示すフローチャートである。
【図１４】ＭｕｓｉｃＸＭＬ形式による歌詞制御データの構成例を示す図である。
【図１５】ＭｕｓｉｃＸＭＬ形式による歌詞制御データによる楽譜表示例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
【００１０】
図１は、電子鍵盤楽器の一実施形態１００の外観例を示す図である。電子鍵盤楽器１００は、演奏操作子としての複数の鍵からなる鍵盤１０１と、音量の指定、ソング再生のテンポ設定、ソング再生開始、伴奏再生等の各種設定を指示する第１のスイッチパネル１０２と、ソングや伴奏の選曲や音色の選択等を行う第２のスイッチパネル１０３と、ソング再生時の歌詞、楽譜や各種設定情報を表示するＬＣＤ１０４（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶ディスプレイ）等を備える。また、電子鍵盤楽器１００は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
【００１１】
図２は、図１の電子鍵盤楽器１００の制御システム２００の一実施形態のハードウェア構成例を示す図である。図２において、制御システム２００は、ＣＰＵ（中央演算処理装置）２０１、ＲＯＭ（リードオンリーメモリ）２０２、ＲＡＭ（ランダムアクセスメモリ）２０３、音源ＬＳＩ（大規模集積回路）２０４、音声合成ＬＳＩ２０５、図１の鍵盤１０１、第１のスイッチパネル１０２、及び第２のスイッチパネル１０３が接続されるキースキャナ２０６、及び図１のＬＣＤ１０４が接続されるＬＣＤコントローラ２０８が、それぞれシステムバス２０９に接続されている。また、ＣＰＵ２０１には、自動演奏のシーケンスを制御するためのタイマ２１０が接続される。更に、音源ＬＳＩ２０４及び音声合成ＬＳＩ２０５からそれぞれ出力される楽音出力データ２１８及び歌声音声出力データ２１７は、Ｄ／Ａコンバータ２１１、２１２によりそれぞれアナログ楽音出力信号及びアナログ歌声音声出力信号に変換される。アナログ楽音出力信号及びアナログ歌声音声出力信号は、ミキサ２１３で混合され、その混合信号がアンプ２１４で増幅された後に、特には図示しないスピーカ又は出力端子から出力される。
【００１２】
ＣＰＵ２０１は、ＲＡＭ２０３をワークメモリとして使用しながらＲＯＭ２０２に記憶された制御プログラムを実行することにより、図１の電子鍵盤楽器１００の制御動作を実行する。また、ＲＯＭ２０２は、上記制御プログラム及び各種固定データのほか、歌詞データ及び伴奏データを含む曲データを記憶する。
【００１３】
ＣＰＵ２０１には、本実施形態で使用するタイマ２１０が実装されており、例えば電子鍵盤楽器１００における自動演奏の進行をカウントする。
【００１４】
音源ＬＳＩ２０４は、ＣＰＵ２０１からの発音制御指示に従って、例えば特には図示しない波形ＲＯＭから楽音波形データを読み出し、Ｄ／Ａコンバータ２１１に出力する。音源ＬＳＩ２０４は、同時に最大２５６ボイスを発振させる能力を有する。
【００１５】
音声合成ＬＳＩ２０５は、ＣＰＵ２０１から、歌詞のテキストデータと音高と音長と開始フレームに関する情報を歌声データ２１５として与えられると、それに対応する歌声の音声データを合成し、Ｄ／Ａコンバータ２１２に出力する。
【００１６】
キースキャナ２０６は、図１の鍵盤１０１の押鍵／離鍵状態、第１のスイッチパネル１０２、及び第２のスイッチパネル１０３のスイッチ操作状態を定常的に走査し、ＣＰＵ２０１に割り込みを掛けて状態変化を伝える。
【００１７】
ＬＣＤコントローラ２０８は、ＬＣＤ１０４の表示状態を制御するＩＣ（集積回路）である。
【００１８】
図３は、図２の音声合成ＬＳＩ２０５の構成例を示すブロック図である。この音声合成ＬＳＩ２０５は、後述するソング再生処理により図２のＣＰＵ２０１から指示される歌声データ２１５を入力することにより、例えば下記文献に記載の「深層学習に基づく統計的音声合成」の技術に基づいて、歌声音声出力データ２１７を合成し出力する。
【００１９】
（文献）
橋本佳，高木信二「深層学習に基づく統計的音声合成」日本音響学会誌７３巻１号（２０１７），ｐｐ．５５−６２
【００２０】
音声合成ＬＳＩ２０５は、音声学習部３０１と音声合成部３０２を含む。音声学習部３０１は、学習用テキスト解析部３０３と学習用音響特徴量抽出部３０４とモデル学習部３０５とを含む。
【００２１】
学習用テキスト解析部３０３は、歌詞テキストと音高と音長を含む学習用歌声データ３１１を入力してそのデータを解析する。この結果、学習用テキスト解析部３０３は、学習用歌声データ３１１に対応する音素、品詞、単語、音高などを表現する離散数値系列である学習用言語特徴量系列３１３を推定して出力する。
【００２２】
学習用音響特徴量抽出部３０４は、上記歌詞テキストを或る歌手が歌うことによりマイク等を介して集録された学習用歌声音声データ３１２を入力して分析する。この結果、学習用音響特徴量抽出部３０４は、学習用歌声音声データ３１２に対応する音声の特徴を表す学習用音響特徴量系列３１４を抽出して出力する。
【００２３】
モデル学習部３０５は、下記（１）式に従って、学習用言語特徴量系列３１３（これを
2020013145.tif 000003
と置く）と、音響モデル（これを
2020013145.tif 000004
と置く）とから、学習用音響特徴量系列３１４（これを
2020013145.tif 000005
と置く）が生成される確率（これを
2020013145.tif 000006
と置く）を最大にするような音響モデル
2020013145.tif 000007
を、機械学習により推定する。即ち、テキストである言語特徴量系列と音声である音響特徴量系列との関係が、音響モデルという統計モデルによって表現される。
【００２４】
2020013145.tif 000008
【００２５】
モデル学習部３０５は、（１）式によって機械学習を行った結果算出される音響モデル
2020013145.tif 000009
を表現するモデルパラメータを学習結果３１５として出力し、音声合成部３０２内の音響モデル部３０６に設定する。
【００２６】
音声合成部３０２は、テキスト解析部３０７と音響モデル部３０６と発声モデル部３０８とを含む。音声合成部３０２は、歌詞テキストを含む歌声データ２１５に対応する歌声音声出力データ２１７を、音響モデル部３０６に設定された音響モデルという統計モデルを用いて予測することにより合成する、統計的音声合成処理を実行する。
【００２７】
テキスト解析部３０７は、自動演奏に合わせた演奏者の演奏の結果として、図２のＣＰＵ２０１より指定される歌詞のテキストデータと音高と音長と開始フレームに関する情報を含む歌声データ２１５を入力し、そのデータを解析する。この結果、テキスト解析部３０７は、歌声データ２１５に対応する音素、品詞、単語などを表現する言語特徴量系列３１６を解析して出力する。
【００２８】
音響モデル部３０６は、言語特徴量系列３１６を入力することにより、それに対応する音響特徴量系列３１７を推定して出力する。即ち音響モデル部３０６は、下記（２）式に従って、テキスト解析部３０７から入力する言語特徴量系列３１６（これを再度
2020013145.tif 000010
と置く）と、モデル学習部３０５での機械学習により学習結果３１５として設定された音響モデル
2020013145.tif 000011
とに基づいて、音響特徴量系列３１７（これを再度
2020013145.tif 000012
と置く）が生成される確率（これを
2020013145.tif 000013
と置く）を最大にするような音響特徴量系列３１７の推定値
2020013145.tif 000014
を推定する。
【００２９】
2020013145.tif 000015
【００３０】
発声モデル部３０８は、音響特徴量系列３１７を入力することにより、ＣＰＵ２０１より指定される歌詞テキストを含む歌声データ２１５に対応する歌声音声出力データ２１７を生成する。歌声音声出力データ２１７は、図２のＤ／Ａコンバータ２１２からミキサ２１３及びアンプ２１４を介して出力され、特には図示しないスピーカから放音される。
【００３１】
学習用音響特徴量系列３１４や音響特徴量系列３１７で表される音響特徴量は、人間の声道をモデル化したスペクトル情報と、人間の声帯をモデル化した音源情報とを含む。スペクトルパラメータとしては例えば、メルケプストラムや線スペクトル対（Ｌｉｎｅ  Ｓｐｅｃｔｒａｌ  Ｐａｉｒｓ：ＬＳＰ）等を採用できる。音源情報としては、人間の音声のピッチ周波数を示す基本周波数（Ｆ０）を採用できる。発声モデル部３０８は、音源生成部３０９と合成フィルタ部３１０とを含む。音源生成部３０９は、音響モデル部３０６から入力する音源情報３１９の系列を順次入力することにより、例えば、音源情報３１９に含まれる基本周波数（Ｆ０）で周期的に繰り返され、音源情報３１９に含まれるパワー値を有するパルス列（有声音音素の場合）、又は音源情報３１９に含まれるパワー値を有するホワイトノイズ（無声音音素の場合）からなる音源信号を生成する。合成フィルタ部３１０は、音響モデル部３０６から順次入力するスペクトル情報３１８の系列に基づいて声道をモデル化するデジタルフィルタを形成し、音源生成部３０９から入力する音源信号を励振源信号として、デジタル信号の歌声音声出力データ２１７を生成し出力する。
【００３２】
本実施形態では、言語特徴量系列３１６から音響特徴量系列３１７を予測するために、音響モデル部３０６がディープニューラルネットワーク（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ：ＤＮＮ）により実装される。これに対応して、音声学習部３０１内のモデル学習部３０５は、言語特徴量から音響特徴量へのＤＮＮ内の各ニューロンの非線形変換関数を表すモデルパラメータを学習し、そのモデルパラメータを学習結果３１５として音声合成部３０２内の音響モデル部３０６のＤＮＮに出力する。
【００３３】
通常、音響特徴量は例えば５．１ｍｓｅｃ（ミリ秒）幅のフレームを単位として算出され、言語特徴量は音素を単位として算出される。従って、音響特徴量と言語特徴量は時間単位が異なる。ＤＮＮである音響モデル部３０６は、入力である言語特徴量系列３１６と出力である音響特徴量系列３１７の一対一の対応関係を表すモデルであるため、時間単位の異なる入出力データ対を用いてＤＮＮを学習させることはできない。このため、本実施形態では、予めフレーム単位の音響特徴量系列と音素単位の言語特徴量系列の対応関係が設定され、フレーム単位の音響特徴量と言語特徴量の対が生成される。
【００３４】
図４は、上述の対応関係を示す音声合成ＬＳＩ２０５の動作説明図である。例えば、童謡「きらきら星」の歌い出しの歌詞文字列「き」「ら」「き」（図４（ａ））に対応する言語特徴量系列である歌声音素列「／ｋ／」「／ｉ／」「／ｒ／」「／ａ／」「／ｋ／」「／ｉ／」（図４（ｂ））が得られているときに、これらの言語特徴量系列が、フレーム単位の音響特徴量系列（図４（ｃ））に対して、１対多の関係（図４の（ｂ）と（ｃ）の関係）で対応付けられる。なお、言語特徴量は音響モデル部３０６におけるＤＮＮへの入力として使用されるため、数値データとして表現する必要がある。このため、言語特徴量系列としては、「直前の音素は「／ａ／」であるか？」や「現在の単語に含まれる音素の数は？」などのコンテキストに関する質問に対する二値のデータ（０又は１）、或いは、連続値での回答を連結して得られる数値データが用意される。
【００３５】
図３の音声学習部３０１内のモデル学習部３０５は、図４の破線矢印群４０１として示されるように、フレーム単位で、図４（ｂ）に対応する学習用言語特徴量系列３１３の音素列と図４（ｃ）に対応する学習用音響特徴量系列３１４の対を音響モデル部３０６のＤＮＮに順次与えて学習を行う。なお、音響モデル部３０６内のＤＮＮは、図４のグレー色の丸印群として示されるように、入力層、１つ以上の中間層、及び出力層からなるニューロン群を含む。
【００３６】
一方、音声合成時には、上記フレーム単位で、図４（ｂ）に対応する言語特徴量系列３１６の音素列が音響モデル部３０６のＤＮＮに入力される。この結果、音響モデル部３０６のＤＮＮは、図４の太実線矢印群４０２として示されるように、上記フレーム単位で、音響特徴量系列３１７を出力する。従って、発声モデル部３０８においても、上述のフレーム単位で、音響特徴量系列３１７に含まれる音源情報３１９及びスペクトル情報３１８がそれぞれ音源生成部３０９及び合成フィルタ部３１０に与えられて、音声合成が実行される。
【００３７】
この結果、発声モデル部３０８は、図４の太実線矢印群４０３として示されるように、フレーム毎に、例えば２２５サンプル（ｓａｍｐｌｅｓ）ずつの歌声音声出力データ２１７を出力する。フレームは５．１ｍｓｅｃの時間幅を有するため、１サンプルは「５．１ｍｓｅｃ÷２２５≒０．０２２７ｍｓｅｃ」であり、従って、歌声音声出力データ２１７のサンプリング周波数は１／０．０２２７≒４４ｋＨｚ（キロヘルツ）である。
【００３８】
ＤＮＮの学習は、フレーム単位の音響特徴量と言語特徴量の対を用いて、下記の（３）式で演算される二乗誤差最小化基準によって行われる。
【００３９】
2020013145.tif 000016
【００４０】
ここで、
2020013145.tif 000017
と
2020013145.tif 000018
はそれぞれｔ番目のフレームｔにおける音響特徴量と言語特徴量、
2020013145.tif 000019
は音響モデル部３０６のＤＮＮのモデルパラメータ、
2020013145.tif 000020
はＤＮＮによって表される非線形変換関数である。ＤＮＮのモデルパラメータは誤差逆伝播法によって効率良く推定することができる。前述した（１）式によって表される統計的音声合成におけるモデル学習部３０５の処理との対応関係を考慮すると、ＤＮＮの学習は下記の（４）式のように表すことができる。
【００４１】
2020013145.tif 000021
【００４２】
ここで、下記（５）式が成立する。
2020013145.tif 000022
【００４３】
上記（４）式及び（５）式のように、音響特徴量と言語特徴量の関係は、ＤＮＮの出力を平均ベクトルとする正規分布
2020013145.tif 000023
によって表すことができる。ＤＮＮを用いた統計的音声合成処理では、通常、言語特徴量
2020013145.tif 000024
に非依存な共分散行列、即ち全てのフレームにおいて同じ共分散行列
2020013145.tif 000025
が用いられる。また、共分散行列
2020013145.tif 000026
を単位行列とすると、（４）式は（３）式と等価な学習処理を示している。
【００４４】
図４で説明したように、音響モデル部３０６のＤＮＮは、フレーム毎に独立に音響特徴量系列３１７を推定する。このため、得られる音響特徴量系列３１７には、合成音声の品質を低下させるような不連続が含まれる。そこで、本実施形態では例えば、動的特徴量を用いたパラメータ生成アルゴリズムを利用することにより、合成音声の品質を改善することができる。
【００４５】
図１、図２、及び図３の構成例を有する本実施形態の動作について、以下に詳細に説明する。図５は、歌詞制御技術の説明図である。図５（ａ）は、自動演奏に従って進行する歌詞テキストとメロディの関係を示す図である。例えば、前述した童謡「きらきら星」の歌い出しの場合、曲データには、「き／Ｔｗｉｎ（第１文字）」「ら／ｋｌｅ（第２文字）」「き／ｔｗｉｎ（第３文字）」「ら／ｋｌｅ（第４文字）」の歌詞の各文字（歌詞情報）と、歌詞の各文字を出力するｔ１、ｔ２、ｔ３、ｔ４の各タイミング情報と、歌詞の各文字のメロディ音高「Ｅ４（第１音高）」「Ｅ４（第２音高）」「Ｂ４（第３音高）」「Ｂ４（第４音高）」等の各音高情報が、含まれている。ｔ４の後のｔ５、ｔ６、ｔ７の各タイミングには、「ひ／ｌｉｔ（第５文字）」「か／ｔｌｅ（第６文字）」「る／ｓｔａｒ（第７文字）」の歌詞の各文字が対応付けられている。
【００４６】
例えば、図５（ｂ）における、ｔ１、ｔ２、ｔ３、ｔ４のタイミングは、図５（ａ）の本来の発声タイミングｔ１、ｔ２、ｔ３、ｔ４に対応している。ここで、演奏者が、本来の発声タイミングに対応したタイミングｔ１とｔ２で、図１の鍵盤１０１において、曲データに含まれる第１音高Ｅ４と同じ音高Ｅ４の鍵を２度正しく押鍵したとする。この場合、図２のＣＰＵ２０１は、タイミングｔ１及びｔ２で歌詞「き／Ｔｗｉｎ（第１文字）」及び「ら／ｋｌｅ（第２文字）」と、それぞれのタイミングｔ１、ｔ２でいずれも演奏者に指定された音高Ｅ４を示す情報と、例えばそれぞれ四分音符長の時間長を示す情報（少なくとも曲データ及び演奏者による演奏のいずれかに基づいて得られる）と、が含まれる歌声データ２１５を、図２の音声合成ＬＳＩ２０５に出力する。この結果、音声合成ＬＳＩ２０５は、タイミングｔ１及びｔ２でそれぞれ歌詞「き／Ｔｗｉｎ（第１文字）」及び「ら／ｋｌｅ（第２文字）」に対応するそれぞれ四分音符長の歌声音声出力データ２１７を第１音高（＝指定された音高）Ｅ４と、第２音高（＝指定された音高）Ｅ４でそれぞれ出力する。タイミングｔ１、ｔ２に対応する判定「○」印は、曲データに含まれる音高及び歌詞情報に応じて発声が正しく行われたことを示している。
【００４７】
次に、本来の発声タイミングのいずれかのタイミングで、演奏者がそのいずれかのタイミングに合わせて図１の鍵盤１０１を押鍵して音高を指定した場合に、その指定された音高が本来指定すべき音高と不一致の場合には、以下の制御が実行される。図２のＣＰＵ２０１は、そのいずれかのタイミングに合わせて、指定すべき音高に対応する文字の次の文字に応じた歌声が出力されないように、歌詞の進行及び自動伴奏の進行を制御する。例えば、或るタイミングに応じて指定すべき音高が第１音高であり、或るタイミングの次のタイミングに応じて指定すべき音高が第２音高の場合に、もし或るタイミングに応じて第１音高以外の音高が指定されたならば、第１音高に対応する第１文字に応じた歌声を出力させても、させなくてもどちらでもよいのであるが、第２音高に対応する第２文字に応じた歌声までは出力させない。その後、ＣＰＵ２０１は、演奏者が押鍵することにより指定された音高が本来指定すべき音高と一致した場合に、歌詞の進行及び自動伴奏の進行を再開する。
【００４８】
例えば、図５（ｂ）において、演奏者が、本来の発声タイミングに対応したタイミングｔ３で、図１の鍵盤１０１の鍵を押鍵して指定した音高Ｇ４が、タイミングｔ３で本来発声されるべき第３音高Ｂ４と不一致であったとする。この場合、図２のＣＰＵ２０１は、タイミングｔ３に合わせて「き／ｔｗｉｎ（第３文字）」が出力されてもよいが、第３音高Ｂ４の次に指定すべき第４音高（タイミングｔ４に応じて指定すべき第４音高）に対応する「ら／ｋｌｅ（第４文字）」以降の文字に応じた歌声が出力されないように、歌詞の進行及び自動伴奏の進行を制御する。なお、ＣＰＵ１０１は、図５（ｂ）のタイミングｔ３の場合に「き／ｔｗｉｎ（第３文字）」を発音しないように制御してもよい。この場合、指定すべきタイミングに応じて鍵を指定したにも関わらず、指定すべき鍵が指定されていない（間違って押鍵した）ので、歌声が出力されない。
【００４９】
上述のようにして歌声が出力されないように歌詞の進行及び自動伴奏の進行が制御されている状態で、演奏者が押鍵して指定した音高が本来指定すべき音高に一致すると、ＣＰＵ２０１は、歌詞の進行及び自動伴奏の進行を再開する。例えば図５（ｂ）のタイミングｔ３で歌詞の進行及び自動伴奏の進行が停止した後、演奏者が、タイミングｔ３′で、本来指定すべき第３音高Ｂ４と一致する音高Ｂ４を指定すると、ＣＰＵ２０１は、タイミングｔ３で発音されるはずであった第３音高Ｂ４に対応する歌詞情報「き／ｔｗｉｎ（第３文字）」に応じた歌声「ぃ／ｉｎ（第３文字´）」を出力し、歌詞の進行及び自動伴奏の進行を再開する。
【００５０】
上述のように歌詞の進行及び自動伴奏の進行が再開された場合、例えば図５（ｂ）のタイミングｔ３′で再開された歌詞情報「き／ｔｗｉｎ（第３文字）」に応じた歌声「ぃ／ｉｎ（第３文字´）」の発声の次に発声されるべき歌詞情報「ら／ｋｌｅ（第４文字）」の発声タイミングｔ４′は、再開した発声タイミングがｔ３からｔ３′にずれた分だけ、本来の発声タイミングｔ４からｔ４′にスライドする。
【００５１】
ここで、上述した指定された音高が本来指定されるべき音高と不一致の場合には、指定すべきタイミングに応じた押鍵がなかった場合も含んでいるといえる。即ち、図５では図示していないが、本来の発声タイミングのいずれかのタイミングで図１の鍵盤１０１の鍵が押されずに音高が指定されなかった場合においても、発声すべき音高に対応する文字（第１文字）の次の文字（第２文字）に応じた歌声が出力されないように、歌詞の進行及び自動伴奏の進行が制御されているといえる。
【００５２】
図５（ｃ）のタイミングｔ３は、本実施形態による上述の制御動作が行われなかったと仮定した場合において、演奏者が、本来の発声タイミングに対応したタイミングｔ３で、押鍵により指定された音高Ｇ４がタイミングｔ３で本来指定すべき第３音高Ｂ４と不一致であった場合の制御動作を説明したものである。本実施形態による上述の制御動作が行われなかった場合には、図５（ｃ）のタイミングｔ３では、本来発声されるべき「き／ｔｗｉｎ（第３文字）」の次の「ら／ｋｌｅ（第４文字）」が発声されてしまい、本実施形態とは異なり、歌詞の進行が不適切になってしまっている。すなわち、タイミングｔ４で発音されるべき「ら／ｋｌｅ（第４文字）」が、タイミングｔ４よりも早いタイミングｔ３で発音されてしまっている。
【００５３】
以上のように、演奏者が本来の発声タイミングで本来指定すべき音高と一致する正しい音高を指定しなかった場合には、本実施形態による制御動作が実行されない場合には、歌詞の進行と自動伴奏の進行とが合わなくなって、演奏者はそのたびに歌詞の進行を修正しなければならなかった。これに対して、本実施形態では、演奏者により本来指定すべき音高と一致する正しい音高が指定されるまで、歌詞の進行と自動伴奏の進行を停止するため、演奏者の演奏に合わせた自然な歌詞進行を行うことが可能となる。
【００５４】
次に、本来の発声タイミングのいずれのタイミングも到来していないタイミングで、演奏者が図１の鍵盤１０１の任意の鍵（操作子）を押鍵操作し、それにより指定された音高が次に指定すべき音高と不一致であった場合、図２のＣＰＵ２０１は、音声合成ＬＳＩ２０５において出力されている歌声音声出力データ２１７の歌声の音高を、演奏操作により指定された音高に変更することを指示する歌声データ２１５を、図２の音声合成ＬＳＩ２０５に出力する。この結果、図２又は図３の音声合成ＬＳＩ２０５は、上記本来の発声タイミングのいずれのタイミングも到来していないタイミングで、発声中の歌声音声出力データ２１７の音高を、ＣＰＵ２０１から指定された音高に変更する。
【００５５】
例えば、図５（ｂ）において、本来の発声タイミングｔ１、ｔ２、ｔ３、ｔ４のいずれのタイミングも到来していないタイミングｔ１′で、演奏者が、図１の鍵盤１０１において音高Ｇ４の鍵を押鍵したとする。この場合、ＣＰＵ２０１は、指定された音高Ｇ４が、後（タイミングｔ２）で指定すべき歌詞情報「ら／ｋｌｅ（第２文字）」に対応する第２音高Ｅ４と不一致と判断し、その結果、音声合成ＬＳＩ２０５において出力されている歌詞情報「き／Ｔｗｉｎ（第１文字）」の歌声音声出力データ２１７の音高を、いままでの第１音高Ｅ４から演奏操作により指定された音高Ｇ４に変更して発声を継続させることを指示する歌声データ２１５を、図２の音声合成ＬＳＩ２０５に出力する。この結果、図２又は図３の音声合成ＬＳＩ２０５は、タイミングｔ１′で、発声中の歌詞情報「き／Ｔｗｉｎ（第１文字）」に応じた「ぃ／ｉｎ（第１文字´）」の歌声音声出力データ２１７の音高を、いままでの第１音高Ｅ４から、ＣＰＵ２０１から指定された音高Ｇ４に変更して発声を継続する。
【００５６】
図５（ｃ）のタイミングｔ１′は、本実施形態による上述の制御動作が行われなかったと仮定した場合において、演奏者が、本来の発声タイミング以外のタイミングｔ１′で、図１の鍵盤１０１の鍵を押鍵した場合の制御動作を説明したものである。本実施形態による上述の制御動作が行われなかった場合には、図５（ｃ）のタイミングｔ１′では、その次の発声タイミングｔ２で発声されるべき歌詞情報「ら／ｋｌｅ（第２文字）」の発声が行われてしまう。
【００５７】
以上のように、本実施形態による制御動作が実行されない場合には、演奏者が本来の発声タイミング以外のタイミングで指定した音高が指定すべき音高と不一致であった場合でも、どんどん歌詞が先に進んでしまって、不自然な感じになってしまっていた。これに対して、本実施形態では、そのタイミングの直前の本来のタイミングから発声されている歌声音声出力データ２１７に応じて発声されている音高が演奏者により指定された音高に変更されて継続させることが可能となる。この場合には、例えば図５（ｂ）の本来のソング再生タイミングｔ１で発声された歌詞情報「き／Ｔｗｉｎ（第１文字）」に対応する歌声音声出力データ２１７が途切れることなく、その音高が押鍵タイミングｔ１′において新たな押鍵による音高に連続的に変化してゆくように聞こえる。これにより、本実施形態では、自然な歌詞進行を行うことができる。
【００５８】
図５には図示していないが、本来の発声タイミングのいずれのタイミングも到来していないタイミングで、その次に発声されるべき歌詞情報に応じた音高と同じ音高を演奏者が指定したとする。この場合、ＣＰＵ２０１は、次に発声されるべき歌声のタイミングまで、歌詞の進行及び自動伴奏の進行を一気に進める（ジャンプさせる）ように制御してもよい。
【００５９】
なお、演奏者が本来の発声タイミング以外のタイミングで演奏操作を行い、そのときに指定された音高が、次のタイミングで指定すべき音高と不一致であった場合に、既に出力された歌声音声出力データ２１７に応じた発声を繰り返し（音高を変更して）で出力してもよい。この場合には、例えば図５（ｂ）の本来のソング再生タイミングｔ１で発声された歌詞情報「き／Ｔｗｉｎ（第１文字）」に対応する歌声音声出力データ２１７に続けて、押鍵タイミングｔ１′における新たな押鍵により「き／Ｔｗｉｎ（第１文字）」に対応する歌声音声出力データ２１７が、別に発声されるように聞こえる。或いは、発声タイミング以外のタイミングでは、歌声音声出力データ２１７の発声を行わないように制御してもよい。
【００６０】
図６は、本実施形態において、図２のＲＯＭ２０２からＲＡＭ２０３に読み込まれる曲データのデータ構成例を示す図である。このデータ構成例は、ＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）用ファイルフォーマットの一つであるスタンダードＭＩＤＩファイルのフォーマットに準拠している。この曲データは、チャンクと呼ばれるデータブロックから構成される。具体的には、曲データは、ファイルの先頭にあるヘッダチャンクと、それに続く歌詞パート用の歌詞データが格納されるトラックチャンク１と、伴奏パート用の演奏データが格納されるトラックチャンク２とから構成される。
【００６１】
ヘッダチャンクは、ＣｈｕｎｋＩＤ、ＣｈｕｎｋＳｉｚｅ、ＦｏｒｍａｔＴｙｐｅ、ＮｕｍｂｅｒＯｆＴｒａｃｋ、及びＴｉｍｅＤｉｖｉｓｉｏｎの４つの値からなる。ＣｈｕｎｋＩＤは、ヘッダチャンクであることを示す"MThd"という半角４文字に対応する４バイトのアスキーコード「4D 54 68 64」（数字は１６進数）である。ＣｈｕｎｋＳｉｚｅは、ヘッダチャンクにおいて、ＣｈｕｎｋＩＤとＣｈｕｎｋＳｉｚｅを除く、ＦｏｒｍａｔＴｙｐｅ、ＮｕｍｂｅｒＯｆＴｒａｃｋ、及びＴｉｍｅＤｉｖｉｓｉｏｎの部分のデータ長を示す４バイトデータであり、データ長は６バイト：「00 00 00 06」（数字は１６進数）に固定されている。ＦｏｒｍａｔＴｙｐｅは、本実施形態の場合、複数トラックを使用するフォーマット１を意味する２バイトのデータ「00 01」（数字は１６進数）である。ＮｕｍｂｅｒＯｆＴｒａｃｋは、本実施形態の場合、歌詞パートと伴奏パートに対応する２トラックを使用することを示す２バイトのデータ「00 02」（数字は１６進数）である。ＴｉｍｅＤｉｖｉｓｉｏｎは、４分音符あたりの分解能を示すタイムベース値を示すデータであり、本実施形態の場合、１０進法で４８０を示す２バイトのデータ「01 E0」（数字は１６進数）である。
【００６２】
トラックチャンク１、２はそれぞれ、ＣｈｕｎｋＩＤ、ＣｈｕｎｋＳｉｚｅと、ＤｅｌｔａＴｉｍｅ＿１［ｉ］及びＥｖｅｎｔ＿１［ｉ］（トラックチャンク１／歌詞パートの場合）又はＤｅｌｔａＴｉｍｅ＿２［ｉ］及びＥｖｅｎｔ＿２［ｉ］（トラックチャンク２／伴奏パートの場合）からなる演奏データ組（０≦ｉ≦Ｌ：トラックチャンク１／歌詞パートの場合、０≦ｉ≦Ｍ：トラックチャンク２／伴奏パートの場合）とからなる。ＣｈｕｎｋＩＤは、トラックチャンクであることを示す"MTrk"という半角４文字に対応する４バイトのアスキーコード「4D 54 72 6B」（数字は１６進数）である。ＣｈｕｎｋＳｉｚｅは、各トラックチャンクにおいて、ＣｈｕｎｋＩＤとＣｈｕｎｋＳｉｚｅを除く部分のデータ長を示す４バイトデータである。
【００６３】
ＤｅｌｔａＴｉｍｅ＿１［ｉ］は、その直前のＥｖｅｎｔ＿１［ｉ−１］の実行時刻からの待ち時間（相対時間）を示す１〜４バイトの可変長データである。同様に、ＤｅｌｔａＴｉｍｅ＿２［ｉ］は、その直前のＥｖｅｎｔ＿２［ｉ−１］の実行時刻からの待ち時間（相対時間）を示す１〜４バイトの可変長データである。Ｅｖｅｎｔ＿１［ｉ］は、トラックチャンク１／歌詞パートにおいて、歌詞の発声タイミングと音高を指示するメタイベントである。Ｅｖｅｎｔ＿２［ｉ］は、トラックチャンク２／伴奏パートにおいて、ノートオン又はノートオフを指示するＭＩＤＩイベント、又は拍子を指示するメタイベントである。トラックチャンク１／歌詞パートに対して、各演奏データ組ＤｅｌｔａＴｉｍｅ＿１［ｉ］及びＥｖｅｎｔ＿１［ｉ］において、その直前のＥｖｅｎｔ＿１［ｉ−１］の実行時刻からＤｅｌｔａＴｉｍｅ＿１［ｉ］だけ待った上でＥｖｅｎｔ＿１［ｉ］が実行されることにより、歌詞の発声進行が実現される。一方、トラックチャンク２／伴奏パートに対して、各演奏データ組ＤｅｌｔａＴｉｍｅ＿２［ｉ］及びＥｖｅｎｔ＿２［ｉ］において、その直前のＥｖｅｎｔ＿２［ｉ−１］の実行時刻からＤｅｌｔａＴｉｍｅ＿２［ｉ］だけ待った上でＥｖｅｎｔ＿２［ｉ］が実行されることにより、自動伴奏の進行が実現される。
【００６４】
図７は、本実施形態における電子楽器の制御処理例を示すメインフローチャートである。この制御処理は例えば、図２のＣＰＵ２０１が、ＲＯＭ２０２からＲＡＭ２０３にロードされた制御処理プログラムを実行する動作である。
【００６５】
ＣＰＵ２０１は、まず初期化処理を実行した後（ステップＳ７０１）、ステップＳ７０２からＳ７０８の一連の処理を繰り返し実行する。
【００６６】
この繰返し処理において、ＣＰＵ２０１はまず、スイッチ処理を実行する（ステップＳ７０２）。ここでは、ＣＰＵ２０１は、図２のキースキャナ２０６からの割込みに基づいて、図１の第１のスイッチパネル１０２又は第２のスイッチパネル１０３のスイッチ操作に対応する処理を実行する。
【００６７】
次に、ＣＰＵ２０１は、図２のキースキャナ２０６からの割込みに基づいて図１の鍵盤１０１の何れかの鍵が操作されたか否かを判定して処理する鍵盤処理を実行する（ステップＳ７０３）。ここでは、ＣＰＵ２０１は、演奏者による何れかの鍵の押鍵又は離鍵の操作に応じて、図２の音源ＬＳＩ２０４に対して、発音開始又は発音停止を指示する発音制御データ２１６を出力する。
【００６８】
次に、ＣＰＵ２０１は、図１のＬＣＤ１０４に表示すべきデータを処理し、そのデータを、図２のＬＣＤコントローラ２０８を介してＬＣＤ１０４に表示する表示処理を実行する（ステップＳ７０４）。ＬＣＤ１０４に表示されるデータとしては、例えば演奏される歌声音声出力データ２１７に対応する歌詞とその歌詞に対応するメロディの楽譜や、各種設定情報がある（後述する図１３及び図１４を参照）。
【００６９】
次に、ＣＰＵ２０１は、ソング再生処理を実行する（ステップＳ７０５）。この処理においては、ＣＰＵ２０１が、演奏者の演奏に基づいて図５で説明した制御処理を実行し、歌声データ２１５を生成して音声合成ＬＳＩ２０５に出力する。
【００７０】
続いて、ＣＰＵ２０１は、音源処理を実行する（ステップＳ７０６）。音源処理において、ＣＰＵ２０１は、音源ＬＳＩ２０４における発音中の楽音のエンベロープ制御等の制御処理を実行する。
【００７１】
続いて、ＣＰＵ２０１は、音声合成処理を実行する（ステップＳ７０７）。音声合成処理において、ＣＰＵ２０１は、音声合成ＬＳＩ２０５による音声合成の実行を制御する。
【００７２】
最後にＣＰＵ２０１は、演奏者が特には図示しないパワーオフスイッチを押してパワーオフしたか否かを判定する（ステップＳ７０８）。ステップＳ７０８の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ７０２の処理に戻る。ステップＳ７０８の判定がＹＥＳならば、ＣＰＵ２０１は、図７のフローチャートで示される制御処理を終了し、電子鍵盤楽器１００の電源を切る。
【００７３】
図８（ａ）、（ｂ）、及び（ｃ）はそれぞれ、図７のステップＳ７０１の初期化処理、図７のステップＳ７０２のスイッチ処理における後述する図９のステップＳ９０２のテンポ変更処理、及び同じく図９のステップＳ９０６のソング開始処理の詳細例を示すフローチャートである。
【００７４】
まず、図７のステップＳ７０１の初期化処理の詳細例を示す図８（ａ）において、ＣＰＵ２０１は、ＴｉｃｋＴｉｍｅの初期化処理を実行する。本実施形態において、歌詞の進行及び自動伴奏は、ＴｉｃｋＴｉｍｅという時間を単位として進行する。図６の曲データのヘッダチャンク内のＴｉｍｅＤｉｖｉｓｉｏｎ値として指定されるタイムベース値は４分音符の分解能を示しており、この値が例えば４８０ならば、４分音符は４８０ＴｉｃｋＴｉｍｅの時間長を有する。また、図６の曲データのトラックチャンク内の待ち時間ＤｅｌｔａＴｉｍｅ＿１［ｉ］値及びＤｅｌｔａＴｉｍｅ＿２［ｉ］値も、ＴｉｃｋＴｉｍｅの時間単位によりカウントされる。ここで、１ＴｉｃｋＴｉｍｅが実際に何秒になるかは、曲データに対して指定されるテンポによって異なる。今、テンポ値をＴｅｍｐｏ［ビート／分］、上記タイムベース値をＴｉｍｅＤｉｖｉｓｉｏｎとすれば、ＴｉｃｋＴｉｍｅの秒数は、次式により算出される。
【００７５】
ＴｉｃｋＴｉｍｅ［秒］＝６０／Ｔｅｍｐｏ／ＴｉｍｅＤｉｖｉｓｉｏｎ  （６）
【００７６】
そこで、図８（ａ）のフローチャートで例示される初期化処理において、ＣＰＵ２０１はまず、上記（６）式に対応する演算処理により、ＴｉｃｋＴｉｍｅ［秒］を算出する（ステップＳ８０１）。なお、テンポ値Ｔｅｍｐｏは、初期状態では図２のＲＯＭ２０２に所定の値、例えば６０［ビート／秒］が記憶されているとする。或いは、不揮発性メモリに、前回終了時のテンポ値が記憶されていてもよい。
【００７７】
次に、ＣＰＵ２０１は、図２のタイマ２１０に対して、ステップＳ８０１で算出したＴｉｃｋＴｉｍｅ［秒］によるタイマ割込みを設定する（ステップＳ８０２）。この結果、タイマ２１０において上記ＴｉｃｋＴｉｍｅ［秒］が経過する毎に、ＣＰＵ２０１に対して歌詞進行及び自動伴奏のための割込み（以下「自動演奏割込み」と記載）が発生する。従って、この自動演奏割込みに基づいてＣＰＵ２０１で実行される自動演奏割込み処理（後述する図１０）では、１ＴｉｃｋＴｉｍｅ毎に歌詞進行及び自動伴奏を進行させる制御処理が実行されることになる。
【００７８】
続いて、ＣＰＵ２０１は、図２のＲＡＭ２０３の初期化等のその他初期化処理を実行する（ステップＳ８０３）。その後、ＣＰＵ２０１は、図８（ａ）のフローチャートで例示される図７のステップＳ７０１の初期化処理を終了する。
【００７９】
図８（ｂ）及び（ｃ）のフローチャートについては、後述する。図９は、図７のステップＳ７０２のスイッチ処理の詳細例を示すフローチャートである。
【００８０】
ＣＰＵ２０１はまず、図１の第１のスイッチパネル１０２内のテンポ変更スイッチにより歌詞進行及び自動伴奏のテンポが変更されたか否かを判定する（ステップＳ９０１）。その判定がＹＥＳならば、ＣＰＵ２０１は、テンポ変更処理を実行する（ステップＳ９０２）。この処理の詳細は、図８（ｂ）を用いて後述する。ステップＳ９０１の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ９０２の処理はスキップする。
【００８１】
次に、ＣＰＵ２０１は、図１の第２のスイッチパネル１０３において何れかのソング曲が選曲されたか否かを判定する（ステップＳ９０３）。その判定がＹＥＳならば、ＣＰＵ２０１は、ソング曲読込み処理を実行する（ステップＳ９０４）。この処理は、図６で説明したデータ構造を有する曲データを、図２のＲＯＭ２０２からＲＡＭ２０３に読み込む処理である。これ以降、図６に例示されるデータ構造内のトラックチャンク１又は２に対するデータアクセスは、ＲＡＭ２０３に読み込まれた曲データに対して実行される。ステップＳ９０３の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ９０４の処理はスキップする。
【００８２】
続いて、ＣＰＵ２０１は、図１の第１のスイッチパネル１０２においてソング開始スイッチが操作されたか否かを判定する（ステップＳ９０５）。その判定がＹＥＳならば、ＣＰＵ２０１は、ソング開始処理を実行する（ステップＳ９０６）。この処理の詳細は、図８（ｃ）を用いて後述する。ステップＳ９０５の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ９０６の処理はスキップする。
【００８３】
最後に、ＣＰＵ２０１は、図１の第１のスイッチパネル１０２又は第２のスイッチパネル１０３においてその他のスイッチが操作されたか否かを判定し、各スイッチ操作に対応する処理を実行する（ステップＳ９０７）。その後、ＣＰＵ２０１は、図９のフローチャートで例示される図７のステップＳ７０２のスイッチ処理を終了する。
【００８４】
図８（ｂ）は、図９のステップＳ９０２のテンポ変更処理の詳細例を示すフローチャートである。前述したように、テンポ値が変更されるとＴｉｃｋＴｉｍｅ［秒］も変更になる。図８（ｂ）のフローチャートでは、ＣＰＵ２０１は、このＴｉｃｋＴｉｍｅ［秒］の変更に関する制御処理を実行する。
【００８５】
まず、ＣＰＵ２０１は、図７のステップＳ７０１の初期化処理で実行された図８（ａ）のステップＳ８０１の場合と同様にして、前述した（６）式に対応する演算処理により、ＴｉｃｋＴｉｍｅ［秒］を算出する（ステップＳ８１１）。なお、テンポ値Ｔｅｍｐｏは、図１の第１のスイッチパネル１０２内のテンポ変更スイッチにより変更された後の値がＲＡＭ２０３等に記憶されているものとする。
【００８６】
次に、ＣＰＵ２０１は、図７のステップＳ７０１の初期化処理で実行された図８（ａ）のステップＳ８０２の場合と同様にして、図２のタイマ２１０に対して、ステップＳ８１１で算出したＴｉｃｋＴｉｍｅ［秒］によるタイマ割込みを設定する（ステップＳ８１２）。その後、ＣＰＵ２０１は、図８（ｂ）のフローチャートで例示される図９のステップＳ９０２のテンポ変更処理を終了する。
【００８７】
図８（ｃ）は、図９のステップＳ９０６のソング開始処理の詳細例を示すフローチャートである。
【００８８】
まず、ＣＰＵ２０１は、自動演奏の進行において、ＴｉｃｋＴｉｍｅを単位として、直前のイベントの発生時刻からの相対時間をカウントするためのＲＡＭ２０３上の変数ＤｅｌｔａＴ＿１（トラックチャンク１）及びＤｅｌｔａＴ＿２（トラックチャンク２）の値を共に０に初期設定する。次に、ＣＰＵ２０１は、図６に例示される曲データのトラックチャンク１内の演奏データ組ＤｅｌｔａＴｉｍｅ＿１［ｉ］及びＥｖｅｎｔ＿１［ｉ］（１≦ｉ≦Ｌ−１）の夫々ｉを指定するためのＲＡＭ２０３上の変数ＡｕｔｏＩｎｄｅｘ＿１と、同じくトラックチャンク２内の演奏データ組ＤｅｌｔａＴｉｍｅ＿２［ｉ］及びＥｖｅｎｔ＿２［ｉ］（１≦ｉ≦Ｍ−１）の夫々ｉを指定するためのＲＡＭ２０３上の変数ＡｕｔｏＩｎｄｅｘ＿２の各値を共に０に初期設定する（以上、ステップＳ８２１）。これにより、図６の例では、初期状態としてまず、トラックチャンク１内の先頭の演奏データ組ＤｅｌｔａＴｉｍｅ＿１［０］とＥｖｅｎｔ＿１［０］、及びトラックチャンク２内の先頭の演奏データ組ＤｅｌｔａＴｉｍｅ＿２［０］とＥｖｅｎｔ＿２［０］がそれぞれ参照される。
【００８９】
次に、ＣＰＵ２０１は、現在のソング位置を指示するＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘの値を０に初期設定する（ステップＳ８２２）。
【００９０】
更に、ＣＰＵ２０１は、歌詞及び伴奏の進行をするか（＝１）しないか（＝０）を示すＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔの値を１（進行する）に初期設定する（ステップＳ８２３）。
【００９１】
その後、ＣＰＵ２０１は、演奏者が、図１の第１のスイッチパネル１０２により歌詞の再生に合わせて伴奏の再生を行う設定を行っているか否かを判定する（ステップＳ８２４）。
【００９２】
ステップＳ８２４の判定がＹＥＳならば、ＣＰＵ２０１は、ＲＡＭ２０３上の変数Ｂａｎｓｏｕの値を１（伴奏有り）に設定する（ステップＳ８２５）。逆に、ステップＳ８２４の判定がＮＯならば、ＣＰＵ２０１は、変数Ｂａｎｓｏｕの値を０（伴奏無し）に設定する（ステップＳ８２６）。ステップＳ８２５又はＳ８２６の処理の後、ＣＰＵ２０１は、図８（ｃ）のフローチャートで示される図９のステップＳ９０６のソング開始処理を終了する。
【００９３】
図１０は、図２のタイマ２１０においてＴｉｃｋＴｉｍｅ［秒］毎に発生する割込み（図８（ａ）のステップＳ８０２又は図８（ｂ）のステップＳ８１２を参照）に基づいて実行される自動演奏割込み処理の詳細例を示すフローチャートである。以下の処理は、図６に例示される曲データのトラックチャンク１及び２の演奏データ組に対して実行される。
【００９４】
まず、ＣＰＵ２０１は、トラックチャンク１に対応する一連の処理（ステップＳ１００１からＳ１００６）を実行する。始めにＣＰＵ２０１は、ＳｏｎｇＳｔａｒｔ値が１であるか否か、即ち歌詞及び伴奏の進行が指示されているか否かを判定する（ステップＳ１００１）。
【００９５】
ＣＰＵ２０１は、歌詞及び伴奏の進行が指示されていないと判定した（ステップＳ１００１の判定がＮＯである）場合には、ＣＰＵ２０１は、歌詞及び伴奏の進行は行わずに図１０のフローチャートで例示される自動演奏割込み処理をそのまま終了する。
【００９６】
ＣＰＵ２０１は、歌詞及び伴奏の進行が指示されていると判定した（ステップＳ１００１の判定がＹＥＳである）場合には、トラックチャンク１に関する前回のイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿１値が、ＡｕｔｏＩｎｄｅｘ＿１値が示すこれから実行しようとする演奏データ組の待ち時間ＤｅｌｔａＴｉｍｅ＿１［ＡｕｔｏＩｎｄｅｘ＿１］に一致したか否かを判定する（ステップＳ１００２）。
【００９７】
ステップＳ１００２の判定がＮＯならば、ＣＰＵ２０１は、トラックチャンク１に関して、前回のイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿１値を＋１インクリメントさせて、今回の割込みに対応する１ＴｉｃｋＴｉｍｅ単位分だけ時刻を進行させる（ステップＳ１００３）。その後、ＣＰＵ２０１は、後述するステップＳ１００７に移行する。
【００９８】
ステップＳ１００２の判定がＹＥＳになると、ＣＰＵ２０１は、トラックチャンク１に関して、ＡｕｔｏＩｎｄｅｘ＿１値が示す演奏データ組のイベントＥｖｅｎｔ［ＡｕｔｏＩｎｄｅｘ＿１］を実行する（ステップＳ１００４）。このイベントは、歌詞データを含むソングイベントである。
【００９９】
続いて、ＣＰＵ２０１は、トラックチャンク１内の次に実行すべきソングイベントの位置を示すＡｕｔｏＩｎｄｅｘ＿１値を、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘに格納する（ステップＳ１００４）。
【０１００】
更に、ＣＰＵ２０１は、トラックチャンク１内の演奏データ組を参照するためのＡｕｔｏＩｎｄｅｘ＿１値を＋１インクリメントする（ステップＳ１００５）。
【０１０１】
また、ＣＰＵ２０１は、トラックチャンク１に関して今回参照したソングイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿１値を０にリセットする（ステップＳ１００６）。その後、ＣＰＵ２０１は、ステップＳ１００７の処理に移行する。
【０１０２】
次に、ＣＰＵ２０１は、トラックチャンク２に対応する一連の処理（ステップＳ１００７からＳ１０１３）を実行する。始めにＣＰＵ２０１は、トラックチャンク２に関する前回のイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿２値が、ＡｕｔｏＩｎｄｅｘ＿２値が示すこれから実行しようとする演奏データ組の待ち時間ＤｅｌｔａＴｉｍｅ＿２［ＡｕｔｏＩｎｄｅｘ＿２］に一致したか否かを判定する（ステップＳ１００７）。
【０１０３】
ステップＳ１００７の判定がＮＯならば、ＣＰＵ２０１は、トラックチャンク２に関して、前回のイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿２値を＋１インクリメントさせて、今回の割込みに対応する１ＴｉｃｋＴｉｍｅ単位分だけ時刻を進行させる（ステップＳ１００８）。その後、ＣＰＵ２０１は、図１０のフローチャートで示される自動演奏割込み処理を終了する。
【０１０４】
ステップＳ１００７の判定がＹＥＳならば、ＣＰＵ２０１は、伴奏再生を指示するＲＡＭ２０３上の変数Ｂａｎｓｏｕの値が１（伴奏有り）であるか否かを判定する（ステップＳ１００９）（図８（ｃ）のステップＳ８２４からＳ８２６を参照）。
【０１０５】
ステップＳ１００９の判定がＹＥＳならば、ＣＰＵ２０１は、ＡｕｔｏＩｎｄｅｘ＿２値が示すトラックチャンク２に関する伴奏に関するイベントＥｖｅｎｔ＿２［ＡｕｔｏＩｎｄｅｘ＿２］を実行する（ステップＳ１０１０）。ここで実行されるイベントＥｖｅｎｔ＿２［ＡｕｔｏＩｎｄｅｘ＿２］が、例えばノートオンイベントであれば、そのノートオンイベントにより指定されるキーナンバー及びベロシティにより、図２の音源ＬＳＩ２０４に対して伴奏用の楽音の発音命令が発行される。一方、イベントＥｖｅｎｔ＿２［ＡｕｔｏＩｎｄｅｘ＿２］が、例えばノートオフイベントであれば、そのノートオフイベントにより指定されるキーナンバー及びベロシティにより、図２の音源ＬＳＩ２０４に対して発音中の伴奏用の楽音の消音命令が発行される。
【０１０６】
一方、ステップＳ１００９の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１０１０をスキップすることにより、今回の伴奏に関するイベントＥｖｅｎｔ＿２［ＡｕｔｏＩｎｄｅｘ＿２］は実行せずに、歌詞に同期した進行のために、次のステップＳ１０１１の処理に進んで、イベントを進める制御処理のみを実行する。
【０１０７】
ステップＳ１０１０の後又はステップＳ１００９の判定がＮＯの場合に、ＣＰＵ２０１は、トラックチャンク２上の伴奏データのための演奏データ組を参照するためのＡｕｔｏＩｎｄｅｘ＿２値を＋１インクリメントする（ステップＳ１０１１）。
【０１０８】
また、ＣＰＵ２０１は、トラックチャンク２に関して今回実行したイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿２値を０にリセットする（ステップＳ１０１２）。
【０１０９】
そして、ＣＰＵ２０１は、ＡｕｔｏＩｎｄｅｘ＿２値が示す次に実行されるトラックチャンク２上の演奏データ組の待ち時間ＤｅｌｔａＴｉｍｅ＿２［ＡｕｔｏＩｎｄｅｘ＿２］が０であるか否か、即ち、今回のイベントと同時に実行されるイベントであるか否かを判定する（ステップＳ１０１３）。
【０１１０】
ステップＳ１０１３の判定がＮＯならば、ＣＰＵ２０１は、図１０のフローチャートで示される今回の自動演奏割込み処理を終了する。
【０１１１】
ステップＳ１０１３の判定がＹＥＳならば、ＣＰＵ２０１は、ステップＳ１００９に戻って、ＡｕｔｏＩｎｄｅｘ＿２値が示すトラックチャンク２上で次に実行される演奏データ組のイベントＥｖｅｎｔ＿２［ＡｕｔｏＩｎｄｅｘ＿２］に関する制御しょりを繰り返す。ＣＰＵ２０１は、今回同時に実行される回数分だけ、ステップＳ１００９からＳ１０１３の処理を繰り返し実行する。以上の処理シーケンスは、例えば和音などのように複数のノートオンイベントが同時タイミングで発音されるような場合に実行される。
【０１１２】
図１１は、図７のステップＳ７０５のソング再生処理の第１の実施形態の詳細例を示すフローチャートである。この処理は、図５で説明した本実施形態による制御処理を実行するものである。
【０１１３】
まずＣＰＵ２０１は、図１０の自動演奏割込み処理におけるステップＳ１００４で、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘに、値がセットされてＮｕｌｌ値でなくなっているか否かを判定する（ステップＳ１１０１）。このＳｏｎｇＩｎｄｅｘ値は、現在のタイミングが歌声の再生タイミングになっているか否かを示すものである。
【０１１４】
ステップＳ１１０１の判定がＹＥＳになった、即ち現時点がソング再生のタイミング（図５の例のｔ１、ｔ２、ｔ３、ｔ４、ｔ５、ｔ６、ｔ７等）になったら、ＣＰＵ２０１は、図７のステップＳ７０３の鍵盤処理により演奏者による図１の鍵盤１０１上で新たな押鍵が検出されているか否かを判定する（ステップＳ１１０２）。
【０１１５】
ステップＳ１１０２の判定がＹＥＳならば、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘが示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ］から音高を読出し、演奏者による押鍵により指定された指定音高が読み出した音高と一致するか否かを判定する（ステップＳ１１０３）。
【０１１６】
ステップＳ１１０３の判定がＹＥＳならば、ＣＰＵ２０１は、演奏者による押鍵により指定された指定音高を、発声音高として特には図示しないレジスタ又はＲＡＭ２０３上の変数にセットする（ステップＳ１１０４）。
【０１１７】
続いて、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘが示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ］から、歌詞文字列を読み出す。ＣＰＵ２０１は、読み出した歌詞文字列に対応する歌声音声出力データ２１７を、ステップＳ１１０４で設定された押鍵に基づく指定音高がセットされた発声音高で発声させるための歌声データ２１５を生成し、音声合成ＬＳＩ２０５に対して発声処理を指示する（ステップＳ１１０５）。
【０１１８】
以上のステップＳ１１０４とＳ１１０５の処理は、図５（ｂ）のソング再生タイミングｔ１、ｔ２、ｔ３′、ｔ４に関して前述した制御処理に対応する。
【０１１９】
ステップＳ１１０５の処理の後、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘが示す再生を行ったソング位置を、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘ＿ｐｒｅに記憶させる（ステップＳ１１０６）。
【０１２０】
次に、ＣＰＵ２０１は、変数ＳｏｎｇＩｎｄｅｘの値をＮｕｌｌ値にクリアして、これ以降のタイミングをソング再生のタイミングでない状態にする（ステップＳ１１０７）。
【０１２１】
更に、ＣＰＵ２０１は、歌詞及び自動伴奏の進行を制御するＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに、進行を指示する値１をセットする（ステップＳ１１０８）。その後、ＣＰＵ２０１は、図１１のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１２２】
図５（ｂ）のタイミングｔ３に関して説明したように、歌詞及び自動伴奏の進行が停止している状態で、タイミングｔ３′において、演奏（押鍵）による指定音高が曲データから読出した音高に一致すると、ステップＳ１１０１の判定がＹＥＳ→ステップＳ１１０２の判定がＹＥＳと進んで、ステップＳ１１０５でＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ］が示す歌声の発声が行われた後に、上述のようにステップＳ１１０８で変数ＳｏｎｇＳｔａｒｔの値が１にセットされる。この結果、図１０の自動演奏割込み処理において、ステップＳ１００１の判定がＹＥＳとなって、歌声と自動伴奏の進行が再開される。
【０１２３】
前述したステップＳ１１０３の判定がＮＯ、即ち演奏者による押鍵により指定された指定音高が曲データから読出した音高と不一致ならば、ＣＰＵ２０１は、歌詞及び自動伴奏の進行を制御するＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに、進行の停止を指示する値０をセットする（ステップＳ１１０９）。その後、ＣＰＵ２０１は、図１１のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１２４】
図５（ｂ）のタイミングｔ３に関して説明したように、歌声の発声タイミングｔ３で、演奏（押鍵）による指定音高が曲データから読み出した音高と不一致になると、ステップＳ１１０１の判定がＹＥＳ→ステップＳ１１０２の判定がＹＥＳ→ステップＳ１１０３の判定がＮＯと進んで、上述のようにステップＳ１１０９で変数ＳｏｎｇＳｔａｒｔの値が０にセットされる。この結果、図１０の自動演奏割込み処理において、ステップＳ１００１の判定がＮＯとなって、歌声と自動伴奏の進行が停止される。
【０１２５】
前述したステップＳ１１０１の判定がＮＯである、即ち現時点がソング再生のタイミングではないときには、ＣＰＵ２０１は、図７のステップＳ７０３の鍵盤処理により演奏者による図１の鍵盤１０１上で新たな押鍵が検出されているか否かを判定する（ステップＳ１１１０）。
【０１２６】
ステップＳ１１１０の判定がＮＯならば、ＣＰＵ２０１はそのまま、図１１のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１２７】
ステップＳ１１１０の判定がＹＥＳならば、ＣＰＵ２０１は、現在音声合成ＬＳＩ２０５が発声処理中の、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘ＿ｐｒｅが示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ＿ｐｒｅ］の歌詞文字列に対応する歌声音声出力データ２１７の音高を、ステップＳ１１１０で検出された演奏者の押鍵に基づく指定音高に変更することを指示する歌声データ２１５を生成し、音声合成ＬＳＩ２０５に出力する（ステップＳ１１１１）。このとき、歌声データ２１５において、既に発声処理中の歌詞の音素のうち後半部分の音素、例えば歌詞文字列「き」であればそれを構成する音素列「／ｋ／」「／ｉ／」のうちの後半の「／ｉ／」が始まるフレーム（図４（ｂ）及び（ｃ）を参照）が、指定音高への変更の開始位置にセットされる。
【０１２８】
以上のステップＳ１１１１の処理により、現在の押鍵タイミングの直前の本来のタイミング、例えば図５（ｂ）のｔ１から発声されている歌声音声出力データ２１７の発声がその音高が演奏者により指定された指定音高に変更されて、例えば図５（ｂ）の現在の押鍵タイミングｔ１′でその発声を継続させることが可能となる。
【０１２９】
ステップＳ１１１１の処理の後、ＣＰＵ２０１は、図１１のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１３０】
図１２は、図７のステップＳ７０５のソング再生処理の第２の実施形態の詳細例を示すフローチャートである。この処理は、図５で説明した本実施形態による他の制御処理を実行するものである。
【０１３１】
まず、ＣＰＵ２０１は、図７のステップＳ７０３の鍵盤処理により演奏者による図１の鍵盤１０１上で新たな押鍵が検出されているか否かを判定する（ステップＳ１２０１）。
【０１３２】
ステップＳ１２０１の判定がＹＥＳならば、ＣＰＵ２０１は、図１０の自動演奏割込み処理におけるステップＳ１００４で、現在のタイミングが歌声の再生タイミングになっているか否かを示すＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘに、値がセットされてＮｕｌｌ値でなくなっているか否かを判定する（ステップＳ１１０２）。
【０１３３】
ステップＳ１１０２の判定がＹＥＳになった、即ち現時点がソング再生のタイミング（図５の例のｔ１、ｔ２、ｔ３、ｔ４等）になったら、ＣＰＵ２０１は、演奏者による押鍵により指定された指定音高を、発声音高として特には図示しないレジスタ又はＲＡＭ２０３上の変数にセットする（ステップＳ１２０３）。
【０１３４】
続いて、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘが示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ］から、歌詞文字列を読み出す。ＣＰＵ２０１は、読み出した歌詞文字列に対応する歌声音声出力データ２１７を、ステップＳ１１０４で設定された押鍵に基づく指定音高がセットされた発声音高で発声させるための歌声データ２１５を生成し、音声合成ＬＳＩ２０５に対して発声処理を指示する（ステップＳ１２０４）。
【０１３５】
その後、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘが示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ］から音高を読出し、演奏者による押鍵により指定された指定音高が曲データから読出した音高と一致するか否かを判定する（ステップＳ１２０５）。
【０１３６】
ステップＳ１２０５の判定がＹＥＳならば、ＣＰＵ２０１は、ステップＳ１２０６に進む。この処理は、図５（ｂ）のソング再生タイミングｔ１、ｔ２、ｔ３′、ｔ４に関して前述した制御処理に対応する。
【０１３７】
ステップＳ１２０６において、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘが示す再生を行ったソング位置を、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘ＿ｐｒｅに記憶させる。
【０１３８】
次に、ＣＰＵ２０１は、変数ＳｏｎｇＩｎｄｅｘの値をＮｕｌｌ値にクリアして、これ以降のタイミングをソング再生のタイミングでない状態にする（ステップＳ１２０７）。
【０１３９】
更に、ＣＰＵ２０１は、歌詞及び自動伴奏の進行を制御するＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに、進行を指示する値１をセットする（ステップＳ１２０８）。その後、ＣＰＵ２０１は、図１２のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１４０】
前述したステップＳ１２０５の判定がＮＯならば、ＣＰＵ２０１は、即ち演奏者による押鍵により指定された指定音高が曲データから読出した音高と不一致ならば、ＣＰＵ２０１は、歌詞及び自動伴奏の進行を制御するＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに、進行の停止を指示する値０をセットする（ステップＳ１２０９）。その後、ＣＰＵ２０１は、図１２のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。これにより、図１０の自動演奏割込み処理においてステップＳ１００１の判定がＹＥＳとなって歌声と自動伴奏の進行が再開されることは、図１１のステップＳ１１０８の場合と同様である。
【０１４１】
前述したステップＳ１２０５の判定がＮＯ、即ち演奏者による押鍵により指定された指定音高が曲データから読出した音高と不一致ならば、ＣＰＵ２０１は、歌詞及び自動伴奏の進行を制御するＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに、進行の停止を指示する値０をセットする（ステップＳ１２１０）。その後、ＣＰＵ２０１は、図１２のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。これにより、図１０の自動演奏割込み処理においてステップＳ１００１の判定がＮＯとなって歌声と自動伴奏の進行が停止されることは、図１１のステップＳ１１０９の場合と同様である。
【０１４２】
この処理は、図５（ｂ）のソング再生タイミングｔ３に関して前述した制御処理に対応する。
【０１４３】
前述したステップＳ１２０１の判定がＹＥＳになった後、ステップＳ１２０２の判定がＮＯになった場合、即ち歌声を発声すべきタイミング以外で演奏者による演奏（押鍵）が発声した場合には、以下の制御処理が実行される。
【０１４４】
まず、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに値０をセットして歌声及び自動伴奏の進行をいったん停止させる（ステップＳ１２１１）（図１０のステップＳ１００１を参照）。
【０１４５】
次に、ＣＰＵ２０１は、現在の歌声及び自動伴奏の進行位置に関するＲＡＭ２０３上の各変数ＤｅｌｔａＴ＿１、ＤｅｌｔａＴ＿２、ＡｕｔｏＩｎｄｅｘ＿１、及びＡｕｔｏＩｎｄｅｘ＿２の値をそれぞれ、各変数ＤｅｌｔａＴ＿１＿ｎｏｗ、ＤｅｌｔａＴ＿２＿ｎｏｗ、ＡｕｔｏＩｎｄｅｘ＿１＿ｎｏｗ、及びＡｕｔｏＩｎｄｅｘ＿２＿ｎｏｗに退避させる（ステップＳ１２１２）。
【０１４６】
その後、ＣＰＵ２０１は、次ソングイベント検索処理を実行する（ステップＳ１２１３）。ここでは、次に到来する歌声に関するイベント情報を指示するＳｏｎｇＩｎｄｅｘ値が検索される。この処理の詳細については、後述する。
【０１４７】
ステップＳ１２１３の検索処理の後、ＣＰＵ２０１は、検索されたＳｏｎｇＩｎｄｅｘ値が示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ］から音高を読出し、演奏者による押鍵により指定された指定音高がその読出した音高と一致するか否かを判定する（ステップＳ１２１４）。
【０１４８】
ステップＳ１２１４の判定がＹＥＳならば、ＣＰＵ２０１は、制御処理を、ステップＳ１２０３→Ｓ１２０４→Ｓ１２０５の判定がＹＥＳ→Ｓ１２０６→Ｓ１２０７→Ｓ１２０８と進める。
【０１４９】
上述の一連の制御処理により、本来の発声タイミングが到来していないタイミングで、その次に発声されるべき歌声の音高と同じ音高の鍵を演奏者が押鍵した場合には、ＣＰＵ２０１は、次に発声されるべき歌声のタイミングまで、歌詞の進行及び自動伴奏の進行を一気に進める（ジャンプさせる）ように制御することができる。
【０１５０】
前述したステップＳ１２１４の判定がＮＯならば、ＣＰＵ２０１は、ステップＳ１２１２で退避させたＲＡＭ２０３上の各変数ＤｅｌｔａＴ＿１＿ｎｏｗ、ＤｅｌｔａＴ＿２＿ｎｏｗ、ＡｕｔｏＩｎｄｅｘ＿１＿ｎｏｗ、及びＡｕｔｏＩｎｄｅｘ＿２＿ｎｏｗの値をそれぞれ、各変数ＤｅｌｔａＴ＿１、ＤｅｌｔａＴ＿２、ＡｕｔｏＩｎｄｅｘ＿１、及びＡｕｔｏＩｎｄｅｘ＿２に戻して、ステップＳ１２１３の検索処理により進んだ分を、検索前の元の進行位置に戻す（ステップＳ１２１５）。
【０１５１】
その後、ＣＰＵ２０１は、現在音声合成ＬＳＩ２０５が発声処理中の、ＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘ＿ｐｒｅが示すＲＡＭ２０３上の曲データのトラックチャンク１上のソングイベントＥｖｅｎｔ＿１［ＳｏｎｇＩｎｄｅｘ＿ｐｒｅ］の歌詞文字列に対応する歌声音声出力データ２１７の音高を、ステップＳ１２０１で検出された演奏者の押鍵に基づく指定音高に変更することを指示する歌声データ２１５を生成し、音声合成ＬＳＩ２０５に出力する（ステップＳ１２１６）。
【０１５２】
このステップＳ１２１６の処理は、図１１のステップＳ１１１１の処理と同様であり、現在の押鍵タイミングの直前の本来のタイミング、例えば図５（ｂ）のｔ１から発声されている歌声音声出力データ２１７の発声がその音高が演奏者により演奏された指定音高に変更されて、例えば図５（ｂ）の現在の押鍵タイミングｔ１′でその発声を継続させることが可能となる。
【０１５３】
ステップＳ１２１６の処理の後、ＣＰＵ２０１は、ＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに値１をセットすることにより、ステップＳ１２１１で一時的に停止させた歌詞及び自動伴奏の進行を再開させる（ステップＳ１２０８）。その後、ＣＰＵ２０１は、図１２のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１５４】
前述したステップＳ１２０１の判定がＮＯである、即ち演奏者による演奏（押鍵）がなされていないときには、ＣＰＵ２０１は、図１０の自動演奏割込み処理におけるステップＳ１００４で、現在のタイミングが歌声の再生タイミングになっているか否かを示すＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘに、値がセットされてＮｕｌｌ値でなくなっているか否かを判定する（ステップＳ１２０９）。
【０１５５】
ステップＳ１２０９の判定がＮＯならば、ＣＰＵ２０１はそのまま、図１２のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。
【０１５６】
ステップＳ１２０９の判定がＹＥＳならば、ＣＰＵ２０１は、歌詞及び自動伴奏の進行を制御するＲＡＭ２０３上の変数ＳｏｎｇＳｔａｒｔに、進行の停止を指示する値０をセットする（ステップＳ１２１０）。その後、ＣＰＵ２０１は、図１２のフローチャートで示される図７のステップＳ７０５のソング再生処理を終了する。これにより、図１０の自動演奏割込み処理においてステップＳ１００１の判定がＮＯとなって歌声と自動伴奏の進行が停止されることは、図１１のステップＳ１１０９の場合と同様である。
【０１５７】
図１３は、図１２のステップＳ１２１３の次ソングイベント検索処理の詳細例を示すフローチャートである。図１３のフローチャートにおいて、図１０の自動演奏割込み処理の場合と同じステップ番号を付した部分は、図１０の場合と同じ処理を示すものとする。図１３の処理では、基本的には図１０の自動演奏割込み処理におけるステップＳ１００２からＳ１０１３までの一連の制御フローと同じ制御フローであって、イベントの実行を行う処理のみを除いた制御処理群が実行される。
【０１５８】
即ち、図１３において、ＣＰＵ２０１は、ステップＳ１００２で、トラックチャンク１に関する前回のイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿１値が、ＡｕｔｏＩｎｄｅｘ＿１値が示すこれから実行しようとする歌声に関する演奏データ組の待ち時間ＤｅｌｔａＴｉｍｅ＿１［ＡｕｔｏＩｎｄｅｘ＿１］に一致したと判定するまで、ステップＳ１００３で、ＤｅｌｔａＴ＿１値がインクリメントさせて、歌声の進行を進める。
【０１５９】
また、ＣＰＵ２０１は、トラックチャンク２に関する前回のイベントの発生時刻からの相対時刻を示すＤｅｌｔａＴ＿２値が、ＡｕｔｏＩｎｄｅｘ＿２値が示すこれから実行しようとする自動伴奏に関する演奏データ組の待ち時間ＤｅｌｔａＴｉｍｅ＿２［ＡｕｔｏＩｎｄｅｘ＿２］に一致してステップＳ１００７の判定がＹＥＳになる毎に、ＡｕｔｏＩｎｄｅｘ＿２値を進めると共に、ステップＳ１００７の判定がＮＯならば、ＤｅｌｔａＴ＿２値をインクリメントさせて、自動伴奏の進行を進め、その後、ステップＳ１００２の制御処理に戻る。
【０１６０】
以上の一連の制御処理の繰返しにおいて、ステップＳ１００２の判定がＹＥＳになると、ＣＰＵ２０１は、ＡｕｔｏＩｎｄｅｘ＿１値をＲＡＭ２０３上の変数ＳｏｎｇＩｎｄｅｘに格納して、図１３のフローチャートで示される図１２のステップＳ１２１３の次ソングイベント検索処理を終了する。
【０１６１】
図１４は、図６のデータ構造として例示した曲データをＭｕｓｉｃＸＭＬ形式で実施した場合の曲データの構成例を示す図である。このようなデータ構成により、歌詞文字列とメロディの楽譜データを持たせることが可能となる。そして、このような曲データをＣＰＵ２０１が例えば図７のステップＳ７０４の表示処理でパースすることにより、例えば図１の鍵盤１０１上で、現在ソング再生中の歌詞文字列に対応するメロディに対応する鍵を光らせて演奏者による歌詞文字列に対応する鍵の押鍵をガイドさせるような機能を持たせることが可能となる。同時に、例えば図１５に示されるような表示例の現在ソング再生中の歌詞文字列とそれに対応する楽譜を、図１のＬＣＤ１０４に表示させることが可能となる。
【０１６２】
以上説明した実施形態では、言語特徴量系列３１６から音響特徴量系列３１７を予測するために、音響モデル部３０６がＤＮＮ（ディープニューラルネットワーク）により実装される。その他、上記予測のために、音響モデル部３０６がＨＭＭ（Ｈｉｄｄｅｎ  Ｍａｒｋｏｖ  Ｍｏｄｅｌ：隠れマルコフモデル）によって実装されてもよい。この場合、音声学習部３０１内のモデル学習部３０５は、音声の音響的な特徴を精度良くモデル化するために，コンテキストを考慮したモデルを学習する。音響特徴量を詳細にモデル化するために、直前、直後の音素だけでなく、アクセント、品詞、文長などの要因も考慮する。しかし、コンテキストの組み合わせが膨大なものとなるため、すべてのコンテキストの組み合わせについて精度良くコンテキスト依存モデルを学習することができる音声データを用意することは困難である。この問題を解決するために、モデル学習部３０５は、決定木に基づくコンテキストクラスタリングの技術を採用することができる。決定木に基づくコンテキストクラスタリングでは、「直前の音素は／ａ／であるか？」などのコンテキストに関する質問を用いてコンテキストに依存したモデルを分類し，類似したコンテキストのモデルパラメータを、学習結果３１５として音響モデル部３０６に設定する。決定木の構造によって考慮されるコンテキストが変化するため，適切な決定木構造を選択することで高精度かつ汎化性能の高いコンテキストに依存したモデルを推定できる。図３の音声合成部３０２内の音響モデル部３０６は、テキスト解析部３０７により歌声データ２１５から抽出された言語特徴量系列３１６に従って、コンテキストに依存したＨＭＭを連結し，出力確率が最大となる音響特徴量系列３１７を予測する。
【０１６３】
以上説明した実施形態は、電子鍵盤楽器について本発明を実施したものであるが、本発明は電子弦楽器など他の電子楽器にも適用することができる。
【０１６４】
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
【０１６５】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
指定すべき第１音高と、指定された音高とが、一致するか否かを判断する判断処理と、
前記判断処理により前記第１音高との一致が判断された場合に、前記第１音高に対応する第１文字に応じた歌声を出力し、前記判断処理により前記第１音高との不一致が判断された場合に、前記判断処理により前記第１音高との一致が判断されるまで前記第１音高の次に指定すべき第２音高に対応する第２文字に応じた歌声を出力しない歌声出力処理と、
を実行する電子楽器。
（付記２）
前記歌声出力処理に合わせて伴奏データを出力する伴奏データ出力処理、を実行する付記１に記載の電子楽器。
（付記３）
前記歌声出力処理により前記第１音高に対応する前記第１文字に応じた歌声を出力後、前記第２音高を指定すべきタイミングの到来前に指定された音高が前記第２音高と不一致の場合に、出力された前記第１文字に応じた歌声の音高を前記指定された音高に変更して出力する音高変更処理、を実行する付記１または２に記載の電子楽器。
（付記４）
前記歌声出力処理により前記第１音高に対応する前記第１文字に応じた歌声を出力後、前記第２音高を指定すべきタイミングの到来前に指定された音高が前記第２音高と一致の場合に、前記第２音高を指定すべきタイミングの到来前に、前記指定に応じて、前記第２文字に応じた歌声の音高を前記第２音高で出力するとともに、前記伴奏データ出力処理が出力する伴奏データの進行を前記第２文字に応じた歌声の出力に合わせて進める制御処理、を実行する付記２または３に記載の電子楽器。
（付記５）
或る歌手が歌った歌声データ及び歌詞データによる機械学習により生成された学習済みモデルに基づいて、前記或る歌手に応じた歌声を音声合成する音声合成処理、を実行し、
前記歌声出力処理は、操作子が操作されたタイミングに応じて、前記音声合成処理により音声合成された歌声を前記操作された操作子により指定された音高で出力する付記１乃至４のいずれかに記載の電子楽器。
（付記６）
操作子を操作することにより音高を指定すべきタイミングに合わせて、指定すべき音高を示す識別子を表示する表示処理、を実行する付記１乃至５のいずれかに記載の電子楽器。
（付記７）
電子楽器のコンピュータに、
指定すべき第１音高と、指定された音高とが、一致するか否かを判断する判断処理と、
前記判断処理により前記第１音高との一致が判断された場合に、前記第１音高に対応する第１文字に応じた歌声を出力し、前記判断処理により前記第１音高との不一致が判断された場合に、前記判断処理により前記第１音高との一致が判断されるまで前記第１音高の次に指定すべき第２音高に対応する第２文字に応じた歌声を出力しない歌声出力処理と、
を実行させる方法。
（付記８）
電子楽器のコンピュータに、
指定すべき第１音高と、指定された音高とが、一致するか否かを判断する判断処理と、
前記判断処理により前記第１音高との一致が判断された場合に、前記第１音高に対応する第１文字に応じた歌声を出力し、前記判断処理により前記第１音高との不一致が判断された場合に、前記判断処理により前記第１音高との一致が判断されるまで前記第１音高の次に指定すべき第２音高に対応する第２文字に応じた歌声を出力しない歌声出力処理と、
を実行させるプログラム。
【符号の説明】
【０１６６】
１００  電子鍵盤楽器
１０１  鍵盤
１０２  第１のスイッチパネル
１０３  第２のスイッチパネル
１０４  ＬＣＤ
２００  制御システム
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  音源ＬＳＩ
２０５  音声合成ＬＳＩ
２０６  キースキャナ
２０８  ＬＣＤコントローラ
２０９  システムバス
２１０  タイマ
２１１、２１２  Ｄ／Ａコンバータ
２１３  ミキサ
２１４  アンプ
３０１  音声学習部
３０２  音声合成部
３０３  学習用テキスト解析部
３０４  学習用音響特徴量抽出
３０５  モデル学習部
３０６  音響モデル部
３０７  テキスト解析部
３０８  発声モデル部
３０９  音源生成部
３１０  合成フィルタ部
３１１  学習用歌声データ
３１２  学習用歌声音声データ
３１３  学習用言語特徴量系列
３１４  学習用音響特徴量系列
３１５  学習結果
３１６  言語特徴量系列
３１７  音響特徴量系列
３１８  スペクトル情報
３１９  音源情報
【図１】
2020013145.tif 000027
【図２】
2020013145.tif 000028
【図３】
2020013145.tif 000029
【図４】
2020013145.tif 000030
【図５】
2020013145.tif 000031
【図６】
2020013145.tif 000032
【図７】
2020013145.tif 000033
【図８】
2020013145.tif 000034
【図９】
2020013145.tif 000035
【図１０】
2020013145.tif 000036
【図１１】
2020013145.tif 000037
【図１２】
2020013145.tif 000038
【図１３】
2020013145.tif 000039
【図１４】
2020013145.tif 000040
【図１５】
2020013145.tif 000041
【手続補正書】
【提出日】令和1年9月17日(2019.9.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行する電子楽器。
【請求項２】
或る歌手の歌声データ及び歌詞データによる機械学習により生成された学習済みモデルに基づいて、前記或る歌手に応じた歌声を音声合成する音声合成処理、を実行し、
前記歌声出力処理は、操作子が操作されたタイミングに応じて前記音声合成処理により音声合成された歌声を、前記操作された操作子により指定された音高で出力する請求項１に記載の電子楽器。
【請求項３】
操作子を操作することにより音高を指定すべきタイミングの前に、指定すべき音高を示す識別子を表示する表示処理、を実行する請求項１または２に記載の電子楽器。
【請求項４】
電子楽器のコンピュータに、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行させる方法。
【請求項５】
電子楽器のコンピュータに、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行させるプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
態様の一例の電子楽器は、
第１タイミングに合わせて指定すべき第１音高が指定された場合に、前記第１タイミングに対応する第１文字に応じた前記第１音高の歌声データを出力し、前記第１タイミングの次の第２タイミングに合わせて指定すべき第２音高が前記第２タイミングよりも前に指定された場合に、前記第２タイミングの到来を待たずに前記第２タイミングに対応する第２文字に応じた前記第２音高の歌声データを出力する歌声出力処理と、
前記第１タイミングに対応する前記第１文字に応じた前記第１音高の歌声データの出力中、前記第１音高及び前記第２音高以外の第３音高が前記第２タイミングよりも前に指定された場合に、出力中の前記第１文字に応じた前記第１音高の歌声データの音高を前記第３音高に変更する音高変更処理と、
を実行する。