(57)【要約】【課題】ＭＩＤＩ再生器において、簡単なプログラムで、複数チャネルのシーケンサを切り換える。【解決手段】読出・復元機能部２２１は、ヘッダ情報、デルタタイムおよびメッセージを含む楽曲情報を入力ＦＩＦＯ１１０−１から読み出す。メッセージ解析・処理機能部２２２は、ヘッダ情報の解析、デルタタイムの消費および音源駆動情報の生成を行う。書込機能部２２３は、音源駆動情報を出力ＦＩＦＯ１３０−１に書き込む。シーケンサ制御機能部２２４は、メッセージ解析・処理機能部２２２のヘッダ情報解析、時間消費、音源駆動情報生成や、書込機能部２２３の書き込みを制御する。動作するシーケンサ２２０−１〜２２０−４が切り換わるとき、動作を中断する機能部の動作状態が、これらの機能部単位で保持される。【選択図】図２
2006171626.tif 000002
【特許請求の範囲】
【請求項１】
複数のシーケンサを適宜切り換えて動作させることによって複数チャンネルの楽曲再生を行う楽曲再生装置であって、
それぞれの前記シーケンサが、
ヘッダ情報、デルタタイムおよびメッセージを含む楽曲情報を入力メモリから読み出し、且つ、当該メッセージのランニングステータスを復元する読出・復元機能部と、
当該読出・復元機能部から入力した前記ヘッダ情報を解析し、前記デルタタイムに応じた時間消費を行い、且つ、前記メッセージを解析・処理して音源駆動情報を生成するメッセージ解析・処理機能部と、
当該メッセージ解析・処理機能部が生成した前記音源駆動情報を出力メモリに書き込む書込機能部と、
前記読出・復元機能部に前記楽曲情報を読出・復元させ、前記メッセージ解析・処理機能部に前記ヘッダ情報を解析させ、当該ヘッダ情報が適正な場合に、前記時間消費と前記音源駆動情報の生成と当該音源駆動情報の書き込みとを前記メッセージ解析・処理機能部および前記書込機能部に行わせるシーケンサ制御機能部と、
を有し、
動作する前記シーケンサが切り換わるときに、動作を終了する機能部の一部または全部の動作状態が、これらの機能部単位で保持されることを特徴とする楽曲再生装置。
【請求項２】
前記楽曲情報の読み出し中に前記シーケンサの動作が終了する場合に、前記読出・復元機能部の前記動作状態として、読み出し中のデータのヘッダ情報／デルタタイム／メッセージの区別と既読データ量とが保持されることを特徴とする請求項１に記載の楽曲再生装置。
【請求項３】
読み出し中のデータが前記メッセージの場合に、前記読出・復元機能部の前記動作状態として、当該メッセージの種類が保持されることを特徴とする請求項２に記載の楽曲再生装置。
【請求項４】
前記シーケンサ制御機能部の前記動作状態として、ヘッダ取得中／デルタタイム取得中／メッセージ取得中の区別が保持されることを特徴とする請求項２または３に記載の楽曲再生装置。
【請求項５】
前記時間消費の最中に前記シーケンサの動作が終了する場合に、前記メッセージ解析・処理機能部の前記動作状態として、時間消費中である旨と既に消費された時間とが保持されることを特徴とする請求項１〜４のいずれかに記載の楽曲再生装置。
【請求項６】
前記シーケンサ制御機能部の前記動作状態として、タイミング管理中である旨が保持されることを特徴とする請求項５に記載の楽曲再生装置。
【請求項７】
前記出力メモリへの前記音源駆動情報の書込中に前記シーケンサの動作が終了する場合に、前記シーケンサ制御機能部の前記動作状態として、音源駆動情報書込中である旨が保持されることを特徴とする請求項１〜６のいずれかに記載の楽曲再生装置。
【請求項８】
前記読出・復元機能部が、前記楽譜情報の形式を、前記メッセージ解析・処理機能部が対応する形式に変換する機能をさらに備えることを特徴とする請求項１〜７のいずれかに記載の楽曲再生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えばＭＩＤＩ(Musical Instrument Digital Interface)データ等の楽譜情報を再生する技術に関する。この発明は、例えば、携帯電話機、ＰＤＡ(Personal Digital Assistance) 、ゲーム機器、ＭＩＤＩ専用の機器等に適用することができる。
【背景技術】
【０００２】
楽譜情報を用いて楽曲を再生する技術としては、例えばＭＩＤＩが知られている。ＭＩＤＩ技術の開示する文献としては、例えば下記特許文献１がある。
【０００３】
ＭＩＤＩ再生装置としては、複数チャンネルのＭＩＤＩデータを並列に再生する装置が知られている。複数チャンネルのＭＩＤＩ再生装置を用いることにより、例えばメロディと伴奏とを同時に再生することが可能になる。
【０００４】
従来の複数チャンネルのＭＩＤＩ再生装置は、入力ＦＩＦＯ(First In First Out)、シーケンサ、出力ＦＩＦＯおよび音源を、各チャンネルごとに備えていた。シーケンサは、ＭＩＤＩメッセージの内容を解析・処理して、音源を駆動するための情報（音源駆動情報）に変換する。通常、各シーケンサは、ＭＩＤＩ再生装置内の１個のＣＰＵ(Central Processing Unit) によって、ソフトウエア的に構築される。
【０００５】
周知のように、ＭＩＤＩメッセージのデータ長は、メッセージの種類によって異なる。加えて、ＭＩＤＩメッセージによっては、データ長が可変のものも規定されている。このため、各シーケンサが行う解析・処理の進行度は、必ずしも一致しない。例えば、あるシーケンサでＭＩＤＩメッセージ１個分の処理を終了して次のシーケンサの動作に移行したときに、当該次のシーケンサではＭＩＤＩメッセージ１個分の入力が終了していない場合がある。
【０００６】
このため、複数チャンネルのＭＩＤＩ再生装置では、シーケンサの動作を途中で終了して、次のシーケンサの動作に移行しなければならない場合がある。動作中のシーケンサの処理が完了するまで待っていたのでは、他のシーケンサの動作もその間停止してしまうことになり、スムーズなＭＩＤＩ再生を行うことができなくなる場合があるからである。
【０００７】
したがって、複数チャンネル分のシーケンサを１個のＣＰＵで動作させるためには、各シーケンサの解析・処理の状態を適切に管理し、動作が途中で終了した時にその状態を保持する必要がある。しかし、ＭＩＤＩメッセージの処理内容やデータ長は多岐にわたるため、このような管理・保持を行うには、複雑なプログラムを作成する必要がある。
【０００８】
これに対して、既存のＯＳ(Operating System)やスケジューラ等を使用し、マルチタスク方式によってシーケンサの切り換えを行うこととすれば、上述のような管理・保持を容易に行うことができる。しかしながら、ＯＳやスケジューラ等を使用する場合、大容量のメモリ（ＲＯＭ(Read Only Memory)やＲＡＭ(Random Access Memory)等）が必要となってしまう。特に、携帯電話機の着信メロディ再生回路などのような小型ＭＩＤＩ再生装置では、ＯＳ等を搭載することは困難である。
【特許文献１】特開２００１−５１６７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
この発明の課題は、ＯＳやスケジューラを用いずに、簡単なプログラムで、複数のシーケンサに対する状態管理を行うことができる楽曲再生装置を提供する点にある。
【課題を解決するための手段】
【００１０】
この発明は、複数のシーケンサを適宜切り換えて動作させることによって複数チャンネルの楽曲再生を行う楽曲再生装置に関する。
【００１１】
そして、それぞれのシーケンサが、ヘッダ情報、デルタタイムおよびメッセージを含む楽曲情報を入力メモリから読み出し、且つ、メッセージのランニングステータスを復元する読出・復元機能部と、読出・復元機能部から入力したヘッダ情報を解析し、デルタタイムに応じた時間消費を行い、且つ、メッセージを解析・処理して音源駆動情報を生成するメッセージ解析・処理機能部と、メッセージ解析・処理機能部が生成した音源駆動情報を出力メモリに書き込む書込機能部と、読出・復元機能部に楽曲情報を読出・復元させ、メッセージ解析・処理機能部にヘッダ情報を解析させ、ヘッダ情報が適正な場合に、時間消費と音源駆動情報の生成と音源駆動情報の書き込みとをメッセージ解析・処理機能部および書込機能部に行わせるシーケンサ制御機能部とを有し、動作するシーケンサが切り換わるときに、動作を終了する機能部の一部または全部の動作状態が、これらの機能部単位で保持されることを特徴とする。
【発明の効果】
【００１２】
この発明によれば、各シーケンサを、読出・復元機能部、メッセージ解析・処理機能部、書込機能部およびシーケンサ制御機能部に分割し、これらの機能部毎に個別に状態を管理することとしたので、ＯＳやスケジューラ等を使用せずに、簡単なプログラムで複数シーケンサの状態管理を行うことができる。
【発明を実施するための最良の形態】
【００１３】
以下、この発明の実施の形態について、この発明を４チャンネルのＭＩＤＩ再生装置に適用する場合を例に採り、図面を用いて説明する。なお、図中、各構成成分の大きさ、形状および配置関係は、この発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は単なる例示にすぎない。
【００１４】
図１は、この実施形態に係るＭＩＤＩ再生装置の全体構成を概略的に示すブロック図である。
【００１５】
図１に示したように、この実施形態に係るＭＩＤＩ再生装置１００は、４個の入力ＦＩＦＯ１１０−１〜１１０−４と、４チャンネルのＭＩＤＩシーケンサ１２０と、４個の出力ＦＩＦＯ１３０−１〜１３０−４と、１個の音源１４０とを備えている。
【００１６】
入力ＦＩＦＯ１１０−１〜１１０−４は、それぞれ、対応するチャンネルの楽譜情報を外部から入力し、一時的に保持する。入力ＦＩＦＯ１１０−１〜１１０−４のメモリ容量は、例えば２５６バイトである。
【００１７】
４チャンネルＭＩＤＩシーケンサ１２０は、４チャンネル分のＭＩＤＩデータを入力ＦＩＦＯ１１０−１〜１１０−４からそれぞれ入力し、これらのＭＩＤＩデータをチャンネル毎に解析・処理して音源駆動情報を生成する。
【００１８】
出力ＦＩＦＯ１３０−１〜１３０−４は、４チャンネルＭＩＤＩシーケンサから、対応するチャンネルの音源駆動情報を入力して、一時的に保持する。出力ＦＩＦＯ１３０−１〜１３０−４のメモリ容量は、例えば３２バイトである。
【００１９】
音源１４０は、４チャンネル分の音源部を備えており、各出力ＦＩＦＯ１３０−１〜１３０−４からそれぞれ音源駆動情報を入力して、これらの音源駆動情報に基づいてスピーカ（図示せず）を駆動するためのアナログ音響信号を生成する。
【００２０】
図２は、４チャンネルＭＩＤＩシーケンサ１２０の構成を概略的に示す機能ブロック図である。
【００２１】
図２に示したように、４チャンネルＭＩＤＩシーケンサ１２０は、１個のチャンネル制御機能部２１０と、４個のシーケンサ２２０−１〜２２０−４とを備えている。また、シーケンサ２２０−１〜２２０−４は、それぞれ、読出・復元機能部２２１と、メッセージ解析・処理機能部２２２と、書込機能部２２３と、シーケンサ制御機能部２２４と、入力バッファ２２５と、出力バッファ２２６とを備えている。
【００２２】
この実施形態では、各機能部２１０，２２１〜２２４を、１個のＣＰＵ（図示せず）により、ファームウエアとして構築する。すなわち、これらの機能部２１０，２２１〜２２４は、ＯＳ等の上にソフトウエア的に構築されるのではなく、ハードウエア上に直接、ソフトウエア的に構築される。
【００２３】
チャンネル制御機能部２１０は、４個のシーケンサ２２０−１〜２２０−４を適宜切り換えて動作させる。これにより、４チャンネルの楽曲再生が可能になる。
【００２４】
読出・復元機能部２２１は、対応する入力ＦＩＦＯ（シーケンサ２２０−１の場合は入力ＦＩＦＯ１１０−１）からＭＩＤＩデータを入力する。さらに、読出・復元機能部２２１は、ＭＩＤＩメッセージのランニングステータスを復元する。「ランニングステータス」とは、連続する複数のＭＩＤＩメッセージが同一のステータスバイト（ＭＩＤＩメッセージの種類を表すバイト）を含んでいる場合に、２番目以降のＭＩＤＩメッセージのステータスバイトを省略して、転送データ量を減らす技術である。読出・復元機能部２２１は、省略されたステータスバイトを復元して、ランニングステータスを施す前のＭＩＤＩメッセージに戻す。また、読出・復元機能部２２１は、この楽譜情報がＭＩＤＩメッセージであるか否かを判断し、ＭＩＤＩメッセージでない場合には、ＭＩＤＩメッセージに変換することとしてもよい。このように、読出・復元機能部２２１は、楽譜情報の解析・処理のうち、当該楽譜情報のデータ構造やデータ形式に関する解析・処理を担う。また、読出・復元機能部２２１は、自己の解析・処理の状態を管理し、この状態を適宜保持する（後述の図７（Ａ）参照）。
【００２５】
メッセージ解析・処理機能部２２２は、読出・復元機能部２２１から入力したＭＩＤＩデータのヘッダ情報を解析するとともに、当該ＭＩＤＩデータに格納されたメッセージを解析・処理して、音源駆動情報を生成する。すなわち、メッセージ解析・処理機能部２２２は、楽譜情報（ここではＭＩＤＩデータ）の解析・処理のうち、当該楽譜情報に格納されたメッセージの内容に基づいて音源駆動情報を生成するための解析・処理を担う。また、メッセージ解析・処理機能部２２２は、自己の解析・処理の状態を管理し、この状態を適宜保持する（後述の図７（Ｂ）参照）。
【００２６】
書込機能部２２３は、メッセージ解析・処理機能部２２２が生成した音源駆動情報を、対応する出力ＦＩＦＯ（シーケンサ２２０−１の場合は出力ＦＩＦＯ１３０−１）に、書き込む。なお、書込機能部２２３は、出力バッファ２２６のデータを出力ＦＩＦＯ１３０−１にそのまま書き込むだけであるため、自己の解析・処理の状態を管理する必要はない（後述）。
【００２７】
シーケンサ制御機能部２２４は、読出・復元機能部２２１にヘッダ情報を取得させ、このヘッダ情報をメッセージ解析・処理機能部２２２に解析させる。さらに、シーケンサ制御機能部２２４は、このヘッダ情報が正常な場合に、デルタタイムに応じた時間消費と、メッセージに応じた音源駆動情報の生成と、この音源駆動情報の出力ＦＩＦＯ１３０−１〜１３０−４への書き込みとを、メッセージ解析・処理機能部２２２および書込機能部２２３に繰り返し行わせる。また、シーケンサ制御機能部２２４は、自己の解析・処理の状態を管理し、この状態を適宜保持する（後述の図７（Ｃ）参照）。
【００２８】
次に、この実施形態に係るＭＩＤＩ再生装置１００の動作について、ヘッダ解析処理、タイミング管理処理および音源駆動情報生成・書込処理に分けて説明する。図３〜図７は、ＭＩＤＩ再生装置１００の動作を示すための図であり、図３は、シーケンサ制御機能部２２４の動作を説明するためのフローチャート、図４はヘッダ解析処理を説明するための概念図、図５はタイミング管理処理を説明するための概念図、図６は音源駆動情報生成・書込処理を説明するための概念図、図７は読出・復元機能部２２１、メッセージ解析・処理機能部２２２およびシーケンサ制御機能部２２４の状態を示す表である。
【００２９】
以下、この実施形態ではシーケンサ２２０−１の動作を例に採って説明するが、他のシーケンサ２２０−２〜２２０−４の動作も同様である。
【００３０】
（１）ヘッダ解析処理
４チャンネルＭＩＤＩシーケンサ１２０（図１参照）が動作を開始すると、まず、チャンネル制御機能部２１０（図２参照）が、シーケンサ２２０−１の動作を開始させる。これにより、シーケンサ２２０−１が、ヘッダ解析処理を開始する。
【００３１】
ヘッダ解析処理では、まず、シーケンサ制御機能部２２４が、読出・復元機能部２２１に、ヘッダ情報の読み出しを要求する（図３のＳ３０１および図４のＲ１参照）。
【００３２】
読出・復元機能部２２１は、この要求を受け取ると、入力ＦＩＦＯ１１０−１から、ヘッダ情報を構成するデータを１バイトずつ読み出して、入力バッファ２２５に順次格納する（図４のＲ２，Ｒ３参照）。
【００３３】
ここで、ヘッダ情報の一部または全部のバイトが入力ＦＩＦＯ１１０−１に未だ格納されていない場合、読出・復元機能部２２１は、読み出し処理を行えなくなる。この場合、読出・復元機能部２２１は、解析・処理の状態として「ヘッダ情報読出中」を保持するとともに、既に読み出したヘッダ情報のバイト数を保持する（図７（Ａ）参照）。なお、本願における「保持」の方法は、動作再開後にシーケンサ２２０−１が当該解析・処理状態をチェックできる方法であれば特に限定されず、例えば、シーケンサを構築するハードウエア内のメモリに状態値を記憶させることとしてもよいし、ソフトウエア的にフラグ等を作成することとしてもよいし、他の方法でもよい（以下、すべての保持動作において同じ）。
【００３４】
読出・復元機能部２２１は、ヘッダ情報の読み出しが未完了のまま終了したこと示す通知信号を、シーケンサ制御機能部２２４に送る（図４のＲ４参照）。シーケンサ制御機能部２２４は、受け取った通知信号から、ヘッダ情報の読み出しが未完了であることを認識する（図３のＳ３０２参照）。そして、シーケンサ制御機能部２２４は、解析・処理の状態として「ヘッダ情報取得中」を保持した後（図３のＳ３０３および図７（Ｃ）参照）、処理の終了を示す通知信号をチャンネル制御機能部２１０（図２参照）に送り（図４のＲ５参照）、ヘッダ情報の読み出し処理を終了する。チャンネル制御機能部２１０は、この通知信号を受け取ると、シーケンサ２２０−１の動作を停止して、次のシーケンサ２２０−２の動作を開始させる。その後、シーケンサ２２０−２〜２２０−４の動作が行われた後で、チャンネル制御機能部２１０は、再び、シーケンサ２２０−１の動作を開始させる。この再開時に、シーケンサ制御機能部２２４は、保持された解析・処理状態（すなわち「ヘッダ情報取得中」）から、前回のシーケンサ２２０−１の動作がヘッダ情報の読み出し未完了のまま終了したと判断する（図３のＳ３０４参照）。そして、シーケンサ制御機能部２２４は、読出・復元機能部２２１に対して、ヘッダ情報の読み出しを要求する信号を、再び送信する（図４のＲ１参照）。読出・復元機能部２２１は、この要求信号を受け取ると、保持内容から前回終了時の状態（「ヘッダ情報読出中」である旨および既読バイト数）を認識し、残りバイトの読み出しを再開する。
【００３５】
読み出しが完了した場合には、読出・復元機能部２２１が、読み出しの完了を示す通知信号を、シーケンサ制御機能部２２４に送る（図４のＲ６参照）。シーケンサ制御機能部２２４は、この通知信号を受け取ると（図３のステップＳ３０２参照）、メッセージ解析・処理機能部２２２に、当該ヘッダ情報の解析を要求する（図３のＳ３０５および図４のＲ７参照）。
【００３６】
メッセージ解析・処理機能部２２２は、この要求を受け取ると、入力バッファ２２５からヘッダ情報を読み出して解析する（図４のＲ８参照）。そして、ヘッダ情報の「正常」或いは「異常」（すなわち、このＭＩＤＩ再生装置１００で再生できる形式のデータか否か）を示す通知信号を、シーケンサ制御機能部２２４に送る（図４のＲ９参照）。ヘッダ情報が「異常」の場合、シーケンサ制御機能部２２４は、解析・処理の終了を示す通知信号をチャンネル制御機能部２１０に送り、動作を終了する。一方、ヘッダ情報が「正常」の場合、シーケンサ制御機能部２２４は、タイミング管理処理に移行する。
【００３７】
（２）タイミング管理処理
タイミング管理処理では、まず、シーケンサ制御機能部２２４が、読出・復元機能部２２１に、デルタタイムの読み出しを要求する（図３のＳ３０６および図５のＴ１参照）。デルタタイムとは、ある演奏動作と次の演奏動作との時間間隔を規定する情報である。例えば、ノートオン（鍵盤を押す）からノートオフ（鍵盤を離す）までの時間は、デルタタイムで規定される。読出・復元機能部２２１は、この要求を受け取ると、入力ＦＩＦＯ１１０−１からデルタタイムを１バイトずつ読み出して、入力バッファ２２５に順次格納する（図５のＴ２，Ｔ３参照）。
【００３８】
ここで、デルタタイムの一部または全部のバイトが入力ＦＩＦＯ１１０−１に未だ格納されていない場合、読出・復元機能部２２１は、読み出し処理を行えなくなる。この場合、読出・復元機能部２２１は、解析・処理の状態として「デルタタイム読出中」を保持するとともに、既に読み出したデルタタイムのバイト数を保持する（図７（Ａ）参照）。そして、読出・復元機能部２２１は、デルタタイムの読み出しが未完了のまま終了したこと示す通知信号を、シーケンサ制御機能部２２４に送る（図５のＴ４参照）。シーケンサ制御機能部２２４は、受け取った通知信号から、デルタタイムの読み出しが未完了であることを認識する（図３のステップＳ３０７参照）。そして、シーケンサ制御機能部２２４は、解析・処理の状態として「デルタタイム取得中」を保持した後（図３のＳ３０８および図７（Ｃ）参照）、処理の終了を示す通知信号をチャンネル制御機能部２１０（図２参照）に送り（図５のＴ５参照）、動作を終了する。チャンネル制御機能部２１０は、この通知信号を受け取ると、シーケンサ２２０−１の動作を停止して、次のシーケンサ２２０−２の動作を開始させる。その後、シーケンサ２２０−２〜２２０−４の動作が行われた後で、チャンネル制御機能部２１０は、再び、シーケンサ２２０−１の動作を開始させる。この再開時に、シーケンサ制御機能部２２４は、保持された解析・処理状態（すなわち「デルタタイム取得中」）から、前回のシーケンサ２２０−１の動作がデルタタイムの読み出し未完了のまま終了したと判断する（図３のＳ３０４参照）。そして、シーケンサ制御機能部２２４は、読出・復元機能部２２１に対して、デルタタイムの読み出しを要求する信号を、再び送信する（図３のＳ３０６および図５のＴ１参照）。読出・復元機能部２２１は、この要求信号を受け取ると、保持内容から前回終了時の状態（「デルタタイム読出中」である旨および既読バイト数）を認識し、残りバイトの読み出しを再開する。
【００３９】
読み出しが完了した場合には、読出・復元機能部２２１が、読み出しの完了を示す通知信号を、シーケンサ制御機能部２２４に送る（図５のＴ６参照）。シーケンサ制御機能部２２４は、この通知信号を受け取ると、メッセージ解析・処理機能部２２２に、当該デルタタイムに相当する時間消費を要求する（図３のステップＳ３０９および図５のＴ７参照）。
【００４０】
メッセージ解析・処理機能部２２２は、この要求を受け取ると、入力バッファ２２５からデルタタイムを読み出す（図５のＴ８参照）。そして、メッセージ解析・処理機能部２２２は、当該デルタタイムを内部タイマ（図示せず）の計時と随時比較することにより、時間消費の状況を管理する。所定時間内に当該時間消費されない場合、メッセージ解析・処理機能部２２２は、解析・処理の状態として「デルタタイム消費中」を保持するとともに、既に消費した時間を保持する（図７（Ｂ）参照）。そして、メッセージ解析・処理機能部２２２は、時間消費が未完了のまま終了したこと示す通知信号を、シーケンサ制御機能部２２４に送る（図５のＴ９参照）。シーケンサ制御機能部２２４は、受け取った通知信号から、時間消費が未完了であることを認識する（図３のステップＳ３１０参照）。そして、シーケンサ制御機能部２２４は、解析・処理の状態として「タイミング管理中」を保持した後（図３のＳ３１１および図７（Ｃ）参照）、処理の終了を示す通知信号をチャンネル制御機能部２１０（図２参照）に送り（図５のＴ１０参照）、タイミング管理処理を終了する。チャンネル制御機能部２１０は、この通知信号を受け取ると、シーケンサ２２０−１の動作を停止して、次のシーケンサ２２０−２の動作を開始させる。その後、シーケンサ２２０−２〜２２０−４の動作が行われた後で、チャンネル制御機能部２１０は、再び、シーケンサ２２０−１の動作を開始させる。この再開時に、シーケンサ制御機能部２２４は、保持された解析・処理状態（すなわち「タイミング管理中」）から、前回のシーケンサ２２０−１の動作がデルタタイムの消費未完了のまま終了したと判断する（図３のＳ３０４参照）。そして、シーケンサ制御機能部２２４は、メッセージ解析・処理機能部２２２に対して、時間の消費を要求する信号を、再び送信する（図５のＴ７参照）。メッセージ解析・処理機能部２２２は、この要求信号を受け取ると、保持内容から前回終了時の状態（「デルタタイム消費中」である旨および消費時間）を認識し、デルタタイムの消費を再開する。
【００４１】
デルタタイムの消費が完了した場合には、メッセージ解析・処理機能部２２２が、消費の完了を示す通知信号を、シーケンサ制御機能部２２４に送る（図５のＴ１１参照）。シーケンサ制御機能部２２４は、この通知信号から時間消費の完了を認識すると（図３のステップＳ３１０参照）、音源駆動情報生成・書込処理に移行する。
【００４２】
（３）音源駆動情報生成・書込処理
音源駆動情報生成・書込処理では、まず、シーケンサ制御機能部２２４が、読出・復元機能部２２１に、メッセージの読み出しを要求する（図３のＳ３１２および図６のＰ１参照）。
【００４３】
読出・復元機能部２２１は、この要求を受け取ると、入力ＦＩＦＯ１１０−１から、メッセージを構成するデータを１バイトずつ読み出して、入力バッファ２２５に順次格納する（図６のＰ２，Ｐ３参照）。また、ＭＩＤＩ以外の形式からＭＩＤＩ形式にデータを変換する機能（上述）を設ける場合には、読出・復元機能部２２１は、データ変換を行ってから入力バッファ２２５への格納を行えばよい。
【００４４】
ここで、メッセージの一部または全部のバイトが入力ＦＩＦＯ１１０−１に未だ格納されていない場合、読出・復元機能部２２１は、読み出し処理を行えなくなる。この場合、読出・復元機能部２２１は、解析・処理の状態として「メッセージ読出中（種別未確定）」、「メッセージの読出中（２バイトメッセージ）」、「メッセージの読出中（３バイトメッセージ）」、「メッセージ読出中（メタイベント）」或いは「メッセージの読出中（システムエクスクルーシブメッセージ）」を保持するとともに、既に読み出したメッセージのバイト数を保持する（図７（Ａ）参照）。ここで、メッセージの種別を保持することとしたのは、当該種別に応じて残りバイト数を判断する処理が異なるからである。続いて、読出・復元機能部２２１は、メッセージの読み出しが未完了のまま終了したこと示す通知信号を、シーケンサ制御機能部２２４に送る（図６のＰ４参照）。シーケンサ制御機能部２２４は、受け取った通知信号から、メッセージの読み出しが未完了であることを認識する（図３のステップＳ３１３参照）。そして、シーケンサ制御機能部２２４は、解析・処理の状態として「メッセージ取得中」を保持した後（図７（Ｃ）参照）、処理の終了を示す通知信号をチャンネル制御機能部２１０（図２参照）に送り（図６のＰ５参照）、ヘッダ情報の読み出し処理を終了する。チャンネル制御機能部２１０は、この通知信号を受け取ると、シーケンサ２２０−１の動作を停止して、次のシーケンサ２２０−２の動作を開始させる。その後、シーケンサ２２０−１の動作が再開した時に、シーケンサ制御機能部２２４は、保持された解析・処理状態（すなわち「メッセージ取得中（種別未確定）」等）から、前回のシーケンサ２２０−１の動作がメッセージの読み出し未完了の状態で終了したことと、当該メッセージの種別（または未確定であること）とを判断する（図３のＳ３０４参照）。そして、シーケンサ制御機能部２２４は、読出・復元機能部２２１に対して、メッセージの読み出しを要求する信号を、再び送信する（図６のＰ１参照）。読出・復元機能部２２１は、この要求信号を受け取ると、保持内容から前回終了時の状態（「メッセージ読出中」である旨および既読バイト数）を認識し、残りバイトの読み出しを再開する。
【００４５】
メッセージの読み出しが完了した場合には、読出・復元機能部２２１が、読み出しの完了を示す通知信号を、シーケンサ制御機能部２２４に送る（図６のＰ４参照）。シーケンサ制御機能部２２４は、この通知信号を受け取ると（図３のＳ３１３参照）、メッセージ解析・処理機能部２２２に、当該メッセージの解析を要求する（図３のＳ３１４および図６のＰ６参照）。
【００４６】
メッセージ解析・処理機能部２２２は、この要求を受け取ると、入力バッファ２２５からＭＩＤＩメッセージを読み出して解析する（図６のＰ７参照）。そして、このメッセージが異常である場合（すなわち、音源１４０に対応していないメッセージである場合）には、メッセージ解析・処理機能部２２２は、当該メッセージを入力バッファ２２５から削除して、その旨を示す通知信号をシーケンサ制御機能部２２４に送る（図６のＰ８参照）。シーケンサ制御機能部２２４は、この通知信号が「異常」であると認識すると（図３のＳ３１５参照）、解析・処理の状態として「デルタタイム取得中」を保持するとともに（図３のＳ３１６参照）、処理の終了を示す通知信号をチャンネル制御機能部２１０に送り（図６のＰ９参照）、処理を終了する。解析・処理の状態として「デルタタイム取得中」を保持することにより、シーケンサ２２０−１の動作が次に再開されたとき、タイミング管理処理（図３のＳ３０６〜Ｓ３１１参照）が実行される。
【００４７】
一方、メッセージが「正常」である場合（すなわち、音源１４０に対応したメッセージである場合）、メッセージ解析・処理機能部２２２は、当該メッセージの内容に応じた音源駆動情報を生成して、出力バッファ２２６に書き込む（図６のＰ１０参照）。そして、メッセージ解析・処理機能部２２２は、解析の完了を示す通知信号（図６のＰ１１参照）を、シーケンサ制御機能部２２４に送る。
【００４８】
シーケンサ制御機能部２２４は、通知信号が解析完了を示していると認識すると（図３のＳ３１５）、次に、書込機能部２２３に対して、音源駆動情報を出力ＦＩＦＯ１３０−１へ書き込むように要求する（図３のステップＳ３１７および図６のＰ１２参照）。書込機能部２２３は、この要求を受け取ると、出力バッファ２２６から音源駆動情報を読み出して、出力ＦＩＦＯ１３０−１に格納する（図６のＰ１３，Ｐ１４参照）。
【００４９】
ここで、出力ＦＩＦＯ１３０−１に空きがなくなった場合、書込機能部２２３は、書き込み処理を行えなくなる。この場合、書込機能部２２３は、書き込みが未完了のまま終了したこと示す通知信号を、シーケンサ制御機能部２２４に送る（図６のＰ１５参照）。なお、このとき、書込機能部２２３は、状態の保持を行わない。書込機能部２２３は、出力バッファ２２６のデータをそのまま出力ＦＩＦＯ１３０−１に書き込むだけであり、解析や処理等を行っていないために、状態保持の必要性がないからである。但し、必要に応じて、書込機能部２２３が状態の保持を行うこととしてもよいことは、もちろんである。シーケンサ制御機能部２２４は、受け取った通知信号から、音源駆動情報の読み出しが未完了であることを認識する（図３のステップＳ３１８参照）。そして、シーケンサ制御機能部２２４は、解析・処理の状態として「音源駆動情報書込中」を保持した後（図７（Ｃ）参照）、処理の終了を示す通知信号をチャンネル制御機能部２１０（図２参照）に送り（図６のＰ１６参照）、動作を終了する。チャンネル制御機能部２１０は、この通知信号を受け取ると、シーケンサ２２０−１の動作を停止して、次のシーケンサ２２０−２の動作を開始させる。シーケンサ２２０−１の動作再開時には、シーケンサ制御機能部２２４は、保持された解析・処理状態（すなわち「音源駆動情報書込中」）から、前回のシーケンサ２２０−１の動作が音源駆動情報の書き込みが未完了の状態で終了したと判断する（図３のＳ３０４参照）。そして、シーケンサ制御機能部２２４は、書込機能部２２３に対して、書き込みを要求する信号を、再び送信する（図６のＰ１２参照）。書込機能部２２３は、この要求信号を受け取ると、出力バッファ２２６のデータの出力ＦＩＦＯ１３０−１への書き込みを再開する。
【００５０】
書き込みが完了した場合には、書込機能部２２３が、書き込みの完了を示す通知信号を、シーケンサ制御機能部２２４に送る（図６のＰ１７参照）。シーケンサ制御機能部２２４は、この通知信号から書き込みが完了したことを認識すると（図３のステップＳ３１８参照）、解析・処理の状態として「デルタタイム取得中」を保持した後、動作の終了を示す通知信号をチャンネル制御機能部２１０（図２参照）に送り（図６のＰ１８参照）、動作を終了する。解析・処理の状態として「デルタタイム取得中」を保持することにより、シーケンサ２２０−１の動作が次に再開されたとき、タイミング管理処理（図３のＳ３０６〜Ｓ３１１参照）が実行される。
【００５１】
以後、ＭＩＤＩデータの再生が完了するまで、タイミング管理処理と音源駆動情報生成・書込処理とが繰り返し実行される。
【００５２】
以上説明したように、この実施形態によれば、シーケンサ２２０−１〜２２０−４を読出・復元機能部２２１、メッセージ解析・処理機能部２２２、書込機能部２２３およびシーケンサ制御機能部２２４に分けて構築し、各機能部毎に解析・処理状態を管理・保持することとした。このため、この実施形態では、かかる管理・保持項目が、非常に単純になる（図７参照）。したがって、この実施形態によれば、ＯＳやスケジューラを用いずに、簡単なプログラムで、複数のシーケンサに対する状態管理を行うことが可能になる。これにより、複数チャンネルのＭＩＤＩ再生装置において、メモリ容量を小さくすることができる。
【００５３】
加えて、この実施形態によれば、読出・復元機能部２２１が他の機能から独立しているので、ＭＩＤＩ以外の形式からＭＩＤＩに変換する機能の追加が容易になる。
【図面の簡単な説明】
【００５４】
【図１】実施の形態に係るＭＩＤＩ再生装置の全体構成を概略的に示すブロック図である。
【図２】図１に示した４チャンネルＭＩＤＩシーケンサの構成を概略的に示す機能ブロック図である。
【図３】図２に示したシーケンサ制御機能部の動作を説明するためのフローチャートである。
【図４】実施の形態に係るＭＩＤＩ再生装置のヘッダ解析処理を説明するための概念図である。
【図５】実施の形態に係るＭＩＤＩ再生装置のタイミング管理処理を説明するための概念図である。
【図６】実施の形態に係るＭＩＤＩ再生装置の音源駆動情報生成・書込処理を説明するための概念図である。
【図７】図２に示した読出・復元機能部、メッセージ解析・処理機能部およびシーケンサ制御機能部の解析・処理状態を示す図表である。
【符号の説明】
【００５５】
１１０−１〜１１０−４  入力ＦＩＦＯ
１２０  ４チャンネルＭＩＤＩシーケンサ
１３０−１〜１３０−４  出力ＦＩＦＯ
１４０  音源
２１０  チャンネル制御機能部
２２０−１〜２２０−４  シーケンサ
２２１  読出・復元機能部
２２２  メッセージ解析・処理機能部
２２３  書込機能部
２２４  シーケンサ制御機能部
２２５  入力バッファ
２２６  出力バッファ
【図１】
2006171626.tif 000003
【図２】
2006171626.tif 000004
【図３】
2006171626.tif 000005
【図４】
2006171626.tif 000006
【図５】
2006171626.tif 000007
【図６】
2006171626.tif 000008
【図７】
2006171626.tif 000009