(57)【特許請求の範囲】
【請求項１】
標準波形データ及び圧縮された波形データを記憶する波形ファイルと、
外部より送信されたテンポを受信するテンポ受信手段と、
このテンポ受信手段によって受信されたテンポに基づき、前記波形ファイルから標準波形データ及び圧縮された波形データのいずれか一方を選択する波形データ選択手段と、
外部より送信された波形データの転送要求を受信する要求受信手段と、
この要求受信手段により転送要求が受信される毎に、前記波形データ選択手段にて選択された波形データを送信する波形データ送信手段と、
を有するデータベース装置に所定の通信手段を介して接続された楽音制御装置であって、
楽音の発音を指示する複数のイベントから成る曲データを記憶する記憶手段と、
演奏すべき曲のテンポを変更するテンポ変更手段と、
このテンポ変更手段によりテンポが変更される毎に、当該変更されたテンポを送信するテンポ送信手段と、
送信されてくる波形データを受信してバッファに記憶させる波形データ受信手段と、
前記テンポ設定手段にて設定されたテンポに対応した速度で、前記記憶手段に記憶された曲データのイベントを順次読み出す読出手段と、
前記バッファに受信された波形データが記憶されている場合は、この読出手段によりイベントが読み出されるに応答して当該記憶された波形データを接続された音源手段に転送する転送手段と、
この転送手段により波形データが転送される毎に、波形データを要求する波形データ要求手段と、
前記転送手段により前記音源手段に転送された圧縮された波形データである場合に当該波形データを標準波形データに伸長する伸長手段と、
前記読出手段によりイベントが読み出される毎に、当該イベントに基づいて前記音源手段に対して発音処理を指示する発音指示手段と、
を備えたことを特徴とする楽音制御装置。
【請求項２】
前記波形データ選択手段は、前記テンポ受信手段により受信されたテンポが所定値を超える場合は前記波形ファイルから圧縮された波形データを選択するとともに、所定値以下の場合は標準波形データを選択することを特徴とする請求項１記載の楽音制御装置。
【請求項３】
標準波形データ及び圧縮された波形データを記憶する波形ファイルと、
外部より送信されたテンポを受信するテンポ受信手段と、
このテンポ受信手段によって受信されたテンポに基づき、前記波形ファイルから標準波形データ及び圧縮された波形データのいずれか一方を選択する波形データを選択する波形データ選択手段と、
外部より送信された波形データの転送要求を受信する要求受信手段と、
この要求受信手段により転送要求が受信される毎に、前記波形データ選択手段にて選択された波形データを送信する波形データ送信手段と、  を有するデータベース装置に所定の通信手段を介して接続された楽音制御装置に適用されるコンピュータに、
演奏すべき曲のテンポを変更するテンポ変更ステップと、
テンポが変更される毎に、当該変更されたテンポを送信するテンポ送信ステップと、
送信されてくる波形データを受信してバッファに記憶させる波形データ受信ステップと、
楽音の発音を指示する複数のイベントから成る曲データを記憶する記憶手段から順次イベントを、前記設定されたテンポに対応した速度で読み出す読出ステップと、
前記バッファに受信された波形データが記憶されている場合は、このイベントが読み出されるに応答して、当該記憶された波形データを接続された音源手段に転送する転送ステップと、
波形データが転送される毎に、波形データを要求する波形データ要求ステップと、
前記音源手段に転送された圧縮された波形データである場合に当該波形データを標準波形データに伸長する伸長ステップと、
前記イベントが読み出される毎に、当該イベントに基づいて前記音源手段に対して発音処理を指示する発音指示ステップと、
を実行させるコンピュータ読み取り可能な楽音制御処理プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、楽音制御装置及び楽音制御処理プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
楽器の楽音波形や人間の音声波形をサンプリングして、そのサンプリング波形データをメモリに記憶させ、これを読み出して再生するシステムがある。例えば、演奏する曲の楽音データを記憶するメモリ及び楽音を発音する音源を有するキーボード装置と、サンプリング波形データを記憶したハードディスク等を備えたデータベース装置とを、ＲＳ２３２Ｃ等の通信手段を介して接続したシステムが知られている。そして、発音すべき楽音データに対するサンプリング波形データをキーボード装置からデータベース装置にリアルタイムで要求し、その要求に応じてデータベース装置から転送されてきたサンプリング波形データを音源に送出して発音を行っている。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記従来のシステムにおいては、キーボード装置からサンプリング波形データをデータベース装置に要求した後、通信手段の転送速度等の原因のために、発音するタイミングになっても要求したサンプリング波形データの転送が間に合わない場合もあり、この場合には音切れが発生するという問題があった。
本発明の課題は、通信手段を介して接続された２つの装置の間で、一方の装置から他方の装置にリアルタイムで要求したサンプリング波形データを、音切れが発生することなく適正に送受信できるようにすることである。
【０００４】
【課題を解決するための手段】
請求項１に記載の楽音制御装置は、標準波形データ及び圧縮された波形データを記憶する波形ファイルと、外部より送信されたテンポを受信するテンポ受信手段と、このテンポ受信手段によって受信されたテンポに基づき、前記波形ファイルから標準波形データ及び圧縮された波形データのいずれか一方を選択する波形データ選択手段と、外部より送信された波形データの転送要求を受信する要求受信手段と、この要求受信手段により転送要求が受信される毎に、前記波形データ選択手段にて選択された波形データを送信する波形データ送信手段と、を有するデータベース装置に所定の通信手段を介して接続された楽音制御装置であって、楽音の発音を指示する複数のイベントから成る曲データを記憶する記憶手段と、演奏すべき曲のテンポを変更するテンポ変更手段と、このテンポ変更手段によりテンポが変更される毎に、当該変更されたテンポを送信するテンポ送信手段と、送信されてくる波形データを受信してバッファに記憶させる波形データ受信手段と、前記テンポ設定手段にて設定されたテンポに対応した速度で、前記記憶手段に記憶された曲データのイベントを順次読み出す読出手段と、前記バッファに受信された波形データが記憶されている場合は、この読出手段によりイベントが読み出されるに応答して当該記憶された波形データを接続された音源手段に転送する転送手段と、この転送手段により波形データが転送される毎に、波形データを要求する波形データ要求手段と、前記転送手段により前記音源手段に転送された圧縮された波形データである場合に当該波形データを標準波形データに伸長する伸長手段と、前記読出手段によりイベントが読み出される毎に、当該イベントに基づいて前記音源手段に対して発音処理を指示する発音指示手段と、を備えた構成になっている。
【０００５】
請求項３に記載の記録媒体は、標準波形データ及び圧縮された波形データを記憶する波形ファイルと、外部より送信されたテンポを受信するテンポ受信手段と、このテンポ受信手段によって受信されたテンポに基づき、前記波形ファイルから標準波形データ及び圧縮された波形データのいずれか一方を選択する波形データを選択する波形データ選択手段と、外部より送信された波形データの転送要求を受信する要求受信手段と、この要求受信手段により転送要求が受信される毎に、前記波形データ選択手段にて選択された波形データを送信する波形データ送信手段と、  を有するデータベース装置に所定の通信手段を介して接続された楽音制御装置に適用されるコンピュータに、演奏すべき曲のテンポを変更するテンポ変更ステップと、テンポが変更される毎に、当該変更されたテンポを送信するテンポ送信ステップと、送信されてくる波形データを受信してバッファに記憶させる波形データ受信ステップと、楽音の発音を指示する複数のイベントから成る曲データを記憶する記憶手段から順次イベントを、前記設定されたテンポに対応した速度で読み出す読出ステップと、前記バッファに受信された波形データが記憶されている場合は、このイベントが読み出されるに応答して、当該記憶された波形データを接続された音源手段に転送する転送ステップと、波形データが転送される毎に、波形データを要求する波形データ要求ステップと、前記音源手段に転送された圧縮された波形データである場合に当該波形データを標準波形データに伸長する伸長ステップと、前記イベントが読み出される毎に、当該イベントに基づいて前記音源手段に対して発音処理を指示する発音指示ステップと、を実行させるコンピュータ読み取り可能な楽音制御処理プログラムを記録している。
【００１０】
【発明の実施の形態】
以下、本発明における楽音制御装置の第１実施形態及び第２実施形態について、通信手段を介して接続された２つの装置の間でリアルタイムでサンプリング音声波形データを転送するシステムを例に採って、図を参照して説明する。
図１は、第１及び第２実施形態における一方の装置、すなわち、サンプリング音声波形データの転送を要求するキーボード装置１００の構成を示している。図１において、ＣＰＵ１は、システムバスによって、鍵盤部２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、音源部６、通信インターフェース７に接続され、各部との間でコマンド及びデータを授受してこの装置全体を制御している。
【００１１】
鍵盤部２は、演奏操作に応じて音高、ベロシティ等の楽音データをＣＰＵ１に入力する。スイッチ部３は、演奏する曲の音色データを設定する音色スイッチ、演奏する曲のテンポを設定するテンポスイッチ、自動演奏をスタート／ストップさせるスタートスイッチ、及びその他のスイッチを備えている。ＲＯＭ４は、ＣＰＵ１によって実行される楽音制御処理プログラム、演奏する曲の楽音データ、イニシャライズ時のデフォルトデータ等を記憶している。
【００１２】
記憶手段としてのＲＯＭ４の曲エリアには、図２に示すように、デルタタイム、イベントデータが交互にストアされ、曲の最後はＥＮＤデータがストアされている。イベントデータは、ノートオン、ノートオフ、コントロールチェンジ等で構成され、デルタタイムは、次のイベントデータの処理までの時間データを表わしている。
【００１３】
図１のＲＡＭ５は、ＣＰＵ１のワークエリアであり、鍵盤部２、スイッチ部３からのデータを一時的にストアするとともに、図２に示すようなワークエリアが設けられている。２つの受信バッファＡ及びＢは、外部装置から受信したサンプリング音声波形データを書き込むためのエリアである。ＷＢＦは、サンプリング音声波形データを書き込む側の受信バッファを指定するフラグである。ＡＫＦ及びＢＫＦは、２つの受信バッファＡ及びＢの状態を示すフラグである。ＳＴＦは、再生モード又は再生停止モードを示すフラグである。ＡＤＤは、ＲＯＭ４の曲エリアのアドレスをストアするレジスタである。ＴＩＭＥは、時間データをストアするレジスタである。ＴＥＭＰは、テンポデータをストアするレジスタである。その他、波形送信要求フラグ、テンポ変更フラグ、受信フラグ、発音指示を示すフラグＯＮＦ、消音指示を示すフラグＯＦＦのエリアが設けられている。また、図には示していないが受信バッファＡ又はＢのサンプリング音声波形データを転送する音源用メモリのエリアが設けられている。
【００１４】
図１の音源部６は、サウンドシステム８に接続され、ＣＰＵ１からの発音指示のコマンド及びサンプリング音声波形データに基づいて発音する楽音信号を生成してサウンドシステム８から発音させる。また、ＣＰＵ１からの消音指示のコマンドにしたがって発音中の楽音信号を消音させる。図１の通信インターフェース７は、ＲＳ２３２Ｃ等の通信手段を介して外部装置であるデータベース装置２００と接続し、ＣＰＵ１とデータベース装置２００との間のデータの送受信を制御する。
【００１５】
図３は、第１実施形態における他方の装置、すなわち、図１のキーボード装置１００と接続されるデータベース装置２００の構成を示している。ＣＰＵ９は、システムバスによって、通信インターフェース１０、ＲＯＭ１１、ＲＡＭ１２、ＨＤＤＣ（ハードディスク・ドライブ・コントローラ）１３、表示部１８に接続されるとともに、図に示さない操作部、表示部その他に接続されている。通信インターフェース１０は、ＲＳ２３２Ｃ等の通信手段を介して外部装置であるキーボード装置１００と接続し、ＣＰＵ９とキーボード装置１００との間のデータの送受信を制御する。ＲＯＭ１１は、ＣＰＵ９が実行するプログラム、及び各種のデータを記憶している。ＲＡＭ１２は、ＣＰＵ９のワークエリアであり、キーボード装置１００に転送するサンプリング音声波形データを一時的にストアする送信バッファのエリア及びその他のエリアを有している。
【００１６】
ＨＤＤＣ１３は、ハードハードディスク・ドライブ（図示せず）を介して、ハードディスク１４にアクセスして、記憶されているデータを読み出す。ハードディスク１４には、歌詞データファイル１５、標準音声データファイル１６、圧縮音声データファイル１７のデータベースのエリアが設けられている。歌詞データファイル１５には、表示部１８に表示する歌詞の文字データ、記号データ等がストアされている。標準音声データファイル１６には、所定のサンプリング周波数でサンプリングされた人間の音声の標準サンプリング音声波形データがストアされている。圧縮音声データファイル１７には、標準音声データファイル１６の標準サンプリング音声波形データに対してデータ圧縮を施した圧縮サンプリング音声波形データがストアされている。
【００１７】
次に、本発明の第１実施形態の動作についてフローチャートを参照して説明する。図４〜図１０は、キーボード装置１００のＣＰＵ１のフローであり、図１１及び図１２は、データベース装置２００のＣＰＵ９のフローである。
図４は、ＣＰＵ１のメインフローであり、所定のイニシャライズ（ステップＡ１）の後、スイッチ処理（ステップＡ２）、再生処理（ステップＡ３）、発音処理（ステップＡ４）、受信処理（ステップＡ５）、その他の処理（ステップＡ６）、を繰り返し実行する。
【００１８】
図５は、メインフローにおけるステップＡ２のスイッチ処理のフローである。このフローにおいては、スタートスイッチがオンされたか否かを判別し（ステップＢ１）、オンされたときは、フラグＳＴＦを反転する（ステップＢ２）。そして、ＳＴＦが１であるか否かを判別する（ステップＢ３）。ＳＴＦが１（再生モード）である場合には、図２に示した曲エリアのアドレスを指定するレジスタＡＤＤに０、すなわち、曲エリアの最初のタイムデータのエリアのアドレスをセットする（ステップＢ４）。次に、ＡＤＤで示す曲エリアのタイムデータであるＭＥＭ（ＡＤＤ）をレジスタＴＩＭＥにストアする（ステップＢ５）。次に、タイマインタラプト１を禁止解除にする（ステップＢ６）。この禁止解除によって、タイマインタラプト１が入るごとに、図６のフローに移行してＴＩＭＥの値をデクリメントする。
【００１９】
タイマインタラプト１を禁止解除にした後、タイマインタラプト２を禁止解除にする（ステップＢ７）。タイマインタラプト２については後述する。次に、ＲＡＭの受信バッファＡ及びＢをクリアする（ステップＢ８）。そして、波形送信要求フラグを１（データ要求）にセットする（ステップＢ９）。次に、テンポ変更フラグを１（テンポ変更あり）にセットし（ステップＢ１０）、フラグＷＢＦを０（受信バッファＡの書き込みモード）にセットし（ステップＢ１１）、フラグＡＫＦ及びＢＫＦをともに０（空き状態）にセットする（ステップＢ１２）。そして、このフローを終了してメインフローに戻る。
【００２０】
ステップＢ１において、スタートスイッチがオンされない場合には、テンポ設定スイッチがオンされたか否かを判別する（ステップＢ１３）。スタートスイッチもこのテンポ設定スイッチも共にオンされない場合には、このフローを終了してメインフローに戻る。このテンポ設定スイッチがオンされたときは、スイッチによって設定されたテンポデータをレジスタＴＥＭＰにストアする（ステップＢ１４）。次に、テンポ変更フラグを１（テンポ変更あり）にセットする（ステップＢ１５）。そして、このフローを終了してメインフローに戻る。ステップＢ３において、ＳＴＦが０（再生停止モード）である場合には、タイマインタラプト１を禁止し（ステップＢ１６）、タイマインタラプト２を禁止し（ステップＢ１７）、音源に対して消音指示を行う（ステップＢ１８）。そして、このフローを終了してメインフローに戻る。
【００２１】
図７は、メインフローにおけるステップＡ３の再生処理のフローである。このフローにおいては、ＳＴＦが１であるか否かを判別し（ステップＣ１）、ＳＴＦが０（再生停止モード）である場合には、このフローを終了してメインフローに戻る。ＳＴＦが１（再生モード）である場合には、図６のタイマインタラプト１の処理においてデクリメントされているレジスタＴＩＭＥの値が０に達しているか否かを判別する（ステップＣ２）。ＴＩＭＥの値が０に達していない場合には、このフローを終了してメインフローに戻る。
【００２２】
ＴＩＭＥの値が０、すなわち、次のイベントデータの処理開始時間に達している場合には、曲エリアのアドレスであるレジスタＡＤＤの値をインクリメントして次のイベントデータのエリアを指定する（ステップＣ３）。そして、ＡＤＤで指定したエリアのイベントデータであるＭＥＭ（ＡＤＤ）がＥＮＤデータでないか否かを判別する（ステップＣ４）。ＥＮＤデータでない場合には、ＭＥＭ（ＡＤＤ）がオンイベントであるか否かを判別する（ステップＣ５）。オンイベントである場合には、フラグＯＮＦを１（発音指示）にセットする（ステップＣ６）。そして、ＭＥＭ（ＡＤＤ）の音高データをレジスタＯＮＫＯにストアする（ステップＣ７）。ステップＣ５において、ＭＥＭ（ＡＤＤ）がオンイベントでなくオフイベントである場合には、フラグＯＦＦを１（消音指示）にセットする（ステップＣ８）。
【００２３】
ステップＣ７において音高データをＯＮＫＯにストアした後、又は、ステップＣ８においてＯＦＦを１にセットした後は、ＡＤＤをインクリメントして次のデルタタイムのエリアを指定し（ステップＣ９）、ＭＥＭ（ＡＤＤ）のタイムデータをＴＩＭＥにストアする（ステップＣ１０）。そして、このフローを終了してメインフローに戻る。ステップＣ４において、ＭＥＭ（ＡＤＤ）がＥＮＤデータである場合には、曲の終了であるので、フラグＳＴＦを０（再生停止モード）にセットし（ステップＣ１１）、フラグＯＦＦを１（消音指示）にセットし（ステップＣ１２）、タイマインタラプト１を禁止し（ステップＣ１３）、タイマインタラプト２を禁止する（ステップＣ１４）。そして、このフローを終了してメインフローに戻る。
【００２４】
図８は、メインフローにおけるステップＡ４の発音処理のフローである。このフローにおいては、フラグＯＮＦが１であるか否かを判別する（ステップＤ１）。ＯＮＦが１（発音指示）である場合には、フラグＷＢＦが１であるか否かを判別する（ステップＤ２）。ＷＢＦが１（受信バッファＢの書き込みモード）である場合には、受信バッファＡのデータの読み出しが可能であるので、フラグＡＫＦが１であるか否かを判別する（ステップＤ３）。ＡＫＦが１（受信バッファＡのデータ書き込み完了）である場合には、受信バッファＡのサンプリング音声波形データを音源用メモリに転送する（ステップＤ４）。そして、ＡＫＦを０（空き状態）にセットする（ステップＤ５）。
【００２５】
ステップＤ２において、ＷＢＦが０（受信バッファＡの書き込みモード）である場合には、受信バッファＢのデータの読み出しが可能であるので、フラグＢＫＦが１であるか否かを判別する（ステップＤ６）。ＢＫＦが１（受信バッファＢのデータ書き込み完了）である場合には、受信バッファＢのサンプリング音声波形データを音源用メモリに転送する（ステップＤ７）。そして、ＢＫＦを０（空き状態）にセットする（ステップＤ８）。
【００２６】
ステップＤ５においてＡＫＦを０にセットした後、又は、ステップＤ８においてＢＫＦを０にセットした後は、ＷＢＦを反転する（ステップＤ９）。次に、波形送信要求フラグを１（送信要求）にセットする（ステップＤ１０）。この結果、通信インターフェースは、データベース装置２００に対してサンプリング音声波形データの転送を要求することになる。次に、音源用メモリに転送したサンプリング音声波形データが圧縮サンプリング音声波形データであるか否かを判別する（ステップＤ１１）。圧縮サンプリング音声波形データである場合には、そのデータに対して伸長処理を行って標準サンプリング音声波形データに変換する（ステップＤ１２）。
【００２７】
伸長処理の後、若しくは、ステップＤ１１において、受信したデータが標準サンプリング音声波形データである場合、又は、ステップＤ３において、ＡＫＦが０である場合、若しくは、ステップＤ６において、ＢＫＦが０である場合には、発音すべき音声データが得られないので、ＯＮＫＯによる発音処理を音源に対して指示する（ステップＤ１３）。そして、フラグＯＮＦを０（発音指示完了）にセットし（ステップＤ１４）、このフローを終了してメインフローに戻る。
【００２８】
ステップＤ１において、ＯＮＦが０である場合には、フラグＯＦＦが１であるか否かを判別する（ステップＤ１５）。ＯＦＦが０（消音指示）である場合には、音源に対してＯＮＫＯの音高データの消音指示を行う（ステップＤ１６）。そして、ＯＦＦを０（消音指示完了）にセットし（ステップＤ１７）、このフローを終了してメインフローに戻る。
【００２９】
図９は、メインフローのステップＡ５の受信処理のフローである。このフローにおいては、通信インターフェースを介してデータベース装置２００からサンプリング音声波形データの受信があったか否かを判別する（ステップＥ１）。受信があったときは、受信フラグを１にセットし（ステップＥ２）、波形送信要求フラグを０にセットする（ステップＥ３）。このフローを終了してメインフローに戻る。
【００３０】
図１０は、タイマインタラプト２のフローである。このフローにおいては、テンポ変更フラグが１であるか否かを判別し（ステップＦ１）、このフラグが１（テンポ変更あり）である場合には、レジスタＴＥＭＰのテンポデータを通信インターフェースを介してデータベース装置２００に送信する（ステップＦ２）。そして、テンポ変更フラグを０にセットする（ステップＦ３）。
【００３１】
次に、受信フラグが１であるか否かを判別する（ステップＦ４）。受信フラグが０（受信なし）である場合には、このフローを終了してメインフローに戻る。受信フラグが１（受信あり）である場合には、フラグＷＢＦが０であるか否かを判別する（ステップＦ５）。ＷＢＦが０（受信バッファＡの書き込みモード）である場合には、フラグＡＫＦが０であるか否かを判別する（ステップＦ６）。ＡＫＦが１（書き込み完了）である場合には、書き込みができないので、このフローを終了してメインフローに戻る。
【００３２】
ＡＫＦが０（空き状態）である場合には、受信バッファＡに受信したサンプリング音声波形データを書き込み（ステップＦ７）、データ受信が完了したか否かを判別する（ステップＦ８）。データ受信が完了していない場合には、このフローを終了してメインフローに戻る。メインフローから再びこのフローに移行したときは、ステップＦ７において、受信バッファＡに受信したサンプリング音声波形データを書き込む処理を続行して、ステップＦ８においてデータ受信が完了したか否かを判別する。そして、データ受信が完了するまで受信バッファＡに受信したサンプリング音声波形データを書き込む処理を続行する。データ受信が完了したときは、ＡＫＦを１（書き込み完了）にセットする（ステップＦ９）。
【００３３】
ステップＦ５においてＷＢＦが１（受信バッファＢの書き込みモード）である場合には、フラグＢＫＦが０であるか否かを判別する（ステップＦ１０）。ＢＫＦが１（書き込み完了）である場合には、書き込みができないので、このフローを終了してメインフローに戻る。ＢＫＦが０（空き状態）である場合には、受信バッファＢに受信したサンプリング音声波形データを書き込み（ステップＦ１１）、データ受信が完了したか否かを判別する（ステップＦ１２）。データ受信が完了していない場合には、このフローを終了してメインフローに戻る。メインフローから再びこのフローに移行したときは、ステップＦ１１において、受信バッファＢに受信したサンプリング音声波形データを書き込む処理を続行して、ステップＦ１２においてデータ受信が完了したか否かを判別する。そして、データ受信が完了するまで受信バッファＢに受信したサンプリング音声波形データを書き込む処理を続行する。データ受信が完了したときは、ＢＫＦを１（書き込み完了）にセットする（ステップＦ１３）。
【００３４】
ステップＦ９においてＡＫＦを１にセットした後、又は、ステップＦ１３においてＢＫＦを１にセットした後は、受信フラグを０にセットする（ステップＦ１５）。そして、このフローを終了してメインフローに戻る。なお、ステップＦ８及びステップＦ１２におけるデータ受信完了の判別は、データベース装置２００から転送するサンプリング音声波形データのバイト数を先に送信する構成にしてもよく、データ転送の後に終了を示すメッセージを送信する構成にしてもよい。
【００３５】
図１１は、第１実施形態におけるデータベース装置のＣＰＵ９のメインフローである。このフローでは、所定のイニシャライズを行い（ステップＧ１）、ハードディスク１４の歌詞データファイルから歌詞データをロードする（ステップＧ２）。次に、キーボード装置１００からテンポデータを受信したか否かを判別する（ステップＧ３）。テンポデータを受信したときは、そのテンポ値が７０以下であるか否かを判別する（ステップＧ４）。
【００３６】
テンポ値が７０以下である場合には、標準音声データファイル１６から最初の歌詞に対応する標準サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＧ５）。テンポ値が７０を超えている場合には、圧縮音声データファイル１７から最初の歌詞に対応する圧縮サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＧ６）。ステップＧ５又はステップＧ６において、ＲＡＭにサンプリング音声波形データをロードした後は、音声データ転送要求処理を実行する（ステップＧ７）。
【００３７】
図１２は、図１１におけるステップＧ７の音声データ転送要求処理のフローである。このフローにおいては、キーボード装置１００からテンポデータを受信したか否かを判別する（ステップＨ１）。テンポデータを受信したときは、そのテンポ値が７０以下であるか否かを判別する（ステップＨ２）。テンポ値が７０以下である場合には、標準音声データファイル１６からアドレスの示す歌詞に対応する標準サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＨ３）。テンポ値が７０を超えている場合には、圧縮音声データファイル１７からアドレスの示す歌詞に対応する圧縮サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＨ４）。
【００３８】
ステップＨ３又はステップＨ４において、ＲＡＭにサンプリング音声波形データをロードした後は、波形送信要求コマンドを受信したか否かを判別する（ステップＨ５）。コマンドを受信しない場合には、ステップＨ１に移行してこのフローを繰り返す。コマンドを受信したときは、転送用バッファにロードされたサンプリング音声波形データを送信バッファに転送する（ステップＨ６）。次に、歌詞データファイルのアドレスをインクリメントして次の歌詞データを指定する（ステップＨ７）。そして、指定したアドレスがエンドアドレスであるか否かを判別する（ステップＨ８）。エンドアドレスでない場合には、ステップＨ１に移行してこのフローを繰り返す。エンドアドレスである場合には、初期アドレスに変更する（ステップＨ９）。そして、ステップＨ１に移行してこのフローを繰り返す。
【００４２】
次に、本発明の第２実施形態の動作について図を参照して説明する。図１３は、第２に実施形態におけるデータベース装置２００の構成である。図１４〜図１８は、キーボード装置１００のＣＰＵ１のフローであり、図１９及び図２０は、データベース装置２００のＣＰＵ９のフローである。この第２実施形態において、データベース装置２００のハードディスク１４には、標準サンプリング音声波形データよりも２倍のサンプリング周波数の倍サンプリング音声波形データファイル１９のエリアが設けられているが、他の構成は第１実施形態の構成と同じである。また、キーボード装置１００のＣＰＵ１のメインフロー、タイマインタラプト１処理、メインフローにおける再生処理及び受信処理については、第１実施形態における図４、図６、図８及び図９のフローと同じであるので、図面及び説明は第１実施形態のものを援用する。
【００４３】
図１４は、第２実施形態におけるメインフローのスイッチ処理のフローである。このフローにおいては、スタートスイッチがオンされたか否かを判別し（ステップＪ１）、オンされたときは、フラグＳＴＦを反転する（ステップＪ２）。そして、ＳＴＦが１であるか否かを判別する（ステップＪ３）。ＳＴＦが１（再生モード）である場合には、図２に示した曲エリアのアドレスを指定するレジスタＡＤＤに０、すなわち、曲エリアの最初のタイムデータのエリアのアドレスをセットする（ステップＪ４）。次に、ＡＤＤで示す曲エリアのタイムデータであるＭＥＭ（ＡＤＤ）をレジスタＴＩＭＥにストアする（ステップＪ５）。次に、タイマインタラプト１を禁止解除にする（ステップＪ６）。この禁止解除によって、タイマインタラプト１が入るごとに、図６のフローに移行してＴＩＭＥの値をデクリメントする。
【００４４】
タイマインタラプト１を禁止解除にした後、タイマインタラプト２を禁止解除にする（ステップＪ７）。タイマインタラプト２については後述する。次に、ＲＡＭの受信バッファＡ及びＢをクリアする（ステップＪ８）。そして、波形送信要求フラグを１（データ要求）にセットする（ステップＪ９）。次に、テンポ変更フラグを１（テンポ変更あり）にセットし（ステップＪ１０）、フラグＷＢＦを０（受信バッファＡの書き込みモード）にセットし（ステップＪ１１）、フラグＡＫＦ及びＢＫＦをともに０（空き状態）にセットする（ステップＪ１２）。次に、発音開始時間検出処理を実行する（ステップＪ１３）。そして、このフローを終了してメインフローに戻る。
【００４５】
ステップＪ１において、スタートスイッチがオンされない場合には、テンポ設定スイッチがオンされたか否かを判別する（ステップＪ１４）。スタートスイッチもこのテンポ設定スイッチも共にオンされない場合には、このフローを終了してメインフローに戻る。このテンポ設定スイッチがオンされたときは、スイッチによって設定されたテンポデータをレジスタＴＥＭＰにストアする（ステップＪ１５）。次に、テンポ変更フラグを１（テンポ変更あり）にセットする（ステップＪ１６）。そして、このフローを終了してメインフローに戻る。ステップＪ３において、ＳＴＦが０（再生停止モード）である場合には、タイマインタラプト１を禁止し（ステップＪ１７）、タイマインタラプト２を禁止し（ステップＪ１８）、音源に対して消音指示を行う（ステップＪ１９）。そして、このフローを終了してメインフローに戻る。
【００４６】
図１５は、メインフローにおける発音処理のフローである。このフローにおいては、フラグＯＮＦが１であるか否かを判別する（ステップＫ１）。ＯＮＦが１（発音指示）である場合には、フラグＷＢＦが１であるか否かを判別する（ステップＫ２）。ＷＢＦが１（受信バッファＢの書き込みモード）である場合には、受信バッファＡのデータの読み出しが可能であるので、フラグＡＫＦが１であるか否かを判別する（ステップＫ３）。ＡＫＦが１（受信バッファＡのデータ書き込み完了）である場合には、受信バッファＡのサンプリング音声波形データを音源用メモリに転送する（ステップＫ４）。そして、ＡＫＦを０（空き状態）にセットする（ステップＫ５）。
【００４７】
ステップＫ２において、ＷＢＦが０（受信バッファＡの書き込みモード）である場合には、受信バッファＢのデータの読み出しが可能であるので、フラグＢＫＦが１であるか否かを判別する（ステップＫ６）。ＢＫＦが１（受信バッファＢのデータ書き込み完了）である場合には、受信バッファＢのサンプリング音声波形データを音源用メモリに転送する（ステップＫ７）。そして、ＢＫＦを０（空き状態）にセットする（ステップＫ８）。
【００４８】
ステップＫ５においてＡＫＦを０にセットした後、又は、ステップＫ８においてＢＫＦを０にセットした後は、ＷＢＦを反転する（ステップＫ９）。次に、波形送信要求フラグを１（送信要求）にセットする（ステップＫ１０）。この結果、通信インターフェースは、データベース装置２００に対してサンプリング音声波形データの転送を要求することになる。次に、受信バッファＡ又はＢに転送されたサンプリング音声波形データが、標準サンプリング音声波形データのサンプリング周波数を倍にした倍サンプリングデータであるか否かを判別する（ステップＫ１１）。
【００４９】
倍サンプリングデータである場合には、その倍サンプリングデータでＯＮＫＯによる発音処理を音源に対して指示する（ステップＫ１２）。受信バッファＡ又はＢに転送されたサンプリング音声波形データが倍サンプリングデータでない場合には、そのデータが圧縮サンプリング音声波形データであるか否かを判別する（ステップＫ１３）。圧縮サンプリング音声波形データである場合には、そのデータに対して伸長処理を行って標準サンプリング音声波形データに変換する（ステップＫ１４）。次に、ＯＮＫＯによる発音処理を音源に対して指示する（ステップＫ１５）。
【００５０】
ステップＫ１３において、受信バッファＡ又はＢに転送されたサンプリング音声波形データが圧縮サンプリング音声波形データでなく標準サンプリング音声波形データである場合には、発音すべき音声データが得られないので、ＯＮＫＯによる発音処理を音源に対して指示する（ステップＫ１５）。ステップＫ３においてＡＫＦが０である場合、又は、ステップＫ６においてＢＫＦが０である場合には、音源用メモリの前回発音のＯＮＫＯによる発音処理を音源に対して指示する（ステップＫ１６）。ステップＫ１２、ステップＫ１５、又はステップＫ１６において、発音処理を指示した後は、フラグＯＮＦを０（発音指示完了）にセットする（ステップＫ１７）。次に、発音開始時間検出処理を実行し（ステップＫ１８）、このフローを終了してメインフローに戻る。
【００５１】
ステップＫ１において、ＯＮＦが０である場合には、フラグＯＦＦが１であるか否かを判別する（ステップＫ１９）。ＯＦＦが０（消音指示）である場合には、音源に対してＯＮＫＯの音高データの消音指示を行う（ステップＫ２０）。そして、ＯＦＦを０（消音指示完了）にセットし（ステップＫ２１）、このフローを終了してメインフローに戻る。
【００５２】
図１６は、図１４のスイッチ処理のフローにおけるステップＪ１３、及び、図１５の発音処理のフローにおけるステップＫ１８の発音開始時間検出処理のフローである。このフローにおいては、図１４のステップＪ５においてレジスタＴＩＭＥにストアされた時間データ、すなわち次のイベントデータの開始時間までのデルタタイムを、レジスタＴＩＭＥ２にストアする（ステップＬ１）。そして、ポインタｎを１にセットして、ｎをインクリメントしながら、以下のループ処理を繰り返す。すなわち、ＡＤＤ＋ｎのアドレスのイベントデータであるＭＥＭ（ＡＤＤ＋ｎ）がオンイベントのデータでないか否かを判別し（ステップＬ２）、オンイベントのデータでない場合には、ｎをインクリメントして次のデルタタイムのデータを指定する（ステップＬ３）。
【００５３】
そして、ＭＥＭ（ＡＤＤ＋ｎ）のデルタタイムのデータをＴＩＭＥ２の時間データに累算する（ステップＬ５）。次に、ｎをインクリメントして次のイベントデータを指定し（ステップＬ６）、ステップＬ３に移行してそのイベントデータがオンイベントのデータでないか否かを判別する。このように、ｎをインクリメントしながら、次のオンイベントを捜す。そして、ステップＬ３においてＭＥＭ（ＡＤＤ＋ｎ）がオンイベントであった場合には、時間検出フラグを１にセットする（ステップＬ７）。そして、このフローを終了する。すなわち、このフローにおいては、オンイベントに到るまでのデルタタイムを累算することによって、次の発音開始時間に到るまでの時間を検出する。この検出した時間は、データベース装置２００からキーボード装置１００にサンプリング音声波形データを転送する転送許容時間である。したがって、この転送許容時間にサンプリング音声波形データを転送すれば、音切れが発生することなく適正に送受信できることになる。
【００５４】
図１７は、第２実施形態におけるタイマインタラプト２処理のフローである。このフローにおいては、テンポ変更フラグが１であるか否かを判別し（ステップＭ１）、このフラグが１（テンポ変更あり）である場合には、レジスタＴＥＭＰのテンポデータを通信インターフェースを介してデータベース装置２００に送信する（ステップＭ２）。そして、テンポ変更フラグを０にセットする（ステップＭ３）。次に、時間検出フラグが１であるか否かを判別する（ステップＭ４）。このフラグが１（時間検出）である場合には、レジスタＴＩＭＥ２の時間データすなわちデータ転送許容時間のデータを送信する（ステップＭ５）。そして、時間検出フラグを０にセットする（ステップＭ６）。
【００５５】
次に、図１８のフローにおいて、受信フラグが１であるか否かを判別する（ステップＭ７）。受信フラグが０（受信なし）である場合には、このフローを終了してメインフローに戻る。受信フラグが１（受信あり）である場合には、フラグＷＢＦが０であるか否かを判別する（ステップＭ８）。ＷＢＦが０（受信バッファＡの書き込みモード）である場合には、フラグＡＫＦが０であるか否かを判別する（ステップＭ９）。ＡＫＦが１（書き込み完了）である場合には、書き込みができないので、このフローを終了してメインフローに戻る。
【００５６】
ＡＫＦが０（空き状態）である場合には、受信バッファＡに受信したサンプリング音声波形データを書き込み（ステップＭ１０）、データ受信が完了したか否かを判別する（ステップＭ１１）。データ受信が完了していない場合には、このフローを終了してメインフローに戻る。メインフローから再びこのフローに移行したときは、ステップＭ１０において、受信バッファＡに受信したサンプリング音声波形データを書き込む処理を続行して、ステップＭ１１においてデータ受信が完了したか否かを判別する。そして、データ受信が完了するまで受信バッファＡに受信したサンプリング音声波形データを書き込む処理を続行する。データ受信が完了したときは、ＡＫＦを１（書き込み完了）にセットする（ステップＭ１２）。
【００５７】
ステップＭ８においてＷＢＦが１（受信バッファＢの書き込みモード）である場合には、フラグＢＫＦが０であるか否かを判別する（ステップＭ１３）。ＢＫＦが１（書き込み完了）である場合には、書き込みができないので、このフローを終了してメインフローに戻る。ＢＫＦが０（空き状態）である場合には、受信バッファＢに受信したサンプリング音声波形データを書き込み（ステップＭ１４）、データ受信が完了したか否かを判別する（ステップＭ１５）。データ受信が完了していない場合には、このフローを終了してメインフローに戻る。メインフローから再びこのフローに移行したときは、ステップＭ１４において、受信バッファＡに受信したサンプリング音声波形データを書き込む処理を続行して、ステップＭ１５においてデータ受信が完了したか否かを判別する。そして、データ受信が完了するまで受信バッファＢに受信したサンプリング音声波形データを書き込む処理を続行する。データ受信が完了したときは、ＢＫＦを１（書き込み完了）にセットする（ステップＭ１６）。
【００５８】
ステップＭ１２においてＡＫＦを１にセットした後、又は、ステップＭ１６においてＢＫＦを１にセットした後は、受信フラグを０にセットする（ステップＭ１８）。そして、このフローを終了してメインフローに戻る。なお、ステップＭ１１及びステップＭ１５におけるデータ受信完了の判別は、データベース装置側から転送するサンプリング音声波形データのバイト数を先に送信する構成にしてもよく、データ転送の後に終了を示すメッセージを送信する構成にしてもよい。
【００５９】
図１９は、第２実施形態におけるデータベース装置２００のＣＰＵ９のメインフローである。このフローでは、所定のイニシャライズを行い（ステップＮ１）、ハードディスク１４の歌詞データファイルから歌詞データをＲＡＭにロードする（ステップＮ２）。次に、キーボード装置１００からテンポデータを受信したか否かを判別する（ステップＮ３）。テンポデータを受信したときは、ＴＩＭＥ２の時間データを受信したか否かを判別する（ステップＮ４）。
【００６０】
この時間データを受信したときは、ノートオンまでの実時間を算出する（ステップＮ５）。４分音符の分解能をｒｅｓ、テンポをｔｅｍｐｏ、クロック数をｃｌｏｃｋとすると、実時間ｔｉｍｅの算出式は、
ｔｉｍｅ＝ｃｌｏｃｋ÷｛（ｔｅｍｐｏ÷６０）×ｒｅｓ｝
で表わされる。したがって、分解能が４８、クロック数が４８、テンポが１００のときの実時間は０．６秒となる。
【００６１】
実時間の算出の後、キーボード装置１００との間における通信回線の転送レートを取得する（ステップＮ６）。そして、転送可能なバイト数を演算する（ステップＮ７）。例えば、ノートオンまでの実時間が０．６秒間で、ＲＳ２３２Ｃでの転送レートが３８４００ｂｐｓである場合には、スタートビット、ストップビットの２ビット分を考慮すると、０．６秒間に２３４０バイトのサンプリング音声波形データの転送が可能である。
【００６２】
転送可能なバイト数を演算した後は、倍サンプリング音声波形データの転送が可能か否かを判別する（ステップＮ８）。転送が可能である場合には、最初の歌詞に対応する倍サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＮ９）。倍サンプリングデータの転送が可能でない場合には、標準サンプリング音声波形データの転送が可能か否かを判別する（ステップＮ１０）。転送が可能な場合には、最初の歌詞に対応する標準サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＮ１１）。標準サンプリング音声波形データの転送も可能でない場合には、最初の歌詞に対応する圧縮サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＮ１２）。ステップＮ９、ステップＮ１１、又はステップＮ１２においてデータをロードした後は、音声データ転送要求処理を実行する（ステップＮ１３）。
【００６３】
図２０は、音声データ転送要求処理のフローである。このフローにおいては、キーボード装置１００からテンポデータを受信したか否かを判別する（ステップＰ１）。テンポデータを受信しない場合には、ＴＩＭＥ２の時間データを受信したか否かを判別する（ステップＰ２）。ステップＰ１においてテンポデータを受信した場合、又はステップＰ２においてＴＥＭＰ２を受信した場合には、ノートオンまでの実時間を算出し（ステップＰ３）、キーボード装置１００との間における通信回線の転送レートを取得する（ステップＰ４）。そして、転送可能なバイト数を演算する（ステップＰ４）。
【００６４】
転送可能なバイト数を演算した後は、倍サンプリング音声波形データの転送が可能か否かを判別する（ステップＰ６）。転送が可能である場合には、歌詞データファイルアドレスの示す歌詞に対応する倍サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＰ７）。倍サンプリングデータの転送が可能でない場合には、標準サンプリング音声波形データの転送が可能か否かを判別する（ステップＰ８）。転送が可能な場合には、歌詞データファイルアドレスの示す歌詞に対応する標準サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＰ９）。標準サンプリング音声波形データの転送も可能でない場合には、歌詞データファイルアドレスの示す歌詞に対応する圧縮サンプリング音声波形データをハードディスクからＲＡＭにロードする（ステップＰ１０）。
【００６５】
ステップＰ７、ステップＰ９、若しくはステップＰ１０においてデータをロードした後、又はステップＰ１及びステップＰ２においてテンポデータを受信しなかった場合には、キーボード装置１００から波形要求コマンドを受信したか否かを判別する（ステップＰ１１）。コマンドを受信しない場合には、ステップＰ１に移行してこのフローを繰り返す。コマンドを受信したときは、ロードされたサンプリング音声波形データを送信バッファに転送する（ステップＰ１２）。次に、歌詞データファイルアドレスをインクリメントする（ステップＰ１３）。そして、このインクリメントしたアドレスがエンドアドレスであるか否かを判別する（ステップＰ１４）。エンドアドレスでない場合には、ステップＰ１に移行してこのフローを繰り返す。エンドアドレスである場合には、初期アドレスへ変更する（ステップＰ１５）。そして、ステップＰ１に移行してこのフローを繰り返す。
【００６８】
なお、上記各実施形態においては、データ密度の異なるサンプリング波形データをハードディスク１４にあらかじめ記憶している構成にしたが、他の実施形態として、標準サンプリング音声波形データのみをハードディスク１４に記憶させて、圧縮サンプリング音声波形データや倍サンプリング音声波形データを転送する場合には、データ圧縮処理やデータ補間処理を行って、転送する構成にしてもよい。この場合には、データベース装置２００のＣＰＵ９に高速処理が要求されるが、ハードディスク１４の容量を低減することができる。
【００６９】
また、上記各実施形態においては、データベース装置２００からキーボード装置１００に転送するデータは、人間の音声をサンプリングしたサンプリング音声波形データとしたが、実際の楽器から発生される楽音をサンプリングしたサンプリング波形データでもよい。
【００７０】
また、上記各実施形態においては、キーボード装置１００のＲＯＭ４に記憶されているプログラムを実行することによって楽音制御処理を行う構成にしたが、フロッピーディスク、ＣＤ、その他の汎用の記録媒体に、楽音制御処理プログラムを記録しておき、キーボード装置１００でこの記録媒体の楽音制御処理プログラムを読み出して実行する構成にしてもよい。また、データベース装置２００を汎用のパソコンで構成し、フロッピーディスク、ＣＤ、その他の汎用の記録媒体に、サンプリング波形データを転送する処理プログラムを記録しておき、これをパソコンで読み出して実行する構成にしてもよい。すなわち、記録媒体の発明を構成することもできる。
【００７１】
【発明の効果】
本発明によれば、通信手段を介して接続された２つの装置の間で、一方の装置から他方の装置にリアルタイムで要求したサンプリング波形データを、音切れが発生することなく適正に送受信できる。
【図面の簡単な説明】
【図１】第１及び第２実施形態のキーボード装置１００の構成を示すブロック図。
【図２】図１におけるＲＯＭの曲エリア及びＲＡＭのワークエリアのデータを示す図。
【図３】第１実施形態のデータベース装置２００の構成を示すブロック図。
【図４】第１及び第２実施形態におけるキーボード装置のＣＰＵのメインフローチャート。
【図５】第１実施形態におけるスイッチ処理のフローチャート。
【図６】第１及び第２実施形態におけるタイマインタラプト１処理のフローチャート。
【図７】図４における再生処理のフローチャート。
【図８】第１実施形態における発音処理のフローチャート。
【図９】図４における受信処理のフローチャート。
【図１０】第１実施形態におけるタイマインタラプト２処理のフローチャート。
【図１１】第１実施形態におけるデータベース装置のメインフローチャート。
【図１２】図１１における音声データ転送要求処理のフローチャート。
【図１３】第２実施形態における楽音制御装置の構成を示すブロック図。
【図１４】第２実施形態のスイッチ処理のフローチャート。
【図１５】第２実施形態における発音処理のフローチャート。
【図１６】図１４及び図１５における発音開始時間検出処理のフローチャート。
【図１７】第２実施形態におけるタイマインタラプト２処理のフローチャート。
【図１８】図１７に続くタイマインタラプト２処理のフローチャート。
【図１９】第２実施形態におけるデータベース装置のメインフローチャート。
【図２０】図１９における音声データ転送要求処理のフローチャート。
【符号の説明】
１  ＣＰＵ
２  鍵盤部
３  スイッチ部
４  ＲＯＭ
５  ＲＡＭ
６  音源部
７  通信インタフェース
１００  キーボード装置
２００  データベース装置
【図１】
0004016531.tif 000002
【図２】
0004016531.tif 000003
【図３】
0004016531.tif 000004
【図４】
0004016531.tif 000005
【図５】
0004016531.tif 000006
【図６】
0004016531.tif 000007
【図７】
0004016531.tif 000008
【図８】
0004016531.tif 000009
【図９】
0004016531.tif 000010
【図１０】
0004016531.tif 000011
【図１１】
0004016531.tif 000012
【図１２】
0004016531.tif 000013
【図１３】
0004016531.tif 000014
【図１４】
0004016531.tif 000015
【図１５】
0004016531.tif 000016
【図１６】
0004016531.tif 000017
【図１７】
0004016531.tif 000018
【図１８】
0004016531.tif 000019
【図１９】
0004016531.tif 000020
【図２０】
0004016531.tif 000021