(57)【要約】【課題】  演奏遅延を招くことなくファイル転送できるデータ転送装置を実現する。【解決手段】  マスター側のＤＴＭ装置１０からスレーブ側の電子楽器１００にデータ転送する場合において、演奏データをスレーブ側に送出する演奏スレッドが待ちの状態である時に、ファイルスレッドがファイルバッファから小分けしたファイルデータ（１パケット）を送信バッファにセットして送信セマフォを取得すると、送信スレッドが送信バッファのデータをスレーブ側の電子楽器１００に送信する。つまり、演奏データをスレーブ側に送出する合間に小分けしたファイルデータ（１パケット）を転送する結果、演奏遅延を招くことなくファイル転送が可能になる。【選択図】  図７
2007057627.tif 000002
【特許請求の範囲】
【請求項１】
転送すべきデータを一時記憶する転送データ記憶手段と、
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、
前記演奏データ格納手段が待ち状態の時に送信権を取得して転送すべきファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、
前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段と
を具備することを特徴とするデータ転送装置。
【請求項２】
転送すべきデータを一時記憶する転送データ記憶手段と、
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、
前記演奏データ格納手段が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、
前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段と
を具備することを特徴とするデータ転送装置。
【請求項３】
前記演奏データ格納手段は、前記転送データ記憶手段に格納した演奏データが前記送信手段により送信された場合に送信権を返却することを特徴とする請求項１又は２のいずれかに記載のデータ転送装置。
【請求項４】
前記ファイルデータ格納手段は、前記転送データ記憶手段に格納したファイルデータが前記送信手段により送信された場合に送信権を返却することを特徴とする請求項１又は２のいずれかに記載のデータ転送装置。
【請求項５】
演奏操作に応じた演奏データを発生する演奏データ発生手段と、
前記演奏データ発生手段により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、
前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段と
を具備することを特徴とするデータ転送装置。
【請求項６】
演奏操作に応じた演奏データを発生する演奏データ発生手段と、
前記演奏データ発生手段により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、
前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段と、
所定単位長毎のデータを受信する受信手段と、
前記受信手段が連続する２つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納手段と、
前記受信手段が１つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納手段と
を具備することを特徴とするデータ送受信装置。
【請求項７】
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、
前記演奏データ格納処理が待ち状態の時に送信権を取得して転送すべきファイルデータを一時記憶するファイルデータ格納処理と、
前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶されたファイルデータを送信する送信処理と
をコンピュータで実行させることを特徴とするデータ転送プログラム。
【請求項８】
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、
前記演奏データ格納処理が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを一時記憶するファイルデータ格納処理と、
前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶された所定量のファイルデータを送信する送信処理と
をコンピュータで実行させることを特徴とするデータ転送プログラム。
【請求項９】
演奏操作に応じた演奏データを発生する演奏データ発生処理と、
前記演奏データ発生処理により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、
前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理と
をコンピュータで実行させることを特徴とするデータ転送プログラム。
【請求項１０】
演奏操作に応じた演奏データを発生する演奏データ発生処理と、
前記演奏データ発生処理により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、
前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理と、
所定単位長毎のデータを受信する受信処理と、
前記受信処理が連続する２つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納処理と、
前記受信処理が１つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納処理と
をコンピュータで実行させることを特徴とするデータ送受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演奏データやファイルデータを授受する機能を備えた電子楽器等に用いて好適なデータ転送装置、データ送受信装置、データ転送プログラムおよびデータ送受信プログラムに関する。
【背景技術】
【０００２】
ＤＴＭ（デスクトップミュージック）装置や電子楽器は、ＭＩＤＩインタフェースを介して演奏データ（ＭＩＤＩイベント）を授受したり、システムエクスクルーシブメッセージを用いて波形データをファイル転送するデータ転送装置を備える。この種の装置として、例えば特許文献１には、転送すべき波形データを所定の単位に分割し、それをシステムエクスクルーシブメッセージを用いて転送するものが開示されている。
【０００３】
【特許文献１】特開２００４−２０５７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、マスター（送信側の電子楽器）からスレーブ（受信側の電子楽器）へ演奏データを転送している最中に、例えば音色変更させるべくシステムエクスクルーシブメッセージを用いた波形データのファイル転送を行うと、スレーブがファイル読み込みしている間はマスターから演奏データを転送することが出来ず、その為にスレーブの演奏遅延を招いてしまうという問題が生じる。また、スレーブの演奏遅延を回避するため、マスターからの波形データのファイル転送を禁止すると、スレーブの音色変更を行うことができなくなるという弊害もある。
【０００５】
そこで本発明は、このような事情に鑑みてなされたもので、演奏遅延を招くことなくファイル転送することができるデータ転送装置、データ送受信装置、データ転送プログラムおよびデータ送受信プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、請求項１に記載の発明では、転送すべきデータを一時記憶する転送データ記憶手段と、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、前記演奏データ格納手段が待ち状態の時に送信権を取得して転送すべきファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段とを具備することを特徴とする。
【０００７】
請求項２に記載の発明では、転送すべきデータを一時記憶する転送データ記憶手段と、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、前記演奏データ格納手段が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段とを具備することを特徴とする。
【０００８】
上記請求項１又は２のいずれかに従属する請求項３に記載の発明では、前記演奏データ格納手段は、前記転送データ記憶手段に格納した演奏データが前記送信手段により送信された場合に送信権を返却することを特徴とする。
【０００９】
上記請求項１又は２のいずれかに従属する請求項４に記載の発明では、前記ファイルデータ格納手段は、前記転送データ記憶手段に格納したファイルデータが前記送信手段により送信された場合に送信権を返却することを特徴とする。
【００１０】
請求項５に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生手段と、前記演奏データ発生手段により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段とを具備することを特徴とする。
【００１１】
請求項６に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生手段と、前記演奏データ発生手段により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段と、所定単位長毎のデータを受信する受信手段と、前記受信手段が連続する２つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納手段と、前記受信手段が１つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納手段とを具備することを特徴とする。
【００１２】
請求項７に記載の発明では、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、前記演奏データ格納処理が待ち状態の時に送信権を取得して転送すべきファイルデータを一時記憶するファイルデータ格納処理と、前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶されたファイルデータを送信する送信処理とをコンピュータで実行させることを特徴とする。
【００１３】
請求項８に記載の発明では、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、前記演奏データ格納処理が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを一時記憶するファイルデータ格納処理と、前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶された所定量のファイルデータを送信する送信処理とをコンピュータで実行させることを特徴とする。
【００１４】
請求項９に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生処理と、前記演奏データ発生処理により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理とをコンピュータで実行させることを特徴とする。
【００１５】
請求項１０に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生処理と、前記演奏データ発生処理により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理と、所定単位長毎のデータを受信する受信処理と、前記受信処理が連続する２つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納処理と、前記受信処理が１つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【００１６】
請求項１、７に記載の発明によれば、転送すべき演奏データが生じて送信権を取得すると、一時記憶しておいた転送すべき演奏データを送信し、一方、転送すべき演奏データが生じるまでの待ち状態の時に送信権を取得すると、一時記憶しておいたファイルデータを送信する。したがって、演奏データの送信の合間にファイルデータを送信するので、演奏遅延を招くことなくファイル転送することができる。
【００１７】
請求項２、８に記載の発明によれば、転送すべき演奏データが生じて送信権を取得すると、一時記憶しておいた転送すべき演奏データを送信し、一方、転送すべき演奏データが生じるまでの待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能な場合に送信権を取得すると、一時記憶された所定量のファイルデータを送信するので、演奏遅延を招くことなくファイル転送することができる。
【００１８】
請求項５、９に記載の発明によれば、演奏操作に応じて生成される演奏データの先頭に転送開始を表す識別コードを付加して送信し、こうした演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信するので、リアルアイム演奏に応じて発生する演奏データを送信でき、しかも演奏遅延を招くことなくファイル転送することができる。
【００１９】
請求項６、１０に記載の発明によれば、送信側では演奏操作に応じて生成される演奏データの先頭に転送開始を表す識別コードを付加して送信し、こうした演奏データの送信の合間に、転送開始を表す識別コードを２つ続けて送信した後に所定単位長のファイルデータを送信する。そして、受信側では所定単位長毎のデータを受信し、連続する２つの識別コードを受信した場合にはそれ以降に受信されたデータをファイルデータとして格納し、一方、１つの識別コードを受信した場合にはそれ以降に受信されたデータを演奏データとして格納するので、リアルアイム演奏に応じて発生する演奏データを送信でき、しかも演奏遅延を招くことなくファイル転送することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して本発明の実施の形態について説明する。
［第１実施形態］
Ａ．構成
（１）全体構成
図１は本発明の第１実施形態によるデータ転送装置を具備するＤＴＭ装置１０の構成を示すブロック図である。ＤＴＭ装置１０は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、入力部４、記憶部５、表示部６および送受信部７を備え、送受信部７を介してスレーブ側の電子楽器１００にデータ転送する。ＣＰＵ１は、マルチスレッドに対応したＯＳ上で複数のスレッド（ソフトウェア実行単位）を時分割に実行して見かけ上、リアルタイム並列処理を実現する。本実施形態では、後述するように、演奏データをスレーブ側に送出する演奏スレッドが待ちの状態となっている合間に、送信セマフォを取得したファイルスレッドが小分けしたファイルデータ（１パケット）をスレーブ側に送出することで演奏遅延を招くことなくファイル転送を可能にするものであり、その詳細については追って述べる。
【００２１】
ＲＯＭ２は、ＣＰＵ１にロードされる各種制御プログラム等を記憶する。ここで言う各種制御プログラムとは、後述するプライマリスレッド、送信スレッド、演奏スレッド、ファイルスレッドおよび受信処理を含む。なお、プライマリスレッドにより起動される送信スレッド、演奏スレッドおよびファイルスレッドには、それぞれ優先順位１位〜３位が付与されている。ＲＡＭ３は、ＣＰＵ１において用いられる各種レジスタ・フラグデータを一時記憶するワークエリアの他、本発明の要旨に係わる各種データをストアする記憶エリアＥ１〜Ｅ６を有する。ＲＡＭ３の記憶エリアＥ１〜Ｅ６のデータ構成については追って説明する。
【００２２】
入力部４は、ユーザ操作に対応した操作イベントを発生してＣＰＵ１に供給する。記憶部６は、例えばハードディスク装置等から構成され、各種音色に対応した波形データのファイルを記憶する。記憶部６に記憶される各種音色のファイルは、後述するファイルスレッドの動作により送受信部７を介してスレーブ側の電子楽器１００へ転送される。表示部５は、ＣＰＵ１の制御の下に、例えば転送データの内容や転送動作状況などを画面表示する。送受信部７は、ＣＰＵ１の制御の下にスレーブ側の電子楽器１００とデータ通信する。
【００２３】
（２）データ構成
次に、図２を参照してＲＡＭ３に設けられる記憶エリアＥ１〜Ｅ６の構成について説明する。記憶エリアＥ１には演奏データが格納される。演奏データは、曲を構成する各音を表し、曲進行順に配列されるＭＩＤＩデータ［０］〜［Ｎ］から構成される。１つのＭＩＤＩデータは、演奏時刻およびイベントを有する。記憶エリアＥ２には、スレッド間の競合を回避するためのフラグとして作用するセマフォ（バイナリセマフォ）が格納される。セマフォは、イニシャライズ時に「１」がセットされ、先取したスレッドがそれをデクリメントして「０」にセットし、セマフォ返却時にインクリメントして「１」に戻す。セマフォが「０」の場合、先取したスレッド以外の他のスレッドはセマフォ待ちのアイドル状態で待機する。
【００２４】
記憶エリアＥ３には、キューが設けられる。キューは、スレーブ側へ転送すべく演奏スレッドにより記憶エリアＥ１から読み出される演奏データを一時記憶するＦＩＦＯバッファである。記憶エリアＥ４には、ファイルバッファが設けられる。ファイルバッファは、スレーブ側へ転送すべくファイルスレッドにより記憶部５から読み出される１セクタ分のファイルデータを一時記憶する。記憶エリアＥ５には、予約演奏時刻がストアされる。予約演奏時刻とは、次に演奏される演奏データが備える演奏時刻であり、演奏スレッドによりストアされる。記憶エリアＥ６には、送受信部７を介してスレーブ側へ送出するデータを一時記憶する送信バッファが設けられる。
【００２５】
送信バッファには、演奏スレッドにより記憶エリアＥ３のキューから読み出される演奏データ（ＭＩＤＩデータ）や、ファイルスレッドにより記憶エリアＥ４のファイルバッファから読み出されるファイルデータがストアされる。送信バッファにストアされる演奏データあるいはファイルデータは、図２に図示するデータ構成、すなわち送信スレッドによりデータ本体ＤＡＴＡ（演奏データ又はファイルデータ）にヘッダＨＤおよびリザルトＲが付加される転送パケットとして形成されてスレーブ側へ送出される。なお、ヘッダＨＤは、データ種類およびサイズを表し、リザルトＲは転送結果を表す。
【００２６】
Ｂ．動作
次に、図３〜図８を参照して第１実施形態の動作について説明する。以下では、プライマリスレッド、送信スレッド、演奏スレッド、ファイルスレッドおよび受信処理の各動作について述べる。
【００２７】
（１）プライマリスレッドの動作
入力部４からＣＰＵ１にプライマリスレッドの実行を指示するイベントが供給されると、ＣＰＵ１は図３に図示するステップＳＡ１に進み、ＲＡＭ３のワークエリアに設けられる各種レジスタ・フラグデータをイニシャライズする。続いて、ステップＳＡ２では、スレッドの優先順位を表すポインタｎに「１」をストアする。次いで、ステップＳＡ３では、各スレッド（送信スレッド、演奏スレッドおよびファイルスレッド）を起動する。そして、ステップＳＡ４以降では、ポインタｎの値で指定される優先順位のスレッドがセマフォを取得している場合にそのスレッドの実行指示を与える。以下、ポインタｎの値で指定される優先順位毎に分けて動作説明を進める。
【００２８】
ａ．ポインタｎの値が「１」の場合
ポインタｎの値が「１」であると、ステップＳＡ４の判断結果が「ＹＥＳ」になり、ステップＳＡ５に進む。ステップＳＡ５では、優先順位１位の送信スレッドが待ち状態であるか否か判断する。待ち状態とは、ＲＡＭ３の記憶エリアＥ６に設けられる送信バッファに、送信すべきデータがセットされるのを待つ状態を指す。なお、送信バッファには、後述するように、演奏スレッドが演奏データを、ファイルスレッドが１パケット分のファイルデータをセットするようになっている。
【００２９】
上記ステップＳＡ５において、待ち状態でなければ、判断結果が「ＮＯ」になり、ステップＳＡ６に進む。ステップＳＡ６では、セマフォ待ちであるかどうかを判断する。セマフォ待ちとは、他のスレッドが送信セマフォを返却するのを待つ状態を指す。具体的には、送信セマフォの返却によりＲＡＭ３の記憶エリアＥ２に設けられるセマフォがインクリメントされて「１」に戻るまで待機する。ＲＡＭ３の記憶エリアＥ２に設けられるセマフォが「１」であれば、ここでの判断結果は「ＮＯ」になり、ステップＳＡ７に進み、送信スレッドの実行を指示した後、上述のステップＳＡ５に処理を戻す。
【００３０】
一方、送信スレッドが「待ち状態」あるいは「セマフォ待ち」であると、上記ステップＳＡ５あるいはステップＳＡ６のいずれかの判断結果が「ＹＥＳ」になり、ステップＳＡ８に進み、ポインタｎをインクリメントして優先順位を歩進させる。次いで、ステップＳＡ９では、歩進された優先順位が「４」、つまりポインタｎの歩進が一巡したかどうかを判断する。一巡していなければ、判断結果は「ＮＯ」になり、上述のステップＳＡ４に処理を戻す。これに対し、ポインタｎの歩進が一巡した場合には、上記ステップＳＡ９の判断結果が「ＹＥＳ」となり、次のステップＳＡ１０に進み、ポインタｎの値を「１」にリセットしてから上述のステップステップＳＡ４に処理を戻す。
【００３１】
以上のように、ポインタｎの値が「１」の場合には、優先順位１位の送信スレッドが送信すべきデータを有し、かつセマフォ待ちでなければ、送信スレッドの実行を指示し、一方、送信スレッドが「待ち状態」あるいは「セマフォ待ち」ならば、送信スレッドを実行させずにポインタｎの値（優先順位）を歩進させるようになっている。
【００３２】
ｂ．ポインタｎの値が「２」の場合
ポインタｎの値が「２」であると、上述したステップＳＡ４の判断結果が「ＮＯ」になり、図４に図示するステップＳＡ１１に進む。ステップＳＡ１１では、ポインタｎの値が「２」であるか否かを判断する。この場合、判断結果は「ＹＥＳ」になり、ステップＳＡ１２に進む。ステップＳＡ１２では、優先順位２位の演奏スレッドが「待ち状態」であるか否か判断する。ここで、待ち状態とは、予約演奏時刻までの時刻待ちを指す。待ち状態でなければ、判断結果は「ＮＯ」になり、ステップＳＡ１３に進み、「セマフォ待ち」であるかどうかを判断する。セマフォを取得していれば、判断結果は「ＮＯ」になり、ステップＳＡ１４に進み、演奏スレッドの実行を指示した後、上述のステップＳＡ１２に処理を戻す。一方、演奏スレッドが「待ち状態」あるいは「セマフォ待ち」であると、上記ステップＳＡ１２あるいはステップＳＡ１３のいずれかの判断結果が「ＹＥＳ」になり、前述したステップＳＡ８（図３参照）に処理を戻して優先順位を歩進させる。
【００３３】
以上のように、ポインタｎの値が「２」の場合には、優先順位２位の演奏スレッドが予約演奏時刻に達し、かつセマフォを取得していれば、演奏スレッドの実行を指示し、一方、演奏スレッドが「待ち状態」あるいは「セマフォ待ち」ならば、演奏スレッドを実行させずにポインタｎの値（優先順位）を歩進させるようになっている。
【００３４】
ｃ．ポインタｎの値が「３」の場合
ポインタｎの値が「３」であると、上述したステップＳＡ４（図３参照）およびステップＳＡ１１（図４参照）の各判断結果がそれぞれ「ＮＯ」になり、ステップＳＡ１５に進む。ステップＳＡ１５では、優先順位３位のファイルスレッドが「待ち状態」であるか否か判断する。ここで、待ち状態とは、転送すべきファイルを待つ状態を指す。待ち状態でなければ、判断結果は「ＮＯ」になり、ステップＳＡ１６に進み、「セマフォ待ち」であるかどうかを判断する。セマフォを取得していれば、判断結果は「ＮＯ」になり、ステップＳＡ１７に進み、ファイルスレッドの実行を指示した後、上述のステップＳＡ１５に処理を戻す。一方、ファイルスレッドが「待ち状態」あるいは「セマフォ待ち」であると、上記ステップＳＡ１５あるいはステップＳＡ１６のいずれかの判断結果が「ＹＥＳ」になり、前述したステップＳＡ８（図３参照）に処理を戻して優先順位を歩進させる。
【００３５】
このように、ポインタｎの値が「３」の場合には、優先順位３位のファイルスレッドが転送すべきファイルを有し、かつセマフォを取得していれば、ファイルスレッドの実行を指示し、一方、ファイルスレッドが「待ち状態」あるいは「セマフォ待ち」ならば、ファイルスレッドを実行させずにポインタｎの値（優先順位）を歩進させるようになっている。
【００３６】
（２）送信スレッドの動作
次に、図５を参照して送信スレッドの動作を説明する。上述したプライマリスレッドのステップＳＡ３（図３参照）にて起動される送信スレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図５に図示するステップＳＢ１に処理を進め、ＲＡＭ３の記憶エリアＥ６に設けられる送信バッファをクリアする初期化を行う。次いで、ステップＳＢ２では、送信バッファに送信すべきデータがセットされているか否かを判断する。後述するように、送信バッファには、演奏スレッドによりキューの演奏データがストアされるか、若しくはファイルスレッドによりファイルバッファのデータがストアされる。
【００３７】
送信バッファに送信すべきデータがセットされていなければ、判断結果は「ＮＯ」になり、ステップＳＢ３に進み、キューの演奏データもしくはファイルバッファのデータが送信バッファにストアされるまで待機する。そして、送信バッファに送信すべきデータがセットされると、上記ステップＳＢ２の判断結果が「ＹＥＳ」になり、ステップＳＢ４に進む。そして、ステップＳＢ４では、送信バッファにセットされたデータを、送受信部７を介してスレーブ側の電子楽器１００に送信した後、ステップＳＢ２に処理を戻す。なお、上記ステップＳＢ４のデータ送信時には、図２に図示したように、送信すべきデータ本体ＤＡＴＡ（演奏データ又はファイルデータ）にヘッダＨＤおよびリザルトＲを付加した転送パケットを形成してスレーブ側に送出する。
【００３８】
このように、優先順位１位の送信スレッドでは、送信バッファに送信すべきデータがセットされていると、プライマリスレッドからの実行指示に応じて、即座に送信バッファのデータを転送パケットとしてスレーブ側に送出するようになっている。
【００３９】
（３）演奏スレッドの動作
次に、図６を参照して演奏スレッドの動作を説明する。上述したプライマリスレッドのステップＳＡ３（図３参照）にて起動される演奏スレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図６に図示するステップＳＣ１に処理を進め、ＲＡＭ３の記憶エリアＥ３に設けられるキューをクリアする初期化を行う。次いで、ステップＳＣ２では、現在時刻がＲＡＭ３の記憶エリアＥ５にストアされる予約演奏時刻に達したか否かを判断する。現在時刻が予約演奏時刻に達していなければ、判断結果は「ＮＯ」になり、ステップＳＣ３に進み、現在時刻が予約演奏時刻に達するまで待機する。
【００４０】
そして、現在時刻が予約演奏時刻に達すると、上記ステップＳＣ２の判断結果が「ＹＥＳ」になり、ステップＳＣ４に進む。ステップＳＣ４〜ＳＣ６では、ＲＡＭ３の記憶エリアＥ１（図２参照）に格納される演奏データの内、現在時刻以前の演奏データを順次読み出してＲＡＭ３の記憶エリアＥ３に設けられるキューにストアする。そして、記憶エリアＥ１から読み出す演奏データの演奏時刻が現在時刻を過ぎると、ステップＳＣ５の判断結果が「ＮＯ」になり、ステップＳＣ７に進む。ステップＳＣ７では、演奏時刻が現在時刻以後の演奏データをＲＡＭ３の記憶エリアＥ１に戻し、続くステップＳＣ８では、ＲＡＭ３の記憶エリアＥ１に戻した演奏データの演奏時刻（次の演奏時刻）を予約演奏時刻としてＲＡＭ３の記憶エリアＥ５にストアする。
【００４１】
次いで、ステップＳＣ９では送信セマフォを取得し、続くステップＳＣ１０ではキューに格納された演奏データをＲＡＭ３の記憶エリアＥ６に設けられる送信バッファにストアする。そうすると、前述した送信スレッド（図５参照）が送信バッファのデータを、送受信部７を介してスレーブ側の電子楽器１００に送信する（ステップＳＣ１１）。次に、ステップＳＣ１２では、キューに格納された演奏データが全て送信されたか否かを判断する。全て送信されていなければ、判断結果は「ＮＯ」になり、上記ステップＳＣ１０に処理を戻す。
【００４２】
以後、キューに格納された演奏データが全て送信される迄、ステップＳＣ１０〜ＳＣ１２を繰り返す。そして、キューに格納された演奏データを全て送信し終えると、ステップＳＣ１２の判断結果が「ＹＥＳ」になり、ステップＳＣ１３に進み、送信セマフォを返却する。すなわち、ＲＡＭ３の記憶エリアＥ２に設けられるセマフォをインクリメントして「１」に戻した後、上述のステップＳＣ２に処理を戻す。
【００４３】
このように、演奏スレッドでは、現在時刻が予約演奏時刻に達する毎に、現在時刻以前の演奏データをキューに格納すると同時に、演奏時刻が現在時刻以後の演奏データを次の演奏時刻を表す予約演奏時刻としてＲＡＭ３の記憶エリアＥ５にストアする。そして、送信セマフォを取得してキューの演奏データを送信バッファにストアすると、前述した送信スレッドによって送信バッファのデータがスレーブ側の電子楽器１００に送信される。
【００４４】
（４）ファイルスレッドの動作
次に、図７を参照してファイルスレッドの動作を説明する。上述したプライマリスレッドのステップＳＡ３（図３参照）にて起動されるファイルスレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図７に図示するステップＳＤ１に処理を進め、ＲＡＭ３の記憶エリアＥ４に設けられるファイルバッファをクリアする初期化を行う。続いて、ステップＳＤ２では、転送すべきファイルが用意されているか、つまり記憶部５の格納される各種ファイルの内から転送するファイルが指定されているかどうかを判断する。転送すべきファイルが用意されていなければ、判断結果は「ＮＯ」になり、ステップＳＤ３に進み、転送ファイルが指定されるのを待つ。
【００４５】
そして、転送ファイルが指定され、これにより転送すべきファイルが用意されると、上記ステップＳＤ２の判断結果が「ＹＥＳ」になり、ステップＳＤ４に進む。ステップＳＤ４では、指定されたファイルを記憶部５から読み出してＲＡＭ３の記憶エリアＥ４（図２参照）に設けられるファイルバッファにストアする。次いで、ステップＳＤ５では、ファイルバッファから１パケット分のデータを読み出してＲＡＭ３の記憶エリアＥ６（図２参照）に設けられる送信バッファにセットする。
【００４６】
この後、ステップＳＤ６に進み、送信セマフォを取得する。ファイルスレッドが送信セマフォを取得すると、前述した送信スレッド（図５参照）が送信バッファのデータを、送受信部７を介してスレーブ側の電子楽器１００に送信する（ステップＳＤ７）。次に、ステップＳＤ８に進み、送信セマフォを返却する。すなわち、ＲＡＭ３の記憶エリアＥ２に設けられるセマフォをインクリメントして「１」に戻した後、上述のステップＳＤ２に処理を戻す。
【００４７】
このように、ファイルスレッドでは、転送すべきファイルが用意されるまで待ちの状態となり、転送ファイルが用意されると、そのファイルの内容を記憶部５から読み出して一旦ファイルバッファにストアしてから、このファイルバッファから１パケット分のデータを読み出して送信バッファにセットする。そして、送信セマフォを取得すると、前述した送信スレッドが送信バッファのデータを、送受信部７を介してスレーブ側の電子楽器１００に送信した後に、送信セマフォを返却する。
【００４８】
（５）受信処理の動作
次に、図８を参照して受信処理の動作を説明する。ここでは、電子楽器１００をマスターとした場合に、スレーブ側のＤＴＭ装置１０が実行する受信処理の動作を説明する。入力部４からＣＰＵ１に受信処理の実行を指示するイベントが供給されると、ＣＰＵ１は図８に図示するてステップＳＥ１に進み、送受信部７が備える受信バッファを初期化する。次いで、ステップＳＥ２では、転送データの受信の有無を判断する。転送データを受信していなければ、判断結果は「ＮＯ」になり、ステップＳＥ３に進み、転送データ待ちの状態となって上記ステップＳＥ２に処理を戻す。
【００４９】
そして、転送データを受信すると、ステップＳＥ２の判断結果が「ＹＥＳ」になり、ステップＳＥ４に進む。ステップＳＥ４では、受信した転送データに付加されるヘッダＨＤ中のデータ種類（図２参照）に基づき、当該転送データが演奏データであるか否かを判断する。演奏データであると、判断結果は「ＹＥＳ」になり、ステップＳＥ５に進み、演奏データ中の演奏時刻にイベント処理する演奏処理を行ってから上述のステップＳＥ２に戻る。一方、ファイルデータの場合には、上記ステップＳＥ４の判断結果が「ＮＯ」になり、ステップＳＥ６に進み、例えば１パケット分ずつ転送されるファイルデータ（音色変更用の波形データ）を集積して１つの波形データを形成するファイル処理行ってから上述のステップＳＥ２に戻る。
【００５０】
以上説明したように、第１実施形態では、演奏データをスレーブ側に送出する演奏スレッドが待ち状態の時に、ファイルスレッドがファイルバッファから小分けしたファイルデータ（１パケット）を送信バッファにセットして送信セマフォを取得すると、送信スレッドが送信バッファのデータをスレーブ側の電子楽器１００に送信する。つまり、演奏データをスレーブ側に送出する合間に小分けしたファイルデータ（１パケット）を転送するので、演奏遅延を招くことなくファイル転送が可能になっている。
【００５１】
［第２実施形態］
次に、図９を参照して第１実施形態と相違する第２実施形態によるファイルスレッドの動作について説明する。なお、第２実施形態の構成は、第１実施形態と共通するので、その説明については省略する。前述した第１実施形態と同様に、プライマリスレッドのステップＳＡ３（図３参照）にて起動されるファイルスレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図９に図示するステップＳＦ１に処理を進め、ＲＡＭ３の記憶エリアＥ４に設けられるファイルバッファをクリアする初期化を行う。続いて、ステップＳＦ２では、転送すべきファイルが用意されているか、つまり記憶部５の格納される各種ファイルの内から転送するファイルが指定されているかどうかを判断する。転送すべきファイルが用意されていなければ、判断結果は「ＮＯ」になり、ステップＳＦ３に進み、転送ファイルが指定されるのを待つ。
【００５２】
そして、転送ファイルが指定され、これにより転送すべきファイルが用意されると、上記ステップＳＦ２の判断結果が「ＹＥＳ」になり、ステップＳＦ４に進む。ステップＳＦ４では、指定されたファイルを記憶部５から読み出してＲＡＭ３の記憶エリアＥ４（図２参照）に設けられるファイルバッファにストアする。次いで、ステップＳＦ５〜ＳＦ６では、ＲＡＭ３の記憶エリアＥ５にストアされる予約演奏時刻を読み出し、現在時刻から予約演奏時刻までの時間がパケット転送時間以下であるか否かを判断する。つまり、次の演奏時間に達する前に１パケット分のファイルデータを転送できるかどうかを判断する。
【００５３】
次の演奏時間に達する前に１パケット分のファイルデータを転送できない場合には、ステップＳＦ６の判断結果が「ＹＥＳ」になり、ステップＳＦ７に進む。ステップＳＦ７〜ＳＦ８では、次の演奏時間に達するまで待機する。待機後にステップＳＦ７の判断結果が「ＹＥＳ」になり、ステップＳＦ５に進み、新たに予約演奏時刻を読み出す。これにより、次の演奏時間に達する前に１パケット分のファイルデータを転送できるようになると、ステップＳＦ６の判断結果が「ＮＯ」となり、ステップＳＦ９に進む。ステップＳＦ９では、ファイルバッファから１パケット分のデータを読み出してＲＡＭ３の記憶エリアＥ６（図２参照）に設けられる送信バッファにセットする。
【００５４】
この後、ステップＳＦ１０に進み、送信セマフォを取得する。ファイルスレッドが送信セマフォを取得すると、前述した送信スレッド（図５参照）が送信バッファのデータを、送受信部７を介してスレーブ側の電子楽器１００に送信する（ステップＳＦ１１）。そして、ステップＳＦ１２では、送信セマフォを返却する。すなわち、ＲＡＭ３の記憶エリアＥ２に設けられるセマフォをインクリメントして「１」に戻した後、上述のステップＳＦ２に処理を戻す。
【００５５】
このように、第２実施形態では、演奏スレッドが演奏データをスレーブ側に転送している過程で、ファイルスレッドが次の演奏時間に達する前に１パケット分のファイルデータを転送できる余裕（転送時間）の有無を判断し、その余裕が有る場合に１パケット分のファイルデータを転送する為、演奏遅延を招くことなくファイル転送が可能になる。
【００５６】
［第３実施形態］
次に、図１０〜図１４を参照して第３実施形態について説明する。前述した第１および第２実施形態は、予めＲＡＭ３の記憶エリアＥ１（図２参照）に記憶される演奏データの演奏時刻を参照して演奏データをスレーブ側に転送する合間にファイル転送を可能したものであるから、前述したＤＴＭ装置１０（図１参照）が鍵盤を備え、この鍵盤の押離鍵操作（リアルタイム演奏）に応じて発生する演奏データには対応することが出来ない。そこで、第３実施形態では、リアルタイム演奏に対応可能な送信スレッド、演奏スレッド、ファイルスレッドおよび受信処理の各動作について述べる。
【００５７】
（１）送信スレッドの動作
図１０を参照して第３実施形態による送信スレッドの動作を説明する。前述の第１実施形態と同様、プライマリスレッドのステップＳＡ３（図３参照）にて起動される送信スレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図１０に図示するステップＳＧ１に処理を進め、ＲＡＭ３の記憶エリアＥ６に設けられる送信バッファをクリアする初期化を行う。次いで、ステップＳＧ２では、ファイルバッファに送信すべきファイルデータがセットされているか否かを判断する。後述するように、ファイルバッファには、ファイルスレッドによりファイルデータがストアされる。
【００５８】
ファイルバッファに送信すべきデータがセットされていなければ、判断結果は「ＮＯ」になり、ステップＳＧ３に進み、ＲＡＭ３の記憶エリアＥ３に設けられるキューに送信すべき演奏データがセットされているか否かを判断する。キューに送信すべき演奏データがセットされていなければ、判断結果は「ＮＯ」になり、ステップＳＧ４に進み、データ待ちの状態、すなわちファイルバッファにファイルデータがセットされるか、あるいはキューに演奏データがセットされるまで待機する。以下、ファイルバッファにファイルデータがセットされた場合の動作と、キューに演奏データがセットされた場合の動作とに分けて説明を進める。
【００５９】
ａ．ファイルバッファにファイルデータがセットされた場合の動作
この場合、上記ステップＳＧ２の判断結果が「ＹＥＳ」になり、ステップＳＧ５に進む。ステップＳＧ５では、ＲＡＭ３の記憶エリアＥ６に設けられる送信バッファから１バイト分のファイルデータを取り出す。後述するように、送信バッファには、ファイルスレッドによりファイルバッファから読み出したファイルデータがストアされる。次いで、ステップＳＧ６では、送信バッファから取り出すべきファイルデータの有無を判断する。ここで、送信バッファから取り出すべきファイルデータが無くなると、判断結果は「ＹＥＳ」となり、上述のステップＳＧ２に処理を戻す。一方、取り出すべきファイルデータが有れば、判断結果は「ＮＯ」になり、ステップＳＧ７に進む。
【００６０】
ステップＳＧ７では、送信すべき演奏データがキューにセットされているか否かを判断するが、ここでは送信すべき演奏データがキューにセットされていない状態を想定しているので、判断結果は「ＮＯ」になり、ステップＳＧ８に進む。ステップＳＧ８では、送信バッファから取り出した１バイト分のファイルデータが、ファイル転送開始を表すブレークコード（例えば、０ｘＦＦ）であるか否か、つまり言い換えれば転送するファイルデータの先頭であるかどうかを判断する。ファイルデータの先頭であると、判断結果は「ＹＥＳ」になり、ステップＳＧ９に進み、同じブレークコードを２回繰り返してスレーブ側に送信した後、前述のステップＳＧ３に処理を戻す。なお、スレーブ側では、連続するブレークコードを受信することでファイルデータ転送を識別するようになっており、そうした受信処理については後述する。
【００６１】
一方、送信バッファから取り出した１バイト分のファイルデータが、ファイル転送開始を表すブレークコードでなければ、上記ステップＳＫ８の判断結果は「ＮＯ」になり、ステップＳＧ１０に進み、その１バイト分のファイルデータをスレーブ側に送信した後、前述のステップＳＧ５に処理を戻す。これ以後、送信バッファにセットされたファイルデータが無くなるまで１バイトづつスレーブ側に送信する。
【００６２】
＜キューに演奏データがセットされた場合の動作＞
以上のようにしてファイルデータを１バイト単位で送信している時に、キューに演奏データがセットされたとする。そうすると、ステップＳＧ７の判断結果が「ＹＥＳ」になり、ステップＳＧ１１に進む。もしくはファイルバッファに送信すべきデータがセットされていない状態でキューに演奏データがセットされると、ステップＳＧ３の判断結果が「ＹＥＳ」になり、ステップＳＧ１１に進む。ステップＳＧ１１では、キューから演奏データを取り出し、続くステップＳＧ１２では、その取り出した演奏データの先頭に転送開始を表すブレークコード（例えば、０ｘＦＦ）を付加する。そして、ステップＳＧ１３では、先頭にブレークコードが付加された演奏データをスレーブ側に送出した後、前述のステップＳＧ２に処理を戻す。
【００６３】
このように、送信スレッドでは、リアルタイム演奏に応じて発生する演奏データをキューにセットする毎に、このキューの演奏データの先頭に転送開始を表すブレークコードを付加してスレーブ側へ送信する一方、演奏データが送信されていない合間に、連続するブレークコードを送信してから送信バッファから１バイトずつ読み出すファイルデータを順次送信する。
【００６４】
（２）演奏スレッドの動作
次に、図１１を参照して第３実施形態による演奏スレッドの動作を説明する。前述の第１実施形態と同様、プライマリスレッドのステップＳＡ３（図３参照）にて起動される演奏スレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図１１に図示するステップＳＨ１に処理を進め、ＲＡＭ３の記憶エリアＥ３に設けられるキューをクリアする初期化を行う。次いで、ステップＳＨ２では、リアルタイム演奏が行われたか否かを判断する。リアルタイム演奏が行われていなければ、判断結果は「ＮＯ」になり、ステップＳＨ３に進み、リアルタイム演奏が行われるまで待機する。そして、リアルタイム演奏が行われると、上記ステップＳＨ２の判断結果が「ＹＥＳ」になり、ステップＳＨ４に進み、リアルタイム演奏に応じて発生する演奏データを、ＲＡＭ３の記憶エリアＥ３に設けられるキューにストアして上述のステップＳＨ２に処理を戻す。
【００６５】
（３）ファイルスレッドの動作
次に、図１２を参照して第３実施形態によるファイルスレッドの動作を説明する。前述の第１実施形態と同様、プライマリスレッドのステップＳＡ３（図３参照）にて起動されるファイルスレッドは、プライマリスレッドのステップＳＡ７（図３参照）の実行指示に従い、図１２に図示するステップＳＪ１に処理を進め、ＲＡＭ３の記憶エリアＥ４に設けられるファイルバッファをクリアする初期化を行う。続いて、ステップＳＪ２では、転送すべきファイルが用意されているか、つまり記憶部５の格納される各種ファイルの内から転送するファイルが指定されているかどうかを判断する。転送すべきファイルが用意されていなければ、判断結果は「ＮＯ」になり、ステップＳＪ３に進み、転送ファイルが指定されるのを待つ。
【００６６】
そして、転送ファイルが指定され、これにより転送すべきファイルが用意されると、上記ステップＳＪ２の判断結果が「ＹＥＳ」になり、ステップＳＪ４に進む。ステップＳＪ４では、指定されたファイルを記憶部５から読み出してＲＡＭ３の記憶エリアＥ４に設けられるファイルバッファにストアする。次いで、ステップＳＪ５では、ファイルバッファから所定サイズ分のファイルデータを読み出してＲＡＭ３の記憶エリアＥ６に設けられる送信バッファにセットした後、上述のステップＳＪ２に処理を戻す。
【００６７】
（４）受信処理の動作
次に、図１３〜図１４を参照して第３実施形態による受信処理の動作を説明する。ここでは、電子楽器１００をマスターとした場合に、スレーブ側のＤＴＭ装置１０が実行する受信処理の動作を説明する。入力部４からＣＰＵ１に受信処理の実行を指示するイベントが供給されると、ＣＰＵ１は図１３に図示するてステップＳＫ１に進み、後述するレジスタ１およびレジスタ２をゼロリセットする初期化を行う。続いて、ステップＳＫ２では、マスター側から１バイト分のデータを受信したか否かを判断する。受信していなければ、判断結果は「ＮＯ」になり、ステップＳＫ３に進み、転送データ待ちの状態となって上記ステップＳＫ２に処理を戻す。
【００６８】
そして、１バイト分のデータを受信すると、ステップＳＫ２の判断結果が「ＹＥＳ」になり、ステップＳＫ４に進み、受信した１バイト分のデータをレジスタ１にストアする。次いで、ステップＳＫ５では、レジスタ１にストアしたデータがブレークコードであるか否かを判断する。ブレークコードであると、判断結果は「ＹＥＳ」になり、ステップＳＫ６に進む。ステップＳＫ６では、レジスタ１にストアしたデータとレジスタ２の内容とが一致するか否かを判断する。最初の１バイト分のデータを受信した状態では、レジスタ２は上記ステップＳＫ１にてゼロリセットされたままなので、判断結果は「ＮＯ」になり、ステップＳＫ９に進み、フラグＦに「１」をセットする。なお、フラグＦは「１」の場合に受信したデータが「演奏データ」である旨を表し、「０」の場合に「ファイルデータ」である旨を表す。
【００６９】
次に、ステップＳＫ１０に進み、レジスタ１の内容をレジスタ２に入れ替えてから上記ステップＳＫ２に処理を戻す。そしてこの後、次の１バイト分のデータを受信し、これがブレークコードに一致しなければ、上記ステップＳＧ５の判断結果が「ＮＯ」になり、図１４に図示するステップＳＫ１１に進む。ステップＳＫ１１では、フラグＦが「０」、すなわちファイルデータであるか否かを判断する。上述したように、ブレークコードで始る演奏データを受信した場合には、フラグＦが「１」にセットされるので、判断結果は「ＮＯ」になり、ステップＳＫ１５に進み、受信した１バイト分のデータを、演奏データとしてＲＡＭ３の記憶エリアＥ１にストアする。
【００７０】
次いで、ステップＳＫ１６では、演奏データサイズまでストアしたか否かを判断する。演奏データサイズまでストアしていなければ、判断結果は「ＮＯ」になり、上述のステップＳＫ２（図１３参照）に処理を戻してデータ受信を繰り返す。そして、演奏データサイズまで演奏データを受信し終えると、上記ステップＳＫ１６の判断結果が「ＹＥＳ」になり、ステップＳＫ１７に進み、ＲＡＭ３の記憶エリアＥ１にストアした演奏データを解釈実行する演奏処理を行ってから上述のステップＳＫ２に戻る。
【００７１】
さて一方、上記ステップＳＫ１０（図１３参照）において、レジスタ１の内容をレジスタ２に入れ替えてから上記ステップＳＫ２に処理を戻した後に受信した１バイト分のデータがブレークコードに一致すると、上述したステップＳＫ５の判断結果が「ＹＥＳ」になり、ステップＳＫ６に進む。ステップＳＫ６では、レジスタ１の内容とレジスタ２の内容とが一致するか否かを判断する。そして、前回受信した１バイト分のデータがブレークコードであって、今回受信した１バイト分のデータもブレークコードであると、レジスタ１の内容とレジスタ２の内容とが一致して上記ステップＫ６の判断結果が「ＹＥＳ」となり、ステップＳＨ７に進む。ステップＳＨ７では、フラグＦに「０」をセットしてファイルデータ受信であることを表す。
【００７２】
次いで、ステップＳＫ８では、受信した１バイト分のデータをファイルデータとしてＲＡＭ３の記憶エリアＥ４に設けられるファイルバッファにストアする。この後、ステップＳＫ１０に進み、レジスタ１の内容をレジスタ２に入れ替えてから上記ステップＳＫ２に処理を戻す。そして、再び受信した１バイト分のデータがブレークコードに一致しなければ、上述したステップＳＫ５の判断結果が「ＮＯ」になり、図１４に図示するステップＳＫ１１に進む。この場合、フラグＦは「０」にセットされている為、このステップＳＫ１１の判断結果は「ＹＥＳ」になり、ステップＳＫ１２に進み、受信した１バイト分のデータをファイルデータとしてＲＡＭ３の記憶エリアＥ４に設けられるファイルバッファにストアする。
【００７３】
続いて、ステップＳＫ１３では、ファイルサイズまでストアしたか否かを判断する。ファイルサイズまでストアしていなければ、判断結果は「ＮＯ」になり、上述のステップＳＫ２（図１３参照）に処理を戻してデータ受信を繰り返す。そして、ファイルサイズまでファイルデータを受信し終えると、上記ステップＳＫ１３の判断結果が「ＹＥＳ」になり、ステップＳＫ１４に進み、例えば１バイトずつ転送されるファイルデータ（音色変更用の波形データ）を集積して１つの波形データを形成するファイル処理行ってから上述のステップＳＫ２に戻る。
【００７４】
以上説明したように、第３実施形態では、リアルタイム演奏に応じて発生する演奏データをキューにセットする毎に、このキューの演奏データの先頭に転送開始を表すブレークコードを付加してスレーブ側に送信し、演奏データの送信の合間には、連続する２つのブレークコードに続けてファイバッファから１バイトずつ読み出すファイルデータをスレーブ側に送信する。そして、スレーブ側は、マスター側から１バイトずつ転送されて来るデータを順次受信し、ブレークコードが２つ連続した場合にはそれ以降をファイルデータとして格納し、一方、ブレークコードが１つの場合にはそれ以降を演奏データとして格納する。これにより、リアルアイム演奏に応じて発生する演奏データをスレーブ側に送信でき、しかも演奏遅延を招くことなくファイル転送が可能になっている。
【図面の簡単な説明】
【００７５】
【図１】本発明による第１実施形態の構成を示すブロック図である。
【図２】ＲＡＭ３の主要データ構成を示す図である。
【図３】プライマリスレッドの動作を示すフローチャートである。
【図４】プライマリスレッドの動作を示すフローチャートである。
【図５】送信スレッドの動作を示すフローチャートである。
【図６】演奏スレッドの動作を示すフローチャートである。
【図７】ファイルスレッドの動作を示すフローチャートである。
【図８】受信処理の動作を示すフローチャートである。
【図９】第２実施形態によるファイルスレッドの動作を示すフローチャートである。
【図１０】第３実施形態による送信スレッドの動作を示すフローチャートである。
【図１１】第３実施形態による演奏スレッドの動作を示すフローチャートである。
【図１２】第３実施形態によるファイルスレッドの動作を示すフローチャートである。
【図１３】第３実施形態による受信処理の動作を示すフローチャートである。
【図１４】第３実施形態による受信処理の動作を示すフローチャートである。
【符号の説明】
【００７６】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  入力部
５  記憶部
６  表示部
７  送受信部
１０  ＤＴＭ装置
１００  電子楽器
【図１】
2007057627.tif 000003
【図２】
2007057627.tif 000004
【図３】
2007057627.tif 000005
【図４】
2007057627.tif 000006
【図５】
2007057627.tif 000007
【図６】
2007057627.tif 000008
【図７】
2007057627.tif 000009
【図８】
2007057627.tif 000010
【図９】
2007057627.tif 000011
【図１０】
2007057627.tif 000012
【図１１】
2007057627.tif 000013
【図１２】
2007057627.tif 000014
【図１３】
2007057627.tif 000015
【図１４】
2007057627.tif 000016