(57)【要約】【課題】  ＭＩＤＩ演奏とイベント処理との間で同期ずれの起こらないＭＩＤＩ演奏方法を提供する。【解決手段】  楽曲の先頭からＭＩＤＩデータを解析してＭＩＤＩ演奏を行う場合に、ＭＩＤＩデータの時系列に沿って順に解析するシーケンサー２２側でＭＩＤＩデータ中に埋め込まれた同期イベントメッセージを検出した場合は、同期イベントメッセージ数を累積すると共に、ホストＣＰＵ２４に割り込み処理の要求を行い、当該割り込み要求を受け付けたホストＣＰＵ側では、実行した同期イベント数と前記累積値が一致するまで同期イベント処理を実行するようにしている。【選択図】  図１
2006251084.tif 000002
【特許請求の範囲】
【請求項１】
楽曲の先頭からＭＩＤＩデータを解析してＭＩＤＩ演奏を行う場合に、ＭＩＤＩデータの時系列に沿って順に解析するシーケンサー側でＭＩＤＩデータ中に埋め込まれた同期イベントメッセージを検出した場合は、同期イベントメッセージ数を累積すると共に、ホストＣＰＵに割り込み処理の要求を行い、当該割り込み要求を受け付けたホストＣＰＵ側では、実行した同期イベント数と前記累積値が一致するまで同期イベント処理を実行するようにしたことを特徴とするＭＩＤＩ演奏方法。
【請求項２】
楽曲の途中再生位置からＭＩＤＩデータを解析してＭＩＤＩ演奏を行う場合に、ＭＩＤＩデータの時系列に沿って順に解析するシーケンサー側でＭＩＤＩデータに埋め込まれた同期イベントメッセージを検出した場合は、前記楽曲の途中再生位置に達するまで同期イベントメッセージ数を累積し、前記楽曲の途中位置再生位置に達した後に前記同期イベントメッセージを検出した場合は、前記累積数を更新した後、ホストＣＰＵ側に割り込み要求を行い、当該割り込み要求を受け付けたホストＣＰＵ側では、当該割り込み要求がＭＩＤＩ再生位置が楽曲の途中再生位置に到達して初めての割り込み要求である場合に、前記累積値を実行した同期イベント数として設定し、当該イベント数に対応した順番の同期イベントを実行し、その後の割り込み要求については、実行した同期イベント数と前記累積値とが一致するまで同期イベント処理を実行するようにしたことを特徴とするＭＩＤＩ演奏方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、携帯電話、携帯端末（ＰＤＡ）、ゲーム機器やＭＩＤＩ機器などにおいて、ＭＩＤＩ楽曲の演奏中に、ある特定の楽器の発音や、拍子、指定した時間などのタイミングにあわせて、画像表示、ＬＥＤ点灯、バイブレータの動作、ＭＩＤＩ同士や他のサウンド再生など機器に付帯されている他の機能の実行を同期させることのできる演奏方法に関する。
【背景技術】
【０００２】
【特許文献１】特開平６−２４２７８８号公報
【０００３】
上記特許文献１には、ＭＩＤＩ規格に基づく電子音源を利用したカラオケ装置で用いられるデータを簡単に加工して音楽と映像、およびタイトルなどを同期することが出来るオーサリング装置が開示されている。
【０００４】
従来、携帯電話やＰＤＡなど、シーケンサ内蔵のＭＩＤＩ楽曲再生装置を備えたシステムにおいては、カラオケやゲームその他のアプリケーションにおいてＭＩＤＩ楽曲演奏と画像やサウンドなどシステムの他の機能と同期させる方法として、あらかじめＭＩＤＩ楽曲内に同期用のメッセージを挿入する方法や、特定の楽器の発音と同期するようにＭＩＤＩ楽曲に拡張メッセージを付加する方法を用いて、シーケンサがＭＩＤＩメッセージを解析中に同期メッセージを受信した時に、ＭＩＤＩ楽曲再生装置からホストＣＰＵへ割込みを発生させて楽曲とイベントとの同期タイミングを通知していた。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の方法では、複数のイベントが同時に発生したり、連続して同期イベントが発生したような場合において、ホストＣＰＵへの割込み処理が間に合わなかったり、割り込みが重なってしまい、ホストＣＰＵ側ですべての割り込みを検出することが出来ず、そのため同期イベント実行されなかったり、本来は別のイベントを実行するための次の同期検出タイミングに間に合わないという問題があった。
【０００６】
また、イベント実行順序を楽曲の先頭から予め指定しておくような場合、曲の途中から演奏を再生させる場合の処理に対応できず、この場合正しくイベントを実行するためには、途中再生開始時間までの同期イベント数を予め保持しておくか、ホストＣＰＵが演奏開始から途中再生開始時間までのイベント発生数を、予めＭＩＤＩ楽曲を解析することによりカウントしなければならないという問題があった。
【０００７】
従来のＭＩＤＩ演奏方法を図３のフローチャートを用いて説明する。
【０００８】
ＭＩＤＩ楽曲再生装置は、ＦＩＦＯ（データ入力メモリ）に入力されたＭＩＤＩデータを順にメッセージ解析するシーケンサ処理を行い、解析されたメッセージに従って楽曲再生処理を行う。ＭＩＤＩメッセージ解析処理ステップ（Ｓ３１）で、同期メッセージと解析された場合には、ホストＣＰＵへの割込み要求処理（Ｓ３２）を行い、シーケンサ処理へ戻る。
【０００９】
ホストＣＰＵ側では、ＭＩＤＩ楽曲再生装置からの割込み要求を受けた際に、割込み処理を行う。割込み処理内では、指定された順序で画像描写やサウンド再生などのイベント（イベント処理は、曲の始めから同期イベントにあわせて順に実行されることを前提に、発生順にイベントを指定したファイルが用意されているものとする。）を処理して（Ｓ３３）、割り込み処理を終了させる。
【００１０】
ホストＣＰＵ側での割込み処理中に、ＭＩＤＩ楽曲再生装置側のシーケンサ処理で新たな同期メッセージが複数処理されると、ホストＣＰＵは新しい割り込みを検出できず、割込み発生回数と同期メッセージ数に差異が生じ、同期イベントがずれてしまう原因となる。
【００１１】
本発明の課題は、ＭＩＤＩ演奏とイベント処理との間で同期ずれの起こらないＭＩＤＩ演奏方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明に係る代表的ＭＩＤＩ演奏方法は、楽曲の先頭からＭＩＤＩデータを解析してＭＩＤＩ演奏を行う場合に、ＭＩＤＩデータの時系列に沿って順に解析するシーケンサー側でＭＩＤＩデータ中に埋め込まれた同期イベントメッセージを検出した場合は、同期イベントメッセージ数を累積すると共に、ホストＣＰＵに割り込み処理の要求を行い、当該割り込み要求を受け付けたホストＣＰＵ側では、実行した同期イベント数と前記累積値が一致するまで同期イベント処理を実行するようにしている。
【発明の効果】
【００１３】
本発明に係るＭＩＤＩ演奏方法では、ＭＩＤＩデータ中に埋め込まれた同期イベントメッセージを検出した場合は、ホストＣＰＵに割り込み要求を行い、割り込み要求を受けたホストＣＰＵ側では、実行した同期イベント数と前記累積値が一致するまで同期イベント処理を実行するようにしているので、ＭＩＤＩ演奏とイベント処理との間で同期ずれが発生することが無い。
【発明を実施するための最良の形態】
【００１４】
以下、この発明の実施の形態について、図面を用いて説明する。尚、各図面は、この発明が理解できる程度に概略的に記載している。
【００１５】
図２は、この発明によるＭＩＤＩ演奏方法を実装するシステムの概略構成図であり、このシステム２０は、本発明の方法を実現する基本的な構成として、ＭＩＤＩ装置再生側に、楽曲データ入力用メモリとしてのＦＩＦＯメモリ２１、シーケンサ処理を行うシーケンサブロック２２と命令の交換を行うレジスタ２３を備え、制御ホスト側に、ホストＣＰＵ２４を備えている。
【００１６】
シーケンサブロックで処理されたメッセージはシンセサイザーブロックに送られＭＩＤＩ楽曲が演奏される。またホストＣＰＵ（２４）はＭＩＤＩ再生装置だけではなく、システムの他の機能（画面表示、ＬＥＤ制御、バイブレータ制御、ＭＩＤＩ以外のサウンド機能）の制御を行う。
【００１７】
ＭＩＤＩ楽曲を演奏する際は、先ずホストＣＰＵからＭＩＤＩデータをＦＩＦＯメモリ２１に転送する。シーケンサブロック２２ではＦＩＦＯメモリに書き込まれたＭＩＤＩデータのメッセージの解析を行い、図示しないシンセサイザーに演奏メッセージを送ることで曲が演奏される。
【００１８】
シーケンサブロック２２におけるメッセージ解析処理で、当該メッセージが同期メッセージと解析された場合、ホストＣＰＵ（２４）に対して割り込みを発生する。ホストＣＰＵ（２４）では発生した割り込み信号をトリガーとしてイベントを実行する。この時ホストＣＰＵで実行されるイベント処理を割り込み処理と呼ぶ。
【００１９】
割り込み処理中にシーケンサからホストＣＰＵ（２４）に新たな同期割り込みが起こった場合、従来の方法では、ホストＣＰＵはこの割り込みを取りこぼす可能性があった。これを避けるため、本発明では、レジスタ２３中に累積カウンタ２３ａを設けている。
【００２０】
シーケンサ２２では同期イベントを検出した場合、レジスタ２３の累積カウンタ２３ａ（この累積カウンタの初期値は曲の先頭で０に設定されている）に１ずつ加算していくのと同時にホストＣＰＵ（２４）に同期割り込みを発生させる。ホストＣＰＵ（２４）では同期割り込みを受け、割り込み処理を行い、割り込み処理を抜ける際にレジスタ２３の累積カウンタ２３ａの値と、曲頭から処理したイベントの数と比較することで、割り込み処理中に新たな同期イベントが起きていないかどうかチェックする。
【００２１】
累積カウンタ２３ａの値が、処理したイベント数を上回っていればカウンタの値と等しくなるまでイベントを実行した後、ホストＣＰＵはイベント処理を抜ける。このように、シーケンサからホストＣＰＵへの割り込みをトリガーとして曲の演奏とイベント実行の同期を取る場合において、同期イベントの起きた回数を累積カウンタ２３ａに保持することにより、イベント処理回数をホストＣＰＵ側でチェックし、同時に複数のイベントが起こった場合やホストＣＰＵの処理が遅く割り込みが検地できなかった場合でも、イベント処理を確実に実行することが可能となる。
【００２２】
以下、本実施形態に係るＭＩＤＩ演奏方法を図１のフローチャートを参照して詳細に説明する。
【００２３】
＜通常再生時（楽曲の先頭から再生する場合）の処理＞
シーケンサブロック２２に内蔵されているソフトウェア（以下、ファームウェアと呼ぶ）は、ＦＩＦＯメモリのＭＩＤＩデータを順にメッセージ解析して再生処理を行う。その際、ＭＩＤＩメッセージ解析処理（Ｓ１１）において、同期メッセージを解析処理したとき、累積カウンタ２３ａを＋１インクリメントする（Ｓ１２）。その後、途中再生開始位置をシーク中であるか否かを確認（Ｓ１３）し、通常再生の場合はシーク中で無いので、ホストＣＰＵ（２４）への割込み要求（Ｓ１４）を行い、シーケンサ処理へ戻る。
【００２４】
一方、ホストＣＰＵ（２４）においては、ファームからの割込み要求（Ｓ１４）を受けたときに、割込み処理を行う。割込み処理内では、シーク再生開始後の最初の割り込み処理か否かの確認を行う（Ｓ１５）。楽曲の途中からの再生を指定された場合、指定ポイントを楽曲の先頭からシーケンサで探し出し（シークし）再生を始めることをシーク再生と称する。
【００２５】
通常再生時の割込みの場合は、ステップＳ１５の処理でＮｏの分岐に進み、実行イベント数（ホストＣＰＵ（２４）が管理する変数で、再生初期値は“０”である）と累積カウンタ２３ａの値の比較処理（Ｓ１８）を行う。
【００２６】
累積カウンタのカウント値の方が大きい場合は、実行イベント数が累積カウンタで指定された値と等しくなるまでイベントの処理（Ｓ１９）を行う。実行イベント数の値が累積カウンタ値以上になれば、割込み処理を終了する。
【００２７】
割込み処理中に、ファームウェアのシーケンサ処理で、同期メッセージが処理され、累積カウンタ２３ａがインクリメントされていた場合（同期イベントが複数・連続で発生した場合の処理）は、上述と同様に、ステップ（Ｓ１８）の判定で割込み処理を抜けずに、実行イベント数と累積カウンタの値が等しくなるまで、イベント処理（Ｓ１９）が実行される。
【００２８】
＜途中再生時（楽曲の途中の指定された時間からの再生する場合）の処理＞
通常再生処理と同様に、シーケンサブロック２２のファームウェアにより、ＦＩＦＯメモリ２１のＭＩＤＩデータが順にメッセージ解析される（Ｓ１１）。その際、同期メッセージを解析処理すると、累積カウンタ２３ａを＋１インクリメントする（Ｓ１２）。この場合、途中再生開始位置までシーク動作中なので（Ｓ１３）、ホストＣＰＵ（２４）への割り込みは行わず、そのままシーケンサ処理が続行される。
【００２９】
途中再生開始位置までのシーク処理中は、上記の処理を繰り返し、途中再生開始位置までに処理される同期メッセージの数を累積カウンタに累積する。
【００３０】
途中再生開始位置までのシーク動作が終了し楽曲の再生を始めた後、同期メッセージを解析した場合には（Ｓ１１）、累積カウンタ２３ａを＋１インクリメント（Ｓ１２）した後、ホストＣＰＵ（２４）への割込み要求を発生（Ｓ１４）して、シーケンサ処理へ戻る。
【００３１】
割込み要求を受けたホストＣＰＵ側では、シーク再生開始後初めての割込みになるので（Ｓ１５）、累積カウンタの値を実行イベント数とする処理を行う（Ｓ１６）。そして、累積カウンタ値で示されるイベント処理を行う（Ｓ１７）。以降の処理は、＜通常再生時（楽曲の先頭から再生する場合）の処理＞と同様である。
【００３２】
以上説明したように、この実施の形態では、レジスタ２３内の累積カウンタ２３に保持された値とホストＣＰＵ（２４）でカウントする実行イベント数が一致するまでイベント処理を行うので、ホストＣＰＵでの同期割り込みの実行漏れを防止することが出来、楽曲の演奏と同期して同期イベントを実行することが可能になり、従来のようなイベント実行タイミングのずれが発生することの無いイベント処理が可能となる。
【００３３】
本実施形態では、ＭＩＤＩ入力メモリとしてＦＩＦＯメモリを使用した場合について説明したが、このメモリはＦＩＦＯメモリである必要はなく、楽曲データの入力と保持が可能なメモリであればよい。また、ＭＩＤＩ楽曲中に同期メッセージを挿入する方法は特に限定する必要は無く、あるチャンネルのノートオンメッセージに同期させたり、例えば、使用していないノート番号のノートオンメッセージで代用させたりすることが出来る。
【図面の簡単な説明】
【００３４】
【図１】実施形態に係るＭＩＤＩ演奏方法を示すフローチャートである。
【図２】この発明によるＭＩＤＩ演奏方法を実装するシステムの概略構成図である。
【図３】従来のＭＩＤＩ演奏方法を示すフローチャートである。
【符号の説明】
【００３５】
１０    実施形態に係るＭＩＤＩ演奏方法を示すフローチャート
２０    ＭＩＤＩ演奏方法を実装するシステム
２１    ＦＩＦＯメモリ
２２    シーケンサブロック
２３    レジスタ
２４    ホストＣＰＵ
【図１】
2006251084.tif 000003
【図２】
2006251084.tif 000004
【図３】
2006251084.tif 000005