(57)【特許請求の範囲】
【請求項１】
複数のタスクをマルチタスク処理で行うカラオケ装置であって、
メイン音源において楽曲を生成するためのメインシーケンサプログラムと、サブ音源において楽曲を生成するためのサブシーケンサプログラムと、前記メインシーケンサプログラム及びサブシーケンサプログラム以外のアプリケーションプログラムとを記憶するプログラム記憶手段と、
前記アプリケーションプログラムに基づくタスク、前記メインシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われるメインシーケンサタスク、及び前記サブシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われないサブシーケンサタスクについて、各々のタスクの内容を指示する処理情報及び当該タスクに対応する時間を指示する時間情報を含むタスク情報を記憶するタスク情報記憶手段と、
前記タスク情報中の処理情報及び時間情報を参照しながら同時に複数のタスクを行うタスク実行手段と、
前記メインシーケンサタスクの優先度を前記サブシーケンサタスクの優先度よりも高くするよう、前記タスク実行手段において行われる前記タスクの優先度を設定する優先度設定手段と、
前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも低い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを継続して行わせ、前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも高い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを中断させて、当該高い優先度に設定されたタスクを行わせるよう制御する制御手段と
を備えることを特徴とするカラオケ装置。
【請求項２】
メイン音源においてカラオケ演奏としての楽曲を生成するためのメインシーケンサプログラムと、サブ音源において前記メインシーケンサタスクで生成される楽曲の次の楽曲を生成するためのサブシーケンサプログラムと、前記メインシーケンサプログラム及びサブシーケンサプログラム以外のアプリケーションプログラムとを記憶するプログラム記憶手段と、
前記アプリケーションプログラムに基づくタスク、前記メインシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われるメインシーケンサタスク、及び前記サブシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われないサブシーケンサタスクについて、各々のタスクの内容を指示する処理情報及び当該タスクに対応する時間を指示する時間情報を含むタスク情報を記憶するタスク情報記憶手段と、
前記タスク情報中の処理情報及び時間情報を参照しながら同時に複数のタスクを行うタスク実行手段と、
前記メインシーケンサタスクの優先度を前記サブシーケンサタスクの優先度よりも高くするよう、前記タスク実行手段において行われる前記タスクの優先度を設定する優先度設定手段と、
前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも低い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを継続して行わせ、前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも高い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを中断させて、当該高い優先度に設定されたタスクを行わせるよう制御する制御手段と
を備えることを特徴とするカラオケ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の楽曲演奏をマルチタスク処理で行うカラオケ装置に関する。
【背景技術】
【０００２】
従来より、カラオケ演奏処理をコンピュータによって制御するカラオケ装置が知られている。例えば、ＭＩＤＩ（Musical Instrument Digital Interface）規格に基づいて作成されたの曲データに基づいて楽曲を演奏するカラオケ装置が広く知られている。このようなコンピュータによって制御を行うカラオケ装置においては、複数の処理を並行して行う、いわゆるマルチタスク処理が行われている。例えば、曲データに基づいて楽曲を演奏する処理と、ディスプレイに歌詞を表示して曲の進行に伴って色替えをする処理を同時に行う。また、楽曲演奏と歌詞表示とを同時に行う通常のカラオケ演奏とあわせて、次に演奏すべき曲を確認するための演奏を行う場合にも、複数の演奏処理が同時に行われている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、このようなマルチタスク処理を一つのＣＰＵで行う場合には、複数に時分割して行うので、ある処理が非常に重い場合には、他の処理がどんどん遅れていくという不都合が生じることがある。例えば、通常のカラオケ演奏と次曲を確認する演奏とを同時に行う場合に、次曲確認演奏の処理が重いと、通常のカラオケ演奏まで遅れてしまう。このように、楽曲の演奏を行うカラオケ装置においては、楽曲演奏処理に遅れが生じた場合には、不自然な演奏となってしまい、利用者に違和感を与えてしまう場合があった。
【０００４】
本発明は上述した課題を解決するためになされたものであり、マルチタスク処理を行うカラオケ装置において、利用者に違和感を与えないカラオケ装置を提供することを目的としている。
【課題を解決するための手段】
【０００５】
上述した課題を解決するために、請求項１に記載の発明は、複数のタスクをマルチタスク処理で行うカラオケ装置であって、メイン音源において楽曲を生成するためのメインシーケンサプログラムと、サブ音源において楽曲を生成するためのサブシーケンサプログラムと、前記メインシーケンサプログラム及びサブシーケンサプログラム以外のアプリケーションプログラムとを記憶するプログラム記憶手段と、前記アプリケーションプログラムに基づくタスク、前記メインシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われるメインシーケンサタスク、及び前記サブシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われないサブシーケンサタスクについて、各々のタスクの内容を指示する処理情報及び当該タスクに対応する時間を指示する時間情報を含むタスク情報を記憶するタスク情報記憶手段と、前記タスク情報中の処理情報及び時間情報を参照しながら同時に複数のタスクを行うタスク実行手段と、前記メインシーケンサタスクの優先度を前記サブシーケンサタスクの優先度よりも高くするよう、前記タスク実行手段において行われる前記タスクの優先度を設定する優先度設定手段と、前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも低い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを継続して行わせ、前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも高い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを中断させて、当該高い優先度に設定されたタスクを行わせるよう制御する制御手段とを備えることを特徴とする。
また、請求項２に記載の発明は、メイン音源においてカラオケ演奏としての楽曲を生成するためのメインシーケンサプログラムと、サブ音源において前記メインシーケンサタスクで生成される楽曲の次の楽曲を生成するためのサブシーケンサプログラムと、前記メインシーケンサプログラム及びサブシーケンサプログラム以外のアプリケーションプログラムとを記憶するプログラム記憶手段と、前記アプリケーションプログラムに基づくタスク、前記メインシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われるメインシーケンサタスク、及び前記サブシーケンサプログラムに基づくタスクであって前記アプリケーションプログラムに基づくタスクと同期して行われないサブシーケンサタスクについて、各々のタスクの内容を指示する処理情報及び当該タスクに対応する時間を指示する時間情報を含むタスク情報を記憶するタスク情報記憶手段と、前記タスク情報中の処理情報及び時間情報を参照しながら同時に複数のタスクを行うタスク実行手段と、前記メインシーケンサタスクの優先度を前記サブシーケンサタスクの優先度よりも高くするよう、前記タスク実行手段において行われる前記タスクの優先度を設定する優先度設定手段と、前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも低い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを継続して行わせ、前記タスク実行手段によりタスクが行われている場合に、前記優先度設定手段によって当該タスクよりも高い優先度に設定されたタスクが実行可能な状態になったときには、前記タスク実行手段が行っているタスクを中断させて、当該高い優先度に設定されたタスクを行わせるよう制御する制御手段とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、マルチタスク処理を行うカラオケ装置において、利用者に違和感を与えない処理を行うことができるようになる。
【発明を実施するための最良の形態】
【０００７】
以下、図面を参照しながら、本発明の実施の形態について説明する。
１．実施形態の構成
（１）全体構成
図１は、実施形態の構成を示すブロック図である。本実施形態にかかるカラオケ装置１００は、通常のカラオケ演奏を行うことができる他、次に演奏する曲を確認できるように構成されており、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ハードディスクドライブ１０４、表示制御部１０５、ディスプレイ１０６、メイン音源１０７、サブ音源１０８、パネルインターフェイス１０９、パネル１１０、スピーカ１２０、およびヘッドフォン１３０を備えている。
【０００８】
ＣＰＵ１０１は、ＲＯＭ１０２に記憶された各種プログラムに従って、バスを介して接続された各部の制御を行う。ＲＯＭ１０２には、オペレーティングシステム（ＯＳ）の他、曲データに基づいてカラオケ演奏を行うためのシーケンサプログラム等の各種アプリケーションプログラムが記憶されている。このような各種プログラムについては、実施形態の動作において後に詳しく説明する。ＲＡＭ１０３は、データを一時的に記憶するために用いるメモリであり、後に説明するように、リクエスト曲番号を記憶したり、リクエストされた曲データなどを記憶するために用いられる。ＨＤＤ１０４は、大容量の記憶媒体であり、リクエスト可能な曲データが大量に記憶されている。表示制御部１０５は、ディスプレイ１０６における表示を制御するものであり、ディスプレイ１０６には、例えばＣＲＴ（Cathode Ray Tube）ディスプレイなどが用いられる。
【０００９】
本実施形態では、カラオケ装置１００は、メイン音源１０７とサブ音源１０８との２つの音源を備えている。メイン音源１０７は、通常のカラオケ演奏に対応する楽曲を生成してスピーカ１２０に出力し、サブ音源１０８は、次曲確認用演奏に対応する楽曲を生成してヘッドフォン１３０に出力する。パネルインターフェイス１０９は、パネル１００とのインターフェイスであり、パネル１１０は、以下に説明する表示部や各種キーを備えている。
【００１０】
（２）パネル１１０の構成
図２は、パネル１１０の外観構成を示す図である。パネル１１０は、ＬＥＤ表示部１１１、テンキー１１２、セットキー１１３、スタートキー１１４、および次曲確認キー１１４を備えて構成されている。ＬＥＤ表示部１１１は、７セグメントＬＥＤ（Light Emitting Diode）を備えて構成されており、予約曲数や、リクエスト入力中の曲番号、演奏中の曲番号などを表示できるようになっている。テンキー１１２は、曲番号を入力するためのキーであり、セットキー１１３は、テンキー１１２によって入力された曲番号を確定するためのキーである。スタートキー１１４は、演奏のスタートを指示するキーであり、スタートキー１１４が操作されると、ディスプレイ１０６において背景映像および歌詞の表示が開始するとともに、スピーカ１２０においてカラオケ演奏に対応する楽曲の出力が開始する。次曲確認キー１１５は、スピーカ１２０から出力されている楽曲の次のリクエスト曲の確認を指示するキーであり、次曲確認キー１１５が操作されると、ヘッドフォン１３０において次曲の演奏に対応する楽曲の出力が開始する。これらの各キーの操作は逐次検出され、パネルインターフェイスを介してＣＰＵ１０１によって認識されるようになっている。
【００１１】
（３）ＲＡＭ１０３に記憶するデータ構成
次に、ＲＡＭ１０３に記憶されるデータ構成について説明する。本実施形態では、ＲＡＭ１０３には、図３に示すリクエストキューエリアと、図４に示す曲データ記憶エリアＡおよび曲データ記憶エリアＢとが設定される。リクエストキューエリアは、リングバッファ状に使用される。テンキー１１２によって入力されセットキー１１３によって確定された曲番号が、一定の方向に順次記憶され、記憶された順に読み出される。そして、読み出された曲番号にかかるリクエスト曲の演奏準備が完了すると、新たな曲番号を書き込むことができるようになる。
【００１２】
図４に示す曲データ記憶エリアＡおよびＢは、リクエスト曲の演奏準備に用いられるエリアである。リクエストキューエリアから読み出されたリクエスト曲番号に対応した曲データはＨＤＤ１０４から読み出されて、いずれかのエリアに展開される。カラオケ装置１００は、メイン音源１０７およびサブ音源１０８の２種類の音源を備えており、同時に楽音信号生成を行う場合がある。本実施形態では、曲データを展開するエリアを２つ設けており、それぞれのエリアは、メイン音源１０７あるいはサブ音源１０８のいずれか一方における楽曲生成処理に使用される。本実施形態で用いる曲データは、ＭＩＤＩ規格に基づいて作成されており、各演奏処理内容を示すイベントデータと、各イベントデータの実行を開始するタイミングの時間間隔を示すΔｔデータとを備えている。なお、本実施形態では、４分音符の符長を２４分割したクロック（ＭＩＤＩタイミングクロック）数を用いてΔｔを表している。
【００１３】
２．実施形態の動作
次に、上記構成を備える実施形態の動作について説明する。
２−１．マルチタスク処理の概要
まず、本実施形態においてＣＰＵ１０１によって実行される各種プログラムについて説明する。図５は、プログラム構成を説明する概念図である。図５に示すように、本実施形態では、オペレーティングシステム（ＯＳ）、メインシーケンサプログラムと、サブシーケンサプログラムと、および、その他のアプリケーションプログラムを備えている。ＯＳは、実時間処理を伴うマルチタスク処理を行うことができるオペレーティングシステムであり、例えばパネル１１０の各種キー操作の検出や、ＲＡＭ１０３の管理など基本的動作を行うためのプログラムである。さらに、マルチタスク処理においては、各アプリケーションプログラムに基づく処理（タスク）毎に優先度を設定して、優先度に応じてＣＰＵ１０１の時分割処理を制御することができるようになっている。
【００１４】
メインシーケンサプログラムは、メイン音源１０７において楽曲を生成するためのアプリケーションプログラムであり、メインシーケンサプログラムに基づく処理（メインシーケンサタスク）は優先度の高いタスクとして設定される。サブシーケンサプログラムは、サブ音源１０８において楽曲を生成するためのアプリケーションプログラムであり、サブシーケンサプログラムに基づく処理（サブシーケンサタスク）は優先度の低いタスクとして設定される。その他のアプリケーションプログラムには、例えばディスプレイ１０６に歌詞を表示させるためのプログラムなどが含まれる。
【００１５】
ここで、図６は、本実施形態におけるタスクの状態遷移を示す図である。演奏を行わない状態（演奏準備が行われていない状態）では、タスクは「未登録状態」となっている。ＲＡＭ１０３への曲データ展開などの演奏準備が行われ、演奏を開始すると、生成されたタスクは、まず「休止状態」となる。休止状態は、タスクの実行を行うべきタイミングではない状態を示している。なお、タスクを実行すべきタイミングは、曲データ中のΔｔによって決定される。
【００１６】
タスクを実行すべきタイミングになると、タスクが起動して「実行可能状態」に遷移する。実行可能状態となったタスクは、優先度に従って処理が開始され、「実行状態」に遷移する。タスクが実行状態である場合であっても、より優先度の高い他タスクが実行可能状態になった場合には処理が中断されて「待ち状態」へと遷移し、処理を再開する際に再度「実行可能状態」に遷移する。実行状態は、タスクの実行が終了すると休止状態に遷移し、次のタスク実行タイミングまで待機する。そして、演奏が終了した場合は、休止状態のタスクを削除して未登録状態に遷移する。
【００１７】
ところで、複数のタスクが登録されている場合に、いずれのタスクをＣＰＵ１０１が実行するかについては、例えば図７に示すようなタスク管理テーブルを用いて管理されている。タスク管理テーブルでは、各タスクを識別する「タスクＩＤ」毎に、当該タスクの優先度を示す「優先度」、当該タスクを実行するためのプログラムを識別する「プログラム」、当該タスクの実行状態を示す「状態フラグ」などの情報を管理している。「プログラム」は、ＲＯＭ１０２上の読み出しアドレスなどで特定されている。
【００１８】
ここで、図８および図９を参照しながら、本実施形態におけるマルチタスク処理の概要について説明する。まず、図８は、優先度の低いサブシーケンサタスクが実行状態である場合に、優先度の高いメインシーケンサタスクが実行可能状態になった場合の動作を示している。サブシーケンサタスクが実行状態である場合にメインシーケンサタスクが休止状態から実行可能状態に遷移すると、優先度の低いサブシーケンサタスクは中断されて待ち状態に遷移する。これに対して、優先度の高いメインシーケンサタスクは、実行可能状態になるとすぐに処理が開始されて実行状態に遷移する。そして、メインシーケンサタスクの処理が終了すると、休止状態に遷移する。メインシーケンサタスクが終了すると、サブシーケンサタスクは実行可能状態に再度遷移して、処理を再開し、実行状態に遷移する。このように、優先度の高いタスクは、優先度の低いタスクに対して割り込みを行うことができる。
【００１９】
次に図９は、優先度の高いメインシーケンサタスクが実行状態である場合に、優先度の低いサブシーケンサタスクが実行可能状態になった場合の動作を示している。ここでは、メインシーケンサタスクが実行状態である場合に、サブシーケンサタスクが休止状態から実行可能状態に遷移しても、メインシーケンサタスクの方が優先度が高いので、メインシーケンサタスクは中断されない。従って、サブシーケンサタスクは実行可能状態のまま待機し、メインシーケンサタスクの処理が終了してから実行状態に遷移する。このように、優先度の低いタスクは、優先度の高いタスクに対して割り込みを行うことができない。
【００２０】
以下フローチャートを参照しながら説明する各動作は、上述した優先度に基づいたＯＳの制御を利用して、通常のカラオケ演奏であるメインシーケンサタスクと、次曲確認用の演奏であるサブシーケンサタスクとを実行する場合の動作を示すものである。
【００２１】
２−２．実施形態の動作を示すフローチャート
次に、図１０から図１３に示すフローチャートを参照しながら、本実施形態の動作について説明する。
【００２２】
（１）メインルーチン
図１０は、ＯＳに基づいて行われる本実施形態のメインルーチンにかかる処理を示している。カラオケ装置１００に電源が投入されると、ＣＰＵ１０１は、まず初期設定を行う（Ｓ１０１）。初期設定においては、ＲＡＭ１０３における各種エリアやテーブルの初期化などを行う。初期設定が終了すると、次にパネル１１０における各種キーの状態に基づくパネル処理を行う（Ｓ１０２）。パネル処理においては、ＬＥＤ表示部１１０における状態表示を行う処理の他、テンキー１１２、セットキー１１３、スタートキー１１４、および次曲確認キー１１５の操作に基づく処理などを行う。例えば、テンキー１１２の操作において入力され、セットキー１１３の操作において確定されたリクエスト曲番号を、上述のＲＡＭ１０３上のリクエストキューエリアに順次記憶する。そして、曲データ記憶エリアＡあるいはＢのうちいずれか一方のエリアに記憶された曲データが書き換え可能となった場合には、リクエストキューエリアに記憶されている曲番号のうち最も古くキューイングされた曲番号に対応した曲データをＨＤＤ１０４から読み出して、当該曲データ記憶エリアに展開する。そして、展開した曲データに対応したキューイングエリアの曲番号は削除され、次に確定したリクエスト曲番号を記憶する。また、パネル処理においては、このようなキュー管理の他、スタートキー１１４あるいは次曲確認キー１１５の操作に基づく演奏準備処理も行う。演奏準備処理については、図１１を参照しながら、後に説明する。
【００２３】
パネル処理を終了すると、タスク管理処理を行う（Ｓ１０３）。タスク管理処理とは、優先度に基づいて各タスクの状態を遷移させる処理であり、タスク管理処理は、図１２を用いて後に詳しく説明する。タスク管理処理を終了すると、ＣＰＵ１０１はその他処理を行い（Ｓ１０４）、処理をステップＳ１０２に移行させて再びパネル処理を行う。ステップＳ１０２〜Ｓ１０４の処理は、カラオケ装置１００の電源が遮断されるまで繰り返し実行され、これにより適宜キー状態が認識され、タスク管理が行われることによってマルチタスク処理が行われる。
【００２４】
（２）演奏準備処理
次に、図１１は、メインシーケンサあるいはサブシーケンサにおける演奏開始が指示された場合の演奏準備処理を示すフローチャートである。なお、メインシーケンサによる演奏は、例えばスタートキー１１４が操作された場合や、先にキューイングされていた曲の演奏が終了した後に開始される。サブシーケンサによる演奏は、次曲確認キー１１５が操作された場合に開始される。
【００２５】
以下、メインシーケンサの演奏準備処理を例として図１１に示すフローチャートの説明を行う。演奏準備処理を開始すると、ＣＰＵ１０１は、メインシーケンサタスクが未登録状態であるか否かを判別し（Ｓ２０１）、未登録状態ではないと判別した場合は、タスクが登録されてＯＳによって管理されている状態であると判別できるので、処理をメインルーチンに戻す。
【００２６】
ステップＳ２０１の判別において、メインシーケンサタスクが未登録状態であると判別した場合は（Ｓ２０１；ＹＥＳ）、タスク管理テーブルの設定を行う（Ｓ２０２）。演奏準備処理がメインシーケンサタスクであれば、優先度を高く設定して、メインシーケンサプログラムの読み出しアドレスを指定する（図７参照）。タスク管理テーブルの設定が終了すると、次に、メインシーケンサによって演奏する曲データを読み出すＲＡＭ１０３のアドレスをポインタＭｐにセットする（Ｓ２０３）。曲データはキューイング順に読み出されてＲＡＭ１０３上の曲データ記憶エリアＡおよびＢに交互に展開されており、メインシーケンサによって読み出すべき曲データが記憶されているアドレスを特定する必要がある。また、イベントデータは時間の経過に伴って順次実行されていくように構成されているので、次のタイミングにおいて実行するイベントデータが記憶されたアドレスも特定する必要がある。そこで本実施形態では、次に実行すべきイベントデータの記憶されたアドレスを示す変数であるポインタＭｐを用いて、イベントデータの実行を行う毎にポインタＭｐの値を更新するものとする。よし詳しくは、図１２を参照しながら後に説明する。
【００２７】
ポインタＭｐのセットが完了すると、次に、メインシーケンサタスクの状態を休止状態から実行可能状態に遷移させるタイミングをカウントするためのカウンタＭｃに、最初のイベントデータを実行するまでのΔｔをセットする。本実施形態では、このカウンタＭｃの値をＭＩＤＩタイミングクロックに基づいてダウンカウントすることによって、時間の経過を判別できるようになっている。より詳しくは、図１２を参照しながら後に説明する。なお、サブシーケンサであれば、上述の各変数はポインタＳｐ、カウンタＳｃとなる。
【００２８】
（３）割り込み処理
本実施形態においては、メインシーケンサおよびサブシーケンサは、ＭＩＤＩタイミングクロック毎に割り込み処理を行うことによって、所定のタイミングにおいて楽音生成処理を実行できるようになっている。ＭＩＤＩタイミングクロックは、４分音符の符長を２４分割したものであるので、割り込み時間間隔は曲のテンポによって異なる。テンポは、曲データによって指定されているが、図示せぬテンポ変更キーの操作によって変更することも可能である。テンポは曲毎に異なるので、メインシーケンサによって演奏する曲とサブシーケンサによって演奏する曲のテンポが異なる場合がある。そこで、本実施形態では、メインシーケンサのテンポに基づく割り込みと、サブシーケンサのテンポに基づく割り込みとをそれぞれ行っているものとし、以下、メインシーケンサのテンポに基づく割り込みを例として説明する。
【００２９】
図１２は、割り込み処理の内容を示すフローチャートである。割り込み処理が起動すると、ＣＰＵ１０１は、まずメインシーケンサタスクが休止状態であるか否かを判別する（Ｓ３０１）。ここで、休止状態ではないと判別した場合は（Ｓ３０１；ＮＯ）、すでにタスクが起動しており、タスクを実行可能状態に遷移させる処理を行う必要がないので、処理をメインルーチンに戻す。一方、ステップＳ３０１の判別において、タスクが休止状態であると判別した場合は（Ｓ３０１；ＹＥＳ）、カウンタＭｃ＝０であるか否か、すなわち、イベントデータを実行すべきタイミングであるか否かを判別する（Ｓ３０２）。
【００３０】
ステップＳ３０２の判別において、Ｍｃ≠０と判別した場合は（Ｓ３０２；ＮＯ）、Ｍｃ＝Ｍｃ−１を実行してカウンタＭｃの値を１ダウンカウントする（Ｓ３０３）。先に説明したように、演奏準備処理においてカウンタＭｃには、最初のイベントデータまでのΔｔがセットされており、割り込み処理は１ＭＩＤＩタイミングクロック毎に起動されるので、ステップＳ３０３によるダウンカウントにより経過時間を認識できるようになっている。
【００３１】
一方、ステップＳ３０２の判別において、Ｍｃ＝０であると判別した場合は（Ｓ２０１；ＹＥＳ）、Δｔが経過したと判別できので、次にメインシーケンサタスクを実行可能状態に遷移させる（Ｓ３０４）。このステップにおいて実行可能状態となったタスクは、後に説明するタスク管理処理（図１３）において、優先度に従って実行状態に遷移するようになる。タスクを実行可能状態に遷移させると、次にイベントデータを実行すべきタイミングまでのΔｔをカウンタＭｃにセットし（Ｓ３０５）、次に実行すべきイベントデータの読み出しアドレスをポインタＭｐにセットして（Ｓ３０６）、処理をメインルーチンに戻す。図１２に示した割り込み処理は、ＭＩＤＩタイミングクロック毎に起動されるが、カウンタのダウンカウント処理（Ｓ３０３）は、タスクが休止状態である場合にのみ実行されるので、タスクが実行状態である場合や実行可能状態や待ち状態としてとして待機している場合にはカウントは進まないようになっている。
【００３２】
（４）タスク管理処理
次に図１３を参照しながら、タスク管理処理（図１０：１０３）の詳細について説明する。タスク管理処理が開始すると、ＣＰＵ１０１は、実行状態のタスクがあるか否かを判別する（Ｓ４０１）。登録されている各タスクの状態は、図７に示したタスク管理テーブル中のタスク状態フラグを参照することによって認識することができる。ステップＳ４０１の判別において、実行状態のタスクがないと判別した場合は（Ｓ４０１；ＮＯ）、次に、実行可能状態のタスクがあるか否かを判別し（Ｓ４０２）、実行可能状態のタスクもないと判別した場合は（Ｓ４０２；ＮＯ）、タスク管理処理において状態遷移させるべきタスクは存在しないと判別できるので、処理をそのままメインルーチンに戻す。ステップＳ４０２の判別において、実行可能状態のタスクがあると判別した場合は（Ｓ４０２；ＹＥＳ）、次に、実行可能状態タスクが複数であるか否かを判別し（Ｓ４０３）、複数ではないと判別した場合は（Ｓ４０３；ＮＯ）、一つのタスクのみが実行可能状態であり、優先度を考慮する必要がないので、当該タスクを実行状態に遷移させて（Ｓ４０４）、処理をメインルーチンに戻す。
【００３３】
一方、ステップＳ４０３の判別において、実行可能状態のタスクが複数であると判別した場合には（Ｓ４０３；ＹＥＳ）、優先度の最も高いタスクを実行状態に遷移させて（Ｓ４０５）、処理をメインルーチンに戻す。次に、ステップＳ４０１の判別において実行状態のタスクがあると判別した場合（Ｓ４０１；ＹＥＳ）について説明する。ＣＰＵ１０１は、まず、実行可能状態の他タスクがあるか否かを判別し（Ｓ４０６）、実行可能状態の他タスクが無いと判別した場合は（Ｓ４０６；ＮＯ）、次に、実行状態であるタスクを終了するか否かを判別する（Ｓ４０７）。ここでは、図示せぬ終了キーが操作された場合や、演奏終了を示すイベントデータが実行された場合に、タスク終了と判別する。
【００３４】
ステップＳ４０７の判別において、実行状態のタスクを終了すべきではないと判別した場合は（Ｓ４０７；ＮＯ）、タスク管理処理において状態遷移させるべきタスクは存在しないと判別できるので、処理をそのままメインルーチンに戻す。一方、ステップＳ４０７の判別において、実行状態のタスクを終了すべきであると判別した場合には（Ｓ４０７；ＹＥＳ）、当該タスクを休止状態に遷移させ（Ｓ４０８）、次に、待ち状態となっている他タスクがあるか否かを判別する（Ｓ４０９）。ステップＳ４０９の判別において、待ち状態の他タスクがないと判別した場合には（Ｓ４０９；ＮＯ）、状態遷移させるべきタスクがないのでメインルーチンに処理を戻すが、待ち状態のタスクがあると判別した場合は（Ｓ４０９；ＹＥＳ）、当該タスクを実行可能状態に遷移させてから（Ｓ４１０）、処理をメインルーチンに戻す。
【００３５】
ところで、ステップＳ４０６の判別において、実行可能状態の他タスクがあると判別した場合は（Ｓ４０６；ＹＥＳ）、次に、当該実行可能状態タスクが実行状態タスクよりも優先度が高いか否かを判別する（Ｓ４１１）。ここで、実行可能状態タスクが実行状態タスクよりも優先度が低いと判別した場合は（Ｓ４１１；ＮＯ）、実行状態タスクの実行を継続すべきであり、遷移させるべきタスクがないと判別できるので、メインルーチンに処理を戻す。一方、ステップＳ４１１の判別において、行可能状態タスクが実行状態タスクよりも優先度が高いと判別した場合は（Ｓ４１１；ＹＥＳ）、実行状態のタスクを中断して（Ｓ４１２）、待ち状態に遷移させる（Ｓ４１３）。そして、実行可能状態の他タスクを実行状態に遷移させ（Ｓ４１４）、処理をメインルーチンに戻す。
【００３６】
２−３．実施形態の具体的動作
次に、図１０〜図１３に示した処理を循環することによって、行われる実施形態の具体的動作について図１４に示すタイムチャートを参照しながら説明する。図１４に示すタイムチャートは、曲データによって指示される状態と、上記実施形態における状態と、従来技術における状態とを比較してたものである。曲データが指示する状態とは、当該曲データによる楽音生成処理を単独で行った場合のタイムチャートである。図１４においては、メインシーケンサおよびサブシーケンサのそれぞれによって読み出される曲データについてそれぞれ図示している。
【００３７】
上記実施形態においては、メインシーケンサタスクの優先度はサブシーケンサタスクの優先度よりも高いので、例えばイベントＩｍ１にかかるタスクが実行状態であるときに、イベントＩｓ１にかかるタスクが実行可能状態に遷移しても、処理は中断されず、イベントＩｍ１にかかるタスクが終了してからイベントＩＳ１にかかるタスクが実行状態になる。そして、サブシーケンサタスク（イベントＩｓ１にかかるタスク）が実行状態であっても、優先度の高いメインシーケンサタスク（イベントＩｍ２にかかるタスク）が実行可能状態となった場合には、サブシーケンサタスクを中断して待ち状態とし、先にメインシーケンサタスクを実行状態とするので、イベントＩｍ２は曲データが指示するタイミング通りに実行されることになる。
【００３８】
これに対して従来技術における状態では、優先度に応じた処理を行うことはできないので、タスクが重複する場合には、先に実行可能状態となったタスクが終了してから、後に実行可能状態となったタスク（イベントＩｓ１）が実行状態になる。そして、先に実行状態であったサブシーケンサタスク（イベントＩｓ１にかかるタスク）が終了してから、後に実行可能状態となったメインシーケンサタスク（イベントＩｍ２にかかるタスク）が実行可能状態になるので、図１４に示すように、イベントＩｍ２は曲データが指示するタイミングよりも遅れて実行されるようになる。曲データが指示するイベント間のΔｔは、イベントが実行されてからの時間間隔であるから、あるイベントの実行が遅れるに従って、次のイベントの実行も遅れていくようになる。
【００３９】
このように、従来技術においては、メインシーケンサタスクによる実行およびサブシーケンサタスクによる実行は、いずれもが遅延していく場合が生じやすいのに比べ、本実施形態においては、サブシーケンサタスクによる実行のみが遅延していくようになる。本実施形態では、メインシーケンサタスクによって生成される楽曲は、カラオケ演奏としてスピーカ１２０から出力される演奏となり、ディスプレイ１０６に表示される歌詞および歌詞の色替えと同期するものであるから、多少の遅延でも使用者に違和感を与える。これに対してサブシーケンサタスクによる楽音信号生成は、次曲確認のためにヘッドフォン１３０で聴くための演奏であり、演奏が遅延していっても、それほど違和感は与えない。
【００４０】
３．変形例
なお、本発明は既述した実施形態に限定されるものではなく、以下のような各種の変形が可能である。
【００４１】
上記実施形態においては、優先度を「高」と「低」との２段階を用いて説明したが、優先度の段階はさらに細分化して設定できるようにしてもよい。例えば、優先度を示す数値を１〜１０などと設定できるようにして、数値の小さいタスクを数値の大きなタスクよりも優先して実行するようにしてもよい。また、上記実施形態では、メインシーケンサとサブシーケンサの２種類のタスクを用いて説明したが、時間情報を参照して行う処理であればどのような処理でもよく、マルチタスクは上述の２種類に限定されるものではなく、例えば歌詞の色替え処理や、楽音に効果を付与するエフェクト処理など他の処理であっても構わない。
【００４２】
上記実施形態においては、カラオケ装置１００は２つの音源（メイン音源１０７、サブ音源１０８）を備えるものとして説明したが、１つの音源をメインシーケンサとサブシーケンサで共有するように構成しても構わないし、３つ以上の音源を備えていても構わない。
【００４３】
各タスクの優先度を決定する手段は、予め重い処理となることが予想されているものの優先度を高く設定するように決定されていても構わない。上記実施形態においては、メインシーケンサタスクは、ディスプレイ１０６に歌詞や背景映像を表示させる処理と同期して行わなければならないので、予め優先度を高く設定している。上記実施形態においては、説明を省略しているが、曲データ中には、イベントデータやΔｔデータと対応して歌詞表示を指示するデータも含まれているものとする。なお、曲データ中のイベントデータは、上記実施形態のようにＭＩＤＩ規格に基づいて作成されたものに限らず、楽曲演奏処理内容をデジタルデータによって指示することができればどのような規格であってもよい。イベントデータが指示する楽曲演奏処理内容には、発音や消音のような基本的な処理の他、残響音やバックコーラスなどの効果を付与する処理があってもよい。このような効果処理が多いほど、重い処理となると判断するようにしてもよい。
【００４４】
また、イベント間の時間間隔を示すΔｔデータは、上記実施形態のようにＭＩＤＩタイミングクロックを用いて記述することに限らず、他のクロック数を用いても構わないし、絶対時間を用いても構わない。あるいは、曲データ中に優先度を指定するデータを記述してもよいし、曲のテンポに応じて決定するようにしてもよい。上述のように、ＭＩＤＩタイミングクロック間の時間間隔（割り込み時間間隔）はテンポに応じて異なるので、テンポの速い曲は単位時間あたりの割り込み回数が多くなり、テンポの遅い曲は単位時間あたりの割り込み回数が少なくなるからである。また、演奏が開始してからユーザ操作によって優先度を変更できるようにしてもよい。
【００４５】
上記実施形態のように１台のカラオケ装置における処理に限らず、例えば複数のカラオケ制御装置を用いて複数のカラオケ装置を制御するような場合でも、本発明は適用可能である。例えば、１台のサーバをコントロールルームに設置して、演奏用端末装置を各部屋に設置するカラオケボックスシステムにおいて、テンポの早い曲を演奏する端末用タスクの優先度を高くして、テンポの遅い曲を演奏する端末用タスクの優先度を低くするようにしてもよい。
【図面の簡単な説明】
【００４６】
【図１】実施形態の構成を示すブロック図である。
【図２】パネルの外観構成を示す図である。
【図３】リクエストキューエリアを説明する図である。
【図４】曲データ記憶エリアを説明する図である。
【図５】プログラムの構成を示す図である。
【図６】タスクの状態遷移を説明する図である。
【図７】タスク制御テーブルを説明する図である。
【図８】マルチタスク処理を説明する図である（その１）。
【図９】マルチタスク処理を説明する図である（その２）。
【図１０】実施形態の動作を示すフローチャートである（メインルーチン）。
【図１１】実施形態の動作を示すフローチャートである（演奏準備処理）。
【図１２】実施形態の動作を示すフローチャートである（割り込み処理）。
【図１３】実施形態の動作を示すフローチャートである（タスク管理処理）。
【図１４】実施形態の動作を従来技術と比較して示すタイムチャートである。
【符号の説明】
【００４７】
１００…カラオケ装置、１０１…ＣＰＵ、１０２…ＲＯＭ、１０３…ＲＡＭ、１０４…ＨＤＤ、１０５…表示制御部、１０６…ディスプレイ、１０７…メイン音源、１０８…サブ音源、１０９…パネルインターフェイス、１１０…パネル、１１１…ＬＥＤ表示部、１１２…テンキー、１１３…セットキー、１１４…スタートキー、１１５…次曲確認キー。
【図１】
0004720893.tif 000002
【図２】
0004720893.tif 000003
【図３】
0004720893.tif 000004
【図４】
0004720893.tif 000005
【図５】
0004720893.tif 000006
【図６】
0004720893.tif 000007
【図７】
0004720893.tif 000008
【図８】
0004720893.tif 000009
【図９】
0004720893.tif 000010
【図１０】
0004720893.tif 000011
【図１１】
0004720893.tif 000012
【図１２】
0004720893.tif 000013
【図１３】
0004720893.tif 000014
【図１４】
0004720893.tif 000015