(57)【要約】【課題】偶然に発生した見かけ上の正常な現象を排除するとともに、分割データの転送と次の分割データの転送との間で転送処理が中断した場合でも、受信の異常を検出できるようにする。【解決手段】電子楽器のＣＰＵ１は、ＲＯＭ４のプログラムに従って、所定の単位データ量ごとに分割された波形データを、ＭＩＤＩインターフェース６を介して各分割データごとに受信するとともに、送信側において算出された波形データ全体のチェックサムを受信して、ＲＡＭ５にストアし、受信した波形データ全体のチェックサムを算出する。その算出したチェックサムと受信したチェックサムとが一致した場合に、波形データのすべての分割データを有効と判定する。【選択図】        図１
2004205789.tif 000002
【特許請求の範囲】
【請求項１】
送信装置において所定の単位データ量ごとに分割した複数の分割データからなる第１の転送データおよび前記第１の転送データ全体の誤り検査情報を含む第２の転送データを送信し、受信装置において受信した前記第１の転送データ全体の誤り検査情報を算出して、算出した誤り検査情報と前記第２の転送データの誤り検査情報とを比較することにより前記第１の転送データのすべての分割データが有効であるか又は無効であるかを判定することを特徴とするデータ転送システム。
【請求項２】
所定の単位データ量ごとに分割された複数の分割データからなる第１の転送データを各分割データごとに受信するとともに、前記第１の転送データ全体の誤り検査情報を含む第２の転送データを受信するデータ受信手段と、
単位データ量の前記第１の転送データを記憶する少なくとも１個のブロックから構成された第１の記憶領域および各ブロックの受信データが有効であるか又は無効であるかを識別する識別情報を記憶する第２の記憶領域を含む記憶手段と、
前記データ受信手段が受信した前記第１の転送データの各分割データを前記第１の記憶領域の各ブロックに書き込むとともに、各ブロックに対応する識別情報を無効に設定するデータ書き込み手段と、
前記第１の記憶領域に記憶された前記第１の転送データ全体の誤り検査情報を算出し、算出した誤り検査情報と前記第２の転送データの誤り検査情報とが一致した場合には前記第２の記憶領域に記憶されているすべてのブロックの識別情報を有効に変更するデータチェック手段と、
を具備することを特徴とするデータ転送システムの受信装置。
【請求項３】
前記第１の転送データは、楽音信号を生成するための波形データであることを特徴とする請求項２記載のデータ転送システムの受信装置。
【請求項４】
前記第１の転送データは、楽音信号を生成するためのパラメータであることを特徴とする請求項２記載のデータ転送システムの受信装置。
【請求項５】
所定の単位データ量ごとに分割した複数の分割データからなる第１の転送データおよび前記第１の転送データ全体の誤り検査情報を含む第２の転送データを作成するデータ生成手段と、
各分割データごとの前記第１の転送データおよび前記第２の転送データを送信するデータ送信手段と、
を具備することを特徴とするデータ転送システムの送信装置。
【請求項６】
所定の単位データ量ごとに分割された複数の分割データからなる第１の転送データを各分割データごとに受信するとともに、前記第１の転送データ全体の誤り検査情報を含む第２の転送データを受信する第１のステップと、
所定の記憶手段に設けられた少なくとも１個のブロックからなる第１の記憶領域の各ブロックに前記第１のステップにおいて受信した前記第１の転送データの各分割データを書き込むとともに、書き込んだ各ブロックの受信データが有効であるか又は無効であるかを識別する前記記憶手段に設けられた第２の記憶領域の識別情報を無効に設定する第２のステップと、
前記第１の記憶領域に書き込まれた前記第１の転送データ全体の誤り検査情報を算出し、算出した誤り検査情報と前記第２の転送データの誤り検査情報とが一致した場合には前記第２の記憶領域に記憶されているすべてのブロックの識別情報を有効に変更する第３のステップと、
を実行することを特徴とするデータ転送システムのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送システム並びにその装置およびプログラムに関する。
【０００２】
【従来の技術】
通信回線を介してデータを転送するデータ転送システムの技術は広く知られている。例えば、シリアルインタフェースを介してパソコンから電子楽器などの装置に波形データを転送する提案がなされている。この提案によれば、装置内において、シリアルインタフェースは、ＣＰＵの指令により、パソコンから送信される曲の歌詞の波形データを受信して音声メモリに記憶させる（特許文献１参照）。
【０００３】
【特許文献１】
特開平１０−２４０２４４号公報（第１頁、図１）
【０００４】
【発明が解決しようとする課題】
上記提案に限らず、一般に、データ転送処理は断線や受信装置の電源オフなどの様々な理由で中断される場合がある。例えば、データ転送の最中に受信装置の電源がオフにされ、その結果、受信装置のメモリに不完全なデータが残る場合がある。この場合には、受信装置の電源がオンされた後に、メモリのフォーマットチェックを行なうことにより、内容の異常を検出できることもある。あるいは、転送データの受信エラーを検出するためのチェックサムを転送データ内に含め、メモリのチェックサムを計算して転送データのチェックサムと比較することにより、内容の異常を検出できることもある。
【０００５】
しかしながら、メモリのフォーマットが偶然に正常であったり、チェックサムが偶然に一致した場合には、異常を検出することができないという問題があった。
また、比較的大規模なデータを小サイズの単位データ量に分割し、その分割データごとに転送する場合には、分割データの転送と次の分割データの転送との間で転送処理が中断したときには、データ全体としての受信は完了していないにもかかわらず、個別の分割データの受信処理は正常に終了しているため、異常を検出できないという問題があった。
【０００６】
本発明は、偶然に発生した見かけ上の正常な現象を排除するとともに、分割データの転送と次の分割データの転送との間で転送処理が中断した場合でも、受信の異常を検出できるデータ転送システム並びにそのシステムにおける装置およびプログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
請求項１に記載のデータ転送システムは、送信装置(実施形態においては、図１０のサーバに相当する)において所定の単位データ量(実施形態においては、ＳＩＺＥ個のバイト数に相当する)ごとに分割した複数の分割データからなる第１の転送データ(実施形態においては、図３（Ａ）のＷＲＩＴＥＭＥＳＳＡＧＥに相当する)および第１の転送データ全体の誤り検査情報(実施形態においては、図３（Ｂ）のＣＨＥＣＫＡＬＬにストアされたチェックサムに相当する)を含む第２の転送データ(実施形態においては、図３（Ｂ）のＣＨＥＣＫＭＥＳＳＡＧＥに相当する)を送信し、受信装置(実施形態においては、図１の電子楽器に相当する)において受信した第１の転送データ全体の誤り検査情報を算出して、算出した誤り検査情報と第２の転送データの誤り検査情報とを比較することにより第１の転送データのすべての分割データが有効であるか又は無効であるかを判定する構成になっている。
【０００８】
この場合において、誤り検査情報はチェックサム（検査合計）に限らず、第１の転送データ内に挿入された連続する特定データでもよい。あるいは、巡回符号（ＣＲＣ）、ハミング符号、ＢＣＨ符号、Ｆｉｒｅ符号などのような誤り検査符号でもよい。すなわち、転送するデータの性質や伝送路の特性に応じて、第１の転送データ全体の誤り検査情報を送受信するようなシステムが望ましい。
【０００９】
請求項２に記載のデータ転送システムの受信装置は、所定の単位データ量ごとに分割された複数の分割データからなる第１の転送データを各分割データごとに受信するとともに、第１の転送データ全体の誤り検査情報を含む第２の転送データを受信するデータ受信手段(実施形態においては、図１のＣＰＵ１およびＭＩＤＩ  Ｉ／Ｆ６に相当する)と、単位データ量の第１の転送データを記憶する少なくとも１個のブロックから構成された第１の記憶領域および各ブロックの受信データが有効であるか又は無効であるかを識別する識別情報(実施形態においては、図２（Ｂ）のＢＬＯＣＫＦＬＡＧ[０]〜[Ｎ―１]に相当する)を記憶する第２の記憶領域を含む記憶手段(実施形態においては、図１のＲＡＭ５に相当する)と、データ受信手段が受信した第１の転送データの各分割データを第１の記憶領域の各ブロックに書き込むとともに、各ブロックに対応する識別情報を無効に設定するデータ書き込み手段(実施形態においては、図１のＣＰＵ１に相当する)と、第１の記憶領域に記憶された第１の転送データ全体の誤り検査情報を算出し、算出した誤り検査情報と第２の転送データの誤り検査情報とが一致した場合には第２の記憶領域に記憶されているすべてのブロックの識別情報を有効に変更するデータチェック手段(実施形態においては、図１のＣＰＵ１に相当する)とを具備する構成になっている。
【００１０】
この場合において、第１の転送データは、楽音信号を生成するための波形データであるように構成してもよい。
あるいは、第１の転送データは、楽音信号を生成するためのパラメータ、例えば、音色生成のパラメータ、音高制御のパラメータ、音量制御のパラメータであるように構成してもよい。
【００１１】
請求項５に記載のデータ転送システムの送信装置は、所定の単位データ量ごとに分割した複数の分割データからなる第１の転送データおよび第１の転送データ全体の誤り検査情報を含む第２の転送データを作成するデータ生成手段(実施形態においては、図１０のＣＰＵ２１に相当する)と、各分割データごとの第１の転送データおよび第２の転送データを送信するデータ送信手段(実施形態においては、図１０のＣＰＵ２１およびＭＩＤＩ  Ｉ／Ｆ２４に相当する)とを具備する構成になっている。
【００１２】
請求項６に記載のデータ転送システムのプログラム(実施形態においては、図１の電子楽器において受信データを処理するプログラムに相当する)は、所定の単位データ量ごとに分割された複数の分割データからなる第１の転送データを各分割データごとに受信するとともに、第１の転送データの誤り検査情報を含む第２の転送データを受信する第１のステップと、所定の記憶手段に設けられた少なくとも１個のブロックからなる第１の記憶領域の各ブロックに第１のステップにおいて受信した第１の転送データの各分割データを書き込むとともに、書き込んだ各ブロックの受信データが有効であるか又は無効であるかを識別する記憶手段に設けられた第２の記憶領域の識別情報を無効に設定する第２のステップと、第１の記憶領域に書き込まれた第１の転送データ全体の誤り検査情報を算出し、算出した誤り検査情報と第２の転送データの誤り検査情報とが一致した場合には第２の記憶領域に記憶されているすべてのブロックの識別情報を有効に変更する第３のステップとを実行する構成になっている。なお、第１のステップないし第３のステップは、実施形態においては、図４ないし図９に示したフローチャートの動作に相当する。
【００１３】
【発明の実施の形態】
以下、本発明によるの実施形態について、ＭＩＤＩデータを転送するデータ転送システムを例に採り図を参照して説明する。特にこの実施形態においては、ＭＩＤＩデータの中でも、ＩＤデータを登録したメーカ専用の指定されたＭＩＤＩ機器の製品（これを「デバイス」という）に対してのみ利用できるシステムエクスクルーシブメッセージを、送信装置から受信装置に転送するシステムについて説明する。この実施形態において、受信装置は電子楽器であり、送信装置はサーバである。
さらにこの場合のシステムエクスクルーシブメッセージは、楽音信号を生成するための波形データである。
【００１４】
図１は、実施形態におけるデータ転送システムにおける受信装置としての電子楽器の構成を示すブロック図である。この図において、ＣＰＵ１には、システムバスを介して、鍵盤２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、ＭＩＤＩ  Ｉ／Ｆ（インタフェース）６、表示部７、楽音生成部８が接続されている。ＣＰＵ１は、これら各部との間でコマンドおよびデータを授受して、この電子楽器全体を制御する。
【００１５】
鍵盤２は、演奏操作に応じて音高やベロシティなどの演奏データを入力する。スイッチ部３は、電源スイッチ、演奏モードやデータ受信モードなどのモードを設定するモードスイッチ、音色を設定する音色設定スイッチなどで構成されている。ＲＯＭ４には、ＣＰＵ１によって実行される種々のプログラムや初期化に必要なデフォルトデータなどがあらかじめ記憶されている。ＲＡＭ５は、ＣＰＵ１のワークエリアであり、種々のレジスタ、フラグ、ポインタのエリア、および、受信データを記憶する受信バッファなどのエリアが設けられている。ＭＩＤＩ  Ｉ／Ｆ６は、後述するサーバのような送信装置から送信される転送データを受信してこの電子楽器に取り込むためのインタフェースである。表示部７は、スイッチ部３から入力されるコマンドやデータを表示したり、転送データの受信状態などのように、電子楽器の状態を表示する。
楽音生成部８は、Ｄ／Ａ変換器９、アンプ部１０、スピーカ１１からなるサウンドシステムに接続され、ＣＰＵ１からの発音指示および波形データに応じて、楽音信号を生成してＤ／Ａ変換器９に供給する。Ｄ／Ａ変換器９によってディジタルからアナログに変換された楽音信号は、アンプ部１０で増幅されて、スピーカ１１から発音される。
【００１６】
図２は、図１のＲＡＭ５のメモリ構成を示す図である。この図において、図２（Ａ）は、波形データを格納する領域ＷＡＶＥＡＲＥＡであり、所定の単位データ量であるＳＩＺＥ個のバイト数を格納するブロックがＮ個設けられている。各ブロックは、ＷＡＶＥＢＬＯＣＫ［０］、ＷＡＶＥＢＬＯＣＫ［１］…ＷＡＶＥＢＬＯＣＫ［Ｎ−１］の変数、すなわち、任意のＷＡＶＥＢＬＯＣＫ［ｎ］のｎがポインタＢＬＯＣＫによって指定される。
図２（Ｂ）は、ブロック有効フラグ領域ＦＬＡＧＡＲＥＡであり、図２（Ａ）の任意のブロックＷＡＶＥＢＬＯＣＫ［ｎ］に対応する１ビットのブロック有効フラグ領域ＢＬＯＣＫＦＬＡＧ［ｎ］の値が「０」のときブロック無効、「１」のときブロック有効となる。
図２（Ｃ）は、ＭＩＤＩ  Ｉ／Ｆ６を介して受信した各ＳＩＺＥごとの転送データを一時的に記憶する受信バッファＢＵＦのエリアであり、各バイトごとに記憶するエリアがＳＩＺＥ個設けられている。各エリアは、ＢＵＦ［０］、ＢＵＦ［１］…ＢＵＦ［ＳＩＺＥ−１］の変数がポインタＩＤＸによって指定される。
【００１７】
図３は、ＭＩＤＩ  Ｉ／Ｆ６を介して受信する転送データのフォーマットを示す図である。転送データには、ＷＲＩＴＥＭＥＳＳＡＧＥおよびＣＨＥＣＫＭＥＳＳＡＧＥの２種類がある。ＷＲＩＴＥＭＥＳＳＡＧＥは、図３（Ａ）に示すように、システムエクスクルーシブの開始を示すステータスバイトＦ０、メーカを識別するためのメーカＩＤであるＭＡＫＥＲＩＤ、そのメーカ内の製品を識別するためのデバイスＩＤであるＤＥＶＩＣＥＩＤ、書き込みコマンドであるＷＲＩＴＥＣＯＭ、書込みブロック番号であるＷＲＩＴＥＢＬＫ、ＳＩＺＥ個のバイト数の波形データであるＤＡＴＡ、ＤＡＴＡのチェックサムであるＣＨＥＣＫＢＬＫ、システムエクスクルーシブの終了を示すステータスバイトＦ７で構成されている。
【００１８】
ＣＨＥＣＫＭＥＳＳＡＧＥは、図３（Ｂ）に示すように、Ｆ０、ＭＡＫＥＲＩＤ、ＤＥＶＩＣＥＩＤ、Ｆ７については、ＷＲＩＴＥＭＥＳＳＡＧＥと同じであり、その他、チェックコマンドであるＣＨＥＣＫＣＯＭ、および、本発明の特徴的なものとして、受信する波形データ全体のチェックサムであるＣＨＥＣＫＡＬＬで構成されている。
【００１９】
次に、図１の構成の電子楽器における処理、特に、受信データチェック処理の動作について、ＣＰＵ１が実行するフローチャートに基づいて説明する。
図４は、電子楽器におけるメインルーチンのフローチャートである。電源スイッチがオンされると、まず、初期化処理を実行する(ステップＳＡ１)。この初期化処理では、ブロック有効フラグＢＬＯＣＫＦＬＡＧ［ｎ］は全ビット「０（無効）」にセットし、システムエクスクルーシブ処理用の状態変数であるレジスタＳＴＡＴＥはＥＮＤにセットする。ＥＮＤの意味については後述する。
【００２０】
初期化処理の後は、スイッチ部３の各スイッチのオンおよびオフを検出するスイッチ処理(ステップＳＡ２)、鍵盤２の押鍵および離鍵を検出してそのデータ処理を行なう鍵盤処理(ステップＳＡ３)、楽音生成部８に対して発音指示又は消音指示を行なう発音処理(ステップＳＡ４)、表示部７に表示データを送出する表示処理(ステップＳＡ５)、およびその他の処理(ステップＳＡ６)を繰り返し実行する。
【００２１】
図５は、ＭＩＤＩ  ＩＮインタラプト処理のフローチャートである。ＭＩＤＩＩ／Ｆ６を介して図３のＷＲＩＴＥＭＥＳＳＡＧＥおよびＣＨＥＣＫＭＥＳＳＡＧＥの１バイトを受信するごとにこのフローを実行する。また、このフローにおける状態変数ＳＴＡＴＥの内容としては、システムエクスクルーシブメッセージ受信開始の状態を示すＨＥＡＤ１、システムエクスクルーシブメッセージ受信終了の状態を示すＥＮＤ、システムエクスクルーシブメッセージ受信中ではあるが、特別な処理は行なわず無視する状態を示すＩＧＮＯＲＥがある。なお、ＩＧＮＯＲＥのＳＴＡＴＥは、後述する図７のステップＳＤ４で設定する。
【００２２】
図５のフローにおいて、まず、受信データがＦ０であるか否かを判別する(ステップＳＢ１)。Ｆ０である場合には、ＳＴＡＴＥにＨＥＡＤ１をセットして(ステップＳＢ２)、このフローを終了する。ＳＴＡＴＥがＨＥＡＤ１である場合には、図３に示したＷＲＩＴＥＭＥＳＳＡＧＥ又はＣＨＥＣＫＭＥＳＳＡＧＥにおけるＦ０の次にある２バイト目のＭＡＫＥＲＩＤのデータを処理することになる。ステップＳＢ１において、受信データがＦ０でない場合には、受信データがＦ７であるか否かを判別する(ステップＳＢ３)。Ｆ７である場合には、ＳＴＡＴＥにＥＮＤをセットして(ステップＳＢ４)、このフローを終了する。ステップＳＢ１において受信データがＦ０でなく、且つ、ステップＳＢ３において受信データがＦ７でない場合には、ＳＴＡＴＥの状態を判別する(ステップＳＢ５)。
【００２３】
ＳＴＡＴＥの状態がＩＧＮＯＲＥである場合には、このフローを終了してメインフローに戻る。ＳＴＡＴＥの状態がＥＮＤである場合には、その他のメッセージ処理を行なう(ステップＳＢ６)。すなわち、システムエクスクルーシブメッセージ以外のシステムコモンメッセージ、システムリアルタイムメッセージ、チャンネルメッセージなどの処理を行なう。そして、このフローを終了してメインフローに戻る。ＳＴＡＴＥの状態がその他である場合には、システムエクスクルーシブメッセージ処理を実行する(ステップＳＢ７)。そして、このフローを終了してメインフローに戻る。
【００２４】
図６は、図５のＭＩＤＩ  ＩＮインタラプト処理におけるステップＳＢ７のシステムエクスクルーシブメッセージ処理のフローチャートである。このフローにおいては、ＳＴＡＴＥの状態を判別して(ステップＳＣ１)、その判別結果に応じた処理を実行する。ＳＴＡＴＥがＨＥＡＤ１、ＨＥＡＤ２、ＨＥＡＤ３のいずれかである場合には、ヘッダ処理を実行する(ステップＳＣ２)。ＳＴＡＴＥがＷＲＩＴＥ１、ＷＲＩＴＥ２、ＷＲＩＴＥ３のいずれかである場合には、書き込み処理を実行する(ステップＳＣ３)。ＳＴＡＴＥがＣＨＥＣＫである場合にはチェック処理を実行する(ステップＳＣ４)。ステップＳＣ２、ステップＳＣ３、ステップＳＣ４のいずれかの処理を実行した後は、このフローを終了して、メインフローに戻る。
【００２５】
図７は、図６のシステムエクスクルーシブメッセージ処理におけるステップＳＣ２のヘッダ処理のフローチャートである。ヘッダ処理においては、ＳＴＡＴＥの状態はＨＥＡＤ１、ＨＥＡＤ２、又は、ＨＥＡＤ３のいずれかである。
まず、ＳＴＡＴＥがＨＥＡＤ１であるか否かを判別し(ステップＳＤ１)、ＨＥＡＤ１である場合には、図３に示したＷＲＩＴＥＭＥＳＳＡＧＥ又はＣＨＥＣＫＭＥＳＳＡＧＥにおけるＦ０の次にある２バイト目のＭＡＫＥＲＩＤの受信データが、処理対象のＭＡＫＥＲＩＤであるか否かを判別する(ステップＳＤ２)。すなわち、この電子楽器にＩＤ登録されているメーカのＭＡＫＥＲＩＤであるか否かを判別する。処理対象のＭＡＫＥＲＩＤである場合には、ＳＴＡＴＥにＨＥＡＤ２をセットする(ステップＳＤ３)。一方、処理対象のＭＡＫＥＲＩＤでない場合には、ＳＴＡＴＥにＩＧＮＯＲＥをセットする(ステップＳＤ４)。
【００２６】
ステップＳＤ１において、ＳＴＡＴＥがＨＥＡＤ１でない場合には、ＳＴＡＴＥがＨＥＡＤ２であるか否かを判別する(ステップＳＤ５)。ＨＥＡＤ２である場合には、図３に示したＷＲＩＴＥＭＥＳＳＡＧＥ又はＣＨＥＣＫＭＥＳＳＡＧＥにおける３バイト目のＤＥＶＩＣＥＩＤの受信データが、処理対象のＤＥＶＩＣＥＩＤであるか否かを判別する(ステップＳＤ６)。すなわち、受信データがこの電子楽器の仕様に適応したシステムエクスクルーシブメッセージであるか否かを判別する。処理対象のＤＥＶＩＣＥＩＤである場合には、ＳＴＡＴＥにＨＥＡＤ３をセットする(ステップＳＤ７)。一方、処理対象のＤＥＶＩＣＥＩＤでない場合には、ＳＴＡＴＥにＩＧＮＯＲＥをセットする(ステップＳＤ４)。
なお、ＳＴＡＴＥにＩＧＮＯＲＥをセットした場合には、ＭＩＤＩ  ＩＮインタラプトにおけるステップＳＢ５において、ＩＧＮＯＲＥ（無視）であると判別されるので、ステップＳＢ７のシステムエクスクルーシブメッセージ処理は実行しない。
【００２７】
ステップＳＤ１においてＳＴＡＴＥがＨＥＡＤ１でなく、且つ、ステップＳＤ５においてＳＴＡＴＥがＨＥＡＤ２でない場合、すなわち、ＳＴＡＴＥがＨＥＡＤ３である場合には、図３に示したＷＲＩＴＥＭＥＳＳＡＧＥ又はＣＨＥＣＫＭＥＳＳＡＧＥにおける４バイト目の受信データが、ＷＲＩＴＥＣＯＭであるか又はＣＨＥＣＫＣＯＭであるかを判別する(ステップＳＤ８)。ＷＲＩＴＥＣＯＭである場合には、受信データはＷＲＩＴＥＭＥＳＳＡＧＥである。この場合には、ＳＴＡＴＥにＷＲＩＴＥ１をセットする(ステップＳＤ９)。ＣＨＥＣＫＣＯＭである場合には、受信データはＣＨＥＣＫＭＥＳＳＡＧＥである。この場合には、ＳＴＡＴＥにＣＨＥＣＫをセットする(ステップＳＤ１０)。
ステップＳＤ３、ステップＳＤ４、ステップＳＤ７、ステップＳＤ９、又は、ステップＳＤ１０のいずれかにおいて、ＳＴＡＴＥへのセット処理をした後は、このフローを終了して、メインフローに戻る。
【００２８】
図８は、図６のシステムエクスクルーシブメッセージ処理におけるステップＳＣ３の書き込み処理のフローチャートである。このフローにおいては、ＳＴＡＴＥの状態に応じてポインタ又は受信バッファＢＵＦに受信データの書き込みを実行する。書き込み処理においては、ＳＴＡＴＥの状態はＷＲＩＴＥ１、ＷＲＩＴＥ２、又はＷＲＩＴＥ３のいずれかである。
まず、ＳＴＡＴＥがＷＲＩＴＥ１であるか否かを判別する(ステップＳＥ１)。ＷＲＩＴＥ１である場合には、受信データは図３（Ａ）のＷＲＩＴＥＭＥＳＳＡＧＥにおける５バイト目のＷＲＩＴＥＢＬＫである。すなわち、受信データは６バイト目以降のＤＡＴＡの書き込みブロックを指定する書き込みブロック番号である。この場合には、図２（Ａ）のＷＡＶＥＡＲＥＡにおけるＷＡＶＥＢＬＯＣＫ［ｎ］の変数ｎを指定するポインタＢＬＯＣＫに受信データをセットし、図２（Ｃ）の受信バッファＢＵＦのエリアを指定するＩＤＸを「０」にセットし、ＳＴＡＴＥにＷＲＩＴＥ２をセットする(ステップＳＥ２)。そして、このフローを終了して、メインフローに戻る。
【００２９】
ステップＳＥ１において、ＳＴＡＴＥがＷＲＩＴＥ１でない場合には、ＳＴＡＴＥがＷＲＩＴＥ２であるか否かを判別する(ステップＳＥ３)。ＷＲＩＴＥ２である場合には、受信データは図３（Ａ）のＷＲＩＴＥＭＥＳＳＡＧＥにおけるＤＡＴＡすなわち波形データである。この場合には、ポインタＩＤＸにより指定する受信バッファＢＵＦ［ＩＤＸ］に受信データをストアする(ステップＳＥ４)。次に、ＩＤＸを「１」だけインクリメントする(ステップＳＥ５)。そして、ＩＤＸの値がＳＩＺＥの値になったか否かを判別する(ステップＳＥ６)。すなわち、ＳＩＺＥ分のバイトのＤＡＴＡをすべて受信バッファＢＵＦに書き込んだか否かを判別する。ＩＤＸの値がＳＩＺＥの値より小さい場合には、このフローを終了して、メインフローに戻る。ＩＤＸの値がＳＩＺＥの値になったときは、ＳＴＡＴＥにＷＲＩＴＥ３をセットする(ステップＳＥ７)。そして、このフローを終了して、メインフローに戻る。
【００３０】
ステップＳＥ１においてＳＴＡＴＥがＷＲＩＴＥ１でなく、且つ、ステップＳＥ３において、ＳＴＡＴＥがＷＲＩＴＥ２でない場合には、ＳＴＡＴＥはＷＲＩＴＥ３である。この場合には、受信データは図３（Ａ）のＷＲＩＴＥＭＥＳＳＡＧＥにおけるＣＨＥＣＫＢＬＫである。すなわち、１ブロックの受信データのチェックサムである。この場合には、受信バッファＢＵＦのチェックサムを算出してレジスタＳにセットし(ステップＳＥ８)、Ｓのチェックサムと受信データすなわちＣＨＥＣＫＢＬＫのチェックサムとが一致するか否かを判別する(ステップＳＥ９)。両者が一致した場合には、ＷＲＩＴＥＭＥＳＳＡＧＥにおけるＤＡＴＡにエラーがない場合である。この場合には、ポインタＢＬＯＣＫで指定するＷＡＶＥＢＬＯＣＫ［ＢＬＯＣＫ］にＢＵＦのデータを転送する(ステップＳＥ１０)。次に、ポインタＢＬＯＣＫで指定する図２（Ｂ）のＢＬＯＣＫＦＬＡＧ［ＢＬＯＣＫ］を「０（無効）」にセットする(ステップＳＥ１１)。
ＢＬＯＣＫＦＬＡＧ［ＢＬＯＣＫ］に「０」をセットした後、又は、ステップＳＥ９においてＳのチェックサムと受信データとが一致しない場合、すなわち、ＤＡＴＡにエラーがある場合には、このフローを終了して、メインフローに戻る。
【００３１】
図９は、図６のシステムエクスクルーシブメッセージ処理におけるステップＳＣ４のチェック処理のフローチャートである。このフローでは、図２（Ａ）のＷＡＶＥＡＲＥＡにおける全ブロックのチェックサムを算出してレジスタＳにセットする(ステップＳＦ１)。次に、Ｓのチェックサムと受信データとが一致するか否かを判別する(ステップＳＦ２)。この場合の受信データは、図３（Ｂ）のＣＨＥＣＫＭＥＳＳＡＧＥにおけるＣＨＥＣＫＡＬＬである。すなわち、ＳのチェックサムとＣＨＥＣＫＡＬＬのチェックサムとが一致するか否かを判別する。両者のチェックサムが一致する場合には、図２（Ｂ）に示したＦＬＡＧＥＲＥＡの全ブロックのＢＬＯＣＫＦＬＡＧ［ｎ］に「１（有効）」をセットする(ステップＳＥ３)。このセット処理の後、又は、ステップＳＦ２において、ＳのチェックサムとＣＨＥＣＫＡＬＬのチェックサムとが一致しない場合には、このフローを終了して、メインフローに戻る。
【００３２】
図１０は、実施形態におけるデータ転送システムにおける送信装置としてのサーバの構成を示すブロック図である。この図において、ＣＰＵ２１には、システムバスを介して、ＲＯＭ２２、ＲＡＭ２３、ＭＩＤＩ  Ｉ／Ｆ２４、スイッチ部２５、表示部２６、曲サーバ２７が接続されている。ＣＰＵ２１は、これら各部との間でコマンドおよびデータを授受して、このサーバ全体を制御する。
【００３３】
ＲＯＭ２２には、ＣＰＵ２１によって実行される種々のプログラムや初期化に必要なデフォルトデータなどがあらかじめ記憶されている。ＲＡＭ２３は、ＣＰＵ２１のワークエリアであり、プログラムの実行に必要な種々のレジスタ、フラグ、ポインタのエリア、および、曲の波形データを送信する際の送信バッファ、送信先のアドレスなどのエリアが設けられている。ＭＩＤＩ  Ｉ／Ｆ２４は、図１に示した電子楽器に対して転送データを送信すためのインタフェースである。スイッチ部２５は、送信する曲を選択するためのスイッチや送信先を指定するスイッチなどで構成されている。表示部２６は、データ転送の手順、このサーバの状態、スイッチ部２５から入力されるコマンドやデータなどを表示する。曲サーバ２７には、複数種類の曲の波形データが格納されている。各曲の波形データは、図２（Ａ）に示したＷＡＶＥＡＲＥＡの構成と同じであるので、図面および説明は省略する。
【００３４】
図１１は、ＲＡＭ２３のメモリ構成を示す図である。図１１（Ａ）は、あらかじめＲＯＭ２２に格納されている特定のデータ、特定のコマンド、データ転送のための変数などを一時的にストアする記憶領域ＭＥＭである。図１１（Ｂ）は、データ転送のための送信バッファＢＵＦであり、ポインタで指定されるエリアにバイト単位のデータがストアされる。ＢＵＦ[５]〜ＢＵＦ[ＳＩＺＥ＋４]のエリアは、波形データの１ブロック分（ＳＩＺＥ個のバイト数分）の記憶領域である。図１１（Ｃ）は、あらかじめ登録された電子楽器のアドレスが格納されているアドレスエリアＡＤＤＲＥＳＳである。
【００３５】
次に、図１０のサーバの動作についてＣＰＵ２１によって実行されるフローチャートに基づいて説明する。サーバから電子楽器に対して波形データを転送する要因は様々である。サーバから主体的に転送する場合もあれば、電子楽器からの転送要求に応じて転送する場合もある。いずれの要因であるかは、本発明には特に関係しないので、波形データを転送することが決定されているものとして、以下の動作を説明する。
【００３６】
図１２は、サーバのメインルーチンのフローチャートである。まず、波形データを転送するための初期化処理を実行する(ステップＳＧ１)。そして、スイッチ部の各スイッチのオンおよびオフを検出するスイッチ処理(ステップＳＧ２)、転送データを生成するデータ生成処理(ステップＳＧ３)、生成したデータを電子楽器に転送するデータ送信処理(ステップＳＧ４)、その他の処理(ステップＳＧ５)を繰り返し実行する。
【００３７】
図１３は、図１２のメインフローチャートにおけるステップＳＧ１の初期化処理のフローチャートである。このフローでは、図１１（Ａ）のＭＥＭの各エリアに所定のデータをストアするとともに、ポインタやフラグをセットする。
システムエクスクルーシブの開始を示すステータスバイトＦ０をＭＥＭ[０]にストアし(ステップＳＨ１)、メーカを識別するためのメーカＩＤであるＭＡＫＥＲＩＤをＭＥＭ[１]にストアし(ステップＳＨ２)、そのメーカ内の製品を識別するためのデバイスＩＤであるＤＥＶＩＣＥＩＤをＭＥＭ[２]にストアし(ステップＳＨ３)、書き込みコマンドであるＷＲＩＴＥＣＯＭをＭＥＭ[３]にストアし(ステップＳＨ４)、チェックコマンドであるＣＨＥＣＫＣＯＭをＭＥＭ[４]にストアし(ステップＳＨ５)、システムエクスクルーシブの終了を示すステータスバイトＦ７をＭＥＭ[６]にストアする(ステップＳＨ６)。
【００３８】
さらに、ＷＡＶＥＡＲＥＡのブロック番号を指定するポインタＢＬＯＣＫを「０（最初のブロック）」にセットし(ステップＳＨ７)、送信中（ＢＵＦのデータを読み出し中）であるか又は送信終了であるかを示すフラグＴＸＦに「０（送信終了）」をセットし(ステップＳＨ８)、波形データの生成中であるかチェックデータの生成中であるかを示すフラグＤＡＴＡＦを「０（波形データの生成中）」をセットし(ステップＳＨ９)、送信バッファＢＵＦへの転送データ書き込みが終了したか否かを示すフラグＦＵＬＬＦを「０（書き込み中）」にセットする(ステップＳＨ１０)。さらに、後述するフラグＳＮＧＦを「０」にセットし(ステップＳＨ１１)、フラグＡＤＲＦを「０」にセットする(ステップＳＨ１２)。そして、このフローを終了して、メインフローに戻る。
【００３９】
図１４は、図１２のメインフローチャートにおけるステップＳＧ２のスイッチ処理のフローチャートである。このフローでは、電子楽器に転送する波形データの曲をスイッチ操作に応じて設定する。まず、曲選択を示すフラグＳＮＧＦが「０（選択未決定）」であるか否かを判別する(ステップＳＪ０)。このフラグが「１（選択決定）」である場合にはこのフローを終了するが、このフラグが「０」である場合には、波形データの曲を選択するために、曲番号ｎが入力されたか否かを判別し(ステップＳＪ１)、入力されたときは、ポインタＳＮＧにその曲番号ｎをセットする(ステップＳＪ２)。そして、フラグＳＮＧＦを「１」にセットする(ステップＳＪ３)。
送信先を指定するために、送信先番号ｍが入力されたか否かを判別し(ステップＳＪ４)、入力されたときは、図１１（Ｃ）に示したＡＤＤＲＳＳ[ｍ]のアドレスをレジスタＣＡＬＬにセットする(ステップＳＪ５)。そして、フラグＡＤＲＦを「１（送信先決定）」にセットする(ステップＳＪ６)。
【００４０】
また、決定スイッチがオンされたか否かを判別し(ステップＳＪ７)、オンされたときは、フラグＳＮＧＦおよびフラグＡＤＲＦがともに「１」であるか否かを判別する(ステップＳＪ８)。いずれか一方のフラグが「０」又は２つのフラグがともに「０」である場合、ＳＮＧＦを「１」にセットした後、ＡＤＲＦを「１」にセットした後、又は、決定スイッチがオンでない場合には、ステップＳＪ１に移行して、各スイッチのオンを検出する。
【００４１】
ＳＮＧＦおよびＡＤＲＦがともに「１」である場合には、ポインタＳＮＧで指定するＷＡＶＥＡＲＥＡ[ＳＮＧ]を転送対象の曲として指定する(ステップＳＪ９)。次に、その指定したＷＡＶＥＡＲＥＡ[ＳＮＧ]の全ブロックのチェックサムを算出して、算出したチェックサムをＭＥＭ[５]にストアする(ステップＳＪ１０)。そして、このフローを終了して、メインフローに戻る。
【００４２】
図１５および図１６は、図１２のメインフローチャートにおけるステップＳＧ３のデータ生成処理のフローチャートである。図１５において、まず、フラグＴＸＦが「０」であるか否かを判別する（ステップＳＫ１）。ＴＸＦが「１」でデータ送信中である場合には、このフローを終了して、メインフローに戻る。
ＴＸＦが「０」である場合、すなわち、まだデータ送信が開始していないか、又は、データ送信が終了している場合には、送信バッファＢＵＦおよびＭＥＭのエリアを指定するポインタＩＤＸを「０」にセットする(ステップＳＫ２)。そして、ＭＥＭ[ＩＤＸ]のデータをＢＵＦ[ＩＤＸ]にストアし(ステップＳＫ３)、ＩＤＸの値をインクリメントして、次のエリアを指定する(ステップＳＫ４)。このとき、ＩＤＸの値が「３」になったか否かを判別する(ステップＳＫ５)。ＩＤＸの値が「３」より小さい場合には、ステップＳＫ３においてＭＥＭ[ＩＤＸ]のデータをＢＵＦ[ＩＤＸ]にストアする。
すなわち、ＭＥＭ[０]のＦ０をＢＵＦ[０]にストアし、ＭＥＭ[１]のＭＡＫＥＲＩＤをＢＵＦ[１]にストアし、ＭＥＭ[２]のＤＥＶＩＣＥＩＤをＢＵＦ[２]にストアする。
【００４３】
ステップＳＫ５において、ＩＤＸの値が「３」になったときは、フラグＤＡＴＡＦが「０」であるか否かを判別する(ステップＳＫ６)。ＤＡＴＡＦが「０」である場合、すなわち、波形データの生成中である場合には、ＭＥＭ[ＩＤＸ]すなわちＭＥＭ[３]の書き込みコマンドＷＲＩＴＥＣＯＭをＢＵＦ[ＩＤＸ]すなわちＢＵＦ[３]にストアする(ステップＳＫ７)。次に、波形データであるＷＡＶＥＡＲＥＡ［ＳＮＧ］のブロックを指定するポインタＢＬＯＣＫの値（最初は「０」）をＢＵＦ[ＩＤＸ＋１]すなわちＢＵＦ[４]にストアする(ステップＳＫ８)。
【００４４】
次に、図１６のフローにおいて、ポインタＩＤＸの値を「０」にセットし、ポインタＢＩＤＸの値を「ＩＤＸ＋５」にセットする(ステップＳＫ９)。次に、ステップＳＫ１０〜ステップＳＫ１２のループ処理を実行する。まず、ＷＡＶＥＡＲＥＡ［ＳＮＧ］内のＷＡＶＥＢＬＯＣＫ[ＢＬＯＣＫ][ＩＤＸ]の波形データをＢＵＦ[ＢＩＤＸ]にストアする(ステップＳＫ１０)。ループ処理の最初では、ＩＤＸの値は「０」、ＢＩＤＸの値は「５」であるので、ＷＡＶＥＡＲＥＡ［ＳＮＧ］においてポインタＢＬＯＣＫで指定されるブロックにおける波形データの最初のバイトの波形データをＢＵＦ[５]にストアする。
【００４５】
そして、ＩＤＸおよびＢＩＤＸの値をそれぞれインクリメントする(ステップＳＫ１１)。このとき、ＩＤＸの値がＳＩＺＥの値になったか否かを判別する(ステップＳＫ１１)。すなわち、ＢＩＤＸの値が「ＳＩＺＥ＋５」になったか否かを判別する。ＩＤＸの値がＳＩＺＥの値より小さい場合、すなわち、ＢＩＤＸの値が「ＳＩＺＥ＋５」より小さい場合には、ステップＳＫ１０において、ＷＡＶＥＡＲＥＡ［ＳＮＧ］内のＷＡＶＥＢＬＯＣＫ[ＢＬＯＣＫ][ＩＤＸ]の波形データをＢＵＦ[ＢＩＤＸ]にストアする。
したがって、図１１（Ｂ）に示したＢＵＦのエリアにおいて、ＢＵＦ[５]〜ＢＵＦ[ＳＩＺＥ＋４]からなるＳＩＺＥ個のバイトの範囲に、１ブロック分の波形データをバイト単位でストアする。
【００４６】
ステップＳＫ１２において、ＩＤＸの値がＳＩＺＥの値になった場合、すなわち、ＢＩＤＸの値が「ＳＩＺＥ＋５」になって、１ブロック分の波形データのストアが終了した場合には、その１ブロックのチェックサムを算出して、算出したチェックサムをＢＵＦ[ＢＩＤＸ]にストアする(ステップＳＫ１３)。次に、ＭＥＭ[６]のＦ７をＢＵＦ[ＢＩＤＸ＋１]にストアする(ステップＳＫ１４)。そして、ポインタＢＬＯＣＫをインクリメントして次のブロックを指定する(ステップＳＫ１５)。このとき、ＢＬＯＣＫの値がＮの値になったか否かを判別する(ステップＳＫ１６)。すなわち、ＷＡＶＥＡＲＥＡ［ＳＮＧ］のすべてのブロックをＢＵＦにストアしたか否かを判別する。
【００４７】
ＢＬＯＣＫの値がＮの値になったときは、フラグＤＡＴＡＦを「１」にセットする(ステップＳＫ１７)。すなわち、波形データの生成が終了したので、チェックデータの生成を開始する。フラグＤＡＴＡＦを「１」にセットした後、又は、ＢＬＯＣＫの値がＮの値より小さい場合、すなわち、波形データを生成すべきブロックが残っている場合には、ＢＵＦのエリアへの書き込みが終了したか否かを示すフラグＦＵＬＬＦを「１（書き込み終了）」にセットして(ステップＳＫ１８)、このフローを終了して、メインフローに戻る。
【００４８】
図１５のステップＳＫ６においてＤＡＴＡＦが「１」で、波形データの生成が終了した場合には、図１６のフローにおいて、ＭＥＭ[ＩＤＸ＋１]のＣＨＥＣＫＣＯＭをＢＵＦ[ＩＤＸ]にストアし(ステップＳＫ１９)、ＭＥＭ[ＩＤＸ＋２]のＣＨＥＣＫＡＬＬをＢＵＦ[ＩＤＸ＋１]にストアし(ステップＳＫ２０)、ＭＥＭ[ＩＤＸ＋３]のＦ７をＢＵＦ[ＩＤＸ＋２]にストアする(ステップＳＫ２１)。次に、フラグＦＵＬＬＦを「１（書き込み終了）」にセットして(ステップＳＫ１８)、このフローを終了して、メインフローに戻る。
【００４９】
図１７は、図１２のメインフローチャートにおけるステップＳＧ４のデータ送信処理のフローチャートである。まず、フラグＦＵＬＬＦが「１（書き込み終了）」であるか否かを判別し(ステップＳＬ１)、ＦＵＬＬＦが「０」でまだ書き込みが終了していない場合には、このフローを終了して、メインフローに戻る。ＦＵＬＬＦが「１」である場合には、フラグＴＸＦを「１」にセットして (ステップＳＬ２)、ＢＵＦのデータを読み出して送信する通信状態に遷移する。
【００５０】
通信状態においては、ＣＡＬＬのアドレスを送信して(ステップＳＬ３)、そのアドレスの電子楽器からの応答を受信したか否かを判別する(ステップＳＬ４)。応答がない場合には、ステップＳＬ３において再度ＣＡＬＬのアドレスを送信する。そして、ＣＡＬＬのアドレスの送信回数が所定回数を超えたか否かを判別し(ステップＳＬ５)、所定回数を超えた場合には、このフローを終了して、メインフローに戻る。
例えば、送信先の電子楽器若しくは通信回線であるＭＩＤＩケーブルが故障中の場合や、電子楽器の電源がオフである場合には、送信を中止する。
【００５１】
送信先の電子楽器から応答があったときは、ＢＵＦにストアされているデータを送信する(ステップＳＬ６)。そして、送信が終了したか否かを判別する(ステップＳＬ７)。送信が終了した場合、すなわちデータ「Ｆ７（システムエクスクルーシブ終了）」のステータスバイトを送信した場合には、フラグＦＵＬＬＦを「０（ＢＵＦ読み出し終了）」にセットし(ステップＳＬ８)、フラグＤＡＴＡＦが「１」であるか否かを判別する(ステップＳＬ９)。このフラグが「１（チェックデータ生成）」である場合には、フラグＳＮＧＦおよびＡＤＲＦをともに「０」にセットし(ステップＳＬ１０)、ＤＡＴＡＦを「０」にセットする(ステップＳＬ１１)。この後、又は、ステップＳＬ９においてＤＡＴＡＦが「０」である場合には、フラグＴＸＦを「０（送信終了）」にセットする(ステップＳＬ１２)。そして、このフローを終了して、メインフローに戻る。
したがって、曲サーバにおいて指定した曲の波形データであるＷＲＩＴＥＭＥＳＳＡＧＥを、１ブロックごとに分割してそのブロックのチェックサムを含めて送信し、波形データのすべてのブロックの送信が終了した後は、すべてのブロックのチェックサムを含むＣＨＥＣＫＭＥＳＳＡＧＥを送信する。
【００５２】
以上のように、この実施形態によれば、送信装置であるサーバは、ＳＩＺＥ個のバイト数ごとに分割したＮ個のブロックからなる分割データであるＷＲＩＴＥＭＥＳＳＡＧＥ、およびＷＲＩＴＥＭＥＳＳＡＧＥ全体のチェックサムであるＣＨＥＣＫＡＬＬを含むＣＨＥＣＫＭＥＳＳＡＧＥを送信する。一方、受信装置である電子楽器は、受信したＷＲＩＴＥＭＥＳＳＡＧＥ全体のチェックサムを算出して、算出したチェックサムとＣＨＥＣＫＭＥＳＳＡＧＥのＣＨＥＣＫＡＬＬのチェックサムとを比較することにより、ＷＲＩＴＥＭＥＳＳＡＧＥの転送データのすべてのブロックが有効であるか又は無効であるかを判定する。したがって、偶然に発生した見かけ上の正常な現象を排除するとともに、分割データの転送と次の分割データの転送との間で転送処理が中断した場合でも、受信の異常を検出できる。
【００５３】
なお、上記実施形態においては、図１のＲＯＭ４にあらかじめ記憶されているデータ転送システムのプログラムをＣＰＵ１によって実行する電子楽器について説明したが、ＦＤ（フレキシブルディスク）、ＣＤ−ＲＯＭなどの外部記憶媒体に記憶されているプログラムや、インターネットなどの通信網を介してダウンロードされるプログラムを、パソコンなどの汎用の情報処理装置にインストールして実行することも可能である。この場合には、プログラムの発明を構成する。
【００５４】
すなわち、本発明によるデータ転送システムのプログラムは、所定の単位データ量ごとに分割された複数の分割データからなる第１の転送データを各分割データごとに受信するとともに、第１の転送データの誤り検査情報を含む第２の転送データを受信する第１のステップと、所定の記憶手段に設けられた少なくとも１個のブロックからなる第１の記憶領域の各ブロックに第１のステップにおいて受信した第１の転送データの各分割データを書き込むとともに、書き込んだ各ブロックの受信データが有効であるか又は無効であるかを識別する記憶手段に設けられた第２の記憶領域の識別情報を無効に設定する第２のステップと、第１の記憶領域に書き込まれた第１の転送データ全体の誤り検査情報を算出し、算出した誤り検査情報と第２の転送データの誤り検査情報とが一致した場合には第２の記憶領域に記憶されているすべてのブロックの識別情報を有効に変更する第３のステップとを実行する。
【００５５】
また、上記実施形態においては、外部から受信する転送データは、楽音信号を生成するための波形データとしたが、楽音信号を生成するための音色生成のパラメータ、音高制御のパラメータ、音量制御のパラメータなどでもよい。
さらに、上記実施形態においては、外部から受信する転送データはＭＩＤＩデータとしたが、本発明における転送データはＭＩＤＩデータに限定するものではない。転送データを受信する受信装置も電子楽器以外の他の情報処理装置でもよい。すなわち、本発明は、送信装置と受信装置との間を有線又は無線の通信回線で接続して、一方から他方に対して比較的大規模なデータを所定の単位データ量ごとに分割して転送する場合にも適用できる。
【００５６】
【発明の効果】
本発明によれば、送信装置において所定の単位データ量ごとに分割した複数の分割データからなる第１の転送データおよび第１の転送データ全体の誤り検査情報を含む第２の転送データを送信し、受信装置において受信した第１の転送データ全体の誤り検査情報を算出して、算出した誤り検査情報と第２の転送データの誤り検査情報とを比較することにより第１の転送データのすべての分割データが有効であるか又は無効であるかを判定するので、偶然に発生した見かけ上の正常な現象を排除するとともに、分割データの転送と次の分割データの転送との間で転送処理が中断した場合でも、受信の異常を検出できるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の実施形態における電子楽器の構成を示すブロック図。
【図２】図１のＲＡＭのメモリ構成を示す図。
【図３】図１のＭＩＤＩ  Ｉ／Ｆを介して受信する転送データのフォーマットを示す図。
【図４】実施形態における電子楽器のメインルーチンのフローチャート。
【図５】実施形態におけるＭＩＤＩ  ＩＮインタラプト処理のフローチャート。
【図６】図５におけるシステムエクスクルーシブメッセージ処理のフローチャート。
【図７】図６におけるヘッダ処理のフローチャート。
【図８】図６における書き込み処理のフローチャート。
【図９】図６におけるチェック処理のフローチャート。
【図１０】本発明の実施形態におけるサーバの構成を示すブロック図。
【図１１】図１０におけるＲＡＭのメモリ構成を示す図。
【図１２】図１０のサーバのメインルーチンのフローチャート。
【図１３】図１２における初期化処理のフローチャート。
【図１４】図１２におけるスイッチ処理のフローチャート。
【図１５】図１２におけるデータ生成処理のフローチャート。
【図１６】図１５に続くデータ生成処理のフローチャート。
【図１７】図１２におけるデータ送信処理のフローチャート。
【符号の説明】
１，２１  ＣＰＵ
２  鍵盤
３，２５  スイッチ部
４，２２  ＲＯＭ
５，２３  ＲＡＭ
６，２４  ＭＩＤＩ  Ｉ／Ｆ
７，２６  表示部
８  楽音生成部
９  Ｄ／Ａ変換器
１０  アンプ
１１  スピーカ
【図１】
2004205789.tif 000003
【図２】
2004205789.tif 000004
【図３】
2004205789.tif 000005
【図４】
2004205789.tif 000006
【図５】
2004205789.tif 000007
【図６】
2004205789.tif 000008
【図７】
2004205789.tif 000009
【図８】
2004205789.tif 000010
【図９】
2004205789.tif 000011
【図１０】
2004205789.tif 000012
【図１１】
2004205789.tif 000013
【図１２】
2004205789.tif 000014
【図１３】
2004205789.tif 000015
【図１４】
2004205789.tif 000016
【図１５】
2004205789.tif 000017
【図１６】
2004205789.tif 000018
【図１７】
2004205789.tif 000019