(57)【特許請求の範囲】
【請求項１】
ＭＩＤＩ規格で作成された楽曲データに基づき、ＭＩＤＩ演奏装置に接続されたハードウェアＭＩＤＩ音源に対して演奏制御データを送出し、前記ハードウェアＭＩＤＩ音源に楽曲の楽音を発生させるハードウェアＭＩＤＩ演奏制御手段と、
ＭＩＤＩ規格で作成された楽曲データに基づき、コンピュータプログラムによってＭＩＤＩ音源を実現するソフトウェアＭＩＤＩ音源の処理プロセスに対して演奏制御データを送出し、前記ソフトウェアＭＩＤＩ音源に楽曲の楽音を発生させるソフトウェアＭＩＤＩ演奏制御手段とを備え、
前記ハードウェアＭＩＤＩ音源と前記ソフトウェアＭＩＤＩ音源とを同時に使用して楽曲データに基づく楽曲の演奏を行うＭＩＤＩ演奏装置であって、
前記ハードウェアＭＩＤＩ演奏制御手段は、演奏音のキーの音高を変更するキー変更指示を受付けた場合、次の楽音の音を鳴らすための演奏制御データであるノートオンメッセージを送出する前に、次の楽音の音高に前記キー変更指示で示される変更値を反映してから、次の楽音のノートオンメッセージを前記ハードウェアＭＩＤＩ音源に送出し、
前記ソフトウェアＭＩＤＩ演奏制御手段は、
楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、その変更時点での前記ソフトウェアＭＩＤＩ演奏制御手段による前記楽曲データの再生位置においてノートオンの最中である全ての楽音を対象楽音として、全ての対象楽音に対するノートオフメッセージを、前記ソフトウェアＭＩＤＩ音源の処理プロセスに対して送出した後、前記全ての対象楽音の音高に前記キー変更指示で示される変更値をそれぞれ反映した修正楽音のノートオンメッセージを、前記ソフトウェアＭＩＤＩ音源の処理プロセスに対して送出し、さらに、前記各対象楽音の本来のノートオフタイミングで、それぞれの対象楽音に対応する前記修正楽音をノートオフするためのノートオフメッセージを生成するキー変更処理手段と、
楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、その変更時点から、前記キー変更処理手段により送出される前記修正楽音のノートオンメッセージに従って前記ソフトウェアＭＩＤＩ音源から出力される音声信号の発音開始までの遅延時間に前記修正楽音のアタックタイムを少なくとも加えた所定期間、前記ソフトウェアＭＩＤＩ音源から出力される音声信号に基づく音声出力をミュートするミュート手段とを備えること
を特徴とするＭＩＤＩ演奏装置。
【請求項２】
請求項１に記載のＭＩＤＩ演奏装置において、
前記ミュート手段は、下記（１），（２），（３）の何れか１つの方法で、前記修正楽音のアタックタイムを特定することを特徴とするＭＩＤＩ演奏装置。
（１）前記ソフトウェアＭＩＤＩ音源が使用可能な全ての音色の中で、アタックタイムが最大となる音色の値を常に使用する。
（２）音色とアタックタイムとの対応を示す、予め用意されたテーブルを参照し、使用する音色のアタックタイムを取得する。
（３）前記ソフトウェアＭＩＤＩ音源のエンジンから、全発音中のアタックフェイズ音数を取得し、アタック期間の終了を判定する。
【請求項３】
請求項１又は請求項２に記載のＭＩＤＩ演奏装置において、
前記ソフトウェアＭＩＤＩ演奏制御手段は、楽曲データにおいて音階を持たない打楽器以外の楽器の音色が割当てられた楽音のみを対象に、前記キー変更処理手段による処理を実行すること
を特徴とするＭＩＤＩ演奏装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＭＩＤＩ（Musical Instrument Digital Interface）規格の楽曲データに基づいて演奏を行うカラオケ装置等のＭＩＤＩ演奏装置における、楽曲のキーの音高を任意に調節可能な音高変更機能に関する。
【背景技術】
【０００２】
従来、ＭＩＤＩ規格の楽曲データ（以下、ＭＩＤＩデータとも称する）に基づいて演奏を行うカラオケ装置が普及している。このようなカラオケ装置には、歌唱者の好みに応じて演奏音のキーの音高を任意に調節可能な音高変更機能が設けられているのが一般的である。
【０００３】
この種のカラオケ装置では、演奏中にキー変更操作が行われた場合、次の楽音の音を鳴らすための、ＭＩＤＩデータに含まれた演奏制御データ（ノートオンメッセージ）を音源に送出する前に、音階データ（ノートナンバー）を元の音階の値から変更後の音階の値に書替えてから音源に送出することが行われている（例えば、特許文献１参照）。
【０００４】
ところで、業務用のカラオケ装置においては、ＭＩＤＩデータに基づく楽音を発生させるための音源として、カラオケ装置本体に実装されたハードウェアＭＩＤＩ音源が一般的に用いられている。ハードウェアＭＩＤＩ音源とは、ＭＩＤＩ音源にＭＩＤＩデータを入力し、ＭＩＤＩ音源からＭＩＤＩデータに対応した楽音の音声信号を発生して演奏音とすることに特化した、拡張型の音源モジュールである。ハードウェＭＩＤＩ音源は、カラオケ装置の本体ＣＰＵ側で実行されるシーケンサから、演奏制御データを専用のシリアル通信ケーブルを介して受信し、その演奏制御データに対応した楽音の音声信号を発生する。
【０００５】
さらに、近年、業務用のカラオケ装置において、ハードウェアＭＩＤＩ音源に加えて、ソフトウェアＭＩＤＩ音源を実装し、これらを同時に使用して複数音源による楽曲の演奏を行うカラオケ装置が実用化されつつある。このようにすることで、より多彩なカラオケ演奏が実現できると期待される。ソフトウェアＭＩＤＩ音源は、カラオケ装置の本体等のコンピュータ制御用のＣＰＵで実行されるプログラムによってＭＩＤＩ音源をシミュレートするソフトウェアであり、ＭＩＤＩデータを楽音のＰＣＭ（Pulse Code Modulation）データにソフトウェア変換処理してＤ／Ａコンバータに入力し、Ｄ／Ａコンバータの出力を楽音とする。そのため、拡張型の音源モジュールを用いなくても、ＭＩＤＩデータに基づく楽音を発生させ、演奏音とすることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１８７１５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところが、ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源とを比較した場合、その構造の違いから演奏の制御に対する反応速度が異なる。ソフトウェアＭＩＤＩ音源は、ＣＰＵの負荷に起因する処理速度の変動を緩和するために、演奏制御データを一時的に蓄積するバッファのサイズを大きくする傾向がある。そのため、ソフトウェアＭＩＤＩ音源はハードウェアＭＩＤＩ音源と比較して、一般的に、演奏制御データが送出されてから実際に発音されるまでの遅延が長く、演奏の制御に対する反応速度が遅い。
【０００８】
ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源のように、反応速度の異なる複数の音源を同時に使用する構成において、上述の音高変更機能を使用した場合、音高変更を完了するまでの過程においても、音源ごとの反応速度の違いが発生する。すなわち、音高変更時における、ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源との処理時間差によって、音高変化の過渡状態が音源ごとに異なる。結果として、全ての音源でキーの音高変更が反映されるまでの間に不協和音が発生する場合がある。特に、ソフトウェアＭＩＤＩ音源側の反応速度の遅さが、不協和音の発生時間を長引かせる原因となっている。
【０００９】
本発明は、上記問題を解決するためになされたものであり、ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源とを同時に使用するＭＩＤＩ演奏装置において、音高変更時における不協和音の発生を抑制するための技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するためになされた請求項１に記載の発明は、ハードウェアＭＩＤＩ演奏制御手段と、ソフトウェアＭＩＤＩ演奏制御手段とを備え、ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源とを同時に使用して楽曲データに基づく楽曲の演奏を行うＭＩＤＩ演奏装置に関する。
【００１１】
ハードウェアＭＩＤＩ演奏制御手段は、ＭＩＤＩ規格で作成された楽曲データに基づき、ＭＩＤＩ演奏装置に接続されたハードウェアＭＩＤＩ音源に対して演奏制御データを送出し、ハードウェアＭＩＤＩ音源に楽曲の楽音を発生させる。このハードウェアＭＩＤＩ演奏制御手段は、演奏音のキーの音高を変更するキー変更指示を受付けた場合、次の楽音の音を鳴らすための演奏制御データであるノートオンメッセージを送出する前に、次の楽音の音高にキー変更指示で示される変更値を反映してから、次の楽音のノートオンメッセージをハードウェアＭＩＤＩ音源に送出する。ソフトウェアＭＩＤＩ演奏制御手段は、ＭＩＤＩ規格で作成された楽曲データに基づき、コンピュータプログラムによってＭＩＤＩ音源を実現するソフトウェアＭＩＤＩ音源の処理プロセスに対して演奏制御データを送出し、ソフトウェアＭＩＤＩ音源に楽曲の楽音を発生させる。
【００１２】
本発明のＭＩＤＩ演奏装置は、ソフトウェアＭＩＤＩ演奏制御手段がキー変更処理手段と、ミュート手段とを備える点で特徴を有する。キー変更処理手段は、楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、まず、その変更時点でのソフトウェアＭＩＤＩ演奏制御手段による楽曲データの再生位置においてノートオンの最中である全ての楽音を対象楽音として、全ての対象楽音に対するノートオフメッセージを、ソフトウェアＭＩＤＩ音源の処理プロセスに対して送出する。その後、全ての対象楽音の音高にキー変更指示で示される変更値をそれぞれ反映した修正楽音のノートオンメッセージを、ソフトウェアＭＩＤＩ音源の処理プロセスに対して送出する。さらに、キー変更処理手段は、各対象楽音の本来のノートオフタイミングで、それぞれの対象楽音に対応する前記修正楽音をノートオフするためのノートオフメッセージを生成する。
【００１３】
本発明では、キー変更指示を受付けた場合、その時点でソフトウェアＭＩＤＩ演奏制御手段においてノートオンの最中である楽音に対するノートオフメッセージが、本来のタイミングより前倒しで即座に発行される。その代わり、キー変更値を反映した修正楽音のノートオンメッセージが新たに発行される。これにより、キー変更指示を受付けた時点でノートオンになっている全ての楽音がノートオフになってから、キー変更を反映した演奏を開始する処理方法と比較して、キーの音高変更が反映されるまでの時間が短縮され、音高変化の過渡状態の長期化を改善できる。その結果、ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源との処理時間差に起因する、音高変更時の不協和音の発生期間を短縮できる。
【００１４】
さらに、ミュート手段は、楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示を受付けたときに、その変更時点から、キー変更処理手段により送出される修正楽音のノートオンメッセージに従ってソフトウェアＭＩＤＩ音源から出力される音声信号の発音開始までの遅延時間に前記修正楽音のアタックタイムを少なくとも加えた所定期間、ソフトウェアＭＩＤＩ音源から出力される音声信号に基づく音声出力をミュートする。
【００１５】
このようすることで、キー変更指示を受付けた時点からキーの音高変更が反映されるまでの間、ソフトウェアＭＩＤＩ音源から出力される音高変更の過渡状態の音声を消す（ミュートする）ことができる。これにより、音高変更時におけるハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源との不協和音を更に低減できる。また、キー変更処理手段の働きによりキーの音高変更が反映されるまでの時間が短縮されているため、ソフトウェアＭＩＤＩ音源をミュートする期間も比較的短く済むようになっている。
【００１６】
なお、ソフトウェアＭＩＤＩ音源からの音声をミュートする期間については、キー変更処理手段により送出された修正楽音の発音開始後を終点としてもよい。より好ましくは、キー変更処理手段により送出された修正楽音のアタックタイム（音が鳴り始めてから音量が最大になるまでの立ち上がり時間）や、ディケイタイム（音量が最大になった時点からある一定の音量になるまでの時間）の経過後をミュート期間の終点とすることが考えられる。後者の場合、修正楽音のアタック・ディケイの過程を鳴らさないことで、音高変更時の違和感を低減できる。また、請求項２に記載のように、ミュート手段は、下記（１），（２），（３）の何れか１つの方法で、修正楽音のアタックタイムを特定するように構成することが考えられる。
（１）ソフトウェアＭＩＤＩ音源が使用可能な全ての音色の中で、アタックタイムが最大となる音色の値を常に使用する。
（２）音色とアタックタイムとの対応を示す、予め用意されたテーブルを参照し、使用する音色のアタックタイムを取得する。
（３）ソフトウェアＭＩＤＩ音源のエンジンから、全発音中のアタックフェイズ音数を取得し、アタック期間の終了を判定する。
【００１７】
ところで、音階を持たない打楽器の音色が割当てられた楽音をソフトウェアＭＩＤＩ音源によって演奏する場合、キーの音高変更は反映されないため、音高変更時に伴う不協和音の発生については考慮する必要がない。そこで、請求項３に記載のように構成することが考えらえる。すなわち、ソフトウェアＭＩＤＩ演奏制御手段は、楽曲データにおいて音階を持たない打楽器以外の楽器の音色が割当てられた楽音のみを対象に、キー変更処理手段による前述の処理を実行するように構成する。このようにすることで、音高変更時における処理の負荷を低減できる。
【図面の簡単な説明】
【００１８】
【図１】実施形態のカラオケ装置１の概略構成を示すブロック図。
【図２】ソフトウェアＭＩＤＩ演奏処理の手順を示すフローチャート。
【図３】ノートテーブルの内容を模式的に示す説明図。
【図４】ミュート制御処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１９】
以下、本発明の一実施形態を図面に基づいて説明する。なお、本発明は下記の実施形態に何ら限定されるものではなく様々な態様にて実施することが可能である。
［カラオケ装置１の構成の説明］
本発明のＭＩＤＩ演奏装置の実施形態に相当するカラオケ装置１は、図１に示すように、メイン制御部１０、ハードディスクドライブ（ＨＤＤ）２０、音声処理モジュール３０、操作処理部４０、操作部４１、通信インタフェース部４２、マイクアンプ４３、アナログ−デジタル変換部（ＡＤＣ）４４、映像処理部４５等を備える。また、カラオケ装置１には、モニタ５０、スピーカアンプ５１、スピーカ５２、マイクロフォン５３が接続されている。
【００２０】
メイン制御部１０は、カラオケ装置１全体の制御を司る情報処理デバイスである。メイン制御部１０は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等を中心に構成されており、ＨＤＤ２０から読込んだプログラムやデータに基づき、種々の処理を実行する。ＨＤＤ２０は、カラオケの伴奏内容を示す楽曲データや歌詞を示す歌詞データを多数収録したカラオケデータベースや、カラオケ装置１の動作を制御するシステムプログラムやアプリケーションプログラム、各種の情報コンテンツの再生に用いられるデータ等の各種データを記憶する。ＨＤＤ２０が記憶する楽曲データには、ＭＩＤＩ規格で作成された伴奏楽音の演奏データ（ＭＩＤＩデータ）、及び、伴奏の生音を所定の圧縮音声方式（例えば、ＡＡＣ：Advanced Audio Coding）によりデジタルデータに変換した圧縮音声データの２種類が用意されている。
【００２１】
メイン制御部１０は、カラオケ楽曲の演奏に関する機能的構成として、生音再生処理部１１、ＭＩＤＩシーケンサ１２、ＭＩＤＩ演奏制御部１３、及び、ソフトウェアＭＩＤＩ音源部１４を備える。これらの構成は、メイン制御部１０が実行するプログラムによって具現化される。
【００２２】
このうち、生音再生処理部１１は、ＨＤＤ２０から読込まれた圧縮音声データの楽曲データをデコードしてカラオケ楽曲を再生する、いわゆる生音再生を行うための音楽再生機能である。生音再生処理部１１から出力される楽曲のデジタル音声信号は、音声処理モジュール３０のキーコントロール部３１に入力される。
【００２３】
ＭＩＤＩシーケンサ１２は、音声処理モジュール３０に実装されたＭＩＤＩ音源３２（本発明のハードウェアＭＩＤＩに相当）に対して、ＭＩＤＩデータに基づく楽曲の演奏をさせるためのソフトウェアシーケンサである。このＭＩＤＩシーケンサ１２は、ＨＤＤ２０から読込まれたＭＩＤＩデータに基づき、音声処理モジュール３０のＭＩＤＩ音源３２に対して演奏制御データ（ＭＩＤＩメッセージ）を送出し、ＭＩＤＩ音源３２に楽曲の楽音を発生させる。
【００２４】
ＭＩＤＩ演奏制御部１３は、メイン制御部１０のソフトウェアＭＩＤＩ音源部１４（本発明のソフトウェアＭＩＤＩに相当）に対して、ＭＩＤＩデータに基づく楽曲の演奏をさせるためのソフトウェアシーケンサである。ソフトウェアＭＩＤＩ音源部１４は、メイン制御部１０のＣＰＵで実行されるプログラムによってＭＩＤＩ音源をシミュレートし、ＭＩＤＩデータに基づく楽音のデジタル音声信号（ＰＣＭデータ等）を出力するソフトウェアである。
【００２５】
ＭＩＤＩ演奏制御部１３は、ＨＤＤ２０から読込まれたＭＩＤＩデータに基づき、ソフトウェアＭＩＤＩ音源部１４に対して演奏制御データ（ＭＩＤＩメッセージ）を送出するソフトウェアＭＩＤＩ演奏処理を実行する。また、楽曲の演奏中に演奏音のキーの音高を変更するキー変更指示をユーザから受付けたときに、ソフトウェアＭＩＤＩ音源部１４から出力される音声信号を、所定期間だけ出力経路上でミュートするミュート制御処理を実行する。これらのソフトウェアＭＩＤＩ演奏処理及びミュート制御処理の詳細な説明については、後述する。
【００２６】
本実施形態のカラオケ装置１では、圧縮音声データに基づく生音再生、ハードウェアＭＩＤＩ音源、及びソフトウェアＭＩＤＩ音源を同時に使用して、複数音源による楽曲の演奏を行うことを想定している。そのため、メイン制御部１０は、生音再生処理部１１、ＭＩＤＩシーケンサ１２、及びＭＩＤＩ演奏制御部１３の各部の処理を並行して行う。
【００２７】
音声処理モジュール３０は、メイン制御部１０からの各音源に対応する入力信号、及びカラオケ装置１に接続されたマイクロフォン５３を通じて入力された歌唱音声のデジタル音声信号に対して、各種デジタル音声処理する音声制御デバイスである。音声処理モジュール３０は、キーコントロール部３１、ＭＩＤＩ音源３２、ミュートスイッチ部３３、エフェクト部３４、ミキサ３５、デジタルアナログ変換部（ＤＡＣ）３６を備える。
【００２８】
キーコントロール部３１は、メイン制御部１０の生音再生処理部１１から出力された生音再生のデジタル音声信号に対して、操作部４１等を介してユーザにより設定された演奏音のキーの音高に合わせて再生音の音高を変更し、ミキサ３５に出力する。なお、ハードウェアＭＩＤＩ音源及びソフトウェアＭＩＤＩ音源におけるキーの音高の調節は、メイン制御部１０のＭＩＤＩシーケンサ１２及びＭＩＤＩ演奏制御部１３が行う。
【００２９】
ＭＩＤＩ音源３２は、ＭＩＤＩシーケンサ１２から送出されるＭＩＤＩメッセージに基づいて、楽曲の楽音のデジタル音声信号を生成し、ミキサ３５に出力する。ＭＩＤＩ音源３２の機能は、カラオケ装置等に実装される周知のハードウェアＭＩＤＩ音源と同様である。ミュートスイッチ部３３は、メイン制御部１０のソフトウェアＭＩＤＩ音源部１４から出力されるデジタル音声信号の出力経路の途中にあるスイッチである。ミュートスイッチ部３３は、ＭＩＤＩ演奏制御部１３からの制御に応じて、ソフトウェアＭＩＤＩ音源部１４からのデジタル音声信号のミキサ３５への入力を入り切りする。エフェクト部３４は、ＡＤＣ４４によって変換されたマイク入力音のデジタル音声信号に対して、エコー等の音響効果を付加してミキサ３５に出力する。
【００３０】
ミキサ３５は、キーコントロール部３１、ＭＩＤＩ音源３２、ミュートスイッチ部３３、及びエフェクト部３４の各部から入力された複数音源のデジタル音声信号を、音量や音色等のバランスを調節してミキシングし、ミキシングしたデジタル音声信号をＤＡＣ３６に出力する。ＤＡＣ３６は、ミキサ３５によりミキシングされて生成されたデジタル音声信号を、アナログ音声信号に変換する。ＤＡＣ３６により変換されたアナログ音声信号は、カラオケ装置１に接続されたスピーカアンプ５１によって増幅され、スピーカアンプ５１に接続されたスピーカ５２から放音される。
【００３１】
操作部４１は、演奏するカラオケ楽曲を指定する操作や、演奏中にキーの音高を変更する操作等の各種操作を行うための入力装置である。操作処理部４０は、操作部４１からの信号を処理してメイン制御部１０に入力する。通信インタフェース部４２は、カラオケ装置１をＬＡＮ１００に接続し、他のカラオケ装置や、リモコン端末、外部のサーバ等の情報処理装置との間で通信を行うための構成である。
【００３２】
マイクアンプ４３は、カラオケ装置１に接続されるマイクロフォン５３から入力される歌唱者の音声（アナログ音声信号）を増幅する増幅器である。ＡＤＣ４４は、マイクアンプ４３からのアナログ音声信号を、デジタル音声信号に変換する変換器である。映像処理部４５は、画像情報を映像化するグラフィックエンジンや圧縮形式の映像データを再生するデコーダからなる映像処理装置である。映像処理部４５によって映像化された画像情報は、カラオケ装置１に接続されたモニタ５０に表示される。なお、カラオケ装置１におけるその他の機能や構成については公知技術に従っているので、ここでの詳細な説明は省略する。
【００３３】
［ソフトウェアＭＩＤＩ演奏処理の説明］
メイン制御部１０が、ＭＩＤＩ演奏制御部１３として実行するソフトウェアＭＩＤＩ演奏処理の手順について、図２のフローチャートを参照しながら説明する。この処理は、ユーザによりリクエストされたカラオケ楽曲のＭＩＤＩデータを構成するトラックのうち、ソフトウェアＭＩＤＩ音源用に割当てられた特定のトラックを演奏するときに実行される。なお、本処理と並行して、ハードウェアＭＩＤＩ音源用に割当てられたトラックを演奏するための演奏処理が、ＭＩＤＩシーケンサ１２において別途実行される。ＭＩＤＩシーケンサ１２による演奏処理の手順については、従来の演奏動作と同様であるので、説明は省略する。
【００３４】
ＭＩＤＩ演奏制御部１３は、Ｓ１００において、tick（ティック）値のカウンタを０にセットする。tickは、ＭＩＤＩデータの処理の時間間隔の最小単位である。つぎに、Ｓ１０２では、現時点において設定されているキー値を取得し、取得したキー値を「tick先頭キー値」としてＲＡＭに記憶する。ここでいうキー値とは、演奏中にユーザによって設定されたキーの変更量を示す値であり、キーの音高を原曲から上げる場合は正の数値、キーの音高を原曲から下げる場合は負の数値で表現される。なお、現在のキー値を設定する処理が本処理と並行して別途実行されている。そのため、本処理の手順とは関係なく、現在のキー値は随時変更され得る。
【００３５】
つぎに、Ｓ１０４では、現在のキー値と、メモリに記憶している「tick先頭キー値」とが異なっているか否かを判定する。現在のキー値と「tick先頭キー値」とが異なる場合（Ｓ１０４：ＹＥＳ）、すなわちキー値の変更が行われた場合、Ｓ１３４に進む。一方、現在のキー値と「tick先頭キー値」とが同じ値である場合（Ｓ１０４：ＮＯ）、すなわちキー値の変更が行われていない場合、Ｓ１０６に進む。
【００３６】
キー値の変更が行われていない場合に進むＳ１０６では、現在のキー値を「tick先頭キー値」としてＲＡＭに記憶する。つぎのＳ１０８では、ＭＩＤＩデータにおける現在の処理位置に該当のイベントが、現tickで処理するものであるか否かを判定する。現在の処理位置に該当のイベントが、現tickで処理するものである場合（Ｓ１０８：ＹＥＳ）、Ｓ１１０に進む。一方、現在位置に該当のイベントが、現tickで処理するものではない場合（Ｓ１０８：ＮＯ）、Ｓ１３０に進む。
【００３７】
現在の処理位置に該当のイベントを現tickで処理する場合に進むＳ１１０では、処理対象のイベントがノートオンであるか否かを判定する。処理対象のイベントがノートオンである場合（Ｓ１１０：ＹＥＳ）、Ｓ１１２に進む。一方、処理対象のイベントがノートオンでない場合（Ｓ１１０：ＮＯ）、Ｓ１１６に進む。
【００３８】
処理対象のイベントがノートオンである場合に進むＳ１１２では、このノートオンに対応するノートオフのイベントに関するデータをＭＩＤＩデータから先読みして探し出す。そして、このノートオフのデータに記述されている「送出しtick（当該ノートオフを音源に送出するタイミングを示すtick値）」、「チャンネルナンバー」、及び「ノートナンバー」と、メモリに記憶している「tick先頭キー値」とを、ノートテーブル内の未使用レコードに登録する。ノートテーブルは、メイン制御部１０のＲＡＭ等に記憶される。
【００３９】
ここで、上記のノートテーブルの具体的な内容について図３を参照しながら説明する。ノートテーブルは、現時点でノートオンの最中である楽音に対応するノートオフイベントに関するデータを先読みして、一覧として記述したものである。図３（ａ）に示すように、ノートテーブルは、「使用有無フラグ」、「送出しtick」、「チャンネルナンバー」、「ノートナンバー」、及び「登録キー値」の各情報で構成されるレコードの集合である。ノートテーブルには、１番からｎ番まで総数ｎのレコードを記述するスペースが用意されている。なお、レコードの総数ｎは、ソフトウェアＭＩＤＩ音源の同時最大発音数よりも十分大きい数である必要がある。
【００４０】
レコード内の「使用有無フラグ」には、そのレコードが使用中であるか否か、すなわち、ノートオンの最中である楽音に対応するノートオフイベントのデータが登録されているか否かを示す情報が記述される。図３（ｂ）は、ノートオフイベントのデータ登録されていない未使用レコードの一例である。また、図３（ｃ）は、ノートオフイベントのデータ登録されている使用中レコードの一例である。
【００４１】
使用中レコード内の「送出しtick」には、当該レコードに登録されているノートオフイベントに対応するＭＩＤＩメッセージを送出すべき本来のタイミングを示すtick値が記述されている。使用中レコード内の「チャンネルナンバー」には、該当するＭＩＤＩチャンネルを特定する情報が記述されている。使用中レコード内の「ノートナンバー」には、当該レコードに登録されているノートオフイベントに対応する楽音の元の音高を示す値が記述されている。使用中レコード内の「登録キー値」には、当該レコードを登録した時点、又は、レコードの内容が更新された時点の「tick先頭キー値」が記述されている。
【００４２】
図２のフローチャート説明に戻る。Ｓ１１２でノートテーブルにレコードを登録した後に進むＳ１１４では、メモリに記憶している「tick先頭キー値」を、処理対象のノートオンイベントのＭＩＤＩデータで示されるノートナンバーに加算し、ノートナンバーを修正する。その上で、ノートナンバーを修正したノートオンメッセージを、ソフトウェアＭＩＤＩ音源部１４のプロセスに対して送出する。ノートオンメッセージの送出後、Ｓ１２６に進む。
【００４３】
一方、Ｓ１１０で処理対象のイベントがノートオンでないと判断した場合に進むＳ１１６では、当該イベントがノートオフであるか否かを判定する。処理対象のイベントがノートオフである場合（Ｓ１１６：ＹＥＳ）、Ｓ１１８に進む。一方、処理対象のイベントがノートオフでない場合（Ｓ１１６：ＮＯ）、Ｓ１２４に進む。
【００４４】
処理対象のイベントがノートオフである場合に進むＳ１１８では、メモリに記憶しているノートテーブルの中から、処理対象のノートオフに対応するレコードを探し出す。処理対象のノートオフに対応するレコードとは、レコード内の「送出しtick」、「チャンネルナンバー」、「ノートナンバー」の各値が、現在のtick値、当該ノートオフのイベントに関するＭＩＤＩデータで示されるにおける「チャンネルナンバー」、「ノートナンバー」の各値と一致するレコードである。次のＳ１２０では、探し出したレコードから読出した「登録キー値」を、当該レコードから読出した「ノートナンバー」に加算し、ノートナンバーを修正する。その上で、修正したノートナンバーに相当するノートオフメッセージを、ソフトウェアＭＩＤＩ音源部１４のプロセスに対して送出する。そして、Ｓ１２２では、ノートテーブルに対して、送出したノートオフメッセージに該当のレコードの内容をクリアする（未使用にする）。レコードをクリアした後、Ｓ１２６に進む。
【００４５】
一方、Ｓ１１６で処理対象のイベントがノートオフでないと判断した場合に進むＳ１２４では、処理対象のイベントに対応するＭＩＤＩメッセージを、ソフトウェアＭＩＤＩ音源部１４のプロセスに対して送出する。ＭＩＤＩメッセージの送出後、Ｓ１２６に進む。
【００４６】
Ｓ１２６では、ＭＩＤＩデータの現在の処理位置を次のイベントに進める。そして、Ｓ１２８では、処理位置がＭＩＤＩデータの終端に到達したか否かを判定する。ここで、処理位置がＭＩＤＩデータの終端に到達していない場合（Ｓ１２８：ＮＯ）、Ｓ１０８に戻る。
【００４７】
Ｓ１０８で現在位置のイベントを現tickで処理しないと判断した場合に進むＳ１３０では、１tick分の時間が経過するまで待機する。１tick分の時間は、楽曲のテンポ及び分解能（１拍あたりのtick数）によって決められる。つぎのＳ１３２では、tick値のカウンタに１を加算し、Ｓ１０４に戻る。
【００４８】
Ｓ１０４において、現在のキー値と「tick先頭キー値」とが異なる（すなわち、キー値の変更が行われた）と判定した場合に進むＳ１３４では、ノートテーブルに登録されている全ての使用中レコードについて、各レコードから読出した「登録キー値」を、当該レコードから読出した「ノートナンバー」に加算してノートナンバーを修正する。その上で、全ての使用中レコードについて、ノートナンバーを修正したノートオフメッセージを、ソフトウェアＭＩＤＩ音源部１４のプロセスに対して一斉に送出する。Ｓ１３４で送出されるノートオフメッセージによって、キー変更が行われた時点でノートオンの最中である全ての楽音は、本来のノートオフのタイミングより前倒してノートオフされることになる。
【００４９】
つぎのＳ１３６では、現在のキー値（変更後）を取得し、取得したキー値を「tick先頭キー値」として記憶する。そして、Ｓ１３８では、ノートテーブルに登録されている全ての使用中レコードの「登録キー値」に、現時点の「tick先頭キー値」をセットし、ノートテーブルを更新する。Ｓ１４０では、ノートテーブルに登録されている全ての使用中レコードについて、各レコードから読出した「登録キー値」を、当該レコードから読出した「ノートナンバー」に加算してノートナンバーを修正する。その上で、全ての使用中レコードについて、ノートナンバーを修正したノートオンメッセージを、ソフトウェアＭＩＤＩ音源部１４のプロセスに対して送出する。
【００５０】
キー変更が行われた時点で一旦ノートオフにされた全ての楽音は、Ｓ１４０で送出されるノートオンメッセージによって、変更後のキー値を反映した音高に修正された上で再度ノートオンされることになる。また、ノートテーブルにおいて、キー変更に伴い各使用中レコードの登録キー値が更新されるので、ノートオンの途中で音高が変更された楽音についても、正しいタイミングでノートオフできるようになっている。
【００５１】
以上の手順を繰返すことでソフトウェアＭＩＤＩ音源に対するＭＩＤＩデータの処理を順次行い、ＭＩＤＩデータの終端に到達した場合（Ｓ１２８：ＹＥＳ）、本処理を終了する。
【００５２】
［ミュート制御処理の説明］
メイン制御部１０が、ＭＩＤＩ演奏制御部１３として実行するミュート制御処理の手順について、図４のフローチャートを参照しながら説明する。この処理は、上述のソフトウェアＭＩＤＩ演奏処理と同時に並行して実行される。
【００５３】
ＭＩＤＩ演奏制御部１３は、Ｓ２００において、操作部４１又はリモコン端末（図示なし）を介して、演奏中の楽曲のキーの音高を変更するキー変更操作が入力されたか否かを判定する。キー変更操作が入力された場合（Ｓ２００：ＹＥＳ）、Ｓ２０２に進む。一方、キー変更操作が入力されていない場合（Ｓ２００：ＮＯ）、Ｓ２０８に進む。
【００５４】
キー変更操作が入力された場合に進むＳ２０２では、音声処理モジュール３０のミュートスイッチ部３３を制御して、ソフトウェアＭＩＤＩ音源部１４からの出力をミュートする。なお、Ｓ２０２では、既にミュートを実行している状態である場合、再度ミュートを実行する。次のＳ２０４では、先のＳ２０２においてミュートを開始した時刻（ミュート開始時刻）を記憶する。そして、Ｓ２０６では、記憶している現在のキー値の設定を、入力されたキー変更操作によって指示された値に変更する。現在のキー値の変更後、Ｓ２００に戻る。Ｓ２０６で現在のキー値が変更されることで、上述のソフトウェアＭＩＤＩ演奏処理（図２）のＳ１０４で肯定判定がなされる。その結果、その時点でノートオン中の楽音に対応するノートオフメッセージが即座に発行され、さらに、変更されたキー値を判定した修正楽音のノートオンメッセージが発行される。
【００５５】
一方、Ｓ２００でキー変更操作が入力されていないと判定した場合に進むＳ２０８では、最後にミュートを実行したときのミュート開始時刻から規定時間が経過したか否かを判定する。ミュート開始時刻から規定時間が経過している場合（Ｓ２０８：ＹＥＳ）、Ｓ２１０に進み、ミュートスイッチ部３３によるミュートを解除する。ミュート解除後、Ｓ２００に戻る。一方、ミュート開始時刻から規定時間が経過していない場合（Ｓ２０８：ＮＯ）、Ｓ２００に戻る。
【００５６】
なお、ここでいう「規定時間」の具体的内容は、ソフトウェアＭＩＤＩの遅延時間に、キー変更後に鳴らす楽音のアタックタイム、あるいはアタックタイムとディケイタイムとを加えた時間とすることが考えられる。ソフトウェアＭＩＤＩの遅延時間は、ＭＩＤＩ演奏制御部１３からソフトウェアＭＩＤＩ音源部１４に対してノートオンメッセージが送出された時点から、実際にソフトウェアＭＩＤＩ音源部１４により楽音の発音が開始されるまでに要する一定時間である。
【００５７】
ただし、ＭＩＤＩ音源が楽音を鳴らすときのアタックタイムやディケイタイムの長さは、楽音を鳴らすときの音色（楽器の種類）によって異なる。そこで、ミュートを行う規定時間に反映するアタック・ディケイタイムの決定方法として、下記の（１）〜（３）のような方法が考えられる。
（１）使用可能な全ての音色の中でアタック・ディケイタイムが最大となる音色の値を常に使用する。
（２）音色とアタック・ディケイタイムとの対応を示すテーブルを予め用意しておき、このテーブルを参照して、使用する音色のアタック・ディケイタイムを取得する。
（３）ソフトウェアＭＩＤＩ音源のエンジンから、全発音中のアタック・ディケイフェイズ音数を取得し、アタック・ディケイ期間の終了を判断する。
【００５８】
［効果］
上記実施形態のカラオケ装置１によれば、以下の効果を奏する。
（１）キー変更操作が入力された場合、ソフトウェアＭＩＤＩ音源部１４に対して、その時点でノートオンの最中である楽音に対するノートオフメッセージが、本来のタイミングより前倒しで即座に発行される。その代わり、キー変更値を反映した修正楽音のノートオンメッセージが、ソフトウェアＭＩＤＩ音源部１４に対して新たに発行される。これにより、キーの音高変更が反映されるまでの時間が従来よりも短縮され、音高変化の過渡状態の長期化を改善できる。その結果、ハードウェアＭＩＤＩ音源とソフトウェアＭＩＤＩ音源との処理時間差に起因する、音高変更時の不協和音の発生期間を短縮できる。
【００５９】
（２）キー変更操作が入力された時点から演奏音に反映されるまでの所定の期間、ソフトウェアＭＩＤＩ音源部１４から出力される音高変更の過渡状態の音声をミュートすることができる。これにより、ソフトウェアＭＩＤＩ演奏処理の働きと合わせて、音高変更時における不協和音の発生を更に低減できる。また、ミュートを終了する時期を、ソフトウェアＭＩＤＩ音源の遅延時間＋アタック・ディケイタイムの経過後とすることで、ミュート期間終了直後に鳴る演奏音の違和感を低減できる。
【００６０】
［カラオケ装置１に適用可能なその他の工夫］
実施形態のカラオケ装置１に適用可能なその他の工夫について説明する。
ＭＩＤＩ演奏制御部１３による上述のソフトウェアＭＩＤＩ演奏処理（図２）では、キー変更操作が入力されてＳ１０４で肯定判定をした後、Ｓ１３４及びＳ１４０の処理について、ＭＩＤＩデータにおいて音階を持たない打楽器以外の楽器の音色が割当てられた楽音のみを対象に実行するように構成してもよい。例えば、ノートテーブルに登録されている各楽音について、それぞれの音色を判別し、音階を持つ音色が割当てられた楽音に対応するレコードについてのみ、Ｓ１３４及びＳ１４０の処理を実行する。一方、音階を持たない打楽器の音色が割当てられた楽音に対応するレコードについては、Ｓ１３４及びＳ１４０の処理は無視する。
【００６１】
このようにするのは、ＭＩＤＩ音源において、音階を持たない打楽器の音色が割当てられた楽音にはキーの音高変更は反映されず、キー変更に伴う不協和音の発生について対処する必要がないからである。このような工夫により、キー変更時におけるソフトウェアＭＩＤＩ音源の処理の負荷を低減できる。
【００６２】
［特許請求の範囲に記載の構成との対応］
実施形態のカラオケ装置１と、特許請求の範囲に記載の構成との対応は次のとおりである。ＭＩＤＩシーケンサ１２が、ハードウェアＭＩＤＩ演奏制御手段に相当する。ＭＩＤＩ演奏制御部１３が、ソフトウェアＭＩＤＩ演奏制御手段に相当する。また、ＭＩＤＩ演奏制御部１３が実行するソフトウェアＭＩＤＩ演奏処理（図２）が、キー変更処理手段に相当する。ＭＩＤＩ演奏制御部１３が実行するミュート制御処理（図４）が、ミュート手段に相当する。
【符号の説明】
【００６３】
１…カラオケ装置、１０…メイン制御部、１１…生音再生処理部、１２…ＭＩＤＩシーケンサ、１３…ＭＩＤＩ演奏制御部、１４…ソフトウェアＭＩＤＩ音源部、２０…ハードディスクドライブ（ＨＤＤ）、３０…音声処理モジュール、３１…キーコントロール部、３２…ＭＩＤＩ音源、３３…ミュートスイッチ部、３４…エフェクト部、３５…ミキサ、３６…デジタル−アナログ変換部（ＤＡＣ）、４０…操作処理部、４１…操作部、４２…通信インタフェース部、４３…マイクアンプ、４４…アナログ−デジタル変換部（ＡＤＣ）、４５…映像処理部、５０…モニタ、５１…スピーカアンプ、５２…スピーカ、５３…マイクロフォン、１００…ＬＡＮ。
【図１】
0005754404.tif 000002
【図２】
0005754404.tif 000003
【図３】
0005754404.tif 000004
【図４】
0005754404.tif 000005