カラオケ装置およびカラオケ処理プログラム
【課題】巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させるカラオケ装置を実現する。
【解決手段】曲データKD中の曲データ本体を順次再生するカラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データ本体の発音ピッチとの差分を表すピッチ誤差データΔPと、演奏時刻を表すタイミングデータtとを生成して曲データKDに履歴記録する。ピッチ補正モードで曲データKDをカラオケ演奏させると、この曲データKDに履歴記録されたタイミングデータtに応じて指定されるピッチ誤差データΔPに応じて、カラオケ演奏に合せて歌唱するユーザの歌声を、曲データ本体の発音ピッチになるようにピッチ補正する。これにより、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させ得る。
【解決手段】曲データKD中の曲データ本体を順次再生するカラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データ本体の発音ピッチとの差分を表すピッチ誤差データΔPと、演奏時刻を表すタイミングデータtとを生成して曲データKDに履歴記録する。ピッチ補正モードで曲データKDをカラオケ演奏させると、この曲データKDに履歴記録されたタイミングデータtに応じて指定されるピッチ誤差データΔPに応じて、カラオケ演奏に合せて歌唱するユーザの歌声を、曲データ本体の発音ピッチになるようにピッチ補正する。これにより、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させ得る。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、歌唱練習をアシストする機能を備えたカラオケ装置およびカラオケ処理プログラムに関する。
【背景技術】
【0002】
従来より、歌唱練習をアシストする機能を備えたカラオケ装置が知られている。例えば特許文献1には、メロディデータメモリに記憶される音階コードを読み出してカラオケ演奏するときに、使用者の歌声からピッチ抽出した周波数と、メロディデータメモリに記憶される音階コードとを比較し、不一致になると、現在読み出している音階コードのメモリアドレスを歌唱誤り位置として誤り位置メモリに登録しておき、次回に同じ曲をカラオケ演奏する際に、誤り位置メモリに登録された歌唱誤り位置で基準(手本)となるメロディ音を放音して使用者に正しい歌唱を促すようにしたカラオケ装置が開示されている。
【0003】
【特許文献1】実開平7−41597号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、上記特許文献1に開示の装置は、巧く歌唱できなかった箇所をユーザに喚起して正しい歌唱を促すだけなので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させる歌唱補助を行うことができない、という問題がある。
【0005】
本発明は、上述した事情に鑑みてなされたもので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることができるカラオケ装置およびカラオケ処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
上記目的を達成するため、請求項1に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段とを具備することを特徴とする。
【0007】
請求項2に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、ユーザ操作に応じてピッチ補正を指示する指示手段と、前記指示手段によりピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段とを具備することを特徴とする。
【0008】
上記請求項1又は請求項2のいずれかに従属する請求項3に記載の発明では、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成手段と、前記ピッチ誤差データ生成手段がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成手段と、前記ピッチ誤差データ生成手段により生成されるピッチ誤差データと、前記タイミングデータ生成手段により生成されるタイミングデータとを曲データに対応付けて前記曲データ記憶手段に登録する登録手段とを更に具備することを特徴とする。
【0009】
上記請求項1又は請求項2のいずれかに従属する請求項4に記載の発明では、前記ピッチ補正手段は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする。
【0010】
請求項5に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理とをコンピュータで実行させることを特徴とする。
【0011】
請求項6に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、ユーザ操作に応じてピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理とをコンピュータで実行させることを特徴とする。
【0012】
上記請求項5又は請求項6のいずれかに従属する請求項7に記載の発明では、前記記憶処理は、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成処理と、前記ピッチ誤差データ生成処理がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成処理と、前記ピッチ誤差データ生成処理により生成されるピッチ誤差データと、前記タイミングデータ生成処理により生成されるタイミングデータとを曲データに対応付けてメモリ登録する登録処理とを具備することを特徴とする。
【0013】
上記請求項5又は請求項6のいずれかに従属する請求項8に記載の発明では、前記ピッチ補正処理は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする。
【発明の効果】
【0014】
本発明では、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて予め記憶しておき、その内からカラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることができる。
【発明を実施するための最良の形態】
【0015】
以下、図面を参照して本発明の実施の形態について説明する。
A.構成
(1)全体構成
図1は、本発明の実施の一形態によるカラオケ装置の全体構成を示すブロック図である。この図において、CPU10は、スイッチ部15から供給されるスイッチイベントに応じて、プログラムROM11に記憶される所定のプログラムを実行して装置各部を制御する。プログラムROM11には、CPU10により実行される各種プログラムや制御データが記憶される。プログラムROM11に記憶される各種プログラムとは、後述する「メインルーチン」、「タイマインタラプト[1]処理」、「タイマインタラプト[2]処理」、「タイマインタラプト[3]処理」、「スイッチ処理」、「自動演奏処理」および「採点表示処理」を含み、これら本発明の要旨に係わる各処理の動作については追って詳述する。
【0016】
RAM12は、ワークエリアおよびデータエリアを備える。RAM12のワークエリアには、CPU10の処理に用いる各種レジスタ・フラグデータが一時記憶される。RAM12のデータエリアには、CPU10の制御の下に、後述するマイク部16から出力される入力音声データが一時記憶される。曲メモリ13は、装置本体から着脱自在な記憶媒体であり、例えばフラッシュメモリなど電気的に書き換え可能な不揮発性メモリから構成される。曲メモリ13は、曲データエリアおよび歌詞データエリアを備える。曲メモリ13の曲データエリアには、カラオケ演奏される曲データ群が格納される。曲データ群の構成については追って述べる。曲メモリ13の歌詞データエリアには、上記曲データ群に対応して歌詞字幕表示用の歌詞データが格納される。
【0017】
ビデオエンコーダ14は、CPU10の制御の下に、曲メモリ13から読み出される歌詞データを表示画面に字幕表示させたり、後述する評価画面を表示させる映像出力に変換する。スイッチ部15は、装置パネルに配設される各種スイッチの操作に応じたスイッチイベントを発生してCPU10に供給する。スイッチ部15に設けられる主要なスイッチとして、パワーオンオフする電源スイッチの他、曲選択スイッチ、ピッチ補正モードスイッチ、スタート/ストップスイッチ、採点表示スイッチおよび採点表示切替スイッチを備える。これらスイッチが意図するところについては追って述べる。
【0018】
マイク部16は、マイク、アンプおよびA/Dコンバータを備え、マイクを介して入力される音声信号(歌声)を増幅した後、入力音声データに変換して出力する。音源17は、周知の波形メモリ読み出し方式で構成され、CPU10の制御の下に、曲メモリから読み出す曲データに応じて楽音合成してなる楽音データを発生する。ミキサ18は、マイク部16が発生する入力音声データと、音源17が発生する楽音データとをそれぞれアナログ信号形式の音声信号および楽音信号に変換した後、それら両信号を混合して所定レベルに増幅した音声出力信号を発生する。発音部19は、ミキサ18から供給される音声出力信号をスピーカから放音する。
【0019】
(2)曲データエリアの構成
次に、図2〜図4を参照して曲メモリ13に設けられる曲データエリアの構成について説明する。上述した通り、曲メモリ13の曲データエリアには、カラオケ演奏用の曲データ群が格納される。図2(a)は、曲データエリアに格納される曲データ群KDGの構成を示す図である。この図に示すように、曲データ群KDGは、複数曲分の曲データKD(1)〜KD(n)から構成される。1つの曲データKDは、曲データ本体、ピッチ誤差データ、タイミングデータ、採点データおよび小節位置データを備える。
【0020】
図2(b)は、曲データ本体の構成を示す図である。曲データ本体は、演奏開始時点からの経過時間でイベントタイミングを表すタイムTと、曲を構成する各音の音高およびノートオン(発音)・ノートオフ(消音)を表すと共に、メロディパートや伴奏パートなど演奏パートを識別するイベントEVTとが曲進行順に配列される、いわゆる絶対時間方式と呼ばれるデータ形式で形成され、その終端には曲の終わりを表すデータENDが設けられる。なお、図2(b)に図示した典型例では、曲データ本体の先頭がタイムTとなっているが、この例に限らず、例えばカラオケ演奏に先立って発生楽音の音色を指定するイベントEVT等を曲データ本体の先頭に配置する場合もある。
【0021】
図3(a)は、ピッチ誤差データの構成を示す図である。ピッチ誤差データΔP(0)〜(n)は、上述した曲データ本体が表す発音ピッチ(ノートナンバ)と、マイク部16が発生する入力音声データ(歌声)から抽出したピッチとの差分を、後述のタイミングデータt(0)〜(n)に対応させて抽出したものである。図3(b)は、タイミングデータの構成を示す図である。タイミングデータt(0)〜(n)は、ピッチ誤差データΔP(0)〜(n)の抽出タイミングをタイマクロック累算値で表す。
【0022】
図4(a)は、採点データの構成を示す図である。採点データS(1)〜S(n)は、上記のピッチ誤差データΔP(0)〜(n)およびタイミングデータt(0)〜(n)に基づき小節単位で算出した採点結果を表す。採点結果とは、1小節分のピッチ誤差データΔPを累算した累算値を、当該小節中の音符総数で除算して得るピッチ誤差平均となる。
【0023】
図4(b)は、小節位置データの構成を示す図である。小節位置データは、曲データ本体の各小節の先頭を表すB1t(1)〜B1t(n)および後端を表すB2t(1)〜B2t(n)からなる。小節位置データB1t(1)〜B1t(n),B2t(1)〜B2t(n)は、タイマクロック累算値で表現される。
【0024】
B.動作
次に、図5〜図21を参照して上記構成による実施の形態の動作を説明する。以下では、最初にメインルーチンの動作を説明した後、タイマ割込み実行されるタイマインタラプト(1)〜(3)処理について説明する。その後、メインルーチンからコールされるスイッチ処理、自動演奏処理および採点表示処理の各動作について説明する。
【0025】
(1)メインルーチンの動作
電源スイッチ操作により装置電源が投入されると、CPU10は図5に図示するメインルーチンを実行し、ステップSA1に処理を進め、RAM12のワークエリアに格納される各種レジスタやフラグ類をリセットしたり初期値をセットするイニシャライズを行う。また、このステップSA1では、音源17に対して各種レジスタやフラグ類を初期化するよう指示する。そして、イニシャライズが完了すると、CPU10はステップSA2に処理を進め、スイッチ部15が発生するスイッチイベントに対応したスイッチ処理ルーチンを実行する。
【0026】
次いで、ステップSA3では、スタート/ストップスイッチの操作により自動演奏の開始が指示されている場合、選択された曲データKD(SONG)の曲データ本体を読み出してカラオケ演奏を進行させたり、後述する採点表示区間の始りの小節から終わりの小節までを繰り返し歌唱練習させる自動演奏処理を実行する。続いて、ステップSA4では、例えば図21に図示する一例の評価画面に歌唱練習した結果を表示させる採点表示処理を実行する。そして、ステップSA5では、例えば曲データに対応した歌詞データを、カラオケ演奏に同期して表示画面に字幕表示させる等の、その他の処理を実行してから上記ステップSA2に処理を戻す。以後、装置電源がパワーオフされるまで上記ステップSA2〜SA5を繰り返す。
【0027】
(2)タイマインタラプト[1]処理の動作
次に、図6を参照してタイマインタラプト[1]処理の動作について説明する。タイマインタラプト[1]処理は、割込み禁止が解除されると、一定周期毎に割込み実行される。なお、タイマインタラプト[1]処理の割込み禁止は、後述するように、ピッチ補正モードに設定されていない状態で、スタート/ストップスイッチの操作に応じて自動演奏の開始が指示された時に解除される。
【0028】
そうして割込み禁止が解除され、割込み実行タイミングになると、CPU10は図6に図示するステップSB1に処理を進め、マイク部16が発生する入力音声データをRAM12のデータエリアに取込む。続いて、ステップSB2〜SB3では、RAM12のデータエリアに取込んだ入力音声データのピッチを抽出し、抽出したピッチをノートナンバに換算してレジスタPITCH2にストアする。
【0029】
そして、ステップSB4では、レジスタPITCH1に格納される発音音高(カラオケ演奏音のノートナンバ)からレジスタPITCH2に格納される抽出ピッチ(ノートナンバ)を減算した値をピッチ誤差としてレジスタΔPにストアする。なお、レジスタPITCH1には、後述する自動演奏処理のステップSL21(図18参照)においてカラオケ演奏音のノートナンバがストアされるようになっている。
【0030】
次いで、ステップSB5では、上記ステップSB4にて算出したピッチ誤差ΔPを、ピッチ誤差データΔP(m)(SONG)として曲メモリ13中で選択された曲データKD(SONG)に対応付けて登録する。また、ステップSB5では、タイマクロック累算値tをタイミングデータt(m)(SONG)として曲メモリ13中で選択された曲データKD(SONG)に対応付けて登録する。なお、ポインタmは、後述する自動演奏処理においてタイマクロックの歩進毎にインクリメントされる値である。ポインタSONGは、後述する曲選択スイッチ処理にて選択される選択曲番号である。この後、ステップSB6に進み、RAM12のデータエリアに取込んだ入力音声データを読み出し、これをミキサ18に供給して本処理を終える。
【0031】
このように、ピッチ補正モードに設定されていない状態で、スタート/ストップスイッチ操作に応じて自動演奏をスタートさせると、CPU10はタイマインタラプト[1]処理を一定周期毎に割込み実行し、選択曲番号SONGで指定される曲データKD(SONG)中のピッチ誤差データΔP(m)(SONG)およびタイミングデータt(m)(SONG)を生成して曲メモリ13の曲データエリアに登録する一方、マイク部16が発生する入力音声データをミキサ18に供給する。
【0032】
(3)タイマインタラプト[2]処理の動作
次に、図7を参照してタイマインタラプト[2]処理の動作について説明する。タイマインタラプト[2]処理は、後述するように、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP(m)(SONG)が存在し、かつピッチ補正モードに設定された状態で、スタート/ストップスイッチ操作に応じて自動演奏の開始が指示された時にタイマ割込み禁止が解除される。
【0033】
割込み禁止が解除され、割込み実行タイミングになると、CPU10は図7に図示するステップSC1に処理を進め、マイク部16が発生する入力音声データ(歌声)をRAM12のデータエリアに取込む。次いで、ステップSC2では、選択曲番号SONGで指定される曲データKD(SONG)中からタイマクロック累算値tで指定されるピッチ誤差データΔP(t)(SONG)に応じて、RAM12のデータエリアにストアした入力音声データのピッチを変換する。つまり、入力音声データから抽出したピッチに、ピッチ誤差データΔP(t)(SONG)を加算することで、入力音声データのピッチを曲データ本体の発音ピッチに補正する。そして、ステップSC3では、上記ステップSC2にてピッチ変換(ピッチ補正)された入力音声データを、ミキサ18に供給して本処理を終える。
【0034】
以上のように、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP(t)(SONG)が存在し、かつピッチ補正モードに設定された状態で、スタート/ストップスイッチ操作に応じてカラオケ自動演奏をスタートさせると、CPU10はタイマインタラプト[2]処理を一定周期毎に割込み実行し、曲データKD(SONG)中からタイマクロック累算値tで指定されるピッチ誤差データΔP(t)(SONG)に応じて入力音声データのピッチを補正してミキサ18に供給する。
【0035】
(4)タイマインタラプト[3]処理の動作
次に、図8を参照してタイマインタラプト[3]処理の動作について説明する。タイマインタラプト[3]処理は、後述するように、採点表示モードに設定された状態で、スタート/ストップスイッチ操作に応じて自動演奏の開始が指示された時にタイマ割込み禁止が解除される。
【0036】
割込み禁止が解除され、割込み実行タイミングになると、CPU10は図8に図示するステップSD1に処理を進め、マイク部16が発生する入力音声データをRAM12のデータエリアに取込む。次いで、ステップSD2では、取込んだ入力音声データをミキサ18に供給して本処理を終える。
【0037】
(5)スイッチ処理の動作
次に、図9を参照してスイッチ処理の動作を説明する。前述したメインルーチンのステップSA2(図5参照)を介して本処理が実行されると、CPU10は図9に図示するステップSE1に進み、曲選択スイッチの操作に応じてカラオケ演奏する曲を選択する曲選択スイッチ処理を実行する。続いて、ステップSE2では、ピッチ補正モードスイッチの操作に応じてピッチ補正モードを設定したり解除するピッチ補正モードスイッチ処理を実行する。
【0038】
そして、ステップSE3では、スタート/ストップスイッチの操作に応じて自動演奏(カラオケ演奏)の開始又は終了を指示するスタート/ストップスイッチ処理を実行する。次いで、ステップSE4では、採点表示スイッチの操作に応じて、歌唱の採点結果を画面表示させたり画面消去する採点表示スイッチ処理を実行する。この後、ステップSE5に進み、採点表示切替スイッチの操作に応じて採点表示モードを設定したり解除する採点表示切替スイッチ処理を実行する。
【0039】
(6)曲選択スイッチ処理の動作
図10は、曲選択スイッチ処理の動作を示すフローチャートである。上述したスイッチ処理のステップSE1(図9参照)を介して本処理が実行されると、CPU10は図10に図示するステップSF1に進み、スタートフラグSTFが「0」、つまり自動演奏(カラオケ演奏)停止中であるか否かを判断する。なお、自動演奏停止中であるか否かを表すスタートフラグSTFは、後述のスタート/ストップスイッチ処理(図12参照)にて設定される。
【0040】
自動演奏が進行中で、スタートフラグSTFが「1」にセットされていると、上記ステップSF1の判断結果は「NO」になり、本処理を完了させる。したがって、カラオケ演奏中は曲選択スイッチ操作が無効化されるようになっている。一方、スタートフラグSTFが「0」、つまり自動演奏停止中ならば、上記ステップSF1の判断結果は「YES」になり、ステップSF2に進む。ステップSF2では、曲選択スイッチのオン操作の有無を判断する。曲選択スイッチがオン操作されなければ、判断結果は「NO」になり、本処理を完了させる。
【0041】
これに対し、曲選択スイッチがオン操作されると、判断結果は「YES」になり、ステップSF3に進む。ステップSF3では、オン操作された曲選択スイッチに対応する曲番号をレジスタSONGにストアする。つまり、本実施の形態では、曲別にアサインされる複数の曲選択スイッチを有し、この内でオン操作された曲選択スイッチに対応付けられた曲番号が選択曲番号SONGとなる。
【0042】
(7)ピッチ補正モードスイッチ処理の動作
図11は、ピッチ補正モードスイッチ処理の動作を示すフローチャートである。上述したスイッチ処理のステップSE2(図9参照)を介して本処理が実行されると、CPU10は図11に図示するステップSG1に進み、スタートフラグSTFが「0」、つまり自動演奏(カラオケ演奏)停止中であるか否かを判断する。自動演奏が進行中(スタートフラグSTFが「1」)ならば、判断結果は「NO」になり、本処理を完了させる。したがって、自動演奏進行中はピッチ補正モードスイッチ操作が無効化される。
【0043】
一方、自動演奏停止中ならば、上記ステップSG1の判断結果は「YES」になり、ステップSG2に進む。ステップSG2では、ピッチ補正モードスイッチのオン操作の有無を判断する。ピッチ補正モードスイッチがオン操作されなければ、判断結果は「NO」になり、本処理を完了させる。
【0044】
これに対し、ピッチ補正モードスイッチがオン操作されると、上記ステップSG2の判断結果は「YES」になり、ステップSG3に進む。ステップSG3では、補正モードフラグHFを反転する。次いで、ステップSG4では、反転された補正モードフラグHFが「1」であるか否かを判断する。
【0045】
ピッチ補正モードスイッチは、オン操作の度にモード設定またはモード解除をオルタネートに指示するトグルスイッチなので、上記ステップSG4では、ピッチ補正モードスイッチのオン操作に応じて、ピッチ補正モードを設定したかどうかを判断している。反転された補正モードフラグHFが「0」、つまりピッチ補正モードが解除されると、ここでの判断結果は「NO」になり、本処理を完了させる。
【0046】
一方、反転された補正モードフラグHFが「1」、つまりピッチ補正モードが設定されると、上記ステップSG4の判断結果は「YES」になり、ステップSG5に進む。ステップSG5では、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP()(SONG)が登録されているか否かを判断する。ピッチ誤差データΔP()(SONG)が登録されていれば、判断結果は「YES」になり、本処理を終える。これに対し、ピッチ誤差データΔP()(SONG)が登録されていなければ、判断結果は「NO」になり、ステップSG6に進む。ステップSG6では、補正モードフラグHFをゼロリセットして本処理を終える。
【0047】
このように、ピッチ補正モードスイッチ処理では、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP()(SONG)が登録されていない場合には、自動演奏停止中にピッチ補正モードスイッチをオン操作してもピッチ補正モードに設定されず、ピッチ誤差データΔP()(SONG)が登録されている場合にピッチ補正モードに設定し得る。
【0048】
(8)スタート/ストップスイッチ処理の動作
次に、図12〜図13を参照してスタート/ストップスイッチ処理の動作を説明する。上述したスイッチ処理のステップSE3(図9参照)を介して本処理が実行されると、CPU10は図12に図示するステップSH1に進み、スタート/ストップスイッチのオン操作の有無を判断する。なお、後述するように、スタート/ストップスイッチは、オン操作の度にオルタネートに開始指示または停止指示するトグルスイッチである。スタート/ストップスイッチがオン操作されなければ、ステップSH1の判断結果は「NO」になり、何も行わずに本処理を終える。
【0049】
一方、スタート/ストップスイッチがオン操作されると、上記ステップSH1の判断結果は「YES」になり、ステップSH2に進み、スタートフラグSTFを反転する。続いて、ステップSH3では、反転されたスタートフラグSTFが「1」、つまり自動演奏(カラオケ演奏)の開始を指示する状態であるか否かを判断する。反転されたスタートフラグSTFが「0」ならば、判断結果は「NO」になり、ステップSH4に進む。ステップSH4では、自動演奏の停止に伴い、音源17に消音を指示し、続くステップSH5では、実行中のタイマインタラプト処理の割込み実行を禁止して本処理を終える。
【0050】
これに対し、反転されたスタートフラグSTFが「1」となり、自動演奏の開始を指示する状態に設定されると、上記ステップSH3の判断結果が「YES」になり、ステップSH6に進む。ステップSH6では、採点表示フラグSFが「0」、つまり採点表示モードに設定されていない状態であるかを判断する。なお、採点表示モードとは、後述するように、ユーザの歌唱を評価採点して画面表示させる処理動作を指す。以下、採点表示モードに設定されていない場合と、採点表示モードに設定されている場合とに分けて動作説明を進める。
【0051】
<採点表示モードに設定されていない場合>
採点表示モードに設定されていなければ、採点表示フラグSFは「0」なので、上記ステップSH6の判断結果は「YES」になり、ステップSH7に進む。ステップSH7では、選択曲番号SONGに対応した曲データKD(SONG)に含まれる曲データ本体の初期アドレス(先頭アドレス)をレジスタADにストアする。以下、レジスタADの内容を読み出しアドレスADと称す。次いで、ステップSH8では、読み出しアドレスADに応じて、曲メモリ13において選択曲番号SONGで指定される曲データKD(SONG)中から曲データ本体を読み出す。
【0052】
続いて、ステップSH9では、読み出した曲データ本体が、タイムT又はイベントEVTのいずれであるかを判別する。図2(b)に図示したように、通常、先頭アドレスにはタイムTが格納されるが、例えばカラオケ演奏に先立って発生楽音の音色を指定するイベントEVT等が先頭アドレスに格納されることもある。したがって、先頭アドレスからタイムTを読み出した場合には、ステップSH10に進み、レジスタTにタイムTをストアする。
【0053】
続いて、ステップSH11では、タイマクロックを累算するカウンタtをゼロリセットする。カウンタtの値をタイマクロック累算値tと称す。そして、ステップSH12では、補正モードフラグHFが「0」、すなわちピッチ補正モードに設定されているかどうかを判断する。ピッチ補正モードに設定されていなければ、判断結果は「YES」になり、ステップSH13に進む。ステップSH13では、前述したタイマインタラプト[1]処理の禁止を解除すると共に、ポインタmに初期値「1」をセットして本処理を終える。
【0054】
これにより、CPU10は、前述したタイマインタラプト[1]処理を一定周期毎に割込み実行し始める。そうすると、選択曲番号SONGで指定される曲データKD(SONG)中のピッチ誤差データΔP(m)(SONG)およびタイミングデータt(m)(SONG)を生成して曲メモリ13中の曲データKD(SONG)に対応付けて登録する一方、マイク部16が発生する入力音声データをミキサ18に供給する。
【0055】
これに対し、ピッチ補正モードスイッチの操作によりピッチ補正モードに設定されていると、上記ステップSH12の判断結果は「NO」となり、ステップSH14に進み、前述したタイマインタラプト[2]処理の禁止を解除して本処理を終える。これにより、CPU10は、前述したタイマインタラプト[2]処理を一定周期毎に割込み実行し始める。そうすると、選択曲番号SONGで指定される曲データKD(SONG)中からタイマクロック累算値tおよび選択曲番号SONGで指定されるピッチ誤差データΔP(t)(SONG)に応じて入力音声データのピッチを補正してミキサ18に供給する。
【0056】
さて一方、曲データ本体の先頭アドレスからイベントEVTを読み出した場合には、上述したステップSH9を介してステップSH15に進み、その読み出したイベントEVTを音源17に送付する。これにより、音源17では、例えばCPU10より送付されるイベントEVTが音色設定するイベントであると、当該イベントEVTで指定される音色の楽音を発生するよう設定する。そして、ステップSH16では、読み出しアドレスADを歩進させた後、上述のステップSH8に処理を戻す。以後、タイムTが読み出される迄、歩進させたアドレスADに応じて順次イベントEVTを読み出して音源17に送付する。そして、歩進させたアドレスADに応じてタイムTが読み出されると、上述したステップSH10〜SH14の処理を実行して本処理を終える。
【0057】
<採点表示モードに設定されている場合>
採点表示モードに設定されていると、採点表示フラグSFは「1」なので、上記ステップSH6の判断結果が「NO」になり、CPU10は図13に図示するステップSH17に処理を進める。ステップSH17では、選択曲番号SONGで指定される曲データKD(SONG)中の小節位置データB1t(n)(SONG)およびB2t(n)(SONG)を読み出す。
【0058】
なお、小節位置を指定するポインタnは、後述するように、採点表示スイッチをオン操作した時に「1」となり、さらに採点表示切替スイッチのオン操作の回数に応じて歩進される。したがって、小節位置データB1t(n)(SONG)は採点表示区間の始りとなる小節位置を表し、一方、小節位置データB2t(n)(SONG)は採点表示区間の終わりとなる小節位置を表す。
【0059】
次いで、ステップSH18では、選択曲番号SONGで指定される曲データKD(SONG)に含まれる曲データ本体の初期アドレス(先頭アドレス)をレジスタADにストアする。そして、ステップSH19では、読み出しアドレスADに応じて、曲データKD(SONG)中から曲データ本体を読み出す。続いて、ステップSH20では、読み出した曲データ本体が、タイムT又はイベントEVTのいずれであるかを判別する。
【0060】
先頭アドレスからイベントEVTを読み出した場合には、ステップSH21に進み、読み出しアドレスADを歩進させた後、上述のステップSH19に処理を戻す。以後、タイムTが読み出される迄、ステップSH19〜SH21を繰り返し読み出しアドレスADを歩進させる。そして、歩進させたアドレスADに応じてタイムTが読み出されると、ステップSH22に進み、レジスタTにタイムTをストアする。次いで、ステップSH23では、読み出したタイムTが小節位置データB1t(n)(SONG)を超えているか否か、すなわち採点表示区間の始りとなる小節に達したかどうかを判断する。
【0061】
タイムTが採点表示区間の始りとなる小節に達していなければ、判断結果は「NO」になり、上述したステップSH21に処理を戻し、読み出しアドレスADを歩進させた後、再び上記ステップSH19に処理を戻す。そして、歩進された読み出しアドレスADに応じて読み出されたタイムTが採点表示区間の始りとなる小節に達したとする。そうすると、上記ステップSH23の判断結果が「YES」になり、ステップSH24に進む。
【0062】
このように、ステップSH19〜SH23では、採点表示区間の始りとなる小節位置に達するタイムTを探し出すため、読み出しアドレスADを歩進させるようになっている。そして、採点表示区間の始りとなる小節位置に達するタイムTが見つかると、ステップSH24に進み、タイムTをレジスタtにストアする。この後、ステップSH25に進み、タイマカウントの開始を指示する。これにより、CPU10では、図示されていないタイマカウント処理を実行してタイマクロックを発生する。なお、タイマカウント処理とは、タイマ割込みにて曲の演奏テンポに応じたタイマクロックを生成するものである。
【0063】
次いで、ステップSH26では、前述したタイマインタラプト[3]処理の禁止を解除して本処理を終える。この結果、CPU10は、前述したタイマインタラプト[3]処理を一定周期毎に割込み実行し始める。そうすると、マイク部16が発生する入力音声データをRAM12のデータエリアに取込む一方、取込んだ入力音声データをミキサ18に供給する。
【0064】
(9)採点表示スイッチ処理の動作
次に、図14を参照して採点表示スイッチ処理の動作を説明する。上述したスイッチ処理のステップSE4(図9参照)を介して本処理が実行されると、CPU10は図14に図示するステップSJ1に進み、採点表示スイッチのオン操作の有無を判断する。採点表示スイッチがオン操作されなければ、判断結果は「NO」になり、何も行わずに本処理を終える。
【0065】
一方、採点表示スイッチがオン操作されると、上記ステップSJ1の判断結果が「YES」になり、ステップSJ2に進む。ステップSJ2では、採点表示フラグSFが「0」、つまり採点表示モードに設定されていない状態であるかどうかを判断する。採点表示フラグSFが「1」にセットされ、採点表示モードに設定されている場合には、判断結果が「NO」になり、ステップSJ3に進み、採点表示フラグSFをゼロリセットした後、続くステップSJ4にて評価画面(後述する)を消去して本処理を終える。
【0066】
これに対して、採点表示モードに設定されていなければ、上記ステップSJ2の判断結果は「YES」になり、ステップSJ5に進む。ステップSJ5では、選択曲番号SONGで指定される曲データKD(SONG)中に採点データ(図4(a)参照)が登録されているか否かを判断する。採点データが曲データKD(SONG)に登録されていなければ、未採点の状態なので、判断結果は「NO」になり、本処理を完了させる。
【0067】
一方、採点データが曲データKD(SONG)に登録されていると、上記ステップSJ5の判断結果が「YES」になり、ステップSJ6に進む。ステップSJ6では、採点表示フラグSFに「1」をセットして採点表示モードに設定すると共に、フラグCFを「1」にセットする。次いで、ステップSJ7では、ポインタnに「1」をセットして本処理を終える。
【0068】
(10)採点表示切替スイッチ処理の動作
次に、図15を参照して採点表示切替スイッチ処理の動作を説明する。上述したスイッチ処理のステップSE5(図9参照)を介して本処理が実行されると、CPU10は図15に図示するステップSK1に進み、採点表示切替スイッチのオン操作の有無を判断する。採点表示切替スイッチがオン操作されなければ、判断結果は「NO」になり、何も行わずに本処理を終える。
【0069】
一方、採点表示切替スイッチがオン操作されると、上記ステップSK1の判断結果が「YES」になり、ステップSK2に進む。ステップSK2では、採点表示フラグSFが「1」、すなわち採点表示モードに設定されているかどうかを判断する。採点表示モードに設定されていなければ、判断結果は「NO」になり、本処理を終えるが、採点表示モードに設定されていると、判断結果が「YES」となり、ステップSK3に進む。ステップSK3では、ポインタnを歩進させた後、本処理を完了させる。
【0070】
(11)自動演奏処理の動作
次に、図16〜図18を参照して自動演奏処理の動作を説明する。前述したメインルーチンのステップSA3(図5参照)を介して本処理が実行されると、CPU10は図16に図示するステップSL1に処理を進める。ステップSL1では、スタートフラグSTFが「1」、つまり自動演奏進行中であるか否かを判断する。自動演奏停止中ならば、判断結果は「NO」になり、本処理を終える。
【0071】
一方、自動演奏進行中ならば、上記ステップSL1の判断結果は「YES」になり、ステップSL2に進む。ステップSL2では、最小単位時間が経過したか否かを判断する。最小単位時間とは、タイマクロック1周期分の時間を指す。最小単位時間が経過していなければ、ここでの判断結果は「NO」となり、一旦、本処理を完了させるが、最小単位時間が経過していると、判断結果が「YES」になり、ステップSL3に進む。ステップSL3では、タイマクロック累算値tを歩進させる一方、ポインタmを歩進させる。なお、ポインタmは、選択曲番号SONGで指定される曲データKD(SONG)中の、ピッチ誤差データΔP(m)(SONG)やタイミングデータt(m)(SONG)を指定する。
【0072】
続いて、ステップSL4では、レジスタTに格納したタイムTと、タイマクロック累算値tとが一致するか否か、すなわちイベントタイミングに達したかどうかを判断する。イベントタイミングに達していなければ、判断結果は「NO」になり、一旦、本処理を完了させる。これに対し、イベントタイミングに達すると、判断結果が「YES」になり、ステップSL5に進み、曲データ本体の読み出しアドレスADを歩進させる。この後、図17に図示するステップSL6に進み、採点表示フラグSFが「1」、つまり採点表示モード下であるかどうかを判断する。以下、採点表示モードに設定されていない場合と、設定されている場合とに分けて動作説明を進める。
【0073】
<採点表示モードに設定されていない場合>
採点表示モードに設定されていなければ、ステップSL6の判断結果は「NO」になり、図18に図示するステップSL15に進み、選択曲番号SONGで指定される曲データKD(SONG)中の曲データ本体を、読み出しアドレスADに応じて読み出す。次いで、ステップSL16では、読み出した曲データ本体が「タイムT」、「イベントEVT」および「データEND」のいずれであるかを判別する。以下、読み出した曲データ本体が「タイムT」、「イベントEVT」および「データEND」の各場合に分けて動作説明を進める。
【0074】
a.「タイムT」の場合
読み出した曲データ本体が「タイムT」であると、ステップSL17に進み、レジスタTにストアして一旦、本処理を終える。
【0075】
b.「イベントEVT」の場合
読み出した曲データ本体が「イベントEVT」であると、ステップSL18に進み、当該「イベントEVT」がメロディパートのイベントであるかどうかを判別する。「イベントEVT」が伴奏パートのイベントならば、判断結果は「NO」なり、ステップSL19に進み、その伴奏パートのイベントを音源17に送付した後、上述のステップSL5(図16参照)に処理を戻す。これにより、音源17では、カラオケ演奏音(伴奏音)を発生する。
【0076】
一方、「イベントEVT」がメロディパートのイベントであると、上記ステップSL18の判断結果が「YES」になり、ステップSL20に進む。ステップSL20では、メロディパートの「イベントEVT」が発音を指示するノートオンイベントであるか否かを判断する。ノートオンイベントであると、判断結果は「YES」になり、ステップSL21に進み、そのノートオンイベントに含まれるノートナンバ(発音ピッチ)をレジスタPITCH1にストアした後、上述のステップSL5(図16参照)に処理を戻す。
【0077】
これに対し、メロディパートの「イベントEVT」が消音を指示するノートオフイベントであると、上記ステップSL20の判断結果が「NO」になり、ステップSL22に進み、レジスタPITCH1の内容をクリアした後、上述のステップSL5(図16参照)に処理を戻す。
【0078】
c.「データEND」の場合
読み出した曲データ本体が「データEND」であると、ステップSL23に進み、音源17に消音を指示する。そして、ステップSL24では、前述したタイマインタラプト[1]処理の実行を禁止する。この後、ステップSL25に進み、スタートフラグSTFを「0」にセットして自動演奏を停止させる。次いで、ステップSL26では、カラオケ演奏に応じて行われたユーザの歌唱内容を評価する採点処理(後述する)を実行して本処理を終える。
【0079】
このように、採点表示モードに設定されていない場合には、タイマクロック累算値tがタイムTに一致する毎に、歩進させた読み出しアドレスADに応じて曲データ本体を読み出してカラオケ演奏を進行させる。すなわち、読み出した曲データ本体がタイムTならば、それを次イベントタイミングとしてレジスタTにストアする。また、読み出した曲データ本体が伴奏パートのイベントならば、音源17に送付してカラオケ演奏させる。
【0080】
さらに、読み出した曲データ本体がメロディパートのノートオンイベントであると、ユーザの歌声のピッチとの差分を算出する為に、そのノートオンイベントに含まれるノートナンバをレジスタPITCH1にストアし、一方、ノートオフイベントならば、レジスタPITCH1をクリアする。また、読み出した曲データ本体がデータENDならば、音源17を消音させて自動演奏(カラオケ演奏)を停止させると共に、カラオケ演奏に応じて行われたユーザの歌唱内容を評価する採点処理(後述する)を実行する。
【0081】
<採点表示モードに設定されている場合>
採点表示モードに設定されていれば、図17に図示したステップSL6の判断結果が「YES」になり、次のステップSL7に処理を進める。ステップSL7では、現在のタイムTが小節位置データB2t(n)(SONG)を超えているか否か、すなわち採点表示区間の終わりとなる小節に達したかどうかを判断する。現在のタイムTが採点表示区間の終わりとなる小節に達していなければ、判断結果は「NO」になり、上述したステップSL15(図18参照)以降の、採点表示モードに設定されていない場合の動作を実行する。
【0082】
一方、現在のタイムTが採点表示区間の終わりとなる小節に達していると、上記ステップSL7の判断結果は「YES」になり、ステップSL8に進む。ステップSL8では、選択曲番号SONGで指定される曲データKD(SONG)に含まれる曲データ本体の初期アドレス(先頭アドレス)をレジスタADにストアする。続いて、ステップSL9では、レジスタADにストアされた読み出しアドレスADに応じて、曲データKD(SONG)中から曲データ本体を読み出す。そして、ステップSL10では、読み出した曲データ本体が、タイムT又はイベントEVTのいずれであるかを判別する。
【0083】
先頭アドレスからイベントEVTを読み出した場合には、次のステップSL11に進み、読み出しアドレスADを歩進させた後、上述のステップSL9に処理を戻す。以後、タイムTが読み出される迄、ステップSL9〜SL11を繰り返して読み出しアドレスADを歩進させる。そして、歩進させた読み出しアドレスADに応じてタイムTが読み出されると、ステップSL12に進み、レジスタTにタイムTをストアする。次いで、ステップSL13では、読み出したタイムTが小節位置データB1t(n)(SONG)を超えているか否か、すなわち採点表示区間の始りとなる小節に達したかどうかを判断する。
【0084】
タイムTが採点表示区間の始りとなる小節に達していなければ、判断結果は「NO」になり、上述したステップSL11に処理を戻し、読み出しアドレスADを歩進させた後、再び上記ステップSL9に処理を戻す。そして、歩進された読み出しアドレスADに応じて読み出されたタイムTが採点表示区間の始りとなる小節に達したとする。そうすると、上記ステップSL13の判断結果が「YES」になり、ステップSL14に進む。
【0085】
このように、ステップSL9〜SL13では、採点表示区間の始りとなる小節位置に達するタイムTを探し出すため、読み出しアドレスADを歩進させるようになっている。そして、採点表示区間の始りとなる小節位置に達するタイムTが見つかると、ステップSL14に進み、タイムTをレジスタtにストアする。この後、上述したステップSL15(図18参照)以降の、採点表示モードに設定されていない場合の動作を実行する。
【0086】
以上のように、採点表示モードに設定されている場合には、タイマクロック累算値tがタイムTに一致する毎に、現在のタイムTが採点表示区間の終わりとなる小節に達したかどうかを判断し、採点表示区間の終わりとなる小節に達すると、採点表示区間の始りとなる小節に対応するタイムTに戻した後、採点表示モードに設定されていない場合の動作を実行する。したがって、採点表示モードに設定されていると、スタート/ストップスイッチの操作で自動演奏の停止を指示する迄、採点表示区間の始りの小節から終わりの小節までを繰り返しカラオケ演奏するようになっている。
【0087】
(12)採点処理の動作
次に、図19を参照して採点処理の動作を説明する。上述した自動演奏処理のステップSL26を介して本処理が実行されると、CPU10は図19に図示するステップSM1に進み、ポインタnに「1」をセットすると共に、ポインタmをゼロリセットする。続いて、ステップSM2では、レジスタLおよびレジスタSをゼロリセットする。次いで、ステップSM3では、選択曲番号SONGで指定される曲データKD(SONG)において、ポインタnで指定される小節位置データB1t(n)(SONG)に「0」をセットする。
【0088】
そして、ステップSM4では、選択曲番号SONGで指定される曲データKD(SONG)中からポインタmで指定されるピッチ誤差データΔP(m)(SONG)およびタイミングデータt(m)(SONG)を読み出す。次いで、ステップSM5では、上記ステップSM4にて読み出されるデータの有無を判断する。つまり、読み出すべきピッチ誤差データΔP(m)(SONG)又はタイミングデータt(m)(SONG))が有れば、判断結果は「YES」になり、ステップSM6に進む。
【0089】
ステップSM6では、タイミングデータt(m)(SONG)が小節判定値より小さいか否かを判断する。小節判定値とは、1小節分のタイマクロック数にポインタnの値を乗算した値である。したがって、このステップSM6では、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終えたかどうかを判断する。そして、タイミングデータt(m)(SONG)が小節判定値より小さく、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終えていない場合には、判断結果が「YES」になり、ステップSM7に進む。次いで、ステップSM7では、レジスタSにピッチ誤差データΔP(m)(SONG)を加算する。
【0090】
続いて、ステップSM8では、レジスタLの値をインクリメントして歩進させる。なお、歩進されるレジスタLの値は、ポインタnで指定される小節に含まれる音符数(ノートオンイベントの数)に相当する。次いで、ステップSM9では、ポインタmを歩進させた後、上述のステップSM4に処理を戻す。以後、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終える迄、ステップSM4〜SM9を繰り返す。これにより、ポインタnで指定される小節に含まれる音符総数がレジスタLに累算され、それに対応するピッチ誤差データΔP(m)(SONG)の累算値がレジスタSに格納される。
【0091】
そして、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終えてタイミングデータt(m)(SONG)が小節判定値より大きくなると、上記ステップSM6の判断結果が「NO」となり、ステップSM10に進む。ステップSM10では、レジスタSに格納されるピッチ誤差データΔP(m)(SONG)の累算値を、レジスタLに格納される音符総数で除算して得るピッチ誤差平均を、選択曲番号SONGで指定される曲データKD(SONG)中でポインタnで指定される小節の採点データS(n)(SONG)に登録する。
【0092】
こうして、ポインタnで指定される小節の採点データS(n)(SONG)を曲データKD(SONG)に登録し終えると、ステップSM11に進み、ポインタnで指定される小節の終わりを表す小節位置データB2t(n)(SONG)に、1小節分のタイマクロック数にポインタnの値を乗算した小節判定値を登録する。次いで、ステップSM12では、次の小節の始りを表す小節位置データB2t(n+1)(SONG)に、上記ステップSM11と同じ小節判定値を登録する。そして、ステップSM13では、ポインタnを歩進させた後、上述したステップSM2に処理を戻し、次の小節の採点データ作成を進める。
【0093】
以後、選択曲番号SONGで指定される曲データKD(SONG)中からピッチ誤差データΔP(m)(SONG)と、タイミングデータt(m)(SONG)とを全て読み出し終える迄、上述した過程を繰り返すことによって、各小節毎の採点データS(n)(SONG)が登録されると共に、対応する小節区間の始りと終わりを表す小節位置データB1t(n)(SONG)およびB2t(n)(SONG)が登録される。そして、ピッチ誤差データΔP(m)(SONG)と、タイミングデータt(m)(SONG)とを全て読み出し終えた時点で、上述したステップSM5の判断結果が「NO」となり、本処理を完了させる。
【0094】
(13)採点表示処理の動作
次に、図20を参照して採点表示処理の動作を説明する。前述したメインルーチンのステップSA4(図5参照)を介して本処理が実行されると、CPU10は図20に図示するステップSN1に処理を進める。ステップSN1では、採点表示フラグSFが「1」、つまり採点表示モード下であるかどうかを判断する。採点表示モードに設定されていなければ、判断結果は「NO」となり、何も行わずに本処理を終える。
【0095】
一方、採点表示モード下であると、判断結果が「YES」になり、ステップSN2に進み、フラグCFが「1」であるか否かを判断する。フラグCFが「1」の場合とは、採点データ(図4(a)参照)が登録された曲データKD(SONG)に基づいて歌唱練習する際に、採点表示スイッチをオン操作して採点表示モードに設定した状態を表す。そうした状態でなければ、上記ステップSN2の判断結果は「NO」になり、何も行わずに本処理を終えるが、そうした状態であると、判断結果が「YES」となり、ステップSN3に進む。
【0096】
ステップSN3では、選択曲番号SONGで指定される曲データKD(SONG)において、n番目に評価の低い採点データS(m)(SONG)を検索する。次いで、ステップSN4では、上記ステップSN3の検索結果に基づき、例えば図21に図示する一例の評価画面を形成してビデオエンコーダ14に出力する。そして、ステップSN5では、フラグCFをゼロリセットして本処理を終える。
【0097】
以上説明したように、本実施の形態では、曲データKD(SONG)を指定して自動演奏(カラオケ演奏)の開始を指示すると、タイマインタラプト[1]処理の禁止が解除される。これにより、自動演奏処理が曲データKD(SONG)中の曲データ本体を順次再生してカラオケ演奏を進行させ、一方、タイマインタラプト[1]処理がカラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データ本体の発音ピッチとの差分を表すピッチ誤差データΔP(m)(SONG)と、その進行位置を表すタイミングデータt(m)(SONG)とを生成して曲データKD(SONG)に登録する。
【0098】
このようにして、曲データKD(SONG)にタイミングデータt(m)(SONG)およびピッチ誤差データΔP(m)(SONG)を履歴として登録し終えてからピッチ補正モードスイッチの操作でピッチ補正モードに設定した後に自動演奏(カラオケ演奏)の開始を指示すると、タイマインタラプト[2]処理の禁止が解除される。これにより、自動演奏処理が曲データKD(SONG)中の曲データ本体を順次再生してカラオケ演奏を進行させ、一方、タイマインタラプト[2]処理が曲データKD(SONG)中からタイマクロック累算値tで指定されるピッチ誤差データΔP(t)(SONG)に応じて、カラオケ演奏に合せて歌唱するユーザの歌声をピッチ補正してミキサ18に供給するので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることが可能になる。
【0099】
また、本実施の形態では、選曲した曲データKD(SONG)にタイミングデータt(m)(SONG)およびピッチ誤差データΔP(m)(SONG)が登録済みの場合に、採点表示スイッチ操作で採点表示モードに設定し、さらに採点表示切替スイッチのオン操作の回数に応じて採点表示区間の始りとなる小節位置と採点表示区間の終わりとなる小節位置とを指定して自動演奏を開始させると、指定された採点表示区間を自動的に繰り返しカラオケ演奏させ得るようになっている。
【0100】
さらに、本実施の形態では、選曲した曲データKD(SONG)の曲データ本体を先頭から終端まで自動演奏させた場合、採点処理がピッチ誤差データΔP(m)(SONG)とタイミングデータt(m)(SONG)とに基づき各小節毎の採点データS(n)(SONG)と、対応する小節区間の始りと終わりを表す小節位置データB1t(n)(SONG)およびB2t(n)(SONG)とが曲データ本体に登録される。この後に採点表示スイッチ操作で採点表示モードに設定すると、採点表示切替スイッチ操作で指定される小節の採点結果を画面表示させることも可能になっている。
【0101】
なお、上述した実施の形態では、自動演奏(カラオケ演奏)進行中は、ピッチ補正モードスイッチの操作を無効にし、自動演奏開始前にだけピッチ補正モードに設定可能としたが、これに限らず、自動演奏進行中にピッチ補正モードスイッチ操作に応じてピッチ補正モードに設定する態様としても構わない。そうした態様では、自動演奏進行中にピッチ補正モードに設定された時に、前述したタイマインタラプト[2]処理(図7参照)を起動させる。このようにすれば、ユーザが指定する箇所でユーザの歌声を手本通りの正しいピッチに補正させることが可能になる。
【図面の簡単な説明】
【0102】
【図1】本発明による実施の一形態の全体構成を示すブロック図である。
【図2】曲メモリ13に設けられる曲データエリアの構成および曲データ本体の構成を示す図である。
【図3】ピッチ誤差データおよびタイミングデータの構成を示す図である。
【図4】採点データおよび小節位置データの構成を示す図である。
【図5】メインルーチンの動作を示すフローチャートである。
【図6】タイマインタラプト[1]処理の動作を示すフローチャートである。
【図7】タイマインタラプト[2]処理の動作を示すフローチャートである。
【図8】タイマインタラプト[3]処理の動作を示すフローチャートである。
【図9】スイッチ処理の動作を示すフローチャートである。
【図10】曲選択スイッチ処理の動作を示すフローチャートである。
【図11】ピッチ補正モードスイッチ処理の動作を示すフローチャートである。
【図12】スタート/ストップスイッチ処理の動作を示すフローチャートである。
【図13】スタート/ストップスイッチ処理の動作を示すフローチャートである。
【図14】採点表示スイッチ処理の動作を示すフローチャートである。
【図15】採点表示切替スイッチ処理の動作を示すフローチャートである。
【図16】自動演奏処理の動作を示すフローチャートである。
【図17】自動演奏処理の動作を示すフローチャートである。
【図18】自動演奏処理の動作を示すフローチャートである。
【図19】採点処理の動作を示すフローチャートである。
【図20】採点表示処理の動作を示すフローチャートである。
【図21】評価画面の一例を示す図である。
【符号の説明】
【0103】
10 CPU
11 プログラムROM
12 RAM
13 曲メモリ
14 ビデオエンコーダ
15 スイッチ部
16 マイク部
17 音源
18 ミキサ
19 発音部
【技術分野】
【0001】
本発明は、歌唱練習をアシストする機能を備えたカラオケ装置およびカラオケ処理プログラムに関する。
【背景技術】
【0002】
従来より、歌唱練習をアシストする機能を備えたカラオケ装置が知られている。例えば特許文献1には、メロディデータメモリに記憶される音階コードを読み出してカラオケ演奏するときに、使用者の歌声からピッチ抽出した周波数と、メロディデータメモリに記憶される音階コードとを比較し、不一致になると、現在読み出している音階コードのメモリアドレスを歌唱誤り位置として誤り位置メモリに登録しておき、次回に同じ曲をカラオケ演奏する際に、誤り位置メモリに登録された歌唱誤り位置で基準(手本)となるメロディ音を放音して使用者に正しい歌唱を促すようにしたカラオケ装置が開示されている。
【0003】
【特許文献1】実開平7−41597号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、上記特許文献1に開示の装置は、巧く歌唱できなかった箇所をユーザに喚起して正しい歌唱を促すだけなので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させる歌唱補助を行うことができない、という問題がある。
【0005】
本発明は、上述した事情に鑑みてなされたもので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることができるカラオケ装置およびカラオケ処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
上記目的を達成するため、請求項1に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段とを具備することを特徴とする。
【0007】
請求項2に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、ユーザ操作に応じてピッチ補正を指示する指示手段と、前記指示手段によりピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段とを具備することを特徴とする。
【0008】
上記請求項1又は請求項2のいずれかに従属する請求項3に記載の発明では、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成手段と、前記ピッチ誤差データ生成手段がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成手段と、前記ピッチ誤差データ生成手段により生成されるピッチ誤差データと、前記タイミングデータ生成手段により生成されるタイミングデータとを曲データに対応付けて前記曲データ記憶手段に登録する登録手段とを更に具備することを特徴とする。
【0009】
上記請求項1又は請求項2のいずれかに従属する請求項4に記載の発明では、前記ピッチ補正手段は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする。
【0010】
請求項5に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理とをコンピュータで実行させることを特徴とする。
【0011】
請求項6に記載の発明では、曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、ユーザ操作に応じてピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理とをコンピュータで実行させることを特徴とする。
【0012】
上記請求項5又は請求項6のいずれかに従属する請求項7に記載の発明では、前記記憶処理は、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成処理と、前記ピッチ誤差データ生成処理がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成処理と、前記ピッチ誤差データ生成処理により生成されるピッチ誤差データと、前記タイミングデータ生成処理により生成されるタイミングデータとを曲データに対応付けてメモリ登録する登録処理とを具備することを特徴とする。
【0013】
上記請求項5又は請求項6のいずれかに従属する請求項8に記載の発明では、前記ピッチ補正処理は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする。
【発明の効果】
【0014】
本発明では、カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて予め記憶しておき、その内からカラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることができる。
【発明を実施するための最良の形態】
【0015】
以下、図面を参照して本発明の実施の形態について説明する。
A.構成
(1)全体構成
図1は、本発明の実施の一形態によるカラオケ装置の全体構成を示すブロック図である。この図において、CPU10は、スイッチ部15から供給されるスイッチイベントに応じて、プログラムROM11に記憶される所定のプログラムを実行して装置各部を制御する。プログラムROM11には、CPU10により実行される各種プログラムや制御データが記憶される。プログラムROM11に記憶される各種プログラムとは、後述する「メインルーチン」、「タイマインタラプト[1]処理」、「タイマインタラプト[2]処理」、「タイマインタラプト[3]処理」、「スイッチ処理」、「自動演奏処理」および「採点表示処理」を含み、これら本発明の要旨に係わる各処理の動作については追って詳述する。
【0016】
RAM12は、ワークエリアおよびデータエリアを備える。RAM12のワークエリアには、CPU10の処理に用いる各種レジスタ・フラグデータが一時記憶される。RAM12のデータエリアには、CPU10の制御の下に、後述するマイク部16から出力される入力音声データが一時記憶される。曲メモリ13は、装置本体から着脱自在な記憶媒体であり、例えばフラッシュメモリなど電気的に書き換え可能な不揮発性メモリから構成される。曲メモリ13は、曲データエリアおよび歌詞データエリアを備える。曲メモリ13の曲データエリアには、カラオケ演奏される曲データ群が格納される。曲データ群の構成については追って述べる。曲メモリ13の歌詞データエリアには、上記曲データ群に対応して歌詞字幕表示用の歌詞データが格納される。
【0017】
ビデオエンコーダ14は、CPU10の制御の下に、曲メモリ13から読み出される歌詞データを表示画面に字幕表示させたり、後述する評価画面を表示させる映像出力に変換する。スイッチ部15は、装置パネルに配設される各種スイッチの操作に応じたスイッチイベントを発生してCPU10に供給する。スイッチ部15に設けられる主要なスイッチとして、パワーオンオフする電源スイッチの他、曲選択スイッチ、ピッチ補正モードスイッチ、スタート/ストップスイッチ、採点表示スイッチおよび採点表示切替スイッチを備える。これらスイッチが意図するところについては追って述べる。
【0018】
マイク部16は、マイク、アンプおよびA/Dコンバータを備え、マイクを介して入力される音声信号(歌声)を増幅した後、入力音声データに変換して出力する。音源17は、周知の波形メモリ読み出し方式で構成され、CPU10の制御の下に、曲メモリから読み出す曲データに応じて楽音合成してなる楽音データを発生する。ミキサ18は、マイク部16が発生する入力音声データと、音源17が発生する楽音データとをそれぞれアナログ信号形式の音声信号および楽音信号に変換した後、それら両信号を混合して所定レベルに増幅した音声出力信号を発生する。発音部19は、ミキサ18から供給される音声出力信号をスピーカから放音する。
【0019】
(2)曲データエリアの構成
次に、図2〜図4を参照して曲メモリ13に設けられる曲データエリアの構成について説明する。上述した通り、曲メモリ13の曲データエリアには、カラオケ演奏用の曲データ群が格納される。図2(a)は、曲データエリアに格納される曲データ群KDGの構成を示す図である。この図に示すように、曲データ群KDGは、複数曲分の曲データKD(1)〜KD(n)から構成される。1つの曲データKDは、曲データ本体、ピッチ誤差データ、タイミングデータ、採点データおよび小節位置データを備える。
【0020】
図2(b)は、曲データ本体の構成を示す図である。曲データ本体は、演奏開始時点からの経過時間でイベントタイミングを表すタイムTと、曲を構成する各音の音高およびノートオン(発音)・ノートオフ(消音)を表すと共に、メロディパートや伴奏パートなど演奏パートを識別するイベントEVTとが曲進行順に配列される、いわゆる絶対時間方式と呼ばれるデータ形式で形成され、その終端には曲の終わりを表すデータENDが設けられる。なお、図2(b)に図示した典型例では、曲データ本体の先頭がタイムTとなっているが、この例に限らず、例えばカラオケ演奏に先立って発生楽音の音色を指定するイベントEVT等を曲データ本体の先頭に配置する場合もある。
【0021】
図3(a)は、ピッチ誤差データの構成を示す図である。ピッチ誤差データΔP(0)〜(n)は、上述した曲データ本体が表す発音ピッチ(ノートナンバ)と、マイク部16が発生する入力音声データ(歌声)から抽出したピッチとの差分を、後述のタイミングデータt(0)〜(n)に対応させて抽出したものである。図3(b)は、タイミングデータの構成を示す図である。タイミングデータt(0)〜(n)は、ピッチ誤差データΔP(0)〜(n)の抽出タイミングをタイマクロック累算値で表す。
【0022】
図4(a)は、採点データの構成を示す図である。採点データS(1)〜S(n)は、上記のピッチ誤差データΔP(0)〜(n)およびタイミングデータt(0)〜(n)に基づき小節単位で算出した採点結果を表す。採点結果とは、1小節分のピッチ誤差データΔPを累算した累算値を、当該小節中の音符総数で除算して得るピッチ誤差平均となる。
【0023】
図4(b)は、小節位置データの構成を示す図である。小節位置データは、曲データ本体の各小節の先頭を表すB1t(1)〜B1t(n)および後端を表すB2t(1)〜B2t(n)からなる。小節位置データB1t(1)〜B1t(n),B2t(1)〜B2t(n)は、タイマクロック累算値で表現される。
【0024】
B.動作
次に、図5〜図21を参照して上記構成による実施の形態の動作を説明する。以下では、最初にメインルーチンの動作を説明した後、タイマ割込み実行されるタイマインタラプト(1)〜(3)処理について説明する。その後、メインルーチンからコールされるスイッチ処理、自動演奏処理および採点表示処理の各動作について説明する。
【0025】
(1)メインルーチンの動作
電源スイッチ操作により装置電源が投入されると、CPU10は図5に図示するメインルーチンを実行し、ステップSA1に処理を進め、RAM12のワークエリアに格納される各種レジスタやフラグ類をリセットしたり初期値をセットするイニシャライズを行う。また、このステップSA1では、音源17に対して各種レジスタやフラグ類を初期化するよう指示する。そして、イニシャライズが完了すると、CPU10はステップSA2に処理を進め、スイッチ部15が発生するスイッチイベントに対応したスイッチ処理ルーチンを実行する。
【0026】
次いで、ステップSA3では、スタート/ストップスイッチの操作により自動演奏の開始が指示されている場合、選択された曲データKD(SONG)の曲データ本体を読み出してカラオケ演奏を進行させたり、後述する採点表示区間の始りの小節から終わりの小節までを繰り返し歌唱練習させる自動演奏処理を実行する。続いて、ステップSA4では、例えば図21に図示する一例の評価画面に歌唱練習した結果を表示させる採点表示処理を実行する。そして、ステップSA5では、例えば曲データに対応した歌詞データを、カラオケ演奏に同期して表示画面に字幕表示させる等の、その他の処理を実行してから上記ステップSA2に処理を戻す。以後、装置電源がパワーオフされるまで上記ステップSA2〜SA5を繰り返す。
【0027】
(2)タイマインタラプト[1]処理の動作
次に、図6を参照してタイマインタラプト[1]処理の動作について説明する。タイマインタラプト[1]処理は、割込み禁止が解除されると、一定周期毎に割込み実行される。なお、タイマインタラプト[1]処理の割込み禁止は、後述するように、ピッチ補正モードに設定されていない状態で、スタート/ストップスイッチの操作に応じて自動演奏の開始が指示された時に解除される。
【0028】
そうして割込み禁止が解除され、割込み実行タイミングになると、CPU10は図6に図示するステップSB1に処理を進め、マイク部16が発生する入力音声データをRAM12のデータエリアに取込む。続いて、ステップSB2〜SB3では、RAM12のデータエリアに取込んだ入力音声データのピッチを抽出し、抽出したピッチをノートナンバに換算してレジスタPITCH2にストアする。
【0029】
そして、ステップSB4では、レジスタPITCH1に格納される発音音高(カラオケ演奏音のノートナンバ)からレジスタPITCH2に格納される抽出ピッチ(ノートナンバ)を減算した値をピッチ誤差としてレジスタΔPにストアする。なお、レジスタPITCH1には、後述する自動演奏処理のステップSL21(図18参照)においてカラオケ演奏音のノートナンバがストアされるようになっている。
【0030】
次いで、ステップSB5では、上記ステップSB4にて算出したピッチ誤差ΔPを、ピッチ誤差データΔP(m)(SONG)として曲メモリ13中で選択された曲データKD(SONG)に対応付けて登録する。また、ステップSB5では、タイマクロック累算値tをタイミングデータt(m)(SONG)として曲メモリ13中で選択された曲データKD(SONG)に対応付けて登録する。なお、ポインタmは、後述する自動演奏処理においてタイマクロックの歩進毎にインクリメントされる値である。ポインタSONGは、後述する曲選択スイッチ処理にて選択される選択曲番号である。この後、ステップSB6に進み、RAM12のデータエリアに取込んだ入力音声データを読み出し、これをミキサ18に供給して本処理を終える。
【0031】
このように、ピッチ補正モードに設定されていない状態で、スタート/ストップスイッチ操作に応じて自動演奏をスタートさせると、CPU10はタイマインタラプト[1]処理を一定周期毎に割込み実行し、選択曲番号SONGで指定される曲データKD(SONG)中のピッチ誤差データΔP(m)(SONG)およびタイミングデータt(m)(SONG)を生成して曲メモリ13の曲データエリアに登録する一方、マイク部16が発生する入力音声データをミキサ18に供給する。
【0032】
(3)タイマインタラプト[2]処理の動作
次に、図7を参照してタイマインタラプト[2]処理の動作について説明する。タイマインタラプト[2]処理は、後述するように、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP(m)(SONG)が存在し、かつピッチ補正モードに設定された状態で、スタート/ストップスイッチ操作に応じて自動演奏の開始が指示された時にタイマ割込み禁止が解除される。
【0033】
割込み禁止が解除され、割込み実行タイミングになると、CPU10は図7に図示するステップSC1に処理を進め、マイク部16が発生する入力音声データ(歌声)をRAM12のデータエリアに取込む。次いで、ステップSC2では、選択曲番号SONGで指定される曲データKD(SONG)中からタイマクロック累算値tで指定されるピッチ誤差データΔP(t)(SONG)に応じて、RAM12のデータエリアにストアした入力音声データのピッチを変換する。つまり、入力音声データから抽出したピッチに、ピッチ誤差データΔP(t)(SONG)を加算することで、入力音声データのピッチを曲データ本体の発音ピッチに補正する。そして、ステップSC3では、上記ステップSC2にてピッチ変換(ピッチ補正)された入力音声データを、ミキサ18に供給して本処理を終える。
【0034】
以上のように、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP(t)(SONG)が存在し、かつピッチ補正モードに設定された状態で、スタート/ストップスイッチ操作に応じてカラオケ自動演奏をスタートさせると、CPU10はタイマインタラプト[2]処理を一定周期毎に割込み実行し、曲データKD(SONG)中からタイマクロック累算値tで指定されるピッチ誤差データΔP(t)(SONG)に応じて入力音声データのピッチを補正してミキサ18に供給する。
【0035】
(4)タイマインタラプト[3]処理の動作
次に、図8を参照してタイマインタラプト[3]処理の動作について説明する。タイマインタラプト[3]処理は、後述するように、採点表示モードに設定された状態で、スタート/ストップスイッチ操作に応じて自動演奏の開始が指示された時にタイマ割込み禁止が解除される。
【0036】
割込み禁止が解除され、割込み実行タイミングになると、CPU10は図8に図示するステップSD1に処理を進め、マイク部16が発生する入力音声データをRAM12のデータエリアに取込む。次いで、ステップSD2では、取込んだ入力音声データをミキサ18に供給して本処理を終える。
【0037】
(5)スイッチ処理の動作
次に、図9を参照してスイッチ処理の動作を説明する。前述したメインルーチンのステップSA2(図5参照)を介して本処理が実行されると、CPU10は図9に図示するステップSE1に進み、曲選択スイッチの操作に応じてカラオケ演奏する曲を選択する曲選択スイッチ処理を実行する。続いて、ステップSE2では、ピッチ補正モードスイッチの操作に応じてピッチ補正モードを設定したり解除するピッチ補正モードスイッチ処理を実行する。
【0038】
そして、ステップSE3では、スタート/ストップスイッチの操作に応じて自動演奏(カラオケ演奏)の開始又は終了を指示するスタート/ストップスイッチ処理を実行する。次いで、ステップSE4では、採点表示スイッチの操作に応じて、歌唱の採点結果を画面表示させたり画面消去する採点表示スイッチ処理を実行する。この後、ステップSE5に進み、採点表示切替スイッチの操作に応じて採点表示モードを設定したり解除する採点表示切替スイッチ処理を実行する。
【0039】
(6)曲選択スイッチ処理の動作
図10は、曲選択スイッチ処理の動作を示すフローチャートである。上述したスイッチ処理のステップSE1(図9参照)を介して本処理が実行されると、CPU10は図10に図示するステップSF1に進み、スタートフラグSTFが「0」、つまり自動演奏(カラオケ演奏)停止中であるか否かを判断する。なお、自動演奏停止中であるか否かを表すスタートフラグSTFは、後述のスタート/ストップスイッチ処理(図12参照)にて設定される。
【0040】
自動演奏が進行中で、スタートフラグSTFが「1」にセットされていると、上記ステップSF1の判断結果は「NO」になり、本処理を完了させる。したがって、カラオケ演奏中は曲選択スイッチ操作が無効化されるようになっている。一方、スタートフラグSTFが「0」、つまり自動演奏停止中ならば、上記ステップSF1の判断結果は「YES」になり、ステップSF2に進む。ステップSF2では、曲選択スイッチのオン操作の有無を判断する。曲選択スイッチがオン操作されなければ、判断結果は「NO」になり、本処理を完了させる。
【0041】
これに対し、曲選択スイッチがオン操作されると、判断結果は「YES」になり、ステップSF3に進む。ステップSF3では、オン操作された曲選択スイッチに対応する曲番号をレジスタSONGにストアする。つまり、本実施の形態では、曲別にアサインされる複数の曲選択スイッチを有し、この内でオン操作された曲選択スイッチに対応付けられた曲番号が選択曲番号SONGとなる。
【0042】
(7)ピッチ補正モードスイッチ処理の動作
図11は、ピッチ補正モードスイッチ処理の動作を示すフローチャートである。上述したスイッチ処理のステップSE2(図9参照)を介して本処理が実行されると、CPU10は図11に図示するステップSG1に進み、スタートフラグSTFが「0」、つまり自動演奏(カラオケ演奏)停止中であるか否かを判断する。自動演奏が進行中(スタートフラグSTFが「1」)ならば、判断結果は「NO」になり、本処理を完了させる。したがって、自動演奏進行中はピッチ補正モードスイッチ操作が無効化される。
【0043】
一方、自動演奏停止中ならば、上記ステップSG1の判断結果は「YES」になり、ステップSG2に進む。ステップSG2では、ピッチ補正モードスイッチのオン操作の有無を判断する。ピッチ補正モードスイッチがオン操作されなければ、判断結果は「NO」になり、本処理を完了させる。
【0044】
これに対し、ピッチ補正モードスイッチがオン操作されると、上記ステップSG2の判断結果は「YES」になり、ステップSG3に進む。ステップSG3では、補正モードフラグHFを反転する。次いで、ステップSG4では、反転された補正モードフラグHFが「1」であるか否かを判断する。
【0045】
ピッチ補正モードスイッチは、オン操作の度にモード設定またはモード解除をオルタネートに指示するトグルスイッチなので、上記ステップSG4では、ピッチ補正モードスイッチのオン操作に応じて、ピッチ補正モードを設定したかどうかを判断している。反転された補正モードフラグHFが「0」、つまりピッチ補正モードが解除されると、ここでの判断結果は「NO」になり、本処理を完了させる。
【0046】
一方、反転された補正モードフラグHFが「1」、つまりピッチ補正モードが設定されると、上記ステップSG4の判断結果は「YES」になり、ステップSG5に進む。ステップSG5では、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP()(SONG)が登録されているか否かを判断する。ピッチ誤差データΔP()(SONG)が登録されていれば、判断結果は「YES」になり、本処理を終える。これに対し、ピッチ誤差データΔP()(SONG)が登録されていなければ、判断結果は「NO」になり、ステップSG6に進む。ステップSG6では、補正モードフラグHFをゼロリセットして本処理を終える。
【0047】
このように、ピッチ補正モードスイッチ処理では、選択曲番号SONGで指定される曲データKD(SONG)中にピッチ誤差データΔP()(SONG)が登録されていない場合には、自動演奏停止中にピッチ補正モードスイッチをオン操作してもピッチ補正モードに設定されず、ピッチ誤差データΔP()(SONG)が登録されている場合にピッチ補正モードに設定し得る。
【0048】
(8)スタート/ストップスイッチ処理の動作
次に、図12〜図13を参照してスタート/ストップスイッチ処理の動作を説明する。上述したスイッチ処理のステップSE3(図9参照)を介して本処理が実行されると、CPU10は図12に図示するステップSH1に進み、スタート/ストップスイッチのオン操作の有無を判断する。なお、後述するように、スタート/ストップスイッチは、オン操作の度にオルタネートに開始指示または停止指示するトグルスイッチである。スタート/ストップスイッチがオン操作されなければ、ステップSH1の判断結果は「NO」になり、何も行わずに本処理を終える。
【0049】
一方、スタート/ストップスイッチがオン操作されると、上記ステップSH1の判断結果は「YES」になり、ステップSH2に進み、スタートフラグSTFを反転する。続いて、ステップSH3では、反転されたスタートフラグSTFが「1」、つまり自動演奏(カラオケ演奏)の開始を指示する状態であるか否かを判断する。反転されたスタートフラグSTFが「0」ならば、判断結果は「NO」になり、ステップSH4に進む。ステップSH4では、自動演奏の停止に伴い、音源17に消音を指示し、続くステップSH5では、実行中のタイマインタラプト処理の割込み実行を禁止して本処理を終える。
【0050】
これに対し、反転されたスタートフラグSTFが「1」となり、自動演奏の開始を指示する状態に設定されると、上記ステップSH3の判断結果が「YES」になり、ステップSH6に進む。ステップSH6では、採点表示フラグSFが「0」、つまり採点表示モードに設定されていない状態であるかを判断する。なお、採点表示モードとは、後述するように、ユーザの歌唱を評価採点して画面表示させる処理動作を指す。以下、採点表示モードに設定されていない場合と、採点表示モードに設定されている場合とに分けて動作説明を進める。
【0051】
<採点表示モードに設定されていない場合>
採点表示モードに設定されていなければ、採点表示フラグSFは「0」なので、上記ステップSH6の判断結果は「YES」になり、ステップSH7に進む。ステップSH7では、選択曲番号SONGに対応した曲データKD(SONG)に含まれる曲データ本体の初期アドレス(先頭アドレス)をレジスタADにストアする。以下、レジスタADの内容を読み出しアドレスADと称す。次いで、ステップSH8では、読み出しアドレスADに応じて、曲メモリ13において選択曲番号SONGで指定される曲データKD(SONG)中から曲データ本体を読み出す。
【0052】
続いて、ステップSH9では、読み出した曲データ本体が、タイムT又はイベントEVTのいずれであるかを判別する。図2(b)に図示したように、通常、先頭アドレスにはタイムTが格納されるが、例えばカラオケ演奏に先立って発生楽音の音色を指定するイベントEVT等が先頭アドレスに格納されることもある。したがって、先頭アドレスからタイムTを読み出した場合には、ステップSH10に進み、レジスタTにタイムTをストアする。
【0053】
続いて、ステップSH11では、タイマクロックを累算するカウンタtをゼロリセットする。カウンタtの値をタイマクロック累算値tと称す。そして、ステップSH12では、補正モードフラグHFが「0」、すなわちピッチ補正モードに設定されているかどうかを判断する。ピッチ補正モードに設定されていなければ、判断結果は「YES」になり、ステップSH13に進む。ステップSH13では、前述したタイマインタラプト[1]処理の禁止を解除すると共に、ポインタmに初期値「1」をセットして本処理を終える。
【0054】
これにより、CPU10は、前述したタイマインタラプト[1]処理を一定周期毎に割込み実行し始める。そうすると、選択曲番号SONGで指定される曲データKD(SONG)中のピッチ誤差データΔP(m)(SONG)およびタイミングデータt(m)(SONG)を生成して曲メモリ13中の曲データKD(SONG)に対応付けて登録する一方、マイク部16が発生する入力音声データをミキサ18に供給する。
【0055】
これに対し、ピッチ補正モードスイッチの操作によりピッチ補正モードに設定されていると、上記ステップSH12の判断結果は「NO」となり、ステップSH14に進み、前述したタイマインタラプト[2]処理の禁止を解除して本処理を終える。これにより、CPU10は、前述したタイマインタラプト[2]処理を一定周期毎に割込み実行し始める。そうすると、選択曲番号SONGで指定される曲データKD(SONG)中からタイマクロック累算値tおよび選択曲番号SONGで指定されるピッチ誤差データΔP(t)(SONG)に応じて入力音声データのピッチを補正してミキサ18に供給する。
【0056】
さて一方、曲データ本体の先頭アドレスからイベントEVTを読み出した場合には、上述したステップSH9を介してステップSH15に進み、その読み出したイベントEVTを音源17に送付する。これにより、音源17では、例えばCPU10より送付されるイベントEVTが音色設定するイベントであると、当該イベントEVTで指定される音色の楽音を発生するよう設定する。そして、ステップSH16では、読み出しアドレスADを歩進させた後、上述のステップSH8に処理を戻す。以後、タイムTが読み出される迄、歩進させたアドレスADに応じて順次イベントEVTを読み出して音源17に送付する。そして、歩進させたアドレスADに応じてタイムTが読み出されると、上述したステップSH10〜SH14の処理を実行して本処理を終える。
【0057】
<採点表示モードに設定されている場合>
採点表示モードに設定されていると、採点表示フラグSFは「1」なので、上記ステップSH6の判断結果が「NO」になり、CPU10は図13に図示するステップSH17に処理を進める。ステップSH17では、選択曲番号SONGで指定される曲データKD(SONG)中の小節位置データB1t(n)(SONG)およびB2t(n)(SONG)を読み出す。
【0058】
なお、小節位置を指定するポインタnは、後述するように、採点表示スイッチをオン操作した時に「1」となり、さらに採点表示切替スイッチのオン操作の回数に応じて歩進される。したがって、小節位置データB1t(n)(SONG)は採点表示区間の始りとなる小節位置を表し、一方、小節位置データB2t(n)(SONG)は採点表示区間の終わりとなる小節位置を表す。
【0059】
次いで、ステップSH18では、選択曲番号SONGで指定される曲データKD(SONG)に含まれる曲データ本体の初期アドレス(先頭アドレス)をレジスタADにストアする。そして、ステップSH19では、読み出しアドレスADに応じて、曲データKD(SONG)中から曲データ本体を読み出す。続いて、ステップSH20では、読み出した曲データ本体が、タイムT又はイベントEVTのいずれであるかを判別する。
【0060】
先頭アドレスからイベントEVTを読み出した場合には、ステップSH21に進み、読み出しアドレスADを歩進させた後、上述のステップSH19に処理を戻す。以後、タイムTが読み出される迄、ステップSH19〜SH21を繰り返し読み出しアドレスADを歩進させる。そして、歩進させたアドレスADに応じてタイムTが読み出されると、ステップSH22に進み、レジスタTにタイムTをストアする。次いで、ステップSH23では、読み出したタイムTが小節位置データB1t(n)(SONG)を超えているか否か、すなわち採点表示区間の始りとなる小節に達したかどうかを判断する。
【0061】
タイムTが採点表示区間の始りとなる小節に達していなければ、判断結果は「NO」になり、上述したステップSH21に処理を戻し、読み出しアドレスADを歩進させた後、再び上記ステップSH19に処理を戻す。そして、歩進された読み出しアドレスADに応じて読み出されたタイムTが採点表示区間の始りとなる小節に達したとする。そうすると、上記ステップSH23の判断結果が「YES」になり、ステップSH24に進む。
【0062】
このように、ステップSH19〜SH23では、採点表示区間の始りとなる小節位置に達するタイムTを探し出すため、読み出しアドレスADを歩進させるようになっている。そして、採点表示区間の始りとなる小節位置に達するタイムTが見つかると、ステップSH24に進み、タイムTをレジスタtにストアする。この後、ステップSH25に進み、タイマカウントの開始を指示する。これにより、CPU10では、図示されていないタイマカウント処理を実行してタイマクロックを発生する。なお、タイマカウント処理とは、タイマ割込みにて曲の演奏テンポに応じたタイマクロックを生成するものである。
【0063】
次いで、ステップSH26では、前述したタイマインタラプト[3]処理の禁止を解除して本処理を終える。この結果、CPU10は、前述したタイマインタラプト[3]処理を一定周期毎に割込み実行し始める。そうすると、マイク部16が発生する入力音声データをRAM12のデータエリアに取込む一方、取込んだ入力音声データをミキサ18に供給する。
【0064】
(9)採点表示スイッチ処理の動作
次に、図14を参照して採点表示スイッチ処理の動作を説明する。上述したスイッチ処理のステップSE4(図9参照)を介して本処理が実行されると、CPU10は図14に図示するステップSJ1に進み、採点表示スイッチのオン操作の有無を判断する。採点表示スイッチがオン操作されなければ、判断結果は「NO」になり、何も行わずに本処理を終える。
【0065】
一方、採点表示スイッチがオン操作されると、上記ステップSJ1の判断結果が「YES」になり、ステップSJ2に進む。ステップSJ2では、採点表示フラグSFが「0」、つまり採点表示モードに設定されていない状態であるかどうかを判断する。採点表示フラグSFが「1」にセットされ、採点表示モードに設定されている場合には、判断結果が「NO」になり、ステップSJ3に進み、採点表示フラグSFをゼロリセットした後、続くステップSJ4にて評価画面(後述する)を消去して本処理を終える。
【0066】
これに対して、採点表示モードに設定されていなければ、上記ステップSJ2の判断結果は「YES」になり、ステップSJ5に進む。ステップSJ5では、選択曲番号SONGで指定される曲データKD(SONG)中に採点データ(図4(a)参照)が登録されているか否かを判断する。採点データが曲データKD(SONG)に登録されていなければ、未採点の状態なので、判断結果は「NO」になり、本処理を完了させる。
【0067】
一方、採点データが曲データKD(SONG)に登録されていると、上記ステップSJ5の判断結果が「YES」になり、ステップSJ6に進む。ステップSJ6では、採点表示フラグSFに「1」をセットして採点表示モードに設定すると共に、フラグCFを「1」にセットする。次いで、ステップSJ7では、ポインタnに「1」をセットして本処理を終える。
【0068】
(10)採点表示切替スイッチ処理の動作
次に、図15を参照して採点表示切替スイッチ処理の動作を説明する。上述したスイッチ処理のステップSE5(図9参照)を介して本処理が実行されると、CPU10は図15に図示するステップSK1に進み、採点表示切替スイッチのオン操作の有無を判断する。採点表示切替スイッチがオン操作されなければ、判断結果は「NO」になり、何も行わずに本処理を終える。
【0069】
一方、採点表示切替スイッチがオン操作されると、上記ステップSK1の判断結果が「YES」になり、ステップSK2に進む。ステップSK2では、採点表示フラグSFが「1」、すなわち採点表示モードに設定されているかどうかを判断する。採点表示モードに設定されていなければ、判断結果は「NO」になり、本処理を終えるが、採点表示モードに設定されていると、判断結果が「YES」となり、ステップSK3に進む。ステップSK3では、ポインタnを歩進させた後、本処理を完了させる。
【0070】
(11)自動演奏処理の動作
次に、図16〜図18を参照して自動演奏処理の動作を説明する。前述したメインルーチンのステップSA3(図5参照)を介して本処理が実行されると、CPU10は図16に図示するステップSL1に処理を進める。ステップSL1では、スタートフラグSTFが「1」、つまり自動演奏進行中であるか否かを判断する。自動演奏停止中ならば、判断結果は「NO」になり、本処理を終える。
【0071】
一方、自動演奏進行中ならば、上記ステップSL1の判断結果は「YES」になり、ステップSL2に進む。ステップSL2では、最小単位時間が経過したか否かを判断する。最小単位時間とは、タイマクロック1周期分の時間を指す。最小単位時間が経過していなければ、ここでの判断結果は「NO」となり、一旦、本処理を完了させるが、最小単位時間が経過していると、判断結果が「YES」になり、ステップSL3に進む。ステップSL3では、タイマクロック累算値tを歩進させる一方、ポインタmを歩進させる。なお、ポインタmは、選択曲番号SONGで指定される曲データKD(SONG)中の、ピッチ誤差データΔP(m)(SONG)やタイミングデータt(m)(SONG)を指定する。
【0072】
続いて、ステップSL4では、レジスタTに格納したタイムTと、タイマクロック累算値tとが一致するか否か、すなわちイベントタイミングに達したかどうかを判断する。イベントタイミングに達していなければ、判断結果は「NO」になり、一旦、本処理を完了させる。これに対し、イベントタイミングに達すると、判断結果が「YES」になり、ステップSL5に進み、曲データ本体の読み出しアドレスADを歩進させる。この後、図17に図示するステップSL6に進み、採点表示フラグSFが「1」、つまり採点表示モード下であるかどうかを判断する。以下、採点表示モードに設定されていない場合と、設定されている場合とに分けて動作説明を進める。
【0073】
<採点表示モードに設定されていない場合>
採点表示モードに設定されていなければ、ステップSL6の判断結果は「NO」になり、図18に図示するステップSL15に進み、選択曲番号SONGで指定される曲データKD(SONG)中の曲データ本体を、読み出しアドレスADに応じて読み出す。次いで、ステップSL16では、読み出した曲データ本体が「タイムT」、「イベントEVT」および「データEND」のいずれであるかを判別する。以下、読み出した曲データ本体が「タイムT」、「イベントEVT」および「データEND」の各場合に分けて動作説明を進める。
【0074】
a.「タイムT」の場合
読み出した曲データ本体が「タイムT」であると、ステップSL17に進み、レジスタTにストアして一旦、本処理を終える。
【0075】
b.「イベントEVT」の場合
読み出した曲データ本体が「イベントEVT」であると、ステップSL18に進み、当該「イベントEVT」がメロディパートのイベントであるかどうかを判別する。「イベントEVT」が伴奏パートのイベントならば、判断結果は「NO」なり、ステップSL19に進み、その伴奏パートのイベントを音源17に送付した後、上述のステップSL5(図16参照)に処理を戻す。これにより、音源17では、カラオケ演奏音(伴奏音)を発生する。
【0076】
一方、「イベントEVT」がメロディパートのイベントであると、上記ステップSL18の判断結果が「YES」になり、ステップSL20に進む。ステップSL20では、メロディパートの「イベントEVT」が発音を指示するノートオンイベントであるか否かを判断する。ノートオンイベントであると、判断結果は「YES」になり、ステップSL21に進み、そのノートオンイベントに含まれるノートナンバ(発音ピッチ)をレジスタPITCH1にストアした後、上述のステップSL5(図16参照)に処理を戻す。
【0077】
これに対し、メロディパートの「イベントEVT」が消音を指示するノートオフイベントであると、上記ステップSL20の判断結果が「NO」になり、ステップSL22に進み、レジスタPITCH1の内容をクリアした後、上述のステップSL5(図16参照)に処理を戻す。
【0078】
c.「データEND」の場合
読み出した曲データ本体が「データEND」であると、ステップSL23に進み、音源17に消音を指示する。そして、ステップSL24では、前述したタイマインタラプト[1]処理の実行を禁止する。この後、ステップSL25に進み、スタートフラグSTFを「0」にセットして自動演奏を停止させる。次いで、ステップSL26では、カラオケ演奏に応じて行われたユーザの歌唱内容を評価する採点処理(後述する)を実行して本処理を終える。
【0079】
このように、採点表示モードに設定されていない場合には、タイマクロック累算値tがタイムTに一致する毎に、歩進させた読み出しアドレスADに応じて曲データ本体を読み出してカラオケ演奏を進行させる。すなわち、読み出した曲データ本体がタイムTならば、それを次イベントタイミングとしてレジスタTにストアする。また、読み出した曲データ本体が伴奏パートのイベントならば、音源17に送付してカラオケ演奏させる。
【0080】
さらに、読み出した曲データ本体がメロディパートのノートオンイベントであると、ユーザの歌声のピッチとの差分を算出する為に、そのノートオンイベントに含まれるノートナンバをレジスタPITCH1にストアし、一方、ノートオフイベントならば、レジスタPITCH1をクリアする。また、読み出した曲データ本体がデータENDならば、音源17を消音させて自動演奏(カラオケ演奏)を停止させると共に、カラオケ演奏に応じて行われたユーザの歌唱内容を評価する採点処理(後述する)を実行する。
【0081】
<採点表示モードに設定されている場合>
採点表示モードに設定されていれば、図17に図示したステップSL6の判断結果が「YES」になり、次のステップSL7に処理を進める。ステップSL7では、現在のタイムTが小節位置データB2t(n)(SONG)を超えているか否か、すなわち採点表示区間の終わりとなる小節に達したかどうかを判断する。現在のタイムTが採点表示区間の終わりとなる小節に達していなければ、判断結果は「NO」になり、上述したステップSL15(図18参照)以降の、採点表示モードに設定されていない場合の動作を実行する。
【0082】
一方、現在のタイムTが採点表示区間の終わりとなる小節に達していると、上記ステップSL7の判断結果は「YES」になり、ステップSL8に進む。ステップSL8では、選択曲番号SONGで指定される曲データKD(SONG)に含まれる曲データ本体の初期アドレス(先頭アドレス)をレジスタADにストアする。続いて、ステップSL9では、レジスタADにストアされた読み出しアドレスADに応じて、曲データKD(SONG)中から曲データ本体を読み出す。そして、ステップSL10では、読み出した曲データ本体が、タイムT又はイベントEVTのいずれであるかを判別する。
【0083】
先頭アドレスからイベントEVTを読み出した場合には、次のステップSL11に進み、読み出しアドレスADを歩進させた後、上述のステップSL9に処理を戻す。以後、タイムTが読み出される迄、ステップSL9〜SL11を繰り返して読み出しアドレスADを歩進させる。そして、歩進させた読み出しアドレスADに応じてタイムTが読み出されると、ステップSL12に進み、レジスタTにタイムTをストアする。次いで、ステップSL13では、読み出したタイムTが小節位置データB1t(n)(SONG)を超えているか否か、すなわち採点表示区間の始りとなる小節に達したかどうかを判断する。
【0084】
タイムTが採点表示区間の始りとなる小節に達していなければ、判断結果は「NO」になり、上述したステップSL11に処理を戻し、読み出しアドレスADを歩進させた後、再び上記ステップSL9に処理を戻す。そして、歩進された読み出しアドレスADに応じて読み出されたタイムTが採点表示区間の始りとなる小節に達したとする。そうすると、上記ステップSL13の判断結果が「YES」になり、ステップSL14に進む。
【0085】
このように、ステップSL9〜SL13では、採点表示区間の始りとなる小節位置に達するタイムTを探し出すため、読み出しアドレスADを歩進させるようになっている。そして、採点表示区間の始りとなる小節位置に達するタイムTが見つかると、ステップSL14に進み、タイムTをレジスタtにストアする。この後、上述したステップSL15(図18参照)以降の、採点表示モードに設定されていない場合の動作を実行する。
【0086】
以上のように、採点表示モードに設定されている場合には、タイマクロック累算値tがタイムTに一致する毎に、現在のタイムTが採点表示区間の終わりとなる小節に達したかどうかを判断し、採点表示区間の終わりとなる小節に達すると、採点表示区間の始りとなる小節に対応するタイムTに戻した後、採点表示モードに設定されていない場合の動作を実行する。したがって、採点表示モードに設定されていると、スタート/ストップスイッチの操作で自動演奏の停止を指示する迄、採点表示区間の始りの小節から終わりの小節までを繰り返しカラオケ演奏するようになっている。
【0087】
(12)採点処理の動作
次に、図19を参照して採点処理の動作を説明する。上述した自動演奏処理のステップSL26を介して本処理が実行されると、CPU10は図19に図示するステップSM1に進み、ポインタnに「1」をセットすると共に、ポインタmをゼロリセットする。続いて、ステップSM2では、レジスタLおよびレジスタSをゼロリセットする。次いで、ステップSM3では、選択曲番号SONGで指定される曲データKD(SONG)において、ポインタnで指定される小節位置データB1t(n)(SONG)に「0」をセットする。
【0088】
そして、ステップSM4では、選択曲番号SONGで指定される曲データKD(SONG)中からポインタmで指定されるピッチ誤差データΔP(m)(SONG)およびタイミングデータt(m)(SONG)を読み出す。次いで、ステップSM5では、上記ステップSM4にて読み出されるデータの有無を判断する。つまり、読み出すべきピッチ誤差データΔP(m)(SONG)又はタイミングデータt(m)(SONG))が有れば、判断結果は「YES」になり、ステップSM6に進む。
【0089】
ステップSM6では、タイミングデータt(m)(SONG)が小節判定値より小さいか否かを判断する。小節判定値とは、1小節分のタイマクロック数にポインタnの値を乗算した値である。したがって、このステップSM6では、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終えたかどうかを判断する。そして、タイミングデータt(m)(SONG)が小節判定値より小さく、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終えていない場合には、判断結果が「YES」になり、ステップSM7に進む。次いで、ステップSM7では、レジスタSにピッチ誤差データΔP(m)(SONG)を加算する。
【0090】
続いて、ステップSM8では、レジスタLの値をインクリメントして歩進させる。なお、歩進されるレジスタLの値は、ポインタnで指定される小節に含まれる音符数(ノートオンイベントの数)に相当する。次いで、ステップSM9では、ポインタmを歩進させた後、上述のステップSM4に処理を戻す。以後、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終える迄、ステップSM4〜SM9を繰り返す。これにより、ポインタnで指定される小節に含まれる音符総数がレジスタLに累算され、それに対応するピッチ誤差データΔP(m)(SONG)の累算値がレジスタSに格納される。
【0091】
そして、1小節分のピッチ誤差データΔP(m)(SONG)を読み出し終えてタイミングデータt(m)(SONG)が小節判定値より大きくなると、上記ステップSM6の判断結果が「NO」となり、ステップSM10に進む。ステップSM10では、レジスタSに格納されるピッチ誤差データΔP(m)(SONG)の累算値を、レジスタLに格納される音符総数で除算して得るピッチ誤差平均を、選択曲番号SONGで指定される曲データKD(SONG)中でポインタnで指定される小節の採点データS(n)(SONG)に登録する。
【0092】
こうして、ポインタnで指定される小節の採点データS(n)(SONG)を曲データKD(SONG)に登録し終えると、ステップSM11に進み、ポインタnで指定される小節の終わりを表す小節位置データB2t(n)(SONG)に、1小節分のタイマクロック数にポインタnの値を乗算した小節判定値を登録する。次いで、ステップSM12では、次の小節の始りを表す小節位置データB2t(n+1)(SONG)に、上記ステップSM11と同じ小節判定値を登録する。そして、ステップSM13では、ポインタnを歩進させた後、上述したステップSM2に処理を戻し、次の小節の採点データ作成を進める。
【0093】
以後、選択曲番号SONGで指定される曲データKD(SONG)中からピッチ誤差データΔP(m)(SONG)と、タイミングデータt(m)(SONG)とを全て読み出し終える迄、上述した過程を繰り返すことによって、各小節毎の採点データS(n)(SONG)が登録されると共に、対応する小節区間の始りと終わりを表す小節位置データB1t(n)(SONG)およびB2t(n)(SONG)が登録される。そして、ピッチ誤差データΔP(m)(SONG)と、タイミングデータt(m)(SONG)とを全て読み出し終えた時点で、上述したステップSM5の判断結果が「NO」となり、本処理を完了させる。
【0094】
(13)採点表示処理の動作
次に、図20を参照して採点表示処理の動作を説明する。前述したメインルーチンのステップSA4(図5参照)を介して本処理が実行されると、CPU10は図20に図示するステップSN1に処理を進める。ステップSN1では、採点表示フラグSFが「1」、つまり採点表示モード下であるかどうかを判断する。採点表示モードに設定されていなければ、判断結果は「NO」となり、何も行わずに本処理を終える。
【0095】
一方、採点表示モード下であると、判断結果が「YES」になり、ステップSN2に進み、フラグCFが「1」であるか否かを判断する。フラグCFが「1」の場合とは、採点データ(図4(a)参照)が登録された曲データKD(SONG)に基づいて歌唱練習する際に、採点表示スイッチをオン操作して採点表示モードに設定した状態を表す。そうした状態でなければ、上記ステップSN2の判断結果は「NO」になり、何も行わずに本処理を終えるが、そうした状態であると、判断結果が「YES」となり、ステップSN3に進む。
【0096】
ステップSN3では、選択曲番号SONGで指定される曲データKD(SONG)において、n番目に評価の低い採点データS(m)(SONG)を検索する。次いで、ステップSN4では、上記ステップSN3の検索結果に基づき、例えば図21に図示する一例の評価画面を形成してビデオエンコーダ14に出力する。そして、ステップSN5では、フラグCFをゼロリセットして本処理を終える。
【0097】
以上説明したように、本実施の形態では、曲データKD(SONG)を指定して自動演奏(カラオケ演奏)の開始を指示すると、タイマインタラプト[1]処理の禁止が解除される。これにより、自動演奏処理が曲データKD(SONG)中の曲データ本体を順次再生してカラオケ演奏を進行させ、一方、タイマインタラプト[1]処理がカラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データ本体の発音ピッチとの差分を表すピッチ誤差データΔP(m)(SONG)と、その進行位置を表すタイミングデータt(m)(SONG)とを生成して曲データKD(SONG)に登録する。
【0098】
このようにして、曲データKD(SONG)にタイミングデータt(m)(SONG)およびピッチ誤差データΔP(m)(SONG)を履歴として登録し終えてからピッチ補正モードスイッチの操作でピッチ補正モードに設定した後に自動演奏(カラオケ演奏)の開始を指示すると、タイマインタラプト[2]処理の禁止が解除される。これにより、自動演奏処理が曲データKD(SONG)中の曲データ本体を順次再生してカラオケ演奏を進行させ、一方、タイマインタラプト[2]処理が曲データKD(SONG)中からタイマクロック累算値tで指定されるピッチ誤差データΔP(t)(SONG)に応じて、カラオケ演奏に合せて歌唱するユーザの歌声をピッチ補正してミキサ18に供給するので、巧く歌唱できなかった箇所でユーザの歌声を手本通りの正しいピッチに自動的に補正させることが可能になる。
【0099】
また、本実施の形態では、選曲した曲データKD(SONG)にタイミングデータt(m)(SONG)およびピッチ誤差データΔP(m)(SONG)が登録済みの場合に、採点表示スイッチ操作で採点表示モードに設定し、さらに採点表示切替スイッチのオン操作の回数に応じて採点表示区間の始りとなる小節位置と採点表示区間の終わりとなる小節位置とを指定して自動演奏を開始させると、指定された採点表示区間を自動的に繰り返しカラオケ演奏させ得るようになっている。
【0100】
さらに、本実施の形態では、選曲した曲データKD(SONG)の曲データ本体を先頭から終端まで自動演奏させた場合、採点処理がピッチ誤差データΔP(m)(SONG)とタイミングデータt(m)(SONG)とに基づき各小節毎の採点データS(n)(SONG)と、対応する小節区間の始りと終わりを表す小節位置データB1t(n)(SONG)およびB2t(n)(SONG)とが曲データ本体に登録される。この後に採点表示スイッチ操作で採点表示モードに設定すると、採点表示切替スイッチ操作で指定される小節の採点結果を画面表示させることも可能になっている。
【0101】
なお、上述した実施の形態では、自動演奏(カラオケ演奏)進行中は、ピッチ補正モードスイッチの操作を無効にし、自動演奏開始前にだけピッチ補正モードに設定可能としたが、これに限らず、自動演奏進行中にピッチ補正モードスイッチ操作に応じてピッチ補正モードに設定する態様としても構わない。そうした態様では、自動演奏進行中にピッチ補正モードに設定された時に、前述したタイマインタラプト[2]処理(図7参照)を起動させる。このようにすれば、ユーザが指定する箇所でユーザの歌声を手本通りの正しいピッチに補正させることが可能になる。
【図面の簡単な説明】
【0102】
【図1】本発明による実施の一形態の全体構成を示すブロック図である。
【図2】曲メモリ13に設けられる曲データエリアの構成および曲データ本体の構成を示す図である。
【図3】ピッチ誤差データおよびタイミングデータの構成を示す図である。
【図4】採点データおよび小節位置データの構成を示す図である。
【図5】メインルーチンの動作を示すフローチャートである。
【図6】タイマインタラプト[1]処理の動作を示すフローチャートである。
【図7】タイマインタラプト[2]処理の動作を示すフローチャートである。
【図8】タイマインタラプト[3]処理の動作を示すフローチャートである。
【図9】スイッチ処理の動作を示すフローチャートである。
【図10】曲選択スイッチ処理の動作を示すフローチャートである。
【図11】ピッチ補正モードスイッチ処理の動作を示すフローチャートである。
【図12】スタート/ストップスイッチ処理の動作を示すフローチャートである。
【図13】スタート/ストップスイッチ処理の動作を示すフローチャートである。
【図14】採点表示スイッチ処理の動作を示すフローチャートである。
【図15】採点表示切替スイッチ処理の動作を示すフローチャートである。
【図16】自動演奏処理の動作を示すフローチャートである。
【図17】自動演奏処理の動作を示すフローチャートである。
【図18】自動演奏処理の動作を示すフローチャートである。
【図19】採点処理の動作を示すフローチャートである。
【図20】採点表示処理の動作を示すフローチャートである。
【図21】評価画面の一例を示す図である。
【符号の説明】
【0103】
10 CPU
11 プログラムROM
12 RAM
13 曲メモリ
14 ビデオエンコーダ
15 スイッチ部
16 マイク部
17 音源
18 ミキサ
19 発音部
【特許請求の範囲】
【請求項1】
曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、
カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段と
を具備することを特徴とするカラオケ装置。
【請求項2】
曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、
ユーザ操作に応じてピッチ補正を指示する指示手段と、
前記指示手段によりピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段と
を具備することを特徴とするカラオケ装置。
【請求項3】
カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成手段と、
前記ピッチ誤差データ生成手段がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成手段と、
前記ピッチ誤差データ生成手段により生成されるピッチ誤差データと、前記タイミングデータ生成手段により生成されるタイミングデータとを曲データに対応付けて前記曲データ記憶手段に登録する登録手段と
を更に具備することを特徴とする請求項1又は請求項2のいずれかに記載のカラオケ装置。
【請求項4】
前記ピッチ補正手段は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする請求項1又は請求項2のいずれに記載のカラオケ装置。
【請求項5】
曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、
カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理と
をコンピュータで実行させることを特徴とするカラオケ処理プログラム。
【請求項6】
曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、
ユーザ操作に応じてピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理と
をコンピュータで実行させることを特徴とするカラオケ処理プログラム。
【請求項7】
前記記憶処理は、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成処理と、
前記ピッチ誤差データ生成処理がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成処理と、
前記ピッチ誤差データ生成処理により生成されるピッチ誤差データと、前記タイミングデータ生成処理により生成されるタイミングデータとを曲データに対応付けてメモリ登録する登録処理と
を具備することを特徴とする請求項5又は請求項6のいずれかに記載のカラオケ処理プログラム。
【請求項8】
前記ピッチ補正処理は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする請求項5又は請求項6のいずれに記載のカラオケ処理プログラム。
【請求項1】
曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、
カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段と
を具備することを特徴とするカラオケ装置。
【請求項2】
曲を構成する各音を表す曲データを再生してカラオケ演奏するカラオケ装置において、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する曲データ記憶手段と、
ユーザ操作に応じてピッチ補正を指示する指示手段と、
前記指示手段によりピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記曲データ記憶手段から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正手段と
を具備することを特徴とするカラオケ装置。
【請求項3】
カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成手段と、
前記ピッチ誤差データ生成手段がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成手段と、
前記ピッチ誤差データ生成手段により生成されるピッチ誤差データと、前記タイミングデータ生成手段により生成されるタイミングデータとを曲データに対応付けて前記曲データ記憶手段に登録する登録手段と
を更に具備することを特徴とする請求項1又は請求項2のいずれかに記載のカラオケ装置。
【請求項4】
前記ピッチ補正手段は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする請求項1又は請求項2のいずれに記載のカラオケ装置。
【請求項5】
曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、
カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理と
をコンピュータで実行させることを特徴とするカラオケ処理プログラム。
【請求項6】
曲を構成する各音を表す曲データを再生してカラオケ演奏させるカラオケ処理プログラムにおいて、
カラオケ演奏に合せて歌唱したユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データと、このピッチ誤差データを生成した時の演奏時刻を表すタイミングデータとを、曲を構成する各音を表す曲データに対応付けて記憶する記憶処理と、
ユーザ操作に応じてピッチ補正が指示された場合、カラオケ演奏される曲データに同期したタイミングデータで指定されるピッチ誤差データを前記記憶処理にて記憶されたデータの中から読み出し、読み出したピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを補正するピッチ補正処理と
をコンピュータで実行させることを特徴とするカラオケ処理プログラム。
【請求項7】
前記記憶処理は、カラオケ演奏に合せて歌唱するユーザの歌声のピッチと曲データの発音ピッチとの差分を表すピッチ誤差データを生成するピッチ誤差データ生成処理と、
前記ピッチ誤差データ生成処理がピッチ誤差データを発生した時の演奏時刻を表すタイミングデータを生成するタイミングデータ生成処理と、
前記ピッチ誤差データ生成処理により生成されるピッチ誤差データと、前記タイミングデータ生成処理により生成されるタイミングデータとを曲データに対応付けてメモリ登録する登録処理と
を具備することを特徴とする請求項5又は請求項6のいずれかに記載のカラオケ処理プログラム。
【請求項8】
前記ピッチ補正処理は、ピッチ誤差データに応じて、カラオケ演奏に合せて歌唱するユーザの歌声のピッチを、カラオケ演奏される曲データが表す音の音高に補正することを特徴とする請求項5又は請求項6のいずれに記載のカラオケ処理プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2007−316416(P2007−316416A)
【公開日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願番号】特願2006−146706(P2006−146706)
【出願日】平成18年5月26日(2006.5.26)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
【公開日】平成19年12月6日(2007.12.6)
【国際特許分類】
【出願日】平成18年5月26日(2006.5.26)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
[ Back to top ]