(57)【特許請求の範囲】
【請求項１】
データを無線送信する送信手段であって前記無線送信に係る通信周期毎にデータの送信を行うものと、
ＭＩＤＩ形式のデータを生成するＭＩＤＩデータ生成手段と、
該手段が生成したデータを生成順に送信バッファに記録する記録手段と、
前記送信バッファに記録されているデータを１バイト毎にパケット化し、前記送信手段における無線送信に係る通信周期毎に前記送信手段より無線送信する送信制御手段とを設けたことを特徴とするＭＩＤＩデータ送信装置。
【請求項２】
請求項１記載のＭＩＤＩデータ送信装置であって、
発音状態の現状を表わすチェックデータを作成するチェックデータ作成手段と、
前記送信バッファに前記チェックデータを記録できるだけの空き容量があるか否か判定する判定手段と、
該手段が空き容量があると判定した場合に前記チェックデータを前記送信バッファに記録する第２の記録手段とを設けたことを特徴とするＭＩＤＩデータ送信装置。
【請求項３】
データを無線送信する送信手段であって前記無線送信に係る通信周期毎にデータの送信を行うものを有するコンピュータを、
ＭＩＤＩ形式のデータを生成するＭＩＤＩデータ生成手段と、
該手段が生成したデータを生成順に送信バッファに記録する記録手段と、
前記送信バッファに記録されているデータを１バイト毎にパケット化し、前記送信手段における無線送信に係る通信周期毎に前記送信手段より無線送信手段により無線送信する送信制御手段として機能させるためのプログラム。
【請求項４】
請求項３記載のプログラムであって、
前記コンピュータを、
発音状態の現状を表わすチェックデータを作成するチェックデータ作成手段と、
前記送信バッファに前記チェックデータを記録できるだけの空き容量があるか否か判定する判定手段と、
該手段が空き容量があると判定した場合に前記チェックデータを前記送信バッファに記録する第２の記録手段として機能させるためのプログラムをさらに含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＭＩＤＩ（Musical Instruments Digital Interface：登録商標）形式のデータを他の装置に無線送信するＭＩＤＩデータ送信装置及び、コンピュータをこのようなＭＩＤＩデータ送信装置として機能させるためのプログラムに関する。
【背景技術】
【０００２】
従来から、演奏操作等に従ってＭＩＤＩ形式のデータ（以下「ＭＩＤＩデータ」という）を生成する装置と、そのＭＩＤＩデータに基づく発音を行う装置との間で、有線又は無線の通信によりＭＩＤＩデータを送受信できるようにし、ＭＩＤＩデータの生成と発音とを別々の装置に行わせるようにすることが行われている。
このような技術としては、例えば特許文献１に、ＭＩＤＩデータを生成するキーボードに送受信装置を接続し、１台のキーボードの演奏操作に応じて生成したＭＩＤＩデータをその送受信装置によって無線送信させ、送信先装置において、受信したＭＩＤＩデータに基づく発音を行わせる技術が記載されている。
また、この場合において、送受信装置が、キーボードから渡されるＭＩＤＩデータを伝送データ一時記憶部に記憶しておき、これを書き込み順に読み出して送信を行うことも記載されている。
【特許文献１】特開平７−２６１７５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、送信先の装置に対し、送信したＭＩＤＩデータに基づく発音を行わせることを考える場合、ＭＩＤＩデータの送受信には高いリアルタイム性が要求される。送信するＭＩＤＩデータが演奏操作に応じて生成したＭＩＤＩデータである場合には、特にこの要求が強い。
しかしながら、上記の特許文献１に記載のものも含め、従来の方式では、リアルタイム性が十分でないという問題があった。
この発明は、このような問題を解決し、ＭＩＤＩデータの無線送信を行う場合において、高いリアルタイム性を得られるようにすることを目的とする。
【課題を解決するための手段】
【０００４】
上記の目的を達成するため、この発明は、データを無線送信する送信手段であって上記無線送信に係る通信周期毎にデータの送信を行うものと、ＭＩＤＩ形式のデータを生成するＭＩＤＩデータ生成手段と、その手段が生成したデータを生成順に送信バッファに記録する記録手段と、上記送信バッファに記録されているデータを１バイト毎にパケット化し、上記送信手段における無線送信に係る通信周期毎に上記送信手段より無線送信する送信制御手段とを設けたＭＩＤＩデータ送信装置を提供する。
このようなＭＩＤＩデータ送信装置において、発音状態の現状を表わすチェックデータを作成するチェックデータ作成手段と、上記送信バッファに上記チェックデータを記録できるだけの空き容量があるか否か判定する判定手段と、その手段が空き容量があると判定した場合に上記チェックデータを上記送信バッファに記録する第２の記録手段とを設けるとよい。
【０００５】
また、この発明のプログラムは、データを無線送信する送信手段であって上記無線送信に係る通信周期毎にデータの送信を行うものを有するコンピュータを、ＭＩＤＩ形式のデータを生成するＭＩＤＩデータ生成手段と、その手段が生成したデータを生成順に送信バッファに記録する記録手段と、上記送信バッファに記録されているデータを１バイト毎にパケット化し、上記送信手段における無線送信に係る通信周期毎に上記送信手段より無線送信手段により無線送信する送信制御手段として機能させるためのプログラムである。
このようなプログラムにおいて、上記コンピュータを、発音状態の現状を表わすチェックデータを作成するチェックデータ作成手段と、上記送信バッファに上記チェックデータを記録できるだけの空き容量があるか否か判定する判定手段と、その手段が空き容量があると判定した場合に上記チェックデータを上記送信バッファに記録する第２の記録手段として機能させるためのプログラムをさらに含めるとよい。
【発明の効果】
【０００６】
以上のようなこの発明のＭＩＤＩデータ送信装置によれば、ＭＩＤＩデータの無線送信を行う場合において、高いリアルタイム性を得られるようにすることができる。
また、この発明のプログラムによれば、コンピュータを上記の制御装置として機能させてその特徴を実現し、同様な効果を得ることができる。
【発明を実施するための最良の形態】
【０００７】
以下、この発明を実施するための最良の形態を図面に基づいて具体的に説明する。
まず、図１に、この発明のＭＩＤＩデータ送信装置の実施形態と、そのＭＩＤＩデータ送信装置から送信されるＭＩＤＩデータを受信して処理するＭＩＤＩデータ処理装置とを備えた通信システムの構成例を示す。
なお、より具体的な例としては、ＭＩＤＩデータ送信装置１０はシンセサイザやキーボート等の電子楽器、ＭＩＤＩデータ処理装置２０はその電子楽器の奏者が座る椅子に音源とスピーカの機能を設けた装置等として構成することができる。電子楽器と椅子は、通常近接して配置されるため、このような構成とすると、ＭＩＤＩデータ送信装置１０とＭＩＤＩデータ処理装置２０の間の通信障害を避けることが容易であり、この点で好ましいと言えるが、この構成に限られないことは、もちろんである。
【０００８】
そして、図１に示すように、ＭＩＤＩデータ送信装置１０は、ＣＰＵ１１，ＲＯＭ１２，ＲＡＭ１３，検出回路１４，無線通信部１５を備え、これらがシステムバス１７によって接続されている。
そして、ＣＰＵ１１は、このＭＩＤＩデータ送信装置１０の動作を統括制御する制御手段であり、ＲＯＭ１２に記憶された所要のプログラムを実行することにより、検出回路１４による操作子１６の操作内容検出、その内容に従ったＭＩＤＩデータの生成、無線通信部１５におけるＭＩＤＩデータの送信等の動作を制御するための処理を行うことができる。
【０００９】
ＲＯＭ１２は、ＣＰＵ１１が実行する制御プログラム等を記憶する不揮発性記憶手段である。ＲＯＭ１２を、フラッシュメモリのような書き換え可能な記憶手段により構成し、制御プログラムをアップデートできるようにしてもよい。
ＲＡＭ１３は、一時的に記憶すべきデータを記憶したり、ＣＰＵ１１のワークメモリとして使用したりする記憶手段である。
【００１０】
検出回路１４は、操作子１６により受け付けた操作内容を検出し、ＣＰＵ１１にその内容を通知する機能を有する。そして、操作子１６は、ＭＩＤＩデータ送信装置１０に対する操作を受け付けるためのものであり、モード設定等を行うためのキーやボタン等の他、演奏操作を行うための鍵盤やフットペダル等も含む。電子楽器の種類によっては、演奏操作子が弦、パッド、マウスピース等であってもよい。
無線通信部１５は、後述する送信バッファに記録されているデータを外部装置に対して無線送信する機能を有する。ハードウェアとしては、発振器、変調器、フィルタ、アンプ、アンテナ等を有する公知の電波による無線通信手段を用いることができるが、これに限られることはない。また、無線信号を受信する機能は必須ではない。
【００１１】
以上のようなＭＩＤＩデータ送信装置１０は、操作子１６、特にその中の演奏操作子により受け付けた操作内容に従って、ノートオンやノートオフを始めとする演奏内容に係るＭＩＤＩデータを生成し、外部装置に無線で送信することができる。
この場合において、ＭＩＤＩデータに基づく発音を行う装置（ここではＭＩＤＩデータ処理装置２０）の側で音色等の必要な設定が可能であれば、ＭＩＤＩデータ送信装置１０から送信するＭＩＤＩデータは、ノートオンとノートオフ、あるいは楽器の種類によってはピッチベンド等を含め、演奏内容に関するＭＩＤＩデータのみでよい。これに限られることはないが、このようにＭＩＤＩデータ送信装置１０が送信するデータを限定しておけば、ＭＩＤＩデータ処理装置２０における処理を簡略化することができる。
また、ＭＩＤＩデータ送信装置１０には、音源部やサウンドシステムを設けていないので、必要な構成要素を最低限に抑え、デザインの自由度を高めることができる。ただ、ＭＩＤＩデータ送信装置１０に音源部やサウンドシステムを設けることは妨げられない。
【００１２】
一方、ＭＩＤＩデータ処理装置２０は、ＣＰＵ２１，ＲＯＭ２２，ＲＡＭ２３，無線通信部２４，表示回路２５，音源部２６を備え、これらがシステムバス２９によって接続されている。
そして、ＣＰＵ２１は、このＭＩＤＩデータ処理装置２０の動作を統括制御する制御手段であり、ＲＯＭ２２に記憶された所要のプログラムを実行することにより、表示回路２５による表示部２７の表示制御、音源部２６によるＭＩＤＩデータに基づく波形データの生成及びサウンドシステム２８への出力、無線通信部２４におけるＭＩＤＩデータの受信等の動作を制御するための処理を行うことができる。
【００１３】
ＲＯＭ２２及びＲＡＭ２３の機能は、上述のＲＯＭ１２及びＲＡＭ１３と同様なものである。
無線通信部２４は、外部装置からの無線信号を受信し、この信号から送信されてきたデジタルデータを取り出して後述する受信バッファに記録する機能を有する。ハードウェアとしては、発振器、コンパレータ、フィルタ、アンプ、アンテナ等を有する公知の電波による無線通信手段を用いることができるが、これに限られることはない。また、無線信号を送信する機能は必須ではない。
【００１４】
表示回路２５は、ＣＰＵ２１からの指示に従って表示部２７における表示を制御する回路である。また、表示部２７は、液晶ディスプレイ（ＬＣＤ）や発光ダイオード（ＬＥＤ）ランプ等によって構成され、ＭＩＤＩデータ処理装置２０の動作状態や設定内容等を表示するための表示手段である。
音源部２６は、無線通信部２４で受信したＭＩＤＩデータを基に、複数の発音チャンネルでデジタル音響信号である波形データを生成する音源手段である。また、生成した波形データを、スピーカ等の発音手段によるサウンドシステム２８に供給し、その波形データに基づく発音を行わせる機能も有する。さらに、生成した波形データに対してミキシングやイコライジング等の処理を行う手段を設けてもよい。
以上のようなＭＩＤＩデータ処理装置２０によれば、通信に使用する周波数帯域等の通信に係る設定を適切に行っておけば、ＭＩＤＩデータ送信装置１０が送信したＭＩＤＩデータを受信し、そのＭＩＤＩデータに基づく発音を行うことができる。
【００１５】
ところで、図１に示したＭＩＤＩデータ送信装置１０は、ＭＩＤＩデータ処理装置２０へのＭＩＤＩデータの送信に高いリアルタイム性を得られるよう、生成したＭＩＤＩデータを１バイト毎にパケット化してＭＩＤＩデータ処理装置２０に送信するようにしている。この点がこの実施形態の特徴である。そこで、次に、ＭＩＤＩデータ送信装置１０（送信側）及びＭＩＤＩデータ処理装置２０（受信側）においてＣＰＵ１１，ＣＰＵ２１がそれぞれ実行する処理について、この点に関連する部分を中心に説明する。
【００１６】
まず、図２に、送信側のＭＩＤＩデータ記録処理のフローチャートを示す。
ＭＩＤＩデータ送信装置１０のＣＰＵ１１は、ＭＩＤＩデータの生成のトリガとなる操作子１６の操作を検出すると、図２のフローチャートに示す処理を開始する。
そして、まず操作子１６の操作内容に応じたＭＩＤＩデータを生成し（Ｓ１１）、そのＭＩＤＩデータを送信バッファに追加記録する（Ｓ１２）。この追加記録とは、以前に記録したものが残っていればその後に記録すること、すなわち、生成順に記録することをいう。この記録時には、ＭＩＤＩデータの発生タイミングを記録する必要はない。また、送信バッファは、無線通信部１５により送信すべきデータを一時的に蓄積するためのバッファであり、ＲＡＭ１３、あるいは無線通信部１５に備えるＲＡＭ等の、書き換え可能な記憶手段に設けることができる。そして、コスト低減のため、ここでは容量を６４バイトとしている。
以上のステップＳ１１及びＳ１２の処理において、ＣＰＵ１１がそれぞれＭＩＤＩデータ生成手段及び記録手段として機能する。そして、ここまでの処理により、操作子１６の操作内容に応じたＭＩＤＩデータを無線通信部１５による送信の対象にすることができる。また、ここまでの処理は、ＭＩＤＩデータ送信装置１０の内部のバスを介したデータ転送であり、データの遅延や損失はほとんど問題にならないため、データの転送形式には特にこだわらなくてよい。
【００１７】
また、ステップＳ１２の後は、生成したＭＩＤＩデータがオンデータであれば、チェックデータ中の、生成したＭＩＤＩデータと対応するノートナンバのフラグを「１」にセットして処理を終了する（Ｓ１３，Ｓ１４）。一方、生成したＭＩＤＩデータがオフデータであれば、チェックデータ中の、生成したＭＩＤＩデータと対応するノートナンバのフラグを「０」にセットして処理を終了する（Ｓ１５，Ｓ１６）。どちらでもなければ、そのまま処理を終了する。以上のステップＳ１３乃至Ｓ１６の処理において、ＣＰＵ１１がチェックデータ作成手段として機能する。
【００１８】
なお、オンデータとは、何らかの操作のオンを示すデータのことであり、ここでは、ノートオンデータ及び、コントロールチェンジデータのうち、ホールド（Ｈｏｌｄ）、ポルタメント（Ｐｏｌ）、ソステヌート（Ｓｏｓ）、ソフトペダル（Ｓｏｆ）のオンを示すデータとしている。また、オフデータは、逆に何らかの操作のオフを示すデータのことであり、ここでは、ノートオフデータ及び、コントロールチェンジデータのうち、上記のホールド等のオフを示すデータとしている。このどちらにも含まれないデータとしては、例えば音色変更のためのコントロールチェンジデータが挙げられる。
【００１９】
また、図３に、上記のチェックデータの例を示す。
チェックデータは、操作子１６の操作に応じた発音や効果の現状を示すデータであり、ここでは、この図に示すように、ノートナンバ毎にチェックデータの１ビットずつを順に割り当てて、そのノートナンバが発音中又は操作中か、そうでないかを、２値のフラグで示すデータとしている。またここでは、ＭＩＤＩデータ送信装置１０に８８鍵の鍵盤を設けており、これら各鍵に対応する０〜８７のノートナンバと、上記のホールド等のオン／オフを示す８８〜９１のノートナンバを用意している。また、１バイト（８ビット）単位でのデータ送信に好適なよう、９２〜９５までのダミーのノートナンバを用意し、データビット長が８の倍数になるようにしている。
【００２０】
そして、図２のステップＳ１４及びＳ１６の処理で、ステップＳ１１で生成したＭＩＤＩデータのうち、ノートオン／オフデータに含まれるノートナンバや、コントロールチェンジデータに含まれるコントロールチェンジナンバを参照して、対応するフラグのオン／オフを設定して、チェックデータを、処理時点の状態に合った内容に随時更新することができる。ただし、このようなチェックデータを用意することは必須ではないし、項目も、図３に示したものに限られない。音色等、必ずしも１ビットで表わせないデータをチェックデータに含めることも考えられる。しかし、このような場合でもチェックデータのビット長は８の倍数になるようにする。
【００２１】
次に、図４に、送信側のチェックデータ記録処理のフローチャートを示す。
ＭＩＤＩデータ送信装置１０のＣＰＵ１１は、適当な周期、例えば１秒毎に、図４のフローチャートに示す処理を開始する。そして、送信バッファに、チェックデータを記録できるだけの空き容量があるか否か確認し（Ｓ２１）、あれば、その時点のチェックデータを含むＭＩＤＩエクスクルーシブデータを送信バッファに追加記録して（Ｓ２２）、処理を終了する。なければ、記録は行わずに処理を終了する。
以上の処理において、ステップＳ２１及びＳ２２で、ＣＰＵ１１はそれぞれ判定手段及び第２の記録手段として機能する。そして、以上の処理により、定期的にチェックデータを無線通信部１５による送信の対象にすることができる。ここでの処理も、内部のバスを介したデータ転送であり、図２の場合と同様、データの転送形式には特にこだわらなくてよい。
【００２２】
なお、チェックデータ自体はＭＩＤＩデータではないが、ＭＩＤＩエクスクルーシブデータのステータスバイトとエンドオブエクスクルーシブの間にはどのようなデータでも記載できるので、ここに記載することにより、ＭＩＤＩデータとして送信できる。ここでは、受信側の処理を簡略化できるため、このようにしているが、チェックデータを他の形式で送信することも可能である。また、チェックデータ記録処理の起動タイミングは、データの送信に渋滞が生じない程度であれば、任意でよい。
【００２３】
次に、図５に、送信側のデータ送信処理のフローチャートを示す。
ＭＩＤＩデータ送信装置１０のＣＰＵ１１は、無線通信部１５の無線通信に係る通信周期毎に、図５のフローチャートに示す処理を開始する。この無線周期の間隔は、１回のパケット送信に要する時間と同じかそれよりやや長い程度にするとよく、例えば０．１ミリ秒とすることができる。
そして、この処理においては、送信バッファに未送信のデータがあれば（Ｓ３１）、ステップＳ３２以下に進み、まず送信バッファに記録されているデータのうち最も古い１バイト分のデータを読み出し、送信バッファから削除する（Ｓ３２）。送信バッファをＦＩＦＯ（First In First Out）バッファとしておけば、単に送信バッファから１バイトのデータを読み出すだけでよい。
【００２４】
その後、読み出した１バイトのデータにヘッダとフッタを付してパケットを生成する（Ｓ３３）。ヘッダには、パケットの先頭を表わすデータと送信相手を特定するためのデータを含め、フッタには、パケットの末尾を表わすデータとデータのエラーを検出するためのＣＲＣ（Cyclic Redundancy Check）データ等のデータを含めるとよい。そして、作成したパケットを無線通信部１５に渡して無線送信させて（Ｓ３４）、処理を終了する。
なお、このパケットの送信に使用する手法は、適宜公知のものを採用できる。また、双方向通信を可能とすることは、必須ではなく、むしろ、１方向通信でも高速にパケットを転送可能な手法が好ましい。
【００２５】
また、ステップＳ３１で未送信のデータがなければ、そのまま処理を終了する。
以上の処理により、送信バッファに記録されているデータを、１バイト毎にパケット化して無線送信することができる。そして、以上の処理においては、ＣＰＵ１１及び無線通信部１５が送信手段として機能する。また、この処理は、ＣＰＵ１１に代えて無線通信部１５に設けた通信用のＩＣチップに行わせるようにしてもよい。
【００２６】
次に、図６に、受信側のデータ受信処理のフローチャートを示す
ＭＩＤＩデータ処理装置２０は、無線通信部２４に備える受信用チップにより、起動中は常に図６の処理を行い、データの受信を監視するようにしている。
そして、この処理においては、自分宛のパケットが送信されてくるまでは待機し（Ｓ４１）、送信されてくるとそのパケットを受信する（Ｓ４２）と共に、受信したパケット中の、ヘッダ及びフッタ以外の１バイトのデータを受信バッファに追加記録して（Ｓ４３）、ステップＳ４１に戻って処理を繰り返す。
【００２７】
以上の処理により、ＭＩＤＩデータ処理装置２０は、ＭＩＤＩデータ送信装置１０から送信されてくるＭＩＤＩデータを、受信順に受信バッファに記録することができる。
なお、パケットが自分宛か否かは、そのヘッダに含まれる送信相手の情報により判断することができる。また、受信バッファは、無線通信部２４により受信したデータを一時的に蓄積するためのバッファであり、ＲＡＭ２３あるいは無線通信部２４に備えるＲＡＭ等の書き換え可能な記憶手段に設けることができる。容量は、受信したデータを処理しきれずにオーバーフローする事態が起こらない程度とすればよい。
【００２８】
次に、図７に、受信側のＭＩＤＩ再生処理のフローチャートを示す。
ＭＩＤＩデータ処理装置２０において、ＣＰＵ２１は、ＭＩＤＩクロックのタイミング毎に図７に示す処理を開始し、それまでに受信され受信バッファに蓄積されたＭＩＤＩデータ応じた発音等の処理を行うようにしている。ＭＩＤＩクロックの周期は、例えばテンポが１２０のとき、５ミリ秒である。
【００２９】
そして、この処理においては、受信バッファに未処理のデータが記録されていなければそのまま処理を終了するが（Ｓ５１）、未処理のデータが記録されていた場合、未処理データの各バイトの最上位ビットの値を参照し、ステータスバイトとデータバイトの整合性を確認する（Ｓ５２）。ここでは、ＭＩＤＩデータ送信装置１０が送信してくるデータはＭＩＤＩデータのみであるので、この確認も、受信バッファに記録されるデータはＭＩＤＩデータであるという前提で行ってよい。また、１イベント分のデータについて行えばよい。
【００３０】
そして、問題なければ（Ｓ５３）、受信バッファから、ＭＩＤＩの規格においてステータスバイトとデータバイトから構成される１イベント分のデータ（複数バイト分のデータ）を読み出し、受信バッファからそのデータを削除する（Ｓ５４）。そして、読み出したデータがＭＩＤＩエクスクルーシブデータ（ここでのＭＩＤＩエクスクルーシブデータとはチェックデータを表わしている）でなければ（Ｓ５５）、読み出したＭＩＤＩイベントに基づいて音源部２６に発音を制御させて（Ｓ５６）、ステップＳ５１に戻って処理を繰り返す。なお、発音制御の内容は、ＭＩＤＩイベントがノートオンイベントであれば発音開始、ノートオフイベントであれば発音停止、コントロールチェンジイベントであればその内容に応じた発音処理のパラメータの変更等である。
【００３１】
一方、読み出したデータがＭＩＤＩエクスクルーシブデータであれば（Ｓ５５）、そのデータ長が適切か否か判断する（Ｓ５７）。適切なデータ長は、ＭＩＤＩデータの送信元となるＭＩＤＩデータ送信装置１０の機種等に対応させて、予め定めたり、ユーザが設定できるようにしたりしておけばよい。
そして、データ長が適切であれば、そのデータからチェックデータを取り出し、音源部２６における発音の状態をそのチェックデータの内容に合わせ（Ｓ５８）、ステップＳ５１に戻って処理を繰り返す。この処理には、音源部２６において発音中の音のノートナンバが、発音のＯＮ／ＯＦＦを示すフラグが「１」のノートナンバと食い違っている場合に発音のＯＮ／ＯＦＦを変更したり、音源部２６に設定されている発音処理のパラメータの値がチェックデータが示す値と食い違っている場合にパラメータの値を変更する処理等を含む。
【００３２】
ステップＳ５７でデータ長が適切でなかった場合には、チェックデータの一部が通信中にロストしている可能性があるので、音源部２６の状態には反映させず、そのままステップＳ５１に戻って処理を繰り返す。ＭＩＤＩエクスクルーシブデータの場合には、形式の制約がゆるく、途中が抜けても整合性は問題ないと認識されることもあるので、このような処理を設けたものである。
【００３３】
また、ステップＳ５３で整合性が確認できなかった場合には、エラー処理を行った後（Ｓ５９）、ステップＳ５１に戻って処理を繰り返す。このエラー処理は、ＭＩＤＩの標準機能として用意されているものでよく、受信バッファから不整合が生じたデータを削除する機能を含む。また、受信バッファの末尾でＭＩＤＩメッセージの受信が完了していないと思われる場合には、受信バッファのデータをそのまま残して図７に示す処理を終了するようにすることも考えられる。
【００３４】
以上のような処理を行うことにより、ＭＩＤＩデータ処理装置２０は、ＭＩＤＩクロックのタイミング毎に、それまでに受信して受信バッファに蓄積されているＭＩＤＩデータに従った発音を行うことができる。また、受信したチェックデータに従い、音源部２６の発音の状態を修正することができる。
【００３５】
また、ＭＩＤＩデータ送信装置１０及びＭＩＤＩデータ処理装置２０においては、それぞれが図２乃至図７を用いて説明したような各処理を実行することにより、ＭＩＤＩデータ送信装置１０が操作子１６により受け付けた操作内容に従った発音を、ＭＩＤＩデータ処理装置の音源部２６及びサウンドシステム２８に行わせることができる。
【００３６】
この場合において、これら装置間の通信周期や、ＭＩＤＩデータ処理装置２０におけるＭＩＤＩデータ処理の周期は、ＭＩＤＩクロックの周期に対して十分短くすることができる。従って、ＣＰＵ１１がＭＩＤＩクロックの同一周期内に生成し、送信バッファに記録したＭＩＤＩデータは、概ね次のクロックタイミングまでにＭＩＤＩデータ処理装置２０に送信され、次のクロックタイミングで音源部２６による発音処理に供される。従って、ＭＩＤＩデータにタイミングデータを付してタイミング管理を行わなくても、結果的に適切なタイミング管理が行われるようにすることができる。また、必要な処理ステップ数を低減できるので、リアルタイム性実現の観点から好ましいと言える。
【００３７】
また、データの送信は、常にデータを１バイト毎にパケット化して行うようにしているので、データ長の異なるＭＩＤＩメッセージを送信する場合でも、パケットの生成や解析の際に、データ長の管理を行う必要がなく、処理を簡略化して高速化を図ることができる。さらに、処理を定型化し、送信するデータの内容に応じて所要時間が変わり、発音タイミングがずれてしまうような事態を防止できる。さらにまた、ＭＩＤＩデータは必ず１バイトの倍数のデータ長であるので、パケットのデータ部分に空きが生じることもなく、効率的な転送が可能である。そして、これらのことにより、ＭＩＤＩデータ送信装置１０とＭＩＤＩデータ処理装置２０との間の通信について、高いリアルタイム性を実現することができる。
【００３８】
さらに、１バイト毎にパケット化を行うようにすれば、１つのパケットに複数のＭＩＤＩデータが含まれることがないため、１回のパケットロストで複数のＭＩＤＩデータが失われてしまうことを防止でき、このことにより、音源部２６による発音に重大な欠陥が生じることを防止できる。
【００３９】
また、定期的にＭＩＤＩデータ送信装置１０からＭＩＤＩデータ処理装置２０にチェックデータを送信し、そのチェックデータに基づいて音源部２６の発音の状態を修正させるようにしているので、通信異常等により一部のパケットがロストし、そのパケットを含むＭＩＤＩデータを発音に反映させられなかった場合でも、ＭＩＤＩデータ送信装置１０側での操作内容とＭＩＤＩデータ処理装置２０側での発音の食い違いを速やかに修正することができる。
またこの際、ＭＩＤＩデータ送信装置１０において、送信バッファにチェックデータを記録できるだけの空き容量がある場合のみ、これを送信バッファに記録するようにしているため、チェックデータの送信のためにＭＩＤＩデータの送信が滞るような事態を防止できる。
【００４０】
以上でこの実施形態の説明を終了するが、装置の構成や具体的な処理内容、データの形式等が上述の実施形態で説明したものに限られないことはもちろんである。
例えば、ＭＩＤＩデータ処理装置２０において、ステータスバイトとデータバイトの整合性の確認は、受信したパケットに含まれるデータを受信バッファに記憶させる前に行い、整合性に問題がある場合には、受信バッファにデータを記録しないようにしたり、既に記録してあるデータを削除したりするようにしてもよい。
また、ＭＩＤＩデータ処理装置２０にも操作子を設け、その操作子の操作に従ってＭＩＤＩデータを生成し、音源部２６に渡して音色やテンポ等を設定できるようにしてもよい。
【００４１】
また、ＭＩＤＩデータ送信装置１０から送信されてくるＭＩＤＩデータを受信するＭＩＤＩデータ処理装置２０を、複数設けてもよい。この場合各ＭＩＤＩデータ処理装置２０は基本的には同じ音を発音することになるが、ＭＩＤＩデータ処理装置２０側で設定が可能な項目については内容を変更することも可能であり、例えば装置毎に音色を変えることが考えられる。
さらに、ＭＩＤＩデータ送信装置１０が送信するＭＩＤＩデータが、操作子１６の操作に応じて生成するもの以外であってもよい。例えば、自動伴奏やアルペジオ、あるいは自動演奏といった機能により、ＣＰＵ１１が、予め用意されたプログラムに従って生成したり、予め用意されたデータを読み出して出力したりするものであってもよい。また、これらと、操作子１６の操作に応じて生成したものとの混合あるいは組み合わせであってもよい。
【００４２】
また、ＭＩＤＩデータ送信装置１０は、電子楽器以外にも、ＭＩＤＩデータを生成する機能を備えた電子音楽装置であればどのようなものにも適用可能である。例えば、ＭＩＤＩシーケンサやカラオケ装置等に適用可能であるし、適当なアプリケーションを備えたゲーム装置、携帯電話、ＰＣ等の装置にも適用することが考えられる。
また、ＭＩＤＩデータ処理装置２０についても、ＭＩＤＩデータを受信して処理可能な装置であればどのような装置にも適用可能である。例えば、スピーカに通信機能と音源機能を設けたような装置としてもよいし、発音機能も必須ではなく、受信したＭＩＤＩデータを単に記録するような装置でも良い。また、ＭＩＤＩデータ送信装置１０を、ＭＩＤＩデータ処理装置２０としても機能させられるように構成し、スイッチ等によりこれらの機能を切り替えることができるようにしてもよい。
また、これらの装置に備える無線通信手段も、電波を利用するものに限られず、例えば、赤外線等の光線を利用するものであってもよい。
また、これらの変形及び実施例の説明において述べた変形は、矛盾しない範囲で任意に組み合わせて適用可能である。
【００４３】
また、この発明のプログラムは、コンピュータにハードウェアを制御させて上述したようなＭＩＤＩデータ送信装置として機能させるためのプログラムであり、予めＲＯＭやＨＤＤ等に記憶させておくほか、ＣＤ−ＲＯＭあるいはフレキシブルディスク等の不揮発性記録媒体（メモリ）に記録して提供し、そのメモリからこのプログラムをＲＡＭに読み出させてＣＰＵに実行させたり、プログラムを記録した記録媒体を備える外部機器あるいはプログラムをＨＤＤ等の記憶手段に記憶した外部機器からダウンロードして実行させたりしても、同様の効果を得ることができる。
【産業上の利用可能性】
【００４４】
以上の説明から明らかなように、この発明のＭＩＤＩデータ送信装置又はプログラムによれば、ＭＩＤＩデータの無線送信を行う場合において、高いリアルタイム性を得られるようにすることができる。
従って、この発明を適用することにより、生成したＭＩＤＩデータに基づく処理を、送信先の装置において高い精度で行わせることができるようなＭＩＤＩデータ送信装置を実現することができる。
【図面の簡単な説明】
【００４５】
【図１】この発明のＭＩＤＩデータ送信装置の実施形態と、そのＭＩＤＩデータ送信装置から送信されるＭＩＤＩデータを受信して処理するＭＩＤＩデータ処理装置とを備えた通信システムの構成例を示すブロック図である。
【図２】図１に示した通信システムにおいて送信側で実行するＭＩＤＩデータ記録処理のフローチャートである。
【図３】図１に示した通信システムにおいて使用するチェックデータの例を示す図である。
【図４】図１に示した通信システムにおいて送信側で実行するチェックデータ記録処理のフローチャートである。
【図５】同じくデータ送信処理のフローチャートである。
【図６】図１に示した通信システムにおいて受信側で実行するデータ受信処理のフローチャートである。
【図７】同じくＭＩＤＩ再生処理のフローチャートである。
【符号の説明】
【００４６】
１０…ＭＩＤＩデータ送信装置、１１，２１…ＣＰＵ、１２，２２…ＲＯＭ、１３，２３…ＲＡＭ、１４…検出回路、１５，２４…無線通信部、１６…操作子、２０…ＭＩＤＩデータ処理装置、２５…表示回路、２６…音源部、２７…表示部、２８…サウンドシステム
【図１】
0004626429.tif 000002
【図２】
0004626429.tif 000003
【図３】
0004626429.tif 000004
【図４】
0004626429.tif 000005
【図５】
0004626429.tif 000006
【図６】
0004626429.tif 000007
【図７】
0004626429.tif 000008