米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 楽器;音響 -> カシオ計算機株式会社

発明の名称 データ転送装置、データ送受信装置、データ転送プログラムおよびデータ送受信プログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−57627(P2007−57627A)
公開日 平成19年3月8日(2007.3.8)
出願番号 特願2005−240540(P2005−240540)
出願日 平成17年8月23日(2005.8.23)
代理人 【識別番号】100096699
【弁理士】
【氏名又は名称】鹿嶋 英實
発明者 佐々木 博之
要約 課題
演奏遅延を招くことなくファイル転送できるデータ転送装置を実現する。

解決手段
マスター側のDTM装置10からスレーブ側の電子楽器100にデータ転送する場合において、演奏データをスレーブ側に送出する演奏スレッドが待ちの状態である時に、ファイルスレッドがファイルバッファから小分けしたファイルデータ(1パケット)を送信バッファにセットして送信セマフォを取得すると、送信スレッドが送信バッファのデータをスレーブ側の電子楽器100に送信する。つまり、演奏データをスレーブ側に送出する合間に小分けしたファイルデータ(1パケット)を転送する結果、演奏遅延を招くことなくファイル転送が可能になる。
特許請求の範囲
【請求項1】
転送すべきデータを一時記憶する転送データ記憶手段と、
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、
前記演奏データ格納手段が待ち状態の時に送信権を取得して転送すべきファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、
前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段と
を具備することを特徴とするデータ転送装置。
【請求項2】
転送すべきデータを一時記憶する転送データ記憶手段と、
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、
前記演奏データ格納手段が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、
前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段と
を具備することを特徴とするデータ転送装置。
【請求項3】
前記演奏データ格納手段は、前記転送データ記憶手段に格納した演奏データが前記送信手段により送信された場合に送信権を返却することを特徴とする請求項1又は2のいずれかに記載のデータ転送装置。
【請求項4】
前記ファイルデータ格納手段は、前記転送データ記憶手段に格納したファイルデータが前記送信手段により送信された場合に送信権を返却することを特徴とする請求項1又は2のいずれかに記載のデータ転送装置。
【請求項5】
演奏操作に応じた演奏データを発生する演奏データ発生手段と、
前記演奏データ発生手段により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、
前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段と
を具備することを特徴とするデータ転送装置。
【請求項6】
演奏操作に応じた演奏データを発生する演奏データ発生手段と、
前記演奏データ発生手段により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、
前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段と、
所定単位長毎のデータを受信する受信手段と、
前記受信手段が連続する2つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納手段と、
前記受信手段が1つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納手段と
を具備することを特徴とするデータ送受信装置。
【請求項7】
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、
前記演奏データ格納処理が待ち状態の時に送信権を取得して転送すべきファイルデータを一時記憶するファイルデータ格納処理と、
前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶されたファイルデータを送信する送信処理と
をコンピュータで実行させることを特徴とするデータ転送プログラム。
【請求項8】
転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、
前記演奏データ格納処理が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを一時記憶するファイルデータ格納処理と、
前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶された所定量のファイルデータを送信する送信処理と
をコンピュータで実行させることを特徴とするデータ転送プログラム。
【請求項9】
演奏操作に応じた演奏データを発生する演奏データ発生処理と、
前記演奏データ発生処理により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、
前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理と
をコンピュータで実行させることを特徴とするデータ転送プログラム。
【請求項10】
演奏操作に応じた演奏データを発生する演奏データ発生処理と、
前記演奏データ発生処理により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、
前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理と、
所定単位長毎のデータを受信する受信処理と、
前記受信処理が連続する2つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納処理と、
前記受信処理が1つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納処理と
をコンピュータで実行させることを特徴とするデータ送受信プログラム。
発明の詳細な説明
【技術分野】
【0001】
本発明は、演奏データやファイルデータを授受する機能を備えた電子楽器等に用いて好適なデータ転送装置、データ送受信装置、データ転送プログラムおよびデータ送受信プログラムに関する。
【背景技術】
【0002】
DTM(デスクトップミュージック)装置や電子楽器は、MIDIインタフェースを介して演奏データ(MIDIイベント)を授受したり、システムエクスクルーシブメッセージを用いて波形データをファイル転送するデータ転送装置を備える。この種の装置として、例えば特許文献1には、転送すべき波形データを所定の単位に分割し、それをシステムエクスクルーシブメッセージを用いて転送するものが開示されている。
【0003】
【特許文献1】特開2004−205789号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、マスター(送信側の電子楽器)からスレーブ(受信側の電子楽器)へ演奏データを転送している最中に、例えば音色変更させるべくシステムエクスクルーシブメッセージを用いた波形データのファイル転送を行うと、スレーブがファイル読み込みしている間はマスターから演奏データを転送することが出来ず、その為にスレーブの演奏遅延を招いてしまうという問題が生じる。また、スレーブの演奏遅延を回避するため、マスターからの波形データのファイル転送を禁止すると、スレーブの音色変更を行うことができなくなるという弊害もある。
【0005】
そこで本発明は、このような事情に鑑みてなされたもので、演奏遅延を招くことなくファイル転送することができるデータ転送装置、データ送受信装置、データ転送プログラムおよびデータ送受信プログラムを提供することを目的としている。
【課題を解決するための手段】
【0006】
上記目的を達成するため、請求項1に記載の発明では、転送すべきデータを一時記憶する転送データ記憶手段と、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、前記演奏データ格納手段が待ち状態の時に送信権を取得して転送すべきファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段とを具備することを特徴とする。
【0007】
請求項2に記載の発明では、転送すべきデータを一時記憶する転送データ記憶手段と、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを前記転送データ記憶手段に格納する演奏データ格納手段と、前記演奏データ格納手段が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを前記転送データ記憶手段に格納するファイルデータ格納手段と、前記演奏データ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶された演奏データを送信し、前記ファイルデータ格納手段が送信権を取得している場合に前記転送データ記憶手段に一時記憶されたファイルデータを送信する送信手段とを具備することを特徴とする。
【0008】
上記請求項1又は2のいずれかに従属する請求項3に記載の発明では、前記演奏データ格納手段は、前記転送データ記憶手段に格納した演奏データが前記送信手段により送信された場合に送信権を返却することを特徴とする。
【0009】
上記請求項1又は2のいずれかに従属する請求項4に記載の発明では、前記ファイルデータ格納手段は、前記転送データ記憶手段に格納したファイルデータが前記送信手段により送信された場合に送信権を返却することを特徴とする。
【0010】
請求項5に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生手段と、前記演奏データ発生手段により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段とを具備することを特徴とする。
【0011】
請求項6に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生手段と、前記演奏データ発生手段により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信手段と、前記演奏データ送信手段による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信手段と、所定単位長毎のデータを受信する受信手段と、前記受信手段が連続する2つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納手段と、前記受信手段が1つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納手段とを具備することを特徴とする。
【0012】
請求項7に記載の発明では、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、前記演奏データ格納処理が待ち状態の時に送信権を取得して転送すべきファイルデータを一時記憶するファイルデータ格納処理と、前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶されたファイルデータを送信する送信処理とをコンピュータで実行させることを特徴とする。
【0013】
請求項8に記載の発明では、転送すべき演奏データが生じるまで待ち状態を維持し、転送すべき演奏データが生じると送信権を取得してその転送すべき演奏データを一時記憶する演奏データ格納処理と、前記演奏データ格納処理が待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能であれば送信権を取得してその所定量のファイルデータを一時記憶するファイルデータ格納処理と、前記演奏データ格納処理が送信権を取得している場合に当該演奏データ格納処理にて一時記憶された演奏データを送信し、前記ファイルデータ格納処理が送信権を取得している場合に当該ファイルデータ格納処理にて一時記憶された所定量のファイルデータを送信する送信処理とをコンピュータで実行させることを特徴とする。
【0014】
請求項9に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生処理と、前記演奏データ発生処理により生成される演奏データの先頭に、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理とをコンピュータで実行させることを特徴とする。
【0015】
請求項10に記載の発明では、演奏操作に応じた演奏データを発生する演奏データ発生処理と、前記演奏データ発生処理により生成される演奏データに、転送開始を表す識別コードを付加して送信する演奏データ送信処理と、前記演奏データ送信処理による演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するファイルデータ送信処理と、所定単位長毎のデータを受信する受信処理と、前記受信処理が連続する2つの識別コードを受信した場合には、それ以降に受信されたデータをファイルデータとして格納するファイルデータ格納処理と、前記受信処理が1つの識別コードを受信した場合には、それ以降に受信されたデータを演奏データとして格納する演奏データ格納処理とをコンピュータで実行させることを特徴とする。
【発明の効果】
【0016】
請求項1、7に記載の発明によれば、転送すべき演奏データが生じて送信権を取得すると、一時記憶しておいた転送すべき演奏データを送信し、一方、転送すべき演奏データが生じるまでの待ち状態の時に送信権を取得すると、一時記憶しておいたファイルデータを送信する。したがって、演奏データの送信の合間にファイルデータを送信するので、演奏遅延を招くことなくファイル転送することができる。
【0017】
請求項2、8に記載の発明によれば、転送すべき演奏データが生じて送信権を取得すると、一時記憶しておいた転送すべき演奏データを送信し、一方、転送すべき演奏データが生じるまでの待ち状態の時に、次に転送すべき演奏データが生じるまでの間で所定量のファイルデータが転送可能な場合に送信権を取得すると、一時記憶された所定量のファイルデータを送信するので、演奏遅延を招くことなくファイル転送することができる。
【0018】
請求項5、9に記載の発明によれば、演奏操作に応じて生成される演奏データの先頭に転送開始を表す識別コードを付加して送信し、こうした演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信するので、リアルアイム演奏に応じて発生する演奏データを送信でき、しかも演奏遅延を招くことなくファイル転送することができる。
【0019】
請求項6、10に記載の発明によれば、送信側では演奏操作に応じて生成される演奏データの先頭に転送開始を表す識別コードを付加して送信し、こうした演奏データの送信の合間に、転送開始を表す識別コードを2つ続けて送信した後に所定単位長のファイルデータを送信する。そして、受信側では所定単位長毎のデータを受信し、連続する2つの識別コードを受信した場合にはそれ以降に受信されたデータをファイルデータとして格納し、一方、1つの識別コードを受信した場合にはそれ以降に受信されたデータを演奏データとして格納するので、リアルアイム演奏に応じて発生する演奏データを送信でき、しかも演奏遅延を招くことなくファイル転送することができる。
【発明を実施するための最良の形態】
【0020】
以下、図面を参照して本発明の実施の形態について説明する。
[第1実施形態]
A.構成
(1)全体構成
図1は本発明の第1実施形態によるデータ転送装置を具備するDTM装置10の構成を示すブロック図である。DTM装置10は、CPU1、ROM2、RAM3、入力部4、記憶部5、表示部6および送受信部7を備え、送受信部7を介してスレーブ側の電子楽器100にデータ転送する。CPU1は、マルチスレッドに対応したOS上で複数のスレッド(ソフトウェア実行単位)を時分割に実行して見かけ上、リアルタイム並列処理を実現する。本実施形態では、後述するように、演奏データをスレーブ側に送出する演奏スレッドが待ちの状態となっている合間に、送信セマフォを取得したファイルスレッドが小分けしたファイルデータ(1パケット)をスレーブ側に送出することで演奏遅延を招くことなくファイル転送を可能にするものであり、その詳細については追って述べる。
【0021】
ROM2は、CPU1にロードされる各種制御プログラム等を記憶する。ここで言う各種制御プログラムとは、後述するプライマリスレッド、送信スレッド、演奏スレッド、ファイルスレッドおよび受信処理を含む。なお、プライマリスレッドにより起動される送信スレッド、演奏スレッドおよびファイルスレッドには、それぞれ優先順位1位〜3位が付与されている。RAM3は、CPU1において用いられる各種レジスタ・フラグデータを一時記憶するワークエリアの他、本発明の要旨に係わる各種データをストアする記憶エリアE1〜E6を有する。RAM3の記憶エリアE1〜E6のデータ構成については追って説明する。
【0022】
入力部4は、ユーザ操作に対応した操作イベントを発生してCPU1に供給する。記憶部6は、例えばハードディスク装置等から構成され、各種音色に対応した波形データのファイルを記憶する。記憶部6に記憶される各種音色のファイルは、後述するファイルスレッドの動作により送受信部7を介してスレーブ側の電子楽器100へ転送される。表示部5は、CPU1の制御の下に、例えば転送データの内容や転送動作状況などを画面表示する。送受信部7は、CPU1の制御の下にスレーブ側の電子楽器100とデータ通信する。
【0023】
(2)データ構成
次に、図2を参照してRAM3に設けられる記憶エリアE1〜E6の構成について説明する。記憶エリアE1には演奏データが格納される。演奏データは、曲を構成する各音を表し、曲進行順に配列されるMIDIデータ[0]〜[N]から構成される。1つのMIDIデータは、演奏時刻およびイベントを有する。記憶エリアE2には、スレッド間の競合を回避するためのフラグとして作用するセマフォ(バイナリセマフォ)が格納される。セマフォは、イニシャライズ時に「1」がセットされ、先取したスレッドがそれをデクリメントして「0」にセットし、セマフォ返却時にインクリメントして「1」に戻す。セマフォが「0」の場合、先取したスレッド以外の他のスレッドはセマフォ待ちのアイドル状態で待機する。
【0024】
記憶エリアE3には、キューが設けられる。キューは、スレーブ側へ転送すべく演奏スレッドにより記憶エリアE1から読み出される演奏データを一時記憶するFIFOバッファである。記憶エリアE4には、ファイルバッファが設けられる。ファイルバッファは、スレーブ側へ転送すべくファイルスレッドにより記憶部5から読み出される1セクタ分のファイルデータを一時記憶する。記憶エリアE5には、予約演奏時刻がストアされる。予約演奏時刻とは、次に演奏される演奏データが備える演奏時刻であり、演奏スレッドによりストアされる。記憶エリアE6には、送受信部7を介してスレーブ側へ送出するデータを一時記憶する送信バッファが設けられる。
【0025】
送信バッファには、演奏スレッドにより記憶エリアE3のキューから読み出される演奏データ(MIDIデータ)や、ファイルスレッドにより記憶エリアE4のファイルバッファから読み出されるファイルデータがストアされる。送信バッファにストアされる演奏データあるいはファイルデータは、図2に図示するデータ構成、すなわち送信スレッドによりデータ本体DATA(演奏データ又はファイルデータ)にヘッダHDおよびリザルトRが付加される転送パケットとして形成されてスレーブ側へ送出される。なお、ヘッダHDは、データ種類およびサイズを表し、リザルトRは転送結果を表す。
【0026】
B.動作
次に、図3〜図8を参照して第1実施形態の動作について説明する。以下では、プライマリスレッド、送信スレッド、演奏スレッド、ファイルスレッドおよび受信処理の各動作について述べる。
【0027】
(1)プライマリスレッドの動作
入力部4からCPU1にプライマリスレッドの実行を指示するイベントが供給されると、CPU1は図3に図示するステップSA1に進み、RAM3のワークエリアに設けられる各種レジスタ・フラグデータをイニシャライズする。続いて、ステップSA2では、スレッドの優先順位を表すポインタnに「1」をストアする。次いで、ステップSA3では、各スレッド(送信スレッド、演奏スレッドおよびファイルスレッド)を起動する。そして、ステップSA4以降では、ポインタnの値で指定される優先順位のスレッドがセマフォを取得している場合にそのスレッドの実行指示を与える。以下、ポインタnの値で指定される優先順位毎に分けて動作説明を進める。
【0028】
a.ポインタnの値が「1」の場合
ポインタnの値が「1」であると、ステップSA4の判断結果が「YES」になり、ステップSA5に進む。ステップSA5では、優先順位1位の送信スレッドが待ち状態であるか否か判断する。待ち状態とは、RAM3の記憶エリアE6に設けられる送信バッファに、送信すべきデータがセットされるのを待つ状態を指す。なお、送信バッファには、後述するように、演奏スレッドが演奏データを、ファイルスレッドが1パケット分のファイルデータをセットするようになっている。
【0029】
上記ステップSA5において、待ち状態でなければ、判断結果が「NO」になり、ステップSA6に進む。ステップSA6では、セマフォ待ちであるかどうかを判断する。セマフォ待ちとは、他のスレッドが送信セマフォを返却するのを待つ状態を指す。具体的には、送信セマフォの返却によりRAM3の記憶エリアE2に設けられるセマフォがインクリメントされて「1」に戻るまで待機する。RAM3の記憶エリアE2に設けられるセマフォが「1」であれば、ここでの判断結果は「NO」になり、ステップSA7に進み、送信スレッドの実行を指示した後、上述のステップSA5に処理を戻す。
【0030】
一方、送信スレッドが「待ち状態」あるいは「セマフォ待ち」であると、上記ステップSA5あるいはステップSA6のいずれかの判断結果が「YES」になり、ステップSA8に進み、ポインタnをインクリメントして優先順位を歩進させる。次いで、ステップSA9では、歩進された優先順位が「4」、つまりポインタnの歩進が一巡したかどうかを判断する。一巡していなければ、判断結果は「NO」になり、上述のステップSA4に処理を戻す。これに対し、ポインタnの歩進が一巡した場合には、上記ステップSA9の判断結果が「YES」となり、次のステップSA10に進み、ポインタnの値を「1」にリセットしてから上述のステップステップSA4に処理を戻す。
【0031】
以上のように、ポインタnの値が「1」の場合には、優先順位1位の送信スレッドが送信すべきデータを有し、かつセマフォ待ちでなければ、送信スレッドの実行を指示し、一方、送信スレッドが「待ち状態」あるいは「セマフォ待ち」ならば、送信スレッドを実行させずにポインタnの値(優先順位)を歩進させるようになっている。
【0032】
b.ポインタnの値が「2」の場合
ポインタnの値が「2」であると、上述したステップSA4の判断結果が「NO」になり、図4に図示するステップSA11に進む。ステップSA11では、ポインタnの値が「2」であるか否かを判断する。この場合、判断結果は「YES」になり、ステップSA12に進む。ステップSA12では、優先順位2位の演奏スレッドが「待ち状態」であるか否か判断する。ここで、待ち状態とは、予約演奏時刻までの時刻待ちを指す。待ち状態でなければ、判断結果は「NO」になり、ステップSA13に進み、「セマフォ待ち」であるかどうかを判断する。セマフォを取得していれば、判断結果は「NO」になり、ステップSA14に進み、演奏スレッドの実行を指示した後、上述のステップSA12に処理を戻す。一方、演奏スレッドが「待ち状態」あるいは「セマフォ待ち」であると、上記ステップSA12あるいはステップSA13のいずれかの判断結果が「YES」になり、前述したステップSA8(図3参照)に処理を戻して優先順位を歩進させる。
【0033】
以上のように、ポインタnの値が「2」の場合には、優先順位2位の演奏スレッドが予約演奏時刻に達し、かつセマフォを取得していれば、演奏スレッドの実行を指示し、一方、演奏スレッドが「待ち状態」あるいは「セマフォ待ち」ならば、演奏スレッドを実行させずにポインタnの値(優先順位)を歩進させるようになっている。
【0034】
c.ポインタnの値が「3」の場合
ポインタnの値が「3」であると、上述したステップSA4(図3参照)およびステップSA11(図4参照)の各判断結果がそれぞれ「NO」になり、ステップSA15に進む。ステップSA15では、優先順位3位のファイルスレッドが「待ち状態」であるか否か判断する。ここで、待ち状態とは、転送すべきファイルを待つ状態を指す。待ち状態でなければ、判断結果は「NO」になり、ステップSA16に進み、「セマフォ待ち」であるかどうかを判断する。セマフォを取得していれば、判断結果は「NO」になり、ステップSA17に進み、ファイルスレッドの実行を指示した後、上述のステップSA15に処理を戻す。一方、ファイルスレッドが「待ち状態」あるいは「セマフォ待ち」であると、上記ステップSA15あるいはステップSA16のいずれかの判断結果が「YES」になり、前述したステップSA8(図3参照)に処理を戻して優先順位を歩進させる。
【0035】
このように、ポインタnの値が「3」の場合には、優先順位3位のファイルスレッドが転送すべきファイルを有し、かつセマフォを取得していれば、ファイルスレッドの実行を指示し、一方、ファイルスレッドが「待ち状態」あるいは「セマフォ待ち」ならば、ファイルスレッドを実行させずにポインタnの値(優先順位)を歩進させるようになっている。
【0036】
(2)送信スレッドの動作
次に、図5を参照して送信スレッドの動作を説明する。上述したプライマリスレッドのステップSA3(図3参照)にて起動される送信スレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図5に図示するステップSB1に処理を進め、RAM3の記憶エリアE6に設けられる送信バッファをクリアする初期化を行う。次いで、ステップSB2では、送信バッファに送信すべきデータがセットされているか否かを判断する。後述するように、送信バッファには、演奏スレッドによりキューの演奏データがストアされるか、若しくはファイルスレッドによりファイルバッファのデータがストアされる。
【0037】
送信バッファに送信すべきデータがセットされていなければ、判断結果は「NO」になり、ステップSB3に進み、キューの演奏データもしくはファイルバッファのデータが送信バッファにストアされるまで待機する。そして、送信バッファに送信すべきデータがセットされると、上記ステップSB2の判断結果が「YES」になり、ステップSB4に進む。そして、ステップSB4では、送信バッファにセットされたデータを、送受信部7を介してスレーブ側の電子楽器100に送信した後、ステップSB2に処理を戻す。なお、上記ステップSB4のデータ送信時には、図2に図示したように、送信すべきデータ本体DATA(演奏データ又はファイルデータ)にヘッダHDおよびリザルトRを付加した転送パケットを形成してスレーブ側に送出する。
【0038】
このように、優先順位1位の送信スレッドでは、送信バッファに送信すべきデータがセットされていると、プライマリスレッドからの実行指示に応じて、即座に送信バッファのデータを転送パケットとしてスレーブ側に送出するようになっている。
【0039】
(3)演奏スレッドの動作
次に、図6を参照して演奏スレッドの動作を説明する。上述したプライマリスレッドのステップSA3(図3参照)にて起動される演奏スレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図6に図示するステップSC1に処理を進め、RAM3の記憶エリアE3に設けられるキューをクリアする初期化を行う。次いで、ステップSC2では、現在時刻がRAM3の記憶エリアE5にストアされる予約演奏時刻に達したか否かを判断する。現在時刻が予約演奏時刻に達していなければ、判断結果は「NO」になり、ステップSC3に進み、現在時刻が予約演奏時刻に達するまで待機する。
【0040】
そして、現在時刻が予約演奏時刻に達すると、上記ステップSC2の判断結果が「YES」になり、ステップSC4に進む。ステップSC4〜SC6では、RAM3の記憶エリアE1(図2参照)に格納される演奏データの内、現在時刻以前の演奏データを順次読み出してRAM3の記憶エリアE3に設けられるキューにストアする。そして、記憶エリアE1から読み出す演奏データの演奏時刻が現在時刻を過ぎると、ステップSC5の判断結果が「NO」になり、ステップSC7に進む。ステップSC7では、演奏時刻が現在時刻以後の演奏データをRAM3の記憶エリアE1に戻し、続くステップSC8では、RAM3の記憶エリアE1に戻した演奏データの演奏時刻(次の演奏時刻)を予約演奏時刻としてRAM3の記憶エリアE5にストアする。
【0041】
次いで、ステップSC9では送信セマフォを取得し、続くステップSC10ではキューに格納された演奏データをRAM3の記憶エリアE6に設けられる送信バッファにストアする。そうすると、前述した送信スレッド(図5参照)が送信バッファのデータを、送受信部7を介してスレーブ側の電子楽器100に送信する(ステップSC11)。次に、ステップSC12では、キューに格納された演奏データが全て送信されたか否かを判断する。全て送信されていなければ、判断結果は「NO」になり、上記ステップSC10に処理を戻す。
【0042】
以後、キューに格納された演奏データが全て送信される迄、ステップSC10〜SC12を繰り返す。そして、キューに格納された演奏データを全て送信し終えると、ステップSC12の判断結果が「YES」になり、ステップSC13に進み、送信セマフォを返却する。すなわち、RAM3の記憶エリアE2に設けられるセマフォをインクリメントして「1」に戻した後、上述のステップSC2に処理を戻す。
【0043】
このように、演奏スレッドでは、現在時刻が予約演奏時刻に達する毎に、現在時刻以前の演奏データをキューに格納すると同時に、演奏時刻が現在時刻以後の演奏データを次の演奏時刻を表す予約演奏時刻としてRAM3の記憶エリアE5にストアする。そして、送信セマフォを取得してキューの演奏データを送信バッファにストアすると、前述した送信スレッドによって送信バッファのデータがスレーブ側の電子楽器100に送信される。
【0044】
(4)ファイルスレッドの動作
次に、図7を参照してファイルスレッドの動作を説明する。上述したプライマリスレッドのステップSA3(図3参照)にて起動されるファイルスレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図7に図示するステップSD1に処理を進め、RAM3の記憶エリアE4に設けられるファイルバッファをクリアする初期化を行う。続いて、ステップSD2では、転送すべきファイルが用意されているか、つまり記憶部5の格納される各種ファイルの内から転送するファイルが指定されているかどうかを判断する。転送すべきファイルが用意されていなければ、判断結果は「NO」になり、ステップSD3に進み、転送ファイルが指定されるのを待つ。
【0045】
そして、転送ファイルが指定され、これにより転送すべきファイルが用意されると、上記ステップSD2の判断結果が「YES」になり、ステップSD4に進む。ステップSD4では、指定されたファイルを記憶部5から読み出してRAM3の記憶エリアE4(図2参照)に設けられるファイルバッファにストアする。次いで、ステップSD5では、ファイルバッファから1パケット分のデータを読み出してRAM3の記憶エリアE6(図2参照)に設けられる送信バッファにセットする。
【0046】
この後、ステップSD6に進み、送信セマフォを取得する。ファイルスレッドが送信セマフォを取得すると、前述した送信スレッド(図5参照)が送信バッファのデータを、送受信部7を介してスレーブ側の電子楽器100に送信する(ステップSD7)。次に、ステップSD8に進み、送信セマフォを返却する。すなわち、RAM3の記憶エリアE2に設けられるセマフォをインクリメントして「1」に戻した後、上述のステップSD2に処理を戻す。
【0047】
このように、ファイルスレッドでは、転送すべきファイルが用意されるまで待ちの状態となり、転送ファイルが用意されると、そのファイルの内容を記憶部5から読み出して一旦ファイルバッファにストアしてから、このファイルバッファから1パケット分のデータを読み出して送信バッファにセットする。そして、送信セマフォを取得すると、前述した送信スレッドが送信バッファのデータを、送受信部7を介してスレーブ側の電子楽器100に送信した後に、送信セマフォを返却する。
【0048】
(5)受信処理の動作
次に、図8を参照して受信処理の動作を説明する。ここでは、電子楽器100をマスターとした場合に、スレーブ側のDTM装置10が実行する受信処理の動作を説明する。入力部4からCPU1に受信処理の実行を指示するイベントが供給されると、CPU1は図8に図示するてステップSE1に進み、送受信部7が備える受信バッファを初期化する。次いで、ステップSE2では、転送データの受信の有無を判断する。転送データを受信していなければ、判断結果は「NO」になり、ステップSE3に進み、転送データ待ちの状態となって上記ステップSE2に処理を戻す。
【0049】
そして、転送データを受信すると、ステップSE2の判断結果が「YES」になり、ステップSE4に進む。ステップSE4では、受信した転送データに付加されるヘッダHD中のデータ種類(図2参照)に基づき、当該転送データが演奏データであるか否かを判断する。演奏データであると、判断結果は「YES」になり、ステップSE5に進み、演奏データ中の演奏時刻にイベント処理する演奏処理を行ってから上述のステップSE2に戻る。一方、ファイルデータの場合には、上記ステップSE4の判断結果が「NO」になり、ステップSE6に進み、例えば1パケット分ずつ転送されるファイルデータ(音色変更用の波形データ)を集積して1つの波形データを形成するファイル処理行ってから上述のステップSE2に戻る。
【0050】
以上説明したように、第1実施形態では、演奏データをスレーブ側に送出する演奏スレッドが待ち状態の時に、ファイルスレッドがファイルバッファから小分けしたファイルデータ(1パケット)を送信バッファにセットして送信セマフォを取得すると、送信スレッドが送信バッファのデータをスレーブ側の電子楽器100に送信する。つまり、演奏データをスレーブ側に送出する合間に小分けしたファイルデータ(1パケット)を転送するので、演奏遅延を招くことなくファイル転送が可能になっている。
【0051】
[第2実施形態]
次に、図9を参照して第1実施形態と相違する第2実施形態によるファイルスレッドの動作について説明する。なお、第2実施形態の構成は、第1実施形態と共通するので、その説明については省略する。前述した第1実施形態と同様に、プライマリスレッドのステップSA3(図3参照)にて起動されるファイルスレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図9に図示するステップSF1に処理を進め、RAM3の記憶エリアE4に設けられるファイルバッファをクリアする初期化を行う。続いて、ステップSF2では、転送すべきファイルが用意されているか、つまり記憶部5の格納される各種ファイルの内から転送するファイルが指定されているかどうかを判断する。転送すべきファイルが用意されていなければ、判断結果は「NO」になり、ステップSF3に進み、転送ファイルが指定されるのを待つ。
【0052】
そして、転送ファイルが指定され、これにより転送すべきファイルが用意されると、上記ステップSF2の判断結果が「YES」になり、ステップSF4に進む。ステップSF4では、指定されたファイルを記憶部5から読み出してRAM3の記憶エリアE4(図2参照)に設けられるファイルバッファにストアする。次いで、ステップSF5〜SF6では、RAM3の記憶エリアE5にストアされる予約演奏時刻を読み出し、現在時刻から予約演奏時刻までの時間がパケット転送時間以下であるか否かを判断する。つまり、次の演奏時間に達する前に1パケット分のファイルデータを転送できるかどうかを判断する。
【0053】
次の演奏時間に達する前に1パケット分のファイルデータを転送できない場合には、ステップSF6の判断結果が「YES」になり、ステップSF7に進む。ステップSF7〜SF8では、次の演奏時間に達するまで待機する。待機後にステップSF7の判断結果が「YES」になり、ステップSF5に進み、新たに予約演奏時刻を読み出す。これにより、次の演奏時間に達する前に1パケット分のファイルデータを転送できるようになると、ステップSF6の判断結果が「NO」となり、ステップSF9に進む。ステップSF9では、ファイルバッファから1パケット分のデータを読み出してRAM3の記憶エリアE6(図2参照)に設けられる送信バッファにセットする。
【0054】
この後、ステップSF10に進み、送信セマフォを取得する。ファイルスレッドが送信セマフォを取得すると、前述した送信スレッド(図5参照)が送信バッファのデータを、送受信部7を介してスレーブ側の電子楽器100に送信する(ステップSF11)。そして、ステップSF12では、送信セマフォを返却する。すなわち、RAM3の記憶エリアE2に設けられるセマフォをインクリメントして「1」に戻した後、上述のステップSF2に処理を戻す。
【0055】
このように、第2実施形態では、演奏スレッドが演奏データをスレーブ側に転送している過程で、ファイルスレッドが次の演奏時間に達する前に1パケット分のファイルデータを転送できる余裕(転送時間)の有無を判断し、その余裕が有る場合に1パケット分のファイルデータを転送する為、演奏遅延を招くことなくファイル転送が可能になる。
【0056】
[第3実施形態]
次に、図10〜図14を参照して第3実施形態について説明する。前述した第1および第2実施形態は、予めRAM3の記憶エリアE1(図2参照)に記憶される演奏データの演奏時刻を参照して演奏データをスレーブ側に転送する合間にファイル転送を可能したものであるから、前述したDTM装置10(図1参照)が鍵盤を備え、この鍵盤の押離鍵操作(リアルタイム演奏)に応じて発生する演奏データには対応することが出来ない。そこで、第3実施形態では、リアルタイム演奏に対応可能な送信スレッド、演奏スレッド、ファイルスレッドおよび受信処理の各動作について述べる。
【0057】
(1)送信スレッドの動作
図10を参照して第3実施形態による送信スレッドの動作を説明する。前述の第1実施形態と同様、プライマリスレッドのステップSA3(図3参照)にて起動される送信スレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図10に図示するステップSG1に処理を進め、RAM3の記憶エリアE6に設けられる送信バッファをクリアする初期化を行う。次いで、ステップSG2では、ファイルバッファに送信すべきファイルデータがセットされているか否かを判断する。後述するように、ファイルバッファには、ファイルスレッドによりファイルデータがストアされる。
【0058】
ファイルバッファに送信すべきデータがセットされていなければ、判断結果は「NO」になり、ステップSG3に進み、RAM3の記憶エリアE3に設けられるキューに送信すべき演奏データがセットされているか否かを判断する。キューに送信すべき演奏データがセットされていなければ、判断結果は「NO」になり、ステップSG4に進み、データ待ちの状態、すなわちファイルバッファにファイルデータがセットされるか、あるいはキューに演奏データがセットされるまで待機する。以下、ファイルバッファにファイルデータがセットされた場合の動作と、キューに演奏データがセットされた場合の動作とに分けて説明を進める。
【0059】
a.ファイルバッファにファイルデータがセットされた場合の動作
この場合、上記ステップSG2の判断結果が「YES」になり、ステップSG5に進む。ステップSG5では、RAM3の記憶エリアE6に設けられる送信バッファから1バイト分のファイルデータを取り出す。後述するように、送信バッファには、ファイルスレッドによりファイルバッファから読み出したファイルデータがストアされる。次いで、ステップSG6では、送信バッファから取り出すべきファイルデータの有無を判断する。ここで、送信バッファから取り出すべきファイルデータが無くなると、判断結果は「YES」となり、上述のステップSG2に処理を戻す。一方、取り出すべきファイルデータが有れば、判断結果は「NO」になり、ステップSG7に進む。
【0060】
ステップSG7では、送信すべき演奏データがキューにセットされているか否かを判断するが、ここでは送信すべき演奏データがキューにセットされていない状態を想定しているので、判断結果は「NO」になり、ステップSG8に進む。ステップSG8では、送信バッファから取り出した1バイト分のファイルデータが、ファイル転送開始を表すブレークコード(例えば、0xFF)であるか否か、つまり言い換えれば転送するファイルデータの先頭であるかどうかを判断する。ファイルデータの先頭であると、判断結果は「YES」になり、ステップSG9に進み、同じブレークコードを2回繰り返してスレーブ側に送信した後、前述のステップSG3に処理を戻す。なお、スレーブ側では、連続するブレークコードを受信することでファイルデータ転送を識別するようになっており、そうした受信処理については後述する。
【0061】
一方、送信バッファから取り出した1バイト分のファイルデータが、ファイル転送開始を表すブレークコードでなければ、上記ステップSK8の判断結果は「NO」になり、ステップSG10に進み、その1バイト分のファイルデータをスレーブ側に送信した後、前述のステップSG5に処理を戻す。これ以後、送信バッファにセットされたファイルデータが無くなるまで1バイトづつスレーブ側に送信する。
【0062】
<キューに演奏データがセットされた場合の動作>
以上のようにしてファイルデータを1バイト単位で送信している時に、キューに演奏データがセットされたとする。そうすると、ステップSG7の判断結果が「YES」になり、ステップSG11に進む。もしくはファイルバッファに送信すべきデータがセットされていない状態でキューに演奏データがセットされると、ステップSG3の判断結果が「YES」になり、ステップSG11に進む。ステップSG11では、キューから演奏データを取り出し、続くステップSG12では、その取り出した演奏データの先頭に転送開始を表すブレークコード(例えば、0xFF)を付加する。そして、ステップSG13では、先頭にブレークコードが付加された演奏データをスレーブ側に送出した後、前述のステップSG2に処理を戻す。
【0063】
このように、送信スレッドでは、リアルタイム演奏に応じて発生する演奏データをキューにセットする毎に、このキューの演奏データの先頭に転送開始を表すブレークコードを付加してスレーブ側へ送信する一方、演奏データが送信されていない合間に、連続するブレークコードを送信してから送信バッファから1バイトずつ読み出すファイルデータを順次送信する。
【0064】
(2)演奏スレッドの動作
次に、図11を参照して第3実施形態による演奏スレッドの動作を説明する。前述の第1実施形態と同様、プライマリスレッドのステップSA3(図3参照)にて起動される演奏スレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図11に図示するステップSH1に処理を進め、RAM3の記憶エリアE3に設けられるキューをクリアする初期化を行う。次いで、ステップSH2では、リアルタイム演奏が行われたか否かを判断する。リアルタイム演奏が行われていなければ、判断結果は「NO」になり、ステップSH3に進み、リアルタイム演奏が行われるまで待機する。そして、リアルタイム演奏が行われると、上記ステップSH2の判断結果が「YES」になり、ステップSH4に進み、リアルタイム演奏に応じて発生する演奏データを、RAM3の記憶エリアE3に設けられるキューにストアして上述のステップSH2に処理を戻す。
【0065】
(3)ファイルスレッドの動作
次に、図12を参照して第3実施形態によるファイルスレッドの動作を説明する。前述の第1実施形態と同様、プライマリスレッドのステップSA3(図3参照)にて起動されるファイルスレッドは、プライマリスレッドのステップSA7(図3参照)の実行指示に従い、図12に図示するステップSJ1に処理を進め、RAM3の記憶エリアE4に設けられるファイルバッファをクリアする初期化を行う。続いて、ステップSJ2では、転送すべきファイルが用意されているか、つまり記憶部5の格納される各種ファイルの内から転送するファイルが指定されているかどうかを判断する。転送すべきファイルが用意されていなければ、判断結果は「NO」になり、ステップSJ3に進み、転送ファイルが指定されるのを待つ。
【0066】
そして、転送ファイルが指定され、これにより転送すべきファイルが用意されると、上記ステップSJ2の判断結果が「YES」になり、ステップSJ4に進む。ステップSJ4では、指定されたファイルを記憶部5から読み出してRAM3の記憶エリアE4に設けられるファイルバッファにストアする。次いで、ステップSJ5では、ファイルバッファから所定サイズ分のファイルデータを読み出してRAM3の記憶エリアE6に設けられる送信バッファにセットした後、上述のステップSJ2に処理を戻す。
【0067】
(4)受信処理の動作
次に、図13〜図14を参照して第3実施形態による受信処理の動作を説明する。ここでは、電子楽器100をマスターとした場合に、スレーブ側のDTM装置10が実行する受信処理の動作を説明する。入力部4からCPU1に受信処理の実行を指示するイベントが供給されると、CPU1は図13に図示するてステップSK1に進み、後述するレジスタ1およびレジスタ2をゼロリセットする初期化を行う。続いて、ステップSK2では、マスター側から1バイト分のデータを受信したか否かを判断する。受信していなければ、判断結果は「NO」になり、ステップSK3に進み、転送データ待ちの状態となって上記ステップSK2に処理を戻す。
【0068】
そして、1バイト分のデータを受信すると、ステップSK2の判断結果が「YES」になり、ステップSK4に進み、受信した1バイト分のデータをレジスタ1にストアする。次いで、ステップSK5では、レジスタ1にストアしたデータがブレークコードであるか否かを判断する。ブレークコードであると、判断結果は「YES」になり、ステップSK6に進む。ステップSK6では、レジスタ1にストアしたデータとレジスタ2の内容とが一致するか否かを判断する。最初の1バイト分のデータを受信した状態では、レジスタ2は上記ステップSK1にてゼロリセットされたままなので、判断結果は「NO」になり、ステップSK9に進み、フラグFに「1」をセットする。なお、フラグFは「1」の場合に受信したデータが「演奏データ」である旨を表し、「0」の場合に「ファイルデータ」である旨を表す。
【0069】
次に、ステップSK10に進み、レジスタ1の内容をレジスタ2に入れ替えてから上記ステップSK2に処理を戻す。そしてこの後、次の1バイト分のデータを受信し、これがブレークコードに一致しなければ、上記ステップSG5の判断結果が「NO」になり、図14に図示するステップSK11に進む。ステップSK11では、フラグFが「0」、すなわちファイルデータであるか否かを判断する。上述したように、ブレークコードで始る演奏データを受信した場合には、フラグFが「1」にセットされるので、判断結果は「NO」になり、ステップSK15に進み、受信した1バイト分のデータを、演奏データとしてRAM3の記憶エリアE1にストアする。
【0070】
次いで、ステップSK16では、演奏データサイズまでストアしたか否かを判断する。演奏データサイズまでストアしていなければ、判断結果は「NO」になり、上述のステップSK2(図13参照)に処理を戻してデータ受信を繰り返す。そして、演奏データサイズまで演奏データを受信し終えると、上記ステップSK16の判断結果が「YES」になり、ステップSK17に進み、RAM3の記憶エリアE1にストアした演奏データを解釈実行する演奏処理を行ってから上述のステップSK2に戻る。
【0071】
さて一方、上記ステップSK10(図13参照)において、レジスタ1の内容をレジスタ2に入れ替えてから上記ステップSK2に処理を戻した後に受信した1バイト分のデータがブレークコードに一致すると、上述したステップSK5の判断結果が「YES」になり、ステップSK6に進む。ステップSK6では、レジスタ1の内容とレジスタ2の内容とが一致するか否かを判断する。そして、前回受信した1バイト分のデータがブレークコードであって、今回受信した1バイト分のデータもブレークコードであると、レジスタ1の内容とレジスタ2の内容とが一致して上記ステップK6の判断結果が「YES」となり、ステップSH7に進む。ステップSH7では、フラグFに「0」をセットしてファイルデータ受信であることを表す。
【0072】
次いで、ステップSK8では、受信した1バイト分のデータをファイルデータとしてRAM3の記憶エリアE4に設けられるファイルバッファにストアする。この後、ステップSK10に進み、レジスタ1の内容をレジスタ2に入れ替えてから上記ステップSK2に処理を戻す。そして、再び受信した1バイト分のデータがブレークコードに一致しなければ、上述したステップSK5の判断結果が「NO」になり、図14に図示するステップSK11に進む。この場合、フラグFは「0」にセットされている為、このステップSK11の判断結果は「YES」になり、ステップSK12に進み、受信した1バイト分のデータをファイルデータとしてRAM3の記憶エリアE4に設けられるファイルバッファにストアする。
【0073】
続いて、ステップSK13では、ファイルサイズまでストアしたか否かを判断する。ファイルサイズまでストアしていなければ、判断結果は「NO」になり、上述のステップSK2(図13参照)に処理を戻してデータ受信を繰り返す。そして、ファイルサイズまでファイルデータを受信し終えると、上記ステップSK13の判断結果が「YES」になり、ステップSK14に進み、例えば1バイトずつ転送されるファイルデータ(音色変更用の波形データ)を集積して1つの波形データを形成するファイル処理行ってから上述のステップSK2に戻る。
【0074】
以上説明したように、第3実施形態では、リアルタイム演奏に応じて発生する演奏データをキューにセットする毎に、このキューの演奏データの先頭に転送開始を表すブレークコードを付加してスレーブ側に送信し、演奏データの送信の合間には、連続する2つのブレークコードに続けてファイバッファから1バイトずつ読み出すファイルデータをスレーブ側に送信する。そして、スレーブ側は、マスター側から1バイトずつ転送されて来るデータを順次受信し、ブレークコードが2つ連続した場合にはそれ以降をファイルデータとして格納し、一方、ブレークコードが1つの場合にはそれ以降を演奏データとして格納する。これにより、リアルアイム演奏に応じて発生する演奏データをスレーブ側に送信でき、しかも演奏遅延を招くことなくファイル転送が可能になっている。
【図面の簡単な説明】
【0075】
【図1】本発明による第1実施形態の構成を示すブロック図である。
【図2】RAM3の主要データ構成を示す図である。
【図3】プライマリスレッドの動作を示すフローチャートである。
【図4】プライマリスレッドの動作を示すフローチャートである。
【図5】送信スレッドの動作を示すフローチャートである。
【図6】演奏スレッドの動作を示すフローチャートである。
【図7】ファイルスレッドの動作を示すフローチャートである。
【図8】受信処理の動作を示すフローチャートである。
【図9】第2実施形態によるファイルスレッドの動作を示すフローチャートである。
【図10】第3実施形態による送信スレッドの動作を示すフローチャートである。
【図11】第3実施形態による演奏スレッドの動作を示すフローチャートである。
【図12】第3実施形態によるファイルスレッドの動作を示すフローチャートである。
【図13】第3実施形態による受信処理の動作を示すフローチャートである。
【図14】第3実施形態による受信処理の動作を示すフローチャートである。
【符号の説明】
【0076】
1 CPU
2 ROM
3 RAM
4 入力部
5 記憶部
6 表示部
7 送受信部
10 DTM装置
100 電子楽器




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013