(57)【要約】【課題】  ホストＣＰＵからの楽曲データが滞ってＦＩＦＯバッファが空になっても、システムコントローラがハングアップせず、楽曲を再生することができるＭＩＤＩ再生装置を提供する。【解決手段】  ＦＩＦＯバッファ１１に書き込まれた楽曲データＭＤＴは、システムコントローラ１３によってデルタタイムとそれに追従するＭＩＤＩメッセージの組の単位で前処理され、ＭＩＤＩデータバッファ１４に蓄えられる。ＭＩＤＩシーケンサ１５は、ＭＩＤＩデータバッファ１４の楽曲データＭＤＴに基づいてシンセサイザ１６を制御する。これにより、ホストＣＰＵ１の処理遅延等でＦＩＦＯバッファ１１が空になっても、楽音信号ＭＵＳを途絶えることなく出力できる。また、ＦＩＦＯバッファ１１が空になった時に、楽曲データの前処理を停止しホストＣＰＵ１からのコマンド処理を継続すれば、システムコントローラのハングアップを防止できる。【選択図】      図１
2007079185.tif 000002
【特許請求の範囲】
【請求項１】
外部の処理装置からＭＩＤＩ形式の楽曲データを受け取る先入れ先出しバッファと、
前記処理装置からのコマンド入力、及び該処理装置へのステータス出力を行うためのレジスタと、
前記先入れ先出しバッファから前記楽曲データを読み出してＭＩＤＩメッセージとその次のメッセージまでのデルタタイムの単位で前処理を行うと共に、前記レジスタを介して前記処理装置から与えられるコマンドを処理し、その処理結果のステータスを出力するシステムコントローラと、
前記システムコントローラで前処理された楽曲データを蓄えるＭＩＤＩデータバッファと、
前記ＭＩＤＩデータバッファに蓄えられた前記楽曲データを解析するＭＩＤＩシーケンサと、
前記ＭＩＤＩシーケンサの制御に従って楽音信号を出力するシンセサイザとを、
備えたことを特徴とするＭＩＤＩ再生装置。
【請求項２】
前記システムコントローラは、楽曲再生中に前記先入れ先出しバッファが空になっていることを検出した時に、前記前処理をスキップし、前記外部の処理装置からのコマンドに対する処理を継続するように構成したことを特徴とする請求項１記載のＭＩＤＩ再生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、携帯電話機や携帯端末（ＰＤＡ）等に組み込まれて楽曲を再生するＭＩＤＩ(Musical Instrument Digital Interface)再生装置に関するものである。
【背景技術】
【０００２】
携帯電話機や携帯端末では、ＭＩＤＩ形式の楽曲データに従って楽曲を再生する音源ＬＳＩを組み込むことが多い。
【０００３】
音源ＬＳＩは、携帯電話機や携帯端末装置の全体制御を行うホストＣＰＵから与えられるＭＩＤＩ形式の楽曲データをアナログの楽音信号に変換するもので、通常、ＦＩＦＯ(First In First Out:先入れ先出し）バッファ、レジスタ、ＭＩＤＩシーケンサ、シンセサイザ、及びシステムコントローラで構成されている。
【０００４】
ＦＩＦＯバッファは、ホストＣＰＵから与えられる楽曲データを順番に書き込み、読み出すときには書き込まれている古い楽曲データから順番に読み出すように構成されたメモリである。レジスタは、ホストＣＰＵとシステムコントローラとの間で、各種のコマンドやステータスの受け渡しを行うためのバッファである。ＭＩＤＩシーケンサは、システムコントローラからの指示に従って、ＦＩＦＯバッファから楽曲データを読み出し、その楽曲データを解析してシンセサイザに対して楽音信号の再生を制御するものである。シンセサイザは、ＭＩＤＩシーケンサからの制御に従って、アナログの楽音信号を出力するものである。
【０００５】
このような音源ＬＳＩでは、ホストＣＰＵからレジスタを介して演奏開始コマンドが与えられると、システムコントローラはそれを検出し、ＭＩＤＩシーケンサに対して、ＦＩＦＯバッファに書き込まれた楽曲データを処理するように指示する。一方、ホストＣＰＵは、楽曲データをＦＩＦＯバッファに書き込む。
【０００６】
ＭＩＤＩシーケンサは、ＦＩＦＯバッファから楽曲データを読み出して解析し、シンセサイザに対して楽音信号の再生を制御する。シンセサイザでは、ＭＩＤＩシーケンサからの制御に従ってアナログの楽音信号を出力する。楽音信号は増幅器で増幅され、スピーカ等から楽音が出力されて音楽の演奏が始まる。以降、ＦＩＦＯバッファの状況に応じて、ホストＣＰＵから楽曲データが順次書き込まれ、滑らかな演奏が行われる。
【０００７】
なお、下記特許文献１には、ＭＩＤＩ等の演奏情報に基づいて楽音を発生するときの発音タイミングの遅れを減少されるために、ノートオン情報のみを記憶する第１のＦＩＦＯと、キーオン以外の演奏情報を記憶する第２のＦＩＦＯを具備する電子楽器が記載されている。この電子楽器では、第１のＦＩＦＯにデータがあればそのデータの発音処理を行い、この第１のＦＩＦＯの処理が完了してから第２のＦＩＦＯの発音処理を行う発音制御手段を備えている。更に発音制御手段は、第１のＦＩＦＯに複数のノートオン情報が記憶されている場合に、予め定められた優先順位判定方法に基づいて優先度の高いものを選択することにより、発音タイミングの遅れを減少することができるとされている。
【０００８】
【特許文献１】特開平７−２１０１５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前記音源ＬＳＩは次のような課題があった。
近年、携帯電話機や携帯端末において使用されているＭＩＤＩ音源では、３２音や６４音以上の同時発音を行うことができる音源が一般的となりつつある。しかし、仕様上は多数和音が発音可能であっても、携帯電話機や携帯端末のＣＰＵ処理能力には限界がある。このため、他のアプリケーションの処理にＣＰＵの処理能力が割かれたり、楽曲が複雑になって多和音化することによってデータ通信量が増えたりすることで、ＣＰＵの通信能力を越えることがある。
【００１０】
データ通信量がＣＰＵの通信能力を越えると、ホストＣＰＵから音源ＬＳＩへの楽曲データの書き込みが滞ってＦＩＦＯバッファが空になり、再生すべきデータが無くなってしまう。ＭＩＤＩシーケンサは、１メッセージを受け取るまでデータが入力されないと処理に入れないため、メッセージの途中でデータが来なくなると、ＦＩＦＯバッファへのデータ入力待ち状態となり、ホストＣＰＵからの再生停止、ポーズ、音量調整等のコマンドを受け付けなくなるという問題があった。
【００１１】
本発明は、ＦＩＦＯバッファが空になっても、システムコントローラがハングアップせず、楽曲を再生することができるＭＩＤＩ再生装置を提供することを目的としている。
【課題を解決するための手段】
【００１２】
本発明のＭＩＤＩ再生装置は、外部のＣＰＵからＭＩＤＩ形式の楽曲データを受け取るＦＩＦＯバッファと、前記ＣＰＵからのコマンド入力、及び該ＣＰＵへのステータス出力を行うためのレジスタと、前記ＦＩＦＯバッファから前記楽曲データを読み出してＭＩＤＩメッセージとその次のメッセージまでのデルタタイムの単位で前処理を行うと共に、前記レジスタを介して前記ＣＰＵから与えられるコマンドを処理し、その処理結果のステータスを出力するシステムコントローラと、前記システムコントローラで前処理された楽曲データを蓄えるＭＩＤＩデータバッファと、前記ＭＩＤＩデータバッファに蓄えられた前記楽曲データを解析するＭＩＤＩシーケンサと、前記ＭＩＤＩシーケンサの制御に従って楽音信号を出力するシンセサイザとを備えたことを特徴としている。
【発明の効果】
【００１３】
本発明では、外部のＣＰＵからＭＩＤＩ形式の楽曲データを受け取るＦＩＦＯバッファの他に、このＦＩＦＯバッファの楽曲データをデルタタイムで区切られたＭＩＤＩメッセージに分割された楽曲データを蓄えるＭＩＤＩデータバッファを有している。これにより、ＣＰＵの処理遅延等によってＦＩＦＯバッファが空になっても、ＭＩＤＩデータバッファの楽曲データを再生することができるので、楽音信号を途絶えることなく出力することができる。
【発明を実施するための最良の形態】
【００１４】
楽曲再生中に、ＦＩＦＯバッファが空になっていることをシステムコントローラが検出した時に、楽曲データの前処理をスキップしＣＰＵからのコマンドに対する処理を継続するように構成する。これにより、ＣＰＵからの楽曲データ待ちのために、システムコントローラがハングアップするおそれがなくなる。
【実施例１】
【００１５】
図１は、本発明の実施例を示すＭＩＤＩ再生装置の構成図である。
このＭＩＤＩ再生装置１０は、携帯電話機や携帯端末等に組み込まれ、全体制御を行うホストＣＰＵ１から与えられるＭＩＤＩ形式の楽曲データＭＤＴをアナログの楽音信号ＭＵＳに変換するものである。
【００１６】
ＭＩＤＩ再生装置１０は、ＦＩＦＯバッファ１１、レジスタ１２、システムコントローラ１３、ＭＩＤＩデータバッファ１４、ＭＩＤＩシーケンサ１５、及びシンセサイザ１６を備えている。
【００１７】
ＦＩＦＯバッファ１１は、ホストＣＰＵ１から与えられる楽曲データＭＤＴを順番に書き込み、読み出し要求があったときには、書き込まれている古い楽曲データＭＤＴから順番に読み出して出力するように構成されたメモリである。レジスタ１２は、ホストＣＰＵ１から与えられる演奏開始、再生停止、ポーズ、音量調整等のコマンドＣＭＤをシステムコントローラ１３に渡し、システムコントローラ１３側の状態をステータスＳＴＡとしてホストＣＰＵ１に渡すためのバッファである。システムコントローラ１３は、ファームウエアの下で動作するプロセッサで構成され、ホストＣＰＵ１からレジスタ１２を介して与えられる各種のコマンドＣＭＤに従ってＭＩＤＩデータバッファ１４やＭＩＤＩシーケンサ１５を制御し、その状態に応じてステータス信号ＳＴＡを出力するものである。
【００１８】
ＭＩＤＩデータバッファ１４は、システムコントローラ１３からの制御に従って、ＦＩＦＯバッファ１１から楽曲データＭＤＴを読み出し、ＭＩＤＩメッセージと次のメッセージのデルタタイム単位に前処理を行った後、バッファリングを行うものである。
【００１９】
ＭＩＤＩシーケンサ１５は、システムコントローラ１３からの指示に従って、ＭＩＤＩデータバッファ１４から前処理された楽曲データＭＤＴを読み出し、その楽曲データを解析してシンセサイザ１６に対して楽音信号の再生を制御するものである。シンセサイザ１６は、ＭＩＤＩシーケンサからの制御に従って、アナログの楽音信号ＭＵＳを出力するものである。なお、図示していないが、シンセサイザ１６から出力される楽音信号ＭＵＳは増幅器で増幅され、スピーカ等から楽音として出力されるようになっている。
【００２０】
図２は、図１の動作を示すフローチャートである。この図２では、図１中のシステムコントローラ１３のファームウエアによる制御を中心にして、図１の動作を示している。以下、この図２を参照しつつ、図１の動作を説明する。
【００２１】
システムコントローラ１３では、ホストＣＰＵ１からレジスタ１２を介して演奏開始コマンドが与えられると、ＭＩＤＩ演奏を開始する。
【００２２】
ステップＳ１において、ＭＩＤＩデータバッファ１４とＭＩＤＩシーケンサ１５の初期化を行い、レジスタ１２に演奏開始ステータスを出力する。その後、ステップＳ２〜Ｓ７のループ処理を行う。
【００２３】
ステップＳ３において、レジスタ１２にコマンドＣＭＤが入力されているか否かを調べ、入力されていればそのコマンドＣＭＤに従って所定の処理を行い、内部の状態に応じてレジスタ１２にステータスＳＴＡを出力する。
【００２４】
ステップＳ４において、楽曲データＭＤＴの読み込み処理を行う。演奏開始直後の場合は、ＭＩＤＩヘッダと最初のＭＩＤＩメッセージのデルタタイムをＦＩＦＯバッファ１１からＭＩＤＩデータバッファ１４に読み出す。演奏途中では、ＭＩＤＩメッセージと次のＭＩＤＩメッセージのデルタタイムをＦＩＦＯバッファ１１からＭＩＤＩデータバッファ１４に読み出す。
【００２５】
ステップＳ５において、楽曲データＭＤＴの読み込み処理が成功したか否かを判定し、成功の場合はステップＳ６へ進む。読み出し途中でＦＩＦＯバッファ１１が空になった場合など、楽曲データの読み込みが正常に行われなかった場合は、ステップＳ７へ進む。
【００２６】
ステップＳ６において、ＭＩＤＩシーケンス処理を行う。ここで、ＭＩＤＩデータバッファ１４内に読み出された楽曲データＭＤＴは、ＭＩＤＩシーケンサ１５によって処理される。システムコントローラ１３がＦＩＦＯバッファ１１からＭＩＤＩメッセージと次のメッセージ処理までの時間であるデルタタイムをＭＩＤＩデータバッファ１４に転送することで、ＭＩＤＩシーケンサ１５はシーケンサ処理単位での楽曲データＭＤＴの読み込みが可能になり、例えば、メッセージの最終バイトの読み出し待ちなどでシーケンサ処理が止まることを回避できる。
【００２７】
ステップＳ７において、演奏が継続している場合にはステップＳ２へ戻り、レジスタ処理（ステップＳ３）、楽曲データ読み込み（ステップＳ４）、読み込み状態の判定（ステップＳ５）、及びＭＩＤＩシーケンス処理（ステップＳ６）が繰り返される。ＭＩＤＩシーケンサ１５によって楽曲データＭＤＴの終了を検出するか、またはステップＳ３のレジスタ処理で再生停止コマンドが検出されると、ＭＩＤＩ演奏は終了する。
【００２８】
以上のように、このＭＩＤＩ再生装置は、楽曲データＭＤＴが入力されたデータを内部のファームウエアでＭＩＤＩデータバッファ１４を介して、ＭＩＤＩメッセージと次のデルタタイムの単位でＭＩＤＩシーケンサ１５に送る処理をしている。これにより、ホストＣＰＵ１からＭＩＤＩ再生装置への楽曲データＭＤＴの転送が滞っても、このＭＩＤＩ再生装置内でのコマンド処理を止めることなく楽曲を再生することが可能になるという利点がある。
【００２９】
なお、本発明は、上記実施例に限定されず、種々の変形が可能である。この変形例としては、例えば、次のようなものがある。
（１）  携帯電話機や携帯端末に搭載された音源ＬＳＩ等のＭＩＤＩ音源機器に本実施例を適用することにより、画像処理や他のアプリケーション処理などが同時に行われるようなホストＣＰＵによって、音源ＬＳＩをコントロールする際に、音源ＬＳＩへのデータ転送が滞っても、ＬＳＩでの内部処理端子を工夫しバッファを置くことにより、正確な時間でＭＩＤＩを演奏することができる。一時的にデータ転送が滞ってＦＩＦＯバッファが空になった場合でも、音源内部でのシーケンス処理の待ち状態を作らず、音源へのコマンド処理（再生停止、再開、音量調整など）を遅延無く処理することができる。
（２）  ＬＳＩ（システムコントローラ１３）のファームウエアだけでなく、アプリケーションプロセッサ上で動作するソフトシンセサイザでも、本実施例と同様の処理を行えば、ＣＰＵの負荷が増大した場合でも音源へのコマンド処理に遅延を生じない。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施例を示すＭＩＤＩ再生装置の構成図である。
【図２】図１の動作を示すフローチャートである。
【符号の説明】
【００３１】
１    ホストＣＰＵ
１０    ＭＩＤＩ再生装置
１１    ＦＩＦＯバッファ
１２    レジスタ
１３    システムコントローラ
１４    ＭＩＤＩデータバッファ
１５    ＭＩＤＩシーケンサ
１６    シンセサイザ
【図１】
2007079185.tif 000003
【図２】
2007079185.tif 000004