(57)【要約】【課題】巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させるカラオケ装置を実現する。【解決手段】曲データＫＤ中の曲データ本体を順次再生するカラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データ本体の発音ピッチとの差分を表すピッチ誤差データΔＰと、演奏時刻を表すタイミングデータｔとを生成して曲データＫＤに履歴記録する。ピッチ補正モードで曲データＫＤをカラオケ演奏させると、この曲データＫＤに履歴記録されたタイミングデータｔに応じて指定されるピッチ誤差データΔＰに応じて、カラオケ演奏に合せて歌唱するユーザの歌声を、曲データ本体の発音ピッチになるようにピッチ補正する。これにより、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させ得る。【選択図】図７
2007316416.tif 000002
【特許請求の範囲】
【請求項１】
曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、
カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段と
を具備することを特徴とするカラオケ装置。
【請求項２】
曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、
ユーザ操作に応じてピッチ補正を指示する指示手段と、
前記指示手段によりピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段と
を具備することを特徴とするカラオケ装置。
【請求項３】
カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成手段と、
前記ピッチ誤差データ生成手段がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成手段と、
前記ピッチ誤差データ生成手段により生成されるピッチ誤差データと、前記タイミングデータ生成手段により生成されるタイミングデータとを曲データに対応付けて前記曲データ記憶手段に登録する登録手段と
を更に具備することを特徴とする請求項１又は請求項２のいずれかに記載のカラオケ装置。
【請求項４】
前記ピッチ補正手段は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする請求項１又は請求項２のいずれに記載のカラオケ装置。
【請求項５】
曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、
カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理と
をコンピュータで実行させることを特徴とするカラオケ処理プログラム。
【請求項６】
曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、
ユーザ操作に応じてピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理と
をコンピュータで実行させることを特徴とするカラオケ処理プログラム。
【請求項７】
前記記憶処理は、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成処理と、
前記ピッチ誤差データ生成処理がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成処理と、
前記ピッチ誤差データ生成処理により生成されるピッチ誤差データと、前記タイミングデータ生成処理により生成されるタイミングデータとを曲データに対応付けてメモリ登録する登録処理と
を具備することを特徴とする請求項５又は請求項６のいずれかに記載のカラオケ処理プログラム。
【請求項８】
前記ピッチ補正処理は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする請求項５又は請求項６のいずれに記載のカラオケ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、歌唱練習をアシストする機能を備えたカラオケ装置およびカラオケ処理プログラムに関する。
【背景技術】
【０００２】
従来より、歌唱練習をアシストする機能を備えたカラオケ装置が知られている。例えば特許文献１には、メロディデータメモリに記憶される音階コードを読み出してカラオケ演奏するときに、使用者の歌声からピッチ抽出した周波数と、メロディデータメモリに記憶される音階コードとを比較し、不一致になると、現在読み出している音階コードのメモリアドレスを歌唱誤り位置として誤り位置メモリに登録しておき、次回に同じ曲をカラオケ演奏する際に、誤り位置メモリに登録された歌唱誤り位置で基準（手本）となるメロディ音を放音して使用者に正しい歌唱を促すようにしたカラオケ装置が開示されている。
【０００３】
【特許文献１】実開平７−４１５９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、上記特許文献１に開示の装置は、巧く歌唱できなかった箇所をユーザに喚起して正しい歌唱を促すだけなので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させる歌唱補助を行うことができない、という問題がある。
【０００５】
本発明は、上述した事情に鑑みてなされたもので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることができるカラオケ装置およびカラオケ処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段とを具備することを特徴とする。
【０００７】
請求項２に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、ユーザ操作に応じてピッチ補正を指示する指示手段と、前記指示手段によりピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段とを具備することを特徴とする。
【０００８】
上記請求項１又は請求項２のいずれかに従属する請求項３に記載の発明では、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成手段と、前記ピッチ誤差データ生成手段がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成手段と、前記ピッチ誤差データ生成手段により生成されるピッチ誤差データと、前記タイミングデータ生成手段により生成されるタイミングデータとを曲データに対応付けて前記曲データ記憶手段に登録する登録手段とを更に具備することを特徴とする。
【０００９】
上記請求項１又は請求項２のいずれかに従属する請求項４に記載の発明では、前記ピッチ補正手段は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする。
【００１０】
請求項５に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理とをコンピュータで実行させることを特徴とする。
【００１１】
請求項６に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、ユーザ操作に応じてピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理とをコンピュータで実行させることを特徴とする。
【００１２】
上記請求項５又は請求項６のいずれかに従属する請求項７に記載の発明では、前記記憶処理は、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成処理と、前記ピッチ誤差データ生成処理がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成処理と、前記ピッチ誤差データ生成処理により生成されるピッチ誤差データと、前記タイミングデータ生成処理により生成されるタイミングデータとを曲データに対応付けてメモリ登録する登録処理とを具備することを特徴とする。
【００１３】
上記請求項５又は請求項６のいずれかに従属する請求項８に記載の発明では、前記ピッチ補正処理は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする。
【発明の効果】
【００１４】
本発明では、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて予め記憶しておき、その内からカラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施の形態について説明する。
Ａ．構成  
（１）全体構成
図１は、本発明の実施の一形態によるカラオケ装置の全体構成を示すブロック図である。この図において、ＣＰＵ１０は、スイッチ部１５から供給されるスイッチイベントに応じて、プログラムＲＯＭ１１に記憶される所定のプログラムを実行して装置各部を制御する。プログラムＲＯＭ１１には、ＣＰＵ１０により実行される各種プログラムや制御データが記憶される。プログラムＲＯＭ１１に記憶される各種プログラムとは、後述する「メインルーチン」、「タイマインタラプト［１］処理」、「タイマインタラプト［２］処理」、「タイマインタラプト［３］処理」、「スイッチ処理」、「自動演奏処理」および「採点表示処理」を含み、これら本発明の要旨に係わる各処理の動作については追って詳述する。
【００１６】
ＲＡＭ１２は、ワークエリアおよびデータエリアを備える。ＲＡＭ１２のワークエリアには、ＣＰＵ１０の処理に用いる各種レジスタ・フラグデータが一時記憶される。ＲＡＭ１２のデータエリアには、ＣＰＵ１０の制御の下に、後述するマイク部１６から出力される入力音声データが一時記憶される。曲メモリ１３は、装置本体から着脱自在な記憶媒体であり、例えばフラッシュメモリなど電気的に書き換え可能な不揮発性メモリから構成される。曲メモリ１３は、曲データエリアおよび歌詞データエリアを備える。曲メモリ１３の曲データエリアには、カラオケ演奏される曲データ群が格納される。曲データ群の構成については追って述べる。曲メモリ１３の歌詞データエリアには、上記曲データ群に対応して歌詞字幕表示用の歌詞データが格納される。
【００１７】
ビデオエンコーダ１４は、ＣＰＵ１０の制御の下に、曲メモリ１３から読み出される歌詞データを表示画面に字幕表示させたり、後述する評価画面を表示させる映像出力に変換する。スイッチ部１５は、装置パネルに配設される各種スイッチの操作に応じたスイッチイベントを発生してＣＰＵ１０に供給する。スイッチ部１５に設けられる主要なスイッチとして、パワーオンオフする電源スイッチの他、曲選択スイッチ、ピッチ補正モードスイッチ、スタート／ストップスイッチ、採点表示スイッチおよび採点表示切替スイッチを備える。これらスイッチが意図するところについては追って述べる。
【００１８】
マイク部１６は、マイク、アンプおよびＡ／Ｄコンバータを備え、マイクを介して入力される音声信号（歌声）を増幅した後、入力音声データに変換して出力する。音源１７は、周知の波形メモリ読み出し方式で構成され、ＣＰＵ１０の制御の下に、曲メモリから読み出す曲データに応じて楽音合成してなる楽音データを発生する。ミキサ１８は、マイク部１６が発生する入力音声データと、音源１７が発生する楽音データとをそれぞれアナログ信号形式の音声信号および楽音信号に変換した後、それら両信号を混合して所定レベルに増幅した音声出力信号を発生する。発音部１９は、ミキサ１８から供給される音声出力信号をスピーカから放音する。
【００１９】
（２）曲データエリアの構成
次に、図２〜図４を参照して曲メモリ１３に設けられる曲データエリアの構成について説明する。上述した通り、曲メモリ１３の曲データエリアには、カラオケ演奏用の曲データ群が格納される。図２（ａ）は、曲データエリアに格納される曲データ群ＫＤＧの構成を示す図である。この図に示すように、曲データ群ＫＤＧは、複数曲分の曲データＫＤ（１）〜ＫＤ（ｎ）から構成される。１つの曲データＫＤは、曲データ本体、ピッチ誤差データ、タイミングデータ、採点データおよび小節位置データを備える。
【００２０】
図２（ｂ）は、曲データ本体の構成を示す図である。曲データ本体は、演奏開始時点からの経過時間でイベントタイミングを表すタイムＴと、曲を構成する各音の音高およびノートオン（発音）・ノートオフ（消音）を表すと共に、メロディパートや伴奏パートなど演奏パートを識別するイベントＥＶＴとが曲進行順に配列される、いわゆる絶対時間方式と呼ばれるデータ形式で形成され、その終端には曲の終わりを表すデータＥＮＤが設けられる。なお、図２（ｂ）に図示した典型例では、曲データ本体の先頭がタイムＴとなっているが、この例に限らず、例えばカラオケ演奏に先立って発生楽音の音色を指定するイベントＥＶＴ等を曲データ本体の先頭に配置する場合もある。
【００２１】
図３（ａ）は、ピッチ誤差データの構成を示す図である。ピッチ誤差データΔＰ（０）〜（ｎ）は、上述した曲データ本体が表す発音ピッチ（ノートナンバ）と、マイク部１６が発生する入力音声データ（歌声）から抽出したピッチとの差分を、後述のタイミングデータｔ（０）〜（ｎ）に対応させて抽出したものである。図３（ｂ）は、タイミングデータの構成を示す図である。タイミングデータｔ（０）〜（ｎ）は、ピッチ誤差データΔＰ（０）〜（ｎ）の抽出タイミングをタイマクロック累算値で表す。
【００２２】
図４（ａ）は、採点データの構成を示す図である。採点データＳ（１）〜Ｓ（ｎ）は、上記のピッチ誤差データΔＰ（０）〜（ｎ）およびタイミングデータｔ（０）〜（ｎ）に基づき小節単位で算出した採点結果を表す。採点結果とは、１小節分のピッチ誤差データΔＰを累算した累算値を、当該小節中の音符総数で除算して得るピッチ誤差平均となる。
【００２３】
図４（ｂ）は、小節位置データの構成を示す図である。小節位置データは、曲データ本体の各小節の先頭を表すＢ１ｔ（１）〜Ｂ１ｔ（ｎ）および後端を表すＢ２ｔ（１）〜Ｂ２ｔ（ｎ）からなる。小節位置データＢ１ｔ（１）〜Ｂ１ｔ（ｎ），Ｂ２ｔ（１）〜Ｂ２ｔ（ｎ）は、タイマクロック累算値で表現される。
【００２４】
Ｂ．動作
次に、図５〜図２１を参照して上記構成による実施の形態の動作を説明する。以下では、最初にメインルーチンの動作を説明した後、タイマ割込み実行されるタイマインタラプト（１）〜（３）処理について説明する。その後、メインルーチンからコールされるスイッチ処理、自動演奏処理および採点表示処理の各動作について説明する。
【００２５】
（１）メインルーチンの動作
電源スイッチ操作により装置電源が投入されると、ＣＰＵ１０は図５に図示するメインルーチンを実行し、ステップＳＡ１に処理を進め、ＲＡＭ１２のワークエリアに格納される各種レジスタやフラグ類をリセットしたり初期値をセットするイニシャライズを行う。また、このステップＳＡ１では、音源１７に対して各種レジスタやフラグ類を初期化するよう指示する。そして、イニシャライズが完了すると、ＣＰＵ１０はステップＳＡ２に処理を進め、スイッチ部１５が発生するスイッチイベントに対応したスイッチ処理ルーチンを実行する。
【００２６】
次いで、ステップＳＡ３では、スタート／ストップスイッチの操作により自動演奏の開始が指示されている場合、選択された曲データＫＤ（ＳＯＮＧ）の曲データ本体を読み出してカラオケ演奏を進行させたり、後述する採点表示区間の始りの小節から終わりの小節までを繰り返し歌唱練習させる自動演奏処理を実行する。続いて、ステップＳＡ４では、例えば図２１に図示する一例の評価画面に歌唱練習した結果を表示させる採点表示処理を実行する。そして、ステップＳＡ５では、例えば曲データに対応した歌詞データを、カラオケ演奏に同期して表示画面に字幕表示させる等の、その他の処理を実行してから上記ステップＳＡ２に処理を戻す。以後、装置電源がパワーオフされるまで上記ステップＳＡ２〜ＳＡ５を繰り返す。
【００２７】
（２）タイマインタラプト［１］処理の動作
次に、図６を参照してタイマインタラプト［１］処理の動作について説明する。タイマインタラプト［１］処理は、割込み禁止が解除されると、一定周期毎に割込み実行される。なお、タイマインタラプト［１］処理の割込み禁止は、後述するように、ピッチ補正モードに設定されていない状態で、スタート／ストップスイッチの操作に応じて自動演奏の開始が指示された時に解除される。
【００２８】
そうして割込み禁止が解除され、割込み実行タイミングになると、ＣＰＵ１０は図６に図示するステップＳＢ１に処理を進め、マイク部１６が発生する入力音声データをＲＡＭ１２のデータエリアに取込む。続いて、ステップＳＢ２〜ＳＢ３では、ＲＡＭ１２のデータエリアに取込んだ入力音声データのピッチを抽出し、抽出したピッチをノートナンバに換算してレジスタＰＩＴＣＨ２にストアする。
【００２９】
そして、ステップＳＢ４では、レジスタＰＩＴＣＨ１に格納される発音音高（カラオケ演奏音のノートナンバ）からレジスタＰＩＴＣＨ２に格納される抽出ピッチ（ノートナンバ）を減算した値をピッチ誤差としてレジスタΔＰにストアする。なお、レジスタＰＩＴＣＨ１には、後述する自動演奏処理のステップＳＬ２１（図１８参照）においてカラオケ演奏音のノートナンバがストアされるようになっている。
【００３０】
次いで、ステップＳＢ５では、上記ステップＳＢ４にて算出したピッチ誤差ΔＰを、ピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）として曲メモリ１３中で選択された曲データＫＤ（ＳＯＮＧ）に対応付けて登録する。また、ステップＳＢ５では、タイマクロック累算値ｔをタイミングデータｔ（ｍ）（ＳＯＮＧ）として曲メモリ１３中で選択された曲データＫＤ（ＳＯＮＧ）に対応付けて登録する。なお、ポインタｍは、後述する自動演奏処理においてタイマクロックの歩進毎にインクリメントされる値である。ポインタＳＯＮＧは、後述する曲選択スイッチ処理にて選択される選択曲番号である。この後、ステップＳＢ６に進み、ＲＡＭ１２のデータエリアに取込んだ入力音声データを読み出し、これをミキサ１８に供給して本処理を終える。
【００３１】
このように、ピッチ補正モードに設定されていない状態で、スタート／ストップスイッチ操作に応じて自動演奏をスタートさせると、ＣＰＵ１０はタイマインタラプト［１］処理を一定周期毎に割込み実行し、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中のピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）およびタイミングデータｔ（ｍ）（ＳＯＮＧ）を生成して曲メモリ１３の曲データエリアに登録する一方、マイク部１６が発生する入力音声データをミキサ１８に供給する。
【００３２】
（３）タイマインタラプト［２］処理の動作
次に、図７を参照してタイマインタラプト［２］処理の動作について説明する。タイマインタラプト［２］処理は、後述するように、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中にピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）が存在し、かつピッチ補正モードに設定された状態で、スタート／ストップスイッチ操作に応じて自動演奏の開始が指示された時にタイマ割込み禁止が解除される。
【００３３】
割込み禁止が解除され、割込み実行タイミングになると、ＣＰＵ１０は図７に図示するステップＳＣ１に処理を進め、マイク部１６が発生する入力音声データ（歌声）をＲＡＭ１２のデータエリアに取込む。次いで、ステップＳＣ２では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中からタイマクロック累算値ｔで指定されるピッチ誤差データΔＰ（ｔ）（ＳＯＮＧ）に応じて、ＲＡＭ１２のデータエリアにストアした入力音声データのピッチを変換する。つまり、入力音声データから抽出したピッチに、ピッチ誤差データΔＰ（ｔ）（ＳＯＮＧ）を加算することで、入力音声データのピッチを曲データ本体の発音ピッチに補正する。そして、ステップＳＣ３では、上記ステップＳＣ２にてピッチ変換（ピッチ補正）された入力音声データを、ミキサ１８に供給して本処理を終える。
【００３４】
以上のように、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中にピッチ誤差データΔＰ（ｔ）（ＳＯＮＧ）が存在し、かつピッチ補正モードに設定された状態で、スタート／ストップスイッチ操作に応じてカラオケ自動演奏をスタートさせると、ＣＰＵ１０はタイマインタラプト［２］処理を一定周期毎に割込み実行し、曲データＫＤ（ＳＯＮＧ）中からタイマクロック累算値ｔで指定されるピッチ誤差データΔＰ（ｔ）（ＳＯＮＧ）に応じて入力音声データのピッチを補正してミキサ１８に供給する。
【００３５】
（４）タイマインタラプト［３］処理の動作
次に、図８を参照してタイマインタラプト［３］処理の動作について説明する。タイマインタラプト［３］処理は、後述するように、採点表示モードに設定された状態で、スタート／ストップスイッチ操作に応じて自動演奏の開始が指示された時にタイマ割込み禁止が解除される。
【００３６】
割込み禁止が解除され、割込み実行タイミングになると、ＣＰＵ１０は図８に図示するステップＳＤ１に処理を進め、マイク部１６が発生する入力音声データをＲＡＭ１２のデータエリアに取込む。次いで、ステップＳＤ２では、取込んだ入力音声データをミキサ１８に供給して本処理を終える。
【００３７】
（５）スイッチ処理の動作
次に、図９を参照してスイッチ処理の動作を説明する。前述したメインルーチンのステップＳＡ２（図５参照）を介して本処理が実行されると、ＣＰＵ１０は図９に図示するステップＳＥ１に進み、曲選択スイッチの操作に応じてカラオケ演奏する曲を選択する曲選択スイッチ処理を実行する。続いて、ステップＳＥ２では、ピッチ補正モードスイッチの操作に応じてピッチ補正モードを設定したり解除するピッチ補正モードスイッチ処理を実行する。
【００３８】
そして、ステップＳＥ３では、スタート／ストップスイッチの操作に応じて自動演奏（カラオケ演奏）の開始又は終了を指示するスタート／ストップスイッチ処理を実行する。次いで、ステップＳＥ４では、採点表示スイッチの操作に応じて、歌唱の採点結果を画面表示させたり画面消去する採点表示スイッチ処理を実行する。この後、ステップＳＥ５に進み、採点表示切替スイッチの操作に応じて採点表示モードを設定したり解除する採点表示切替スイッチ処理を実行する。
【００３９】
（６）曲選択スイッチ処理の動作
図１０は、曲選択スイッチ処理の動作を示すフローチャートである。上述したスイッチ処理のステップＳＥ１（図９参照）を介して本処理が実行されると、ＣＰＵ１０は図１０に図示するステップＳＦ１に進み、スタートフラグＳＴＦが「０」、つまり自動演奏（カラオケ演奏）停止中であるか否かを判断する。なお、自動演奏停止中であるか否かを表すスタートフラグＳＴＦは、後述のスタート／ストップスイッチ処理（図１２参照）にて設定される。
【００４０】
自動演奏が進行中で、スタートフラグＳＴＦが「１」にセットされていると、上記ステップＳＦ１の判断結果は「ＮＯ」になり、本処理を完了させる。したがって、カラオケ演奏中は曲選択スイッチ操作が無効化されるようになっている。一方、スタートフラグＳＴＦが「０」、つまり自動演奏停止中ならば、上記ステップＳＦ１の判断結果は「ＹＥＳ」になり、ステップＳＦ２に進む。ステップＳＦ２では、曲選択スイッチのオン操作の有無を判断する。曲選択スイッチがオン操作されなければ、判断結果は「ＮＯ」になり、本処理を完了させる。
【００４１】
これに対し、曲選択スイッチがオン操作されると、判断結果は「ＹＥＳ」になり、ステップＳＦ３に進む。ステップＳＦ３では、オン操作された曲選択スイッチに対応する曲番号をレジスタＳＯＮＧにストアする。つまり、本実施の形態では、曲別にアサインされる複数の曲選択スイッチを有し、この内でオン操作された曲選択スイッチに対応付けられた曲番号が選択曲番号ＳＯＮＧとなる。
【００４２】
（７）ピッチ補正モードスイッチ処理の動作
図１１は、ピッチ補正モードスイッチ処理の動作を示すフローチャートである。上述したスイッチ処理のステップＳＥ２（図９参照）を介して本処理が実行されると、ＣＰＵ１０は図１１に図示するステップＳＧ１に進み、スタートフラグＳＴＦが「０」、つまり自動演奏（カラオケ演奏）停止中であるか否かを判断する。自動演奏が進行中（スタートフラグＳＴＦが「１」）ならば、判断結果は「ＮＯ」になり、本処理を完了させる。したがって、自動演奏進行中はピッチ補正モードスイッチ操作が無効化される。
【００４３】
一方、自動演奏停止中ならば、上記ステップＳＧ１の判断結果は「ＹＥＳ」になり、ステップＳＧ２に進む。ステップＳＧ２では、ピッチ補正モードスイッチのオン操作の有無を判断する。ピッチ補正モードスイッチがオン操作されなければ、判断結果は「ＮＯ」になり、本処理を完了させる。
【００４４】
これに対し、ピッチ補正モードスイッチがオン操作されると、上記ステップＳＧ２の判断結果は「ＹＥＳ」になり、ステップＳＧ３に進む。ステップＳＧ３では、補正モードフラグＨＦを反転する。次いで、ステップＳＧ４では、反転された補正モードフラグＨＦが「１」であるか否かを判断する。
【００４５】
ピッチ補正モードスイッチは、オン操作の度にモード設定またはモード解除をオルタネートに指示するトグルスイッチなので、上記ステップＳＧ４では、ピッチ補正モードスイッチのオン操作に応じて、ピッチ補正モードを設定したかどうかを判断している。反転された補正モードフラグＨＦが「０」、つまりピッチ補正モードが解除されると、ここでの判断結果は「ＮＯ」になり、本処理を完了させる。
【００４６】
一方、反転された補正モードフラグＨＦが「１」、つまりピッチ補正モードが設定されると、上記ステップＳＧ４の判断結果は「ＹＥＳ」になり、ステップＳＧ５に進む。ステップＳＧ５では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中にピッチ誤差データΔＰ（）（ＳＯＮＧ）が登録されているか否かを判断する。ピッチ誤差データΔＰ（）（ＳＯＮＧ）が登録されていれば、判断結果は「ＹＥＳ」になり、本処理を終える。これに対し、ピッチ誤差データΔＰ（）（ＳＯＮＧ）が登録されていなければ、判断結果は「ＮＯ」になり、ステップＳＧ６に進む。ステップＳＧ６では、補正モードフラグＨＦをゼロリセットして本処理を終える。
【００４７】
このように、ピッチ補正モードスイッチ処理では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中にピッチ誤差データΔＰ（）（ＳＯＮＧ）が登録されていない場合には、自動演奏停止中にピッチ補正モードスイッチをオン操作してもピッチ補正モードに設定されず、ピッチ誤差データΔＰ（）（ＳＯＮＧ）が登録されている場合にピッチ補正モードに設定し得る。
【００４８】
（８）スタート／ストップスイッチ処理の動作
次に、図１２〜図１３を参照してスタート／ストップスイッチ処理の動作を説明する。上述したスイッチ処理のステップＳＥ３（図９参照）を介して本処理が実行されると、ＣＰＵ１０は図１２に図示するステップＳＨ１に進み、スタート／ストップスイッチのオン操作の有無を判断する。なお、後述するように、スタート／ストップスイッチは、オン操作の度にオルタネートに開始指示または停止指示するトグルスイッチである。スタート／ストップスイッチがオン操作されなければ、ステップＳＨ１の判断結果は「ＮＯ」になり、何も行わずに本処理を終える。
【００４９】
一方、スタート／ストップスイッチがオン操作されると、上記ステップＳＨ１の判断結果は「ＹＥＳ」になり、ステップＳＨ２に進み、スタートフラグＳＴＦを反転する。続いて、ステップＳＨ３では、反転されたスタートフラグＳＴＦが「１」、つまり自動演奏（カラオケ演奏）の開始を指示する状態であるか否かを判断する。反転されたスタートフラグＳＴＦが「０」ならば、判断結果は「ＮＯ」になり、ステップＳＨ４に進む。ステップＳＨ４では、自動演奏の停止に伴い、音源１７に消音を指示し、続くステップＳＨ５では、実行中のタイマインタラプト処理の割込み実行を禁止して本処理を終える。
【００５０】
これに対し、反転されたスタートフラグＳＴＦが「１」となり、自動演奏の開始を指示する状態に設定されると、上記ステップＳＨ３の判断結果が「ＹＥＳ」になり、ステップＳＨ６に進む。ステップＳＨ６では、採点表示フラグＳＦが「０」、つまり採点表示モードに設定されていない状態であるかを判断する。なお、採点表示モードとは、後述するように、ユーザの歌唱を評価採点して画面表示させる処理動作を指す。以下、採点表示モードに設定されていない場合と、採点表示モードに設定されている場合とに分けて動作説明を進める。
【００５１】
＜採点表示モードに設定されていない場合＞
採点表示モードに設定されていなければ、採点表示フラグＳＦは「０」なので、上記ステップＳＨ６の判断結果は「ＹＥＳ」になり、ステップＳＨ７に進む。ステップＳＨ７では、選択曲番号ＳＯＮＧに対応した曲データＫＤ（ＳＯＮＧ）に含まれる曲データ本体の初期アドレス（先頭アドレス）をレジスタＡＤにストアする。以下、レジスタＡＤの内容を読み出しアドレスＡＤと称す。次いで、ステップＳＨ８では、読み出しアドレスＡＤに応じて、曲メモリ１３において選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中から曲データ本体を読み出す。
【００５２】
続いて、ステップＳＨ９では、読み出した曲データ本体が、タイムＴ又はイベントＥＶＴのいずれであるかを判別する。図２（ｂ）に図示したように、通常、先頭アドレスにはタイムＴが格納されるが、例えばカラオケ演奏に先立って発生楽音の音色を指定するイベントＥＶＴ等が先頭アドレスに格納されることもある。したがって、先頭アドレスからタイムＴを読み出した場合には、ステップＳＨ１０に進み、レジスタＴにタイムＴをストアする。
【００５３】
続いて、ステップＳＨ１１では、タイマクロックを累算するカウンタｔをゼロリセットする。カウンタｔの値をタイマクロック累算値ｔと称す。そして、ステップＳＨ１２では、補正モードフラグＨＦが「０」、すなわちピッチ補正モードに設定されているかどうかを判断する。ピッチ補正モードに設定されていなければ、判断結果は「ＹＥＳ」になり、ステップＳＨ１３に進む。ステップＳＨ１３では、前述したタイマインタラプト［１］処理の禁止を解除すると共に、ポインタｍに初期値「１」をセットして本処理を終える。
【００５４】
これにより、ＣＰＵ１０は、前述したタイマインタラプト［１］処理を一定周期毎に割込み実行し始める。そうすると、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中のピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）およびタイミングデータｔ（ｍ）（ＳＯＮＧ）を生成して曲メモリ１３中の曲データＫＤ（ＳＯＮＧ）に対応付けて登録する一方、マイク部１６が発生する入力音声データをミキサ１８に供給する。
【００５５】
これに対し、ピッチ補正モードスイッチの操作によりピッチ補正モードに設定されていると、上記ステップＳＨ１２の判断結果は「ＮＯ」となり、ステップＳＨ１４に進み、前述したタイマインタラプト［２］処理の禁止を解除して本処理を終える。これにより、ＣＰＵ１０は、前述したタイマインタラプト［２］処理を一定周期毎に割込み実行し始める。そうすると、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中からタイマクロック累算値ｔおよび選択曲番号ＳＯＮＧで指定されるピッチ誤差データΔＰ（ｔ）（ＳＯＮＧ）に応じて入力音声データのピッチを補正してミキサ１８に供給する。
【００５６】
さて一方、曲データ本体の先頭アドレスからイベントＥＶＴを読み出した場合には、上述したステップＳＨ９を介してステップＳＨ１５に進み、その読み出したイベントＥＶＴを音源１７に送付する。これにより、音源１７では、例えばＣＰＵ１０より送付されるイベントＥＶＴが音色設定するイベントであると、当該イベントＥＶＴで指定される音色の楽音を発生するよう設定する。そして、ステップＳＨ１６では、読み出しアドレスＡＤを歩進させた後、上述のステップＳＨ８に処理を戻す。以後、タイムＴが読み出される迄、歩進させたアドレスＡＤに応じて順次イベントＥＶＴを読み出して音源１７に送付する。そして、歩進させたアドレスＡＤに応じてタイムＴが読み出されると、上述したステップＳＨ１０〜ＳＨ１４の処理を実行して本処理を終える。
【００５７】
＜採点表示モードに設定されている場合＞
採点表示モードに設定されていると、採点表示フラグＳＦは「１」なので、上記ステップＳＨ６の判断結果が「ＮＯ」になり、ＣＰＵ１０は図１３に図示するステップＳＨ１７に処理を進める。ステップＳＨ１７では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中の小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）およびＢ２ｔ（ｎ）（ＳＯＮＧ）を読み出す。
【００５８】
なお、小節位置を指定するポインタｎは、後述するように、採点表示スイッチをオン操作した時に「１」となり、さらに採点表示切替スイッチのオン操作の回数に応じて歩進される。したがって、小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）は採点表示区間の始りとなる小節位置を表し、一方、小節位置データＢ２ｔ（ｎ）（ＳＯＮＧ）は採点表示区間の終わりとなる小節位置を表す。
【００５９】
次いで、ステップＳＨ１８では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）に含まれる曲データ本体の初期アドレス（先頭アドレス）をレジスタＡＤにストアする。そして、ステップＳＨ１９では、読み出しアドレスＡＤに応じて、曲データＫＤ（ＳＯＮＧ）中から曲データ本体を読み出す。続いて、ステップＳＨ２０では、読み出した曲データ本体が、タイムＴ又はイベントＥＶＴのいずれであるかを判別する。
【００６０】
先頭アドレスからイベントＥＶＴを読み出した場合には、ステップＳＨ２１に進み、読み出しアドレスＡＤを歩進させた後、上述のステップＳＨ１９に処理を戻す。以後、タイムＴが読み出される迄、ステップＳＨ１９〜ＳＨ２１を繰り返し読み出しアドレスＡＤを歩進させる。そして、歩進させたアドレスＡＤに応じてタイムＴが読み出されると、ステップＳＨ２２に進み、レジスタＴにタイムＴをストアする。次いで、ステップＳＨ２３では、読み出したタイムＴが小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）を超えているか否か、すなわち採点表示区間の始りとなる小節に達したかどうかを判断する。
【００６１】
タイムＴが採点表示区間の始りとなる小節に達していなければ、判断結果は「ＮＯ」になり、上述したステップＳＨ２１に処理を戻し、読み出しアドレスＡＤを歩進させた後、再び上記ステップＳＨ１９に処理を戻す。そして、歩進された読み出しアドレスＡＤに応じて読み出されたタイムＴが採点表示区間の始りとなる小節に達したとする。そうすると、上記ステップＳＨ２３の判断結果が「ＹＥＳ」になり、ステップＳＨ２４に進む。
【００６２】
このように、ステップＳＨ１９〜ＳＨ２３では、採点表示区間の始りとなる小節位置に達するタイムＴを探し出すため、読み出しアドレスＡＤを歩進させるようになっている。そして、採点表示区間の始りとなる小節位置に達するタイムＴが見つかると、ステップＳＨ２４に進み、タイムＴをレジスタｔにストアする。この後、ステップＳＨ２５に進み、タイマカウントの開始を指示する。これにより、ＣＰＵ１０では、図示されていないタイマカウント処理を実行してタイマクロックを発生する。なお、タイマカウント処理とは、タイマ割込みにて曲の演奏テンポに応じたタイマクロックを生成するものである。
【００６３】
次いで、ステップＳＨ２６では、前述したタイマインタラプト［３］処理の禁止を解除して本処理を終える。この結果、ＣＰＵ１０は、前述したタイマインタラプト［３］処理を一定周期毎に割込み実行し始める。そうすると、マイク部１６が発生する入力音声データをＲＡＭ１２のデータエリアに取込む一方、取込んだ入力音声データをミキサ１８に供給する。
【００６４】
（９）採点表示スイッチ処理の動作
次に、図１４を参照して採点表示スイッチ処理の動作を説明する。上述したスイッチ処理のステップＳＥ４（図９参照）を介して本処理が実行されると、ＣＰＵ１０は図１４に図示するステップＳＪ１に進み、採点表示スイッチのオン操作の有無を判断する。採点表示スイッチがオン操作されなければ、判断結果は「ＮＯ」になり、何も行わずに本処理を終える。
【００６５】
一方、採点表示スイッチがオン操作されると、上記ステップＳＪ１の判断結果が「ＹＥＳ」になり、ステップＳＪ２に進む。ステップＳＪ２では、採点表示フラグＳＦが「０」、つまり採点表示モードに設定されていない状態であるかどうかを判断する。採点表示フラグＳＦが「１」にセットされ、採点表示モードに設定されている場合には、判断結果が「ＮＯ」になり、ステップＳＪ３に進み、採点表示フラグＳＦをゼロリセットした後、続くステップＳＪ４にて評価画面（後述する）を消去して本処理を終える。
【００６６】
これに対して、採点表示モードに設定されていなければ、上記ステップＳＪ２の判断結果は「ＹＥＳ」になり、ステップＳＪ５に進む。ステップＳＪ５では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中に採点データ（図４（ａ）参照）が登録されているか否かを判断する。採点データが曲データＫＤ（ＳＯＮＧ）に登録されていなければ、未採点の状態なので、判断結果は「ＮＯ」になり、本処理を完了させる。
【００６７】
一方、採点データが曲データＫＤ（ＳＯＮＧ）に登録されていると、上記ステップＳＪ５の判断結果が「ＹＥＳ」になり、ステップＳＪ６に進む。ステップＳＪ６では、採点表示フラグＳＦに「１」をセットして採点表示モードに設定すると共に、フラグＣＦを「１」にセットする。次いで、ステップＳＪ７では、ポインタｎに「１」をセットして本処理を終える。
【００６８】
（１０）採点表示切替スイッチ処理の動作
次に、図１５を参照して採点表示切替スイッチ処理の動作を説明する。上述したスイッチ処理のステップＳＥ５（図９参照）を介して本処理が実行されると、ＣＰＵ１０は図１５に図示するステップＳＫ１に進み、採点表示切替スイッチのオン操作の有無を判断する。採点表示切替スイッチがオン操作されなければ、判断結果は「ＮＯ」になり、何も行わずに本処理を終える。
【００６９】
一方、採点表示切替スイッチがオン操作されると、上記ステップＳＫ１の判断結果が「ＹＥＳ」になり、ステップＳＫ２に進む。ステップＳＫ２では、採点表示フラグＳＦが「１」、すなわち採点表示モードに設定されているかどうかを判断する。採点表示モードに設定されていなければ、判断結果は「ＮＯ」になり、本処理を終えるが、採点表示モードに設定されていると、判断結果が「ＹＥＳ」となり、ステップＳＫ３に進む。ステップＳＫ３では、ポインタｎを歩進させた後、本処理を完了させる。
【００７０】
（１１）自動演奏処理の動作
次に、図１６〜図１８を参照して自動演奏処理の動作を説明する。前述したメインルーチンのステップＳＡ３（図５参照）を介して本処理が実行されると、ＣＰＵ１０は図１６に図示するステップＳＬ１に処理を進める。ステップＳＬ１では、スタートフラグＳＴＦが「１」、つまり自動演奏進行中であるか否かを判断する。自動演奏停止中ならば、判断結果は「ＮＯ」になり、本処理を終える。
【００７１】
一方、自動演奏進行中ならば、上記ステップＳＬ１の判断結果は「ＹＥＳ」になり、ステップＳＬ２に進む。ステップＳＬ２では、最小単位時間が経過したか否かを判断する。最小単位時間とは、タイマクロック１周期分の時間を指す。最小単位時間が経過していなければ、ここでの判断結果は「ＮＯ」となり、一旦、本処理を完了させるが、最小単位時間が経過していると、判断結果が「ＹＥＳ」になり、ステップＳＬ３に進む。ステップＳＬ３では、タイマクロック累算値ｔを歩進させる一方、ポインタｍを歩進させる。なお、ポインタｍは、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中の、ピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）やタイミングデータｔ（ｍ）（ＳＯＮＧ）を指定する。
【００７２】
続いて、ステップＳＬ４では、レジスタＴに格納したタイムＴと、タイマクロック累算値ｔとが一致するか否か、すなわちイベントタイミングに達したかどうかを判断する。イベントタイミングに達していなければ、判断結果は「ＮＯ」になり、一旦、本処理を完了させる。これに対し、イベントタイミングに達すると、判断結果が「ＹＥＳ」になり、ステップＳＬ５に進み、曲データ本体の読み出しアドレスＡＤを歩進させる。この後、図１７に図示するステップＳＬ６に進み、採点表示フラグＳＦが「１」、つまり採点表示モード下であるかどうかを判断する。以下、採点表示モードに設定されていない場合と、設定されている場合とに分けて動作説明を進める。
【００７３】
＜採点表示モードに設定されていない場合＞
採点表示モードに設定されていなければ、ステップＳＬ６の判断結果は「ＮＯ」になり、図１８に図示するステップＳＬ１５に進み、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中の曲データ本体を、読み出しアドレスＡＤに応じて読み出す。次いで、ステップＳＬ１６では、読み出した曲データ本体が「タイムＴ」、「イベントＥＶＴ」および「データＥＮＤ」のいずれであるかを判別する。以下、読み出した曲データ本体が「タイムＴ」、「イベントＥＶＴ」および「データＥＮＤ」の各場合に分けて動作説明を進める。
【００７４】
ａ．「タイムＴ」の場合  
読み出した曲データ本体が「タイムＴ」であると、ステップＳＬ１７に進み、レジスタＴにストアして一旦、本処理を終える。
【００７５】
ｂ．「イベントＥＶＴ」の場合  
読み出した曲データ本体が「イベントＥＶＴ」であると、ステップＳＬ１８に進み、当該「イベントＥＶＴ」がメロディパートのイベントであるかどうかを判別する。「イベントＥＶＴ」が伴奏パートのイベントならば、判断結果は「ＮＯ」なり、ステップＳＬ１９に進み、その伴奏パートのイベントを音源１７に送付した後、上述のステップＳＬ５（図１６参照）に処理を戻す。これにより、音源１７では、カラオケ演奏音（伴奏音）を発生する。
【００７６】
一方、「イベントＥＶＴ」がメロディパートのイベントであると、上記ステップＳＬ１８の判断結果が「ＹＥＳ」になり、ステップＳＬ２０に進む。ステップＳＬ２０では、メロディパートの「イベントＥＶＴ」が発音を指示するノートオンイベントであるか否かを判断する。ノートオンイベントであると、判断結果は「ＹＥＳ」になり、ステップＳＬ２１に進み、そのノートオンイベントに含まれるノートナンバ（発音ピッチ）をレジスタＰＩＴＣＨ１にストアした後、上述のステップＳＬ５（図１６参照）に処理を戻す。
【００７７】
これに対し、メロディパートの「イベントＥＶＴ」が消音を指示するノートオフイベントであると、上記ステップＳＬ２０の判断結果が「ＮＯ」になり、ステップＳＬ２２に進み、レジスタＰＩＴＣＨ１の内容をクリアした後、上述のステップＳＬ５（図１６参照）に処理を戻す。
【００７８】
ｃ．「データＥＮＤ」の場合  
読み出した曲データ本体が「データＥＮＤ」であると、ステップＳＬ２３に進み、音源１７に消音を指示する。そして、ステップＳＬ２４では、前述したタイマインタラプト［１］処理の実行を禁止する。この後、ステップＳＬ２５に進み、スタートフラグＳＴＦを「０」にセットして自動演奏を停止させる。次いで、ステップＳＬ２６では、カラオケ演奏に応じて行われたユーザの歌唱内容を評価する採点処理（後述する）を実行して本処理を終える。
【００７９】
このように、採点表示モードに設定されていない場合には、タイマクロック累算値ｔがタイムＴに一致する毎に、歩進させた読み出しアドレスＡＤに応じて曲データ本体を読み出してカラオケ演奏を進行させる。すなわち、読み出した曲データ本体がタイムＴならば、それを次イベントタイミングとしてレジスタＴにストアする。また、読み出した曲データ本体が伴奏パートのイベントならば、音源１７に送付してカラオケ演奏させる。
【００８０】
さらに、読み出した曲データ本体がメロディパートのノートオンイベントであると、ユーザの歌声のピッチとの差分を算出する為に、そのノートオンイベントに含まれるノートナンバをレジスタＰＩＴＣＨ１にストアし、一方、ノートオフイベントならば、レジスタＰＩＴＣＨ１をクリアする。また、読み出した曲データ本体がデータＥＮＤならば、音源１７を消音させて自動演奏（カラオケ演奏）を停止させると共に、カラオケ演奏に応じて行われたユーザの歌唱内容を評価する採点処理（後述する）を実行する。
【００８１】
＜採点表示モードに設定されている場合＞
採点表示モードに設定されていれば、図１７に図示したステップＳＬ６の判断結果が「ＹＥＳ」になり、次のステップＳＬ７に処理を進める。ステップＳＬ７では、現在のタイムＴが小節位置データＢ２ｔ（ｎ）（ＳＯＮＧ）を超えているか否か、すなわち採点表示区間の終わりとなる小節に達したかどうかを判断する。現在のタイムＴが採点表示区間の終わりとなる小節に達していなければ、判断結果は「ＮＯ」になり、上述したステップＳＬ１５（図１８参照）以降の、採点表示モードに設定されていない場合の動作を実行する。
【００８２】
一方、現在のタイムＴが採点表示区間の終わりとなる小節に達していると、上記ステップＳＬ７の判断結果は「ＹＥＳ」になり、ステップＳＬ８に進む。ステップＳＬ８では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）に含まれる曲データ本体の初期アドレス（先頭アドレス）をレジスタＡＤにストアする。続いて、ステップＳＬ９では、レジスタＡＤにストアされた読み出しアドレスＡＤに応じて、曲データＫＤ（ＳＯＮＧ）中から曲データ本体を読み出す。そして、ステップＳＬ１０では、読み出した曲データ本体が、タイムＴ又はイベントＥＶＴのいずれであるかを判別する。
【００８３】
先頭アドレスからイベントＥＶＴを読み出した場合には、次のステップＳＬ１１に進み、読み出しアドレスＡＤを歩進させた後、上述のステップＳＬ９に処理を戻す。以後、タイムＴが読み出される迄、ステップＳＬ９〜ＳＬ１１を繰り返して読み出しアドレスＡＤを歩進させる。そして、歩進させた読み出しアドレスＡＤに応じてタイムＴが読み出されると、ステップＳＬ１２に進み、レジスタＴにタイムＴをストアする。次いで、ステップＳＬ１３では、読み出したタイムＴが小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）を超えているか否か、すなわち採点表示区間の始りとなる小節に達したかどうかを判断する。
【００８４】
タイムＴが採点表示区間の始りとなる小節に達していなければ、判断結果は「ＮＯ」になり、上述したステップＳＬ１１に処理を戻し、読み出しアドレスＡＤを歩進させた後、再び上記ステップＳＬ９に処理を戻す。そして、歩進された読み出しアドレスＡＤに応じて読み出されたタイムＴが採点表示区間の始りとなる小節に達したとする。そうすると、上記ステップＳＬ１３の判断結果が「ＹＥＳ」になり、ステップＳＬ１４に進む。
【００８５】
このように、ステップＳＬ９〜ＳＬ１３では、採点表示区間の始りとなる小節位置に達するタイムＴを探し出すため、読み出しアドレスＡＤを歩進させるようになっている。そして、採点表示区間の始りとなる小節位置に達するタイムＴが見つかると、ステップＳＬ１４に進み、タイムＴをレジスタｔにストアする。この後、上述したステップＳＬ１５（図１８参照）以降の、採点表示モードに設定されていない場合の動作を実行する。
【００８６】
以上のように、採点表示モードに設定されている場合には、タイマクロック累算値ｔがタイムＴに一致する毎に、現在のタイムＴが採点表示区間の終わりとなる小節に達したかどうかを判断し、採点表示区間の終わりとなる小節に達すると、採点表示区間の始りとなる小節に対応するタイムＴに戻した後、採点表示モードに設定されていない場合の動作を実行する。したがって、採点表示モードに設定されていると、スタート／ストップスイッチの操作で自動演奏の停止を指示する迄、採点表示区間の始りの小節から終わりの小節までを繰り返しカラオケ演奏するようになっている。
【００８７】
（１２）採点処理の動作
次に、図１９を参照して採点処理の動作を説明する。上述した自動演奏処理のステップＳＬ２６を介して本処理が実行されると、ＣＰＵ１０は図１９に図示するステップＳＭ１に進み、ポインタｎに「１」をセットすると共に、ポインタｍをゼロリセットする。続いて、ステップＳＭ２では、レジスタＬおよびレジスタＳをゼロリセットする。次いで、ステップＳＭ３では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）において、ポインタｎで指定される小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）に「０」をセットする。
【００８８】
そして、ステップＳＭ４では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中からポインタｍで指定されるピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）およびタイミングデータｔ（ｍ）（ＳＯＮＧ）を読み出す。次いで、ステップＳＭ５では、上記ステップＳＭ４にて読み出されるデータの有無を判断する。つまり、読み出すべきピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）又はタイミングデータｔ（ｍ）（ＳＯＮＧ））が有れば、判断結果は「ＹＥＳ」になり、ステップＳＭ６に進む。
【００８９】
ステップＳＭ６では、タイミングデータｔ（ｍ）（ＳＯＮＧ）が小節判定値より小さいか否かを判断する。小節判定値とは、１小節分のタイマクロック数にポインタｎの値を乗算した値である。したがって、このステップＳＭ６では、１小節分のピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）を読み出し終えたかどうかを判断する。そして、タイミングデータｔ（ｍ）（ＳＯＮＧ）が小節判定値より小さく、１小節分のピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）を読み出し終えていない場合には、判断結果が「ＹＥＳ」になり、ステップＳＭ７に進む。次いで、ステップＳＭ７では、レジスタＳにピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）を加算する。
【００９０】
続いて、ステップＳＭ８では、レジスタＬの値をインクリメントして歩進させる。なお、歩進されるレジスタＬの値は、ポインタｎで指定される小節に含まれる音符数（ノートオンイベントの数）に相当する。次いで、ステップＳＭ９では、ポインタｍを歩進させた後、上述のステップＳＭ４に処理を戻す。以後、１小節分のピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）を読み出し終える迄、ステップＳＭ４〜ＳＭ９を繰り返す。これにより、ポインタｎで指定される小節に含まれる音符総数がレジスタＬに累算され、それに対応するピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）の累算値がレジスタＳに格納される。
【００９１】
そして、１小節分のピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）を読み出し終えてタイミングデータｔ（ｍ）（ＳＯＮＧ）が小節判定値より大きくなると、上記ステップＳＭ６の判断結果が「ＮＯ」となり、ステップＳＭ１０に進む。ステップＳＭ１０では、レジスタＳに格納されるピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）の累算値を、レジスタＬに格納される音符総数で除算して得るピッチ誤差平均を、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中でポインタｎで指定される小節の採点データＳ（ｎ）（ＳＯＮＧ）に登録する。
【００９２】
こうして、ポインタｎで指定される小節の採点データＳ（ｎ）（ＳＯＮＧ）を曲データＫＤ（ＳＯＮＧ）に登録し終えると、ステップＳＭ１１に進み、ポインタｎで指定される小節の終わりを表す小節位置データＢ２ｔ（ｎ）（ＳＯＮＧ）に、１小節分のタイマクロック数にポインタｎの値を乗算した小節判定値を登録する。次いで、ステップＳＭ１２では、次の小節の始りを表す小節位置データＢ２ｔ（ｎ＋１）（ＳＯＮＧ）に、上記ステップＳＭ１１と同じ小節判定値を登録する。そして、ステップＳＭ１３では、ポインタｎを歩進させた後、上述したステップＳＭ２に処理を戻し、次の小節の採点データ作成を進める。
【００９３】
以後、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）中からピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）と、タイミングデータｔ（ｍ）（ＳＯＮＧ）とを全て読み出し終える迄、上述した過程を繰り返すことによって、各小節毎の採点データＳ（ｎ）（ＳＯＮＧ）が登録されると共に、対応する小節区間の始りと終わりを表す小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）およびＢ２ｔ（ｎ）（ＳＯＮＧ）が登録される。そして、ピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）と、タイミングデータｔ（ｍ）（ＳＯＮＧ）とを全て読み出し終えた時点で、上述したステップＳＭ５の判断結果が「ＮＯ」となり、本処理を完了させる。
【００９４】
（１３）採点表示処理の動作
次に、図２０を参照して採点表示処理の動作を説明する。前述したメインルーチンのステップＳＡ４（図５参照）を介して本処理が実行されると、ＣＰＵ１０は図２０に図示するステップＳＮ１に処理を進める。ステップＳＮ１では、採点表示フラグＳＦが「１」、つまり採点表示モード下であるかどうかを判断する。採点表示モードに設定されていなければ、判断結果は「ＮＯ」となり、何も行わずに本処理を終える。
【００９５】
一方、採点表示モード下であると、判断結果が「ＹＥＳ」になり、ステップＳＮ２に進み、フラグＣＦが「１」であるか否かを判断する。フラグＣＦが「１」の場合とは、採点データ（図４（ａ）参照）が登録された曲データＫＤ（ＳＯＮＧ）に基づいて歌唱練習する際に、採点表示スイッチをオン操作して採点表示モードに設定した状態を表す。そうした状態でなければ、上記ステップＳＮ２の判断結果は「ＮＯ」になり、何も行わずに本処理を終えるが、そうした状態であると、判断結果が「ＹＥＳ」となり、ステップＳＮ３に進む。
【００９６】
ステップＳＮ３では、選択曲番号ＳＯＮＧで指定される曲データＫＤ（ＳＯＮＧ）において、ｎ番目に評価の低い採点データＳ（ｍ）（ＳＯＮＧ）を検索する。次いで、ステップＳＮ４では、上記ステップＳＮ３の検索結果に基づき、例えば図２１に図示する一例の評価画面を形成してビデオエンコーダ１４に出力する。そして、ステップＳＮ５では、フラグＣＦをゼロリセットして本処理を終える。
【００９７】
以上説明したように、本実施の形態では、曲データＫＤ（ＳＯＮＧ）を指定して自動演奏（カラオケ演奏）の開始を指示すると、タイマインタラプト［１］処理の禁止が解除される。これにより、自動演奏処理が曲データＫＤ（ＳＯＮＧ）中の曲データ本体を順次再生してカラオケ演奏を進行させ、一方、タイマインタラプト［１］処理がカラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データ本体の発音ピッチとの差分を表すピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）と、その進行位置を表すタイミングデータｔ（ｍ）（ＳＯＮＧ）とを生成して曲データＫＤ（ＳＯＮＧ）に登録する。
【００９８】
このようにして、曲データＫＤ（ＳＯＮＧ）にタイミングデータｔ（ｍ）（ＳＯＮＧ）およびピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）を履歴として登録し終えてからピッチ補正モードスイッチの操作でピッチ補正モードに設定した後に自動演奏（カラオケ演奏）の開始を指示すると、タイマインタラプト［２］処理の禁止が解除される。これにより、自動演奏処理が曲データＫＤ（ＳＯＮＧ）中の曲データ本体を順次再生してカラオケ演奏を進行させ、一方、タイマインタラプト［２］処理が曲データＫＤ（ＳＯＮＧ）中からタイマクロック累算値ｔで指定されるピッチ誤差データΔＰ（ｔ）（ＳＯＮＧ）に応じて、カラオケ演奏に合せて歌唱するユーザの歌声をピッチ補正してミキサ１８に供給するので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることが可能になる。
【００９９】
また、本実施の形態では、選曲した曲データＫＤ（ＳＯＮＧ）にタイミングデータｔ（ｍ）（ＳＯＮＧ）およびピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）が登録済みの場合に、採点表示スイッチ操作で採点表示モードに設定し、さらに採点表示切替スイッチのオン操作の回数に応じて採点表示区間の始りとなる小節位置と採点表示区間の終わりとなる小節位置とを指定して自動演奏を開始させると、指定された採点表示区間を自動的に繰り返しカラオケ演奏させ得るようになっている。
【０１００】
さらに、本実施の形態では、選曲した曲データＫＤ（ＳＯＮＧ）の曲データ本体を先頭から終端まで自動演奏させた場合、採点処理がピッチ誤差データΔＰ（ｍ）（ＳＯＮＧ）とタイミングデータｔ（ｍ）（ＳＯＮＧ）とに基づき各小節毎の採点データＳ（ｎ）（ＳＯＮＧ）と、対応する小節区間の始りと終わりを表す小節位置データＢ１ｔ（ｎ）（ＳＯＮＧ）およびＢ２ｔ（ｎ）（ＳＯＮＧ）とが曲データ本体に登録される。この後に採点表示スイッチ操作で採点表示モードに設定すると、採点表示切替スイッチ操作で指定される小節の採点結果を画面表示させることも可能になっている。
【０１０１】
なお、上述した実施の形態では、自動演奏（カラオケ演奏）進行中は、ピッチ補正モードスイッチの操作を無効にし、自動演奏開始前にだけピッチ補正モードに設定可能としたが、これに限らず、自動演奏進行中にピッチ補正モードスイッチ操作に応じてピッチ補正モードに設定する態様としても構わない。そうした態様では、自動演奏進行中にピッチ補正モードに設定された時に、前述したタイマインタラプト［２］処理（図７参照）を起動させる。このようにすれば、ユーザが指定する箇所でユーザの歌声を手本通りの正しいピッチに補正させることが可能になる。
【図面の簡単な説明】
【０１０２】
【図１】本発明による実施の一形態の全体構成を示すブロック図である。
【図２】曲メモリ１３に設けられる曲データエリアの構成および曲データ本体の構成を示す図である。
【図３】ピッチ誤差データおよびタイミングデータの構成を示す図である。
【図４】採点データおよび小節位置データの構成を示す図である。
【図５】メインルーチンの動作を示すフローチャートである。
【図６】タイマインタラプト［１］処理の動作を示すフローチャートである。
【図７】タイマインタラプト［２］処理の動作を示すフローチャートである。
【図８】タイマインタラプト［３］処理の動作を示すフローチャートである。
【図９】スイッチ処理の動作を示すフローチャートである。
【図１０】曲選択スイッチ処理の動作を示すフローチャートである。
【図１１】ピッチ補正モードスイッチ処理の動作を示すフローチャートである。
【図１２】スタート／ストップスイッチ処理の動作を示すフローチャートである。
【図１３】スタート／ストップスイッチ処理の動作を示すフローチャートである。
【図１４】採点表示スイッチ処理の動作を示すフローチャートである。
【図１５】採点表示切替スイッチ処理の動作を示すフローチャートである。
【図１６】自動演奏処理の動作を示すフローチャートである。
【図１７】自動演奏処理の動作を示すフローチャートである。
【図１８】自動演奏処理の動作を示すフローチャートである。
【図１９】採点処理の動作を示すフローチャートである。
【図２０】採点表示処理の動作を示すフローチャートである。
【図２１】評価画面の一例を示す図である。
【符号の説明】
【０１０３】
１０  ＣＰＵ
１１  プログラムＲＯＭ
１２  ＲＡＭ
１３  曲メモリ
１４  ビデオエンコーダ
１５  スイッチ部
１６  マイク部
１７  音源
１８  ミキサ
１９  発音部
【図１】
2007316416.tif 000003
【図２】
2007316416.tif 000004
【図３】
2007316416.tif 000005
【図４】
2007316416.tif 000006
【図５】
2007316416.tif 000007
【図６】
2007316416.tif 000008
【図７】
2007316416.tif 000009
【図８】
2007316416.tif 000010
【図９】
2007316416.tif 000011
【図１０】
2007316416.tif 000012
【図１１】
2007316416.tif 000013
【図１２】
2007316416.tif 000014
【図１３】
2007316416.tif 000015
【図１４】
2007316416.tif 000016
【図１５】
2007316416.tif 000017
【図１６】
2007316416.tif 000018
【図１７】
2007316416.tif 000019
【図１８】
2007316416.tif 000020
【図１９】
2007316416.tif 000021
【図２０】
2007316416.tif 000022
【図２１】
2007316416.tif 000023