説明

オーディオデータ入力装置および出力装置

【課題】USB等の規格で接続するオーディオデータの入力装置や出力装置において、低速で処理能力の低いCPUであってもストリーミングによるデータ転送が実現できるようにすることを目的とする。
【解決手段】所定のフレーム周期毎の処理でオーディオデータを転送するオーディオデータ出力装置および入力装置において、該フレーム周期毎の処理をCPU以外のハードウェアで実施し、CPUにはフレーム周期毎の割込がかからないようにする。ホストからオーディオデータ出力装置へのオーディオデータの転送の場合は、再生制御部の制御により受信バッファおよび再生バッファに係るデータ転送の制御と、受信部および処理部(DSP)の制御を行う。オーディオ出力装置からホストへのオーディオデータの転送の場合は、録音制御部の制御により送信バッファおよび録音バッファに係るデータ転送の制御と、送信部および処理部の制御を行う。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、例えばUSB等の汎用インターフェースでPCと接続され、音響信号(オーディオデータ)の入出力機能を提供するオーディオデータ入力装置および出力装置に関する。
【背景技術】
【0002】
従来より、オーディオやビデオのストリーミングが可能な汎用のUSBインターフェース(I/O)回路(トランシーバおよびエンドポイントコントローラ)が、各社から提供されている。
【0003】
また、USBケーブルにより、パーソナルコンピュータ(PC)と接続され、PCのWindows(登録商標),Mac OSX等のオペレーティングシステム(OS)上で動作する、CubaseやProtools等の音楽アプリケーションに対して、オーディオデータの入出力機能を提供するUSBオーディオデバイスが知られている。音楽アプリケーションは、オーディオデータの外部からの入力や、外部への出力に、USBオーディオデバイスを用いることができる。音楽アプリケーションは、USBオーディオデバイスを用いて外部から入力したオーディオデータを、1のオーディオトラックに録音したり、1のオーディオトラックで再生したオーディオデータを、USBオーディオデバイスを用いて外部へ出力する。
【0004】
また、PCによる、USBオーディオデバイスを用いての、外部へのオーディオデータの出力、および、外部からのオーディオデータの入力では、それぞれ、USBのアイソクロナス転送機能を用いて、PCからUSBオーディオデバイスへのオーディオデータのストリーミングと、USBオーディオデバイスからPCへのオーディオデータのストリーミングが行われる。各ストリーミングは、オーディオデバイス側においては、CPUが、USBの各フレーム周期毎に、USBインターフェースやDirect Memory Access(DMA)回路を制御することにより実現されている。
【0005】
下記特許文献1には、PCから送信されるオーディオデータをUSBインタフェースで受信して再生する装置において、オーディオデータが送信されてくるタイミングでCPUに割込をかけ、CPUがバッファ残量のチェックや再生クロックの制御を行うものが開示されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−292375
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述したように、USB方式のデータ転送では、各フレーム周期毎(SOFパケットの受信毎)に、CPU(ノードとなるデバイス側のCPU)に割り込みをかけ、CPUによるUSBインターフェースやDMAの制御処理を行っている。割り込みは1m秒(USB1.1)ないし125μ秒(USB2.0)毎と、結構な頻度であり、また、オーディオデータのストリーミングを途切れさせないために、所定の時間内に割込処理を行うことが要求される。さらに、CPUは、デバイス全体の制御も行わなければならない。複数chのオーディオデータのストリーミングを行っている際には、PCからの指示で、その複数の各chのパラメータ(音量、エフェクト等)を設定しなければならず、CPUの負荷はさらに増大する。従って、CPUには、高速で処理能力の高い処理装置が必要であった。そういったCPUは、一般的に、回路規模が大きく、また、消費電力も大きい。
【0008】
以上のような事情に鑑み、USB方式で接続するデバイスにおいては、低速で処理能力の低いCPUであっても、オーディオデータのストリーミングが問題なく実現できるようにすることが望まれている。
【0009】
この発明の目的は、USB等の規格で接続するオーディオデータの入力装置や出力装置において、低速で処理能力の低いCPUであってもオーディオデータのストリーミングによるデータ転送が問題なく実現できるようにすることにある。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明は、所定のフレーム周期毎の処理でオーディオデータを転送するオーディオデータ出力装置および入力装置において、該フレーム周期毎の処理をCPU以外のハードウェアで実施し、CPUにはフレーム周期毎の割込がかからないようにしたことを特徴とする。
【0011】
すなわち、請求項1に係る発明は、ホスト装置から、所定のフレーム周期毎に、通信バスを介して供給されるオーディオデータを入力し、所定の処理の後、出力するオーディオデータ出力装置であって、先入れ先出し方式の受信バッファを有し、前記通信バスを介して、前記フレーム周期毎に、前記ホスト装置からの出力要求に応じて、前記ホスト装置から複数サンプルずつ送られてくる複数チャンネル(ch)のオーディオデータを受信し、受信した複数chのオーディオデータを前記受信バッファに書き込む、受信動作を行う受信部と、先入れ先出し方式の再生バッファを含み、前記再生バッファに記憶されている複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ読み出して、出力する再生部と、装置全体を制御するプロセッサと、前記プロセッサからの指示に従い、前記受信部および再生部の動作を制御する制御部とを備え、前記プロセッサは、(1)前記通信バスを介して、前記ホスト装置から、受信するオーディオデータに関するパラメータを受け取ったときは、前記制御部に、該パラメータを設定し、(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの出力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、前記制御部は、前記プロセッサからの動作開始の指示に応じて、前記受信バッファと前記再生バッファをクリアし、前記受信部の受信動作を有効化するとともに、前記再生部のサンプル読み出しの動作を停止中とし、その後、前記フレーム周期毎に、(1)前記受信部がオーディオデータを受信しており、かつ、前記再生部のサンプル読み出しの動作が停止中であれば、受信したオーディオデータを前記受信バッファから前記再生バッファに転送するとともに、前記再生バッファのオーディオデータが所定量に達したとき、前記再生部に対して、前記サンプル読み出しの動作の開始を指示して、その動作を開始させ、(2)前記受信部がオーディオデータを受信しており、かつ、前記再生部の前記サンプル読み出しの動作が動作中であれば、受信したオーディオデータを前記受信バッファから前記再生バッファに転送し、(3)前記受信部がオーディオデータを受信していなければ、前記再生部の前記サンプル読み出しの動作を停止することを特徴とする。
【0012】
請求項2に係る発明は、請求項1に記載のオーディオ出力装置において、前記制御部は、さらに、前記フレーム周期毎に、(4)前記受信部がオーディオデータを受信しており、かつ、前記再生バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記再生部の前記サンプル読み出しの動作を停止するとともに、前記再生バッファのオーディオデータをクリアし、受信したオーディオデータを前記受信バッファから再生バッファに転送することを特徴とする。
【0013】
請求項3に係る発明は、請求項2に記載のオーディオデータ出力装置において、前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、前記制御部は、前記自動復帰処理が有効であるときは、前記(4)の動作を実行し、前記自動復帰処理が無効であるときは、前記(4)の動作の代わりに、前記フレーム周期毎に実行している動作を停止して、以後は動作停止状態を維持することを特徴とする。
【0014】
請求項4に係る発明は、請求項1に記載のオーディオデータ出力装置において、前記プロセッサは、前記通信バスを介して、前記ホスト装置から出力停止指示を受け取ったとき、その出力停止指示に応じて、前記制御部に対し、動作の停止を指示し、前記制御部は、該動作の停止の指示に応じて、前記再生部のサンプル読み出しの動作を停止することを特徴とする。
【0015】
請求項5に係る発明は、請求項1に記載のオーディオデータ出力装置において、前記再生部から出力されるオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行する、デジタル信号処理部を備えており、前記プロセッサは、受信するオーディオデータに関するパラメータを設定することを特徴とする。
【0016】
請求項6に係る発明は、請求項1から5の何れか1つに記載のオーディオデータ出力装置において、前記オーディオデータに関するパラメータは、該オーディオデータのサンプリング周波数、サンプルのビット数、およびch数のうちの、少なくとも1つのパラメータを含むことを特徴とする。
【0017】
請求項7に係る発明は、外部からオーディオデータを入力し、所定の処理の後、所定のフレーム周期毎に、通信バスを介してホスト装置に供給するオーディオ入力装置であって、先入れ先出し方式の録音バッファを有し、前記外部から入力した複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ前記録音バッファに書き込む録音部と、先入れ先出し方式の送信バッファを有し、前記フレーム周期毎に、前記ホスト装置から送られる入力要求に応じて、前記送信バッファに記憶された複数chのオーディオデータを、前記通信バスを介して前記ホスト装置に複数サンプルずつ送信する、送信動作を行う送信部と、装置全体を制御するプロセッサと、前記プロセッサからの指示に従い、前記送信部および録音部の動作を制御する制御部とを備え、前記プロセッサは、(1)前記通信バスを介して、前記ホスト装置から、送信するオーディオデータに関するパラメータを受け取ったときは、前記制御部に、該パラメータを設定し、(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの入力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、前記制御部は、前記プロセッサからの動作開始の指示に応じて、前記送信バッファと録音バッファをクリアし、前記送信部の送信動作を無効化するとともに、前記録音部の前記サンプル書き込みの動作を停止し、その後、前記フレーム周期毎に、(1)前記録音部の前記サンプル書き込みの動作が停止中であれば、前記録音部に対して前記サンプル書き込みの動作の開始を指示して、その動作を開始させ、(2)前記録音部の前記サンプル書き込みの動作が動作中であり、かつ、前記送信部が送信無効であれば、録音バッファのオーディオデータを送信バッファに転送するとともに、前記送信バッファに所定量のオーディオデータがある場合は、前記送信部の送信動作を有効化し、(3)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求がある場合は、録音バッファのオーディオデータを送信バッファに転送することを特徴とする。
【0018】
請求項8に係る発明は、請求項7に記載のオーディオデータ入力装置において、前記制御部は、さらに、前記フレーム周期毎に、(4)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求が無い場合は、(a)送信バッファに記憶されたオーディオデータを1フレーム周期分消去し、録音バッファのオーディオデータを送信バッファに転送し、または、(b)録音バッファに記憶されたオーディオデータを1フレーム周期分消去することを特徴とする。
【0019】
請求項9に係る発明は、請求項8に記載のオーディオデータ入力装置において、前記プロセッサが、前記制御部に対して、前記(4)の場合に前記(a)または(b)の何れを適用するかを指示し、前記制御部は、該指示に応じて、前記(4)の場合に前記(a)または(b)の何れかの動作を実行することを特徴とする。
【0020】
請求項10に係る発明は、請求項7に記載のオーディオデータ入力装置において、前記制御部は、さらに、前記フレーム周期毎に、(5)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、録音バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記送信部の送信動作を無効化するとともに、録音バッファおよび送信バッファのオーディオデータをクリアすることを特徴とする。
【0021】
請求項11に係る発明は、請求項10に記載のオーディオデータ入力装置において、前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、前記制御部は、前記自動復帰処理が有効であるときは、前記(5)の動作を実行し、前記自動復帰処理が無効であるときは、前記(5)の動作の代わりに、前記フレーム周期毎に実行している動作を停止して、以後は動作停止状態を維持することを特徴とする。
【0022】
請求項12に係る発明は、請求項7に記載のオーディオデータ入力装置において、前記プロセッサは、前記通信バスを介して、前記ホスト装置から入力停止指示を受け取ったとき、その入力停止指示に応じて、前記制御部に対し、動作の停止を指示し、前記制御部は、該動作の停止の指示に応じて、前記録音部のサンプリング書き込みの動作を停止することを特徴とする。
【0023】
請求項13に係る発明は、請求項7に記載のオーディオデータ入力装置において、前記外部からのオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行し、前記録音部に出力する、デジタル信号処理部を備えており、前記プロセッサは、受信するオーディオデータに関するパラメータを設定するものであることを特徴とする。
【0024】
請求項14に係る発明は、請求項7から13の何れか1つに記載のオーディオデータ入力装置において、前記オーディオデータに関するパラメータは、該オーディオデータのサンプリング周波数、サンプルのビット数、およびch数のうちの、少なくとも1つのパラメータを含むことを特徴とする。
【0025】
請求項15に係る発明は、ホスト装置から、所定のフレーム周期毎に、通信バスを介して供給されるオーディオデータを入力し、所定の処理の後、出力するオーディオデータ出力装置であって、先入れ先出し方式の受信バッファと、先入れ先出し方式の再生バッファと、前記通信バス上の信号からフレーム周期を検出する検出部と、前記通信バスを介して、前記フレーム周期毎に、前記ホスト装置からの出力要求に応じて、前記ホスト装置から複数サンプルずつ送られてくる複数チャンネル(ch)のオーディオデータを受信し、受信した複数chのオーディオデータを前記受信バッファに書き込む、受信動作を行う受信部と、前記再生バッファに記憶されている複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ読み出して、出力する再生部と、装置全体を制御するプロセッサと、前記プロセッサからの指示に従い、前記受信バッファおよび再生バッファに係るデータ転送を制御するとともに、前記受信部および再生部の動作を制御する制御部とを備え、前記プロセッサは、(1)前記通信バスを介して、前記ホスト装置から、受信するオーディオデータに関するパラメータを受け取ったときは、前記制御部および前記再生部に、該パラメータを設定し、(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの出力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、前記制御部は、前記プロセッサからの動作開始の指示に応じて、前記受信バッファと再生バッファをクリアし、前記受信部の受信動作を有効化するとともに、前記再生部の前記サンプル読み出しの動作を停止中とし、その後、フレーム周期が検出される毎に、(1)前記受信部がオーディオデータを受信しており、かつ、前記再生部の前記サンプル読み出しの動作が停止中であれば、受信したオーディオデータを受信バッファから再生バッファに転送するとともに、再生バッファのオーディオデータが所定量に達したとき、前記再生部に対して、前記サンプル読み出しの動作の開始を指示して、その動作を開始させ、(2)前記受信部がオーディオデータを受信しており、かつ、再生バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記再生部の前記サンプル読み出しの動作を停止するとともに、再生バッファのオーディオデータをクリアし、受信したオーディオデータを受信バッファから再生バッファに転送し、(3)前記受信部がオーディオデータを受信しており、かつ、前記再生部の前記サンプル読み出しの動作が動作中であれば、受信したオーディオデータを受信バッファから再生バッファに転送し、(4)前記受信部がオーディオデータを受信していなければ、前記再生部の前記サンプル読み出しの動作を停止することを特徴とする。
【0026】
請求項16に係る発明は、外部からオーディオデータを入力し、所定の処理の後、所定のフレーム周期毎に、通信バスを介してホスト装置に供給するオーディオ入力装置であって、先入れ先出し方式の送信バッファと、先入れ先出し方式の録音バッファと、通信バス上の信号からフレーム周期を検出する検出部と、前記外部から入力した複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ録音バッファに書き込む録音部と、前記フレーム周期毎に、前記ホスト装置から送られる入力要求に応じて、送信バッファに記憶された複数chのオーディオデータを、前記通信バスを介して前記ホスト装置に複数サンプルずつ送信する、送信動作を行う送信部と、装置全体を制御するプロセッサと、前記プロセッサからの指示に従い、前記送信バッファおよび録音バッファに係るデータ転送を制御するとともに、前記送信部および録音部の動作を制御する制御部とを備え、前記プロセッサは、(1)前記通信バスを介して、前記ホスト装置から、送信するオーディオデータに関するパラメータを受け取ったときは、前記制御部および前記録音部に、該パラメータを設定し、(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの入力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、前記制御部は、前記プロセッサからの動作開始の指示に応じて、前記送信バッファと録音バッファをクリアし、前記送信部の送信動作を無効化するとともに、前記録音部の前記サンプル書き込みの動作を停止し、その後、フレーム周期が検出される毎に、(1)前記録音部の前記サンプル書き込みの動作が停止中であれば、前記録音部に対して前記サンプル書き込みの動作の開始を指示して、その動作を開始させ、(2)前記録音部の前記サンプル書き込みの動作が動作中であり、かつ、前記送信部が送信無効であれば、録音バッファのオーディオデータを送信バッファに転送するとともに、前記送信バッファに所定量のオーディオデータがある場合は、前記送信部の送信動作を有効化し、(3)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求が無い場合は、(a)送信バッファに記憶されたオーディオデータを1フレーム周期分消去し、録音バッファのオーディオデータを送信バッファに転送し、または、(b)録音バッファに記憶されたオーディオデータを1フレーム周期分消去し、(4)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、録音バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記送信部の送信動作を無効化するとともに、録音バッファおよび送信バッファのオーディオデータをクリアし、(5)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求がある場合は、録音バッファのオーディオデータを送信バッファに転送することを特徴とする。
【0027】
請求項17に係る発明は、請求項15に記載のオーディオデータ出力装置または請求項16に記載のオーディオデータ入力装置において、前記オーディオデータに係るパラメータは、該オーディオデータのサンプリング周波数、サンプルのビット数、およびch数のうちの、少なくとも1つのパラメータを含むことを特徴とする。
【0028】
請求項18に係る発明は、請求項15に記載のオーディオデータ出力装置において、前記再生部から出力されるオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行する、デジタル信号処理部を備えており、前記プロセッサは、前記デジタル信号処理部における信号処理を規定するアルゴリズムやパラメータを設定するものであることを特徴とする。
【0029】
請求項19に係る発明は、請求項16に記載のオーディオデータ入力装置において、前記外部からのオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行し、前記録音部に出力する、デジタル信号処理部を備えており、前記プロセッサは、前記デジタル信号処理部における信号処理を規定するアルゴリズムやパラメータを設定するものであることを特徴とする。
【0030】
請求項20に係る発明は、請求項15に記載のオーディオデータ出力装置において、前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、前記制御部は、前記自動復帰処理が有効であるときは、前記(2)の動作を実行し、前記自動復帰処理が無効であるときは、前記(2)の動作の代わりに、前記フレーム周期が検出される毎に実行している動作を停止して、以後は動作停止状態を維持することを特徴とする。
【0031】
請求項21に係る発明は、請求項16に記載のオーディオデータ入力装置において、前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、前記制御部は、前記自動復帰処理が有効であるときは、前記(4)の動作を実行し、前記自動復帰処理が無効であるときは、前記(4)の動作の代わりに、前記フレーム周期が検出される毎に実行している動作を停止して、以後は動作停止状態を維持することを特徴とする。
【0032】
請求項22に係る発明は、請求項16に記載のオーディオデータ入力装置において、前記プロセッサが、前記制御部に対して、前記(3)の場合に前記(a)または(b)の何れを適用するかを指示し、前記制御部は、該指示に応じて、前記(3)の場合に前記(a)または(b)の何れかの動作を実行するものであることを特徴とする。
【0033】
請求項23に係る発明は、請求項15に記載のオーディオデータ出力装置または請求項16に記載のオーディオデータ入力装置において、前記プロセッサは、前記通信バスを介して、前記ホスト装置から出力停止指示または入力停止指示を受け取ったとき、その出力停止指示または入力停止指示に応じて、前記制御部に対し、動作の停止を指示し、前記制御部は、該動作の停止の指示に応じて、オーディオ信号の出力または入力動作を停止することを特徴とする。
【発明の効果】
【0034】
本発明によれば、ホスト装置から出力されるオーディオデータを本発明に係る装置で入力する場合、および、本発明に係る装置から出力されるオーディオデータをホスト装置で入力する場合の何れも、フレーム周期毎(すなわちフレーム周期タイミングが検出される毎)に行うべき処理は、制御部(再生制御部および録音制御部)が適宜制御を行うことにより、プロセッサ以外のブロックで実行することができる。従って、プロセッサは、フレーム周期毎すなわちフレーム周期タイミングが検出されても、割込処理などを行わなくて済むため、低速で処理能力が低いものでよい。また、プロセッサの処理能力を、オーディオデータの入出力以外の各種の処理に振り分けることもできる。特に、バッファのデータ満杯や不足が生じた場合や、ホスト装置との間でオーディオデータの転送に不具合が生じた場合でも、プロセッサに負担をかけることなく、制御部の制御により自動復帰させることができる。
【図面の簡単な説明】
【0035】
【図1】実施形態のUSBオーディオデバイスの内部構成図
【図2】オーディオデータの入出力およびミキサの構成例を示すブロック図
【図3】オーディオデータの入出力およびエフェクタの構成例を示すブロック図
【図4】パケットの構成図
【図5】電源オン時の処理を示すフローチャート
【図6】再生時のPC、CPU、および再生制御部が行う処理の手順を示すフローチャート
【図7】PCからの楽音信号の受信(再生)の際の再生制御部の動作を示すステートマシン図
【図8】録音時のPC、CPU、および録音制御部が行う処理の手順を示すフローチャート
【図9】楽音信号のPCへの送信(録音)の際の録音制御部の動作を示すステートマシン図
【発明を実施するための形態】
【0036】
以下、図面を用いてこの発明の実施の形態を説明する。
【0037】
図1は、この発明の1つの実施の形態であるUSB(Universal Serial Bus)オーディオデバイスの内部構成を示す。100はホストとなるパーソナルコンピュータ(PC)、120はPC100とUSBケーブル150で接続されたUSBオーディオデバイスである。なお、以下ではPC100とUSBオーディオデバイス120との間のデータ転送にUSB1.1を適用した例で説明する。
【0038】
PC100は、中央処理装置(CPU)101、フラッシュメモリ102、ランダムアクセスメモリ(RAM)103、ハードディスク(HDD)104、タイマ105、ネットワーク入出力インターフェース(I/O)106、表示器I/O107、およびUSB_I/O109を備える。CPU101は、RAM103などに格納されたプログラムを実行することにより、PC100の全体の動作を制御する処理装置である。フラッシュメモリ102およびHDD104は、各種のプログラムやデータを格納する不揮発性の記憶装置である。タイマ105は、時間計測のためのタイマ回路である。ネットワークI/O106は、ローカルエリアネットワーク(LAN)などのネットワークに接続するためのインターフェースである。表示器I/O107には表示器(ディスプレイ)108が接続され、CPU101からの指示により各種の情報が表示器108に表示される。USB_I/O109には、キーボード110、マウス111、およびUSBオーディオデバイス120が接続されている。
【0039】
PC100上ではDAW(デジタル・オーディオ・ワークステーション)などの音楽アプリケーションが実行され、これによりPC100は、例えばオーディオデータの録音再生機能、オーディオデータの作成編集機能、ミキシング機能、およびシーケンサー機能などを実現する装置として動作する。
【0040】
USBオーディオデバイス(以下、単に「デバイス」と呼ぶ)120は、プリント基板上に、USB端子122、アナログデジタル変換器(ADC)123、デジタルアナログ変換器(DAC)124、半導体集積回路121、操作子136、および表示器138を配置して構成されている。1チップの集積回路である半導体集積回路121は、CPU131、フラッシュメモリ132、RAM133、タイマ134、操作子I/O135、表示器I/O137、DSP139、波形I/O140、録音制御部141、録音FIFO142、再生制御部143、再生FIFO144、エンドポイントコントローラ145、およびUSBトランシーバ149を備える。
【0041】
CPU131は、集積回路121の全体の動作を制御する処理装置である。フラッシュメモリ132は、CPU131が実行するプログラム、DSP139で実行させるマイクロプログラム、および各種のパラメータデータなどを記憶する不揮発性の記憶手段である。RAM133は、CPU131が実行・使用するプログラムやデータを格納する揮発性のワーキングメモリである。タイマ134は、所定のクロック信号を生成して集積回路121の各部に供給する。操作子I/O135は操作子136を、表示器I/O137は表示器138を、それぞれ接続するインターフェースである。操作子136により、集積回路121に対する各種の指示を入力できる。表示器138により、集積回路121の各種のデータを表示できる。
【0042】
DSP139は、CPU131の制御の元で、CPU131から設定されたマイクロプログラムおよび係数データで動作することにより、オーディオデータの信号処理を行う。DSP139は、時分割処理で複数chのオーディオデータを処理することができる。DSP139のオーディオデータの入出力は、波形I/O140を介して外部から入出力する経路と、PC100との間でUSB端子122を介して入出力する経路がある。
【0043】
波形I/O140は、シリアルインターフェース(USB以外のもの)によるオーディオデータ等の入出力機能を実現する。ADC123は、マイク入力やライン入力などで並列に入力する32chのアナログ音響信号をそれぞれディジタル音響信号(オーディオデータ)に変換し、さらに時分割32chのシリアルデータに変換して、波形I/O140に出力する。波形I/O140は、入力したシリアルデータを32chのパラレルなオーディオデータに変換し、DSP139の入力レジスタに書き込むことにより、DSP139に渡す。DSP139は、所定のサンプリング周期毎に、前のサンプリング周期に入力レジスタに書き込まれた複数chのオーディオデータに対して信号処理を行い、その処理結果の複数chのオーディオデータを、次のサンプリング周期に読み出されるべきオーディオデータとして出力レジスタに書き込む。また、波形I/O140は、1サンプリング周期毎に、DSP139の出力レジスタから、DSP139で処理された32ch分のパラレルのオーディオサンプルデータを時分割で読み出して時分割32chのシリアルデータに変換し、DAC124に出力する。DAC124は、入力したシリアルデータを32chのパラレルなオーディオデータに変換し、それぞれアナログ音響信号に変換して外部に出力する。
【0044】
録音FIFO142は、サンプリング周期毎に複数chのオーディオデータを1サンプルずつ取り込み、取り込んだ複数chのオーディオデータをフレーム周期毎に出力する録音用のFIFO(FIFO方式のバッファメモリ装置を含む録音部)であって、入力側にオーディオデータを前段のブロックから取り込むためのDMA(Direct Memory Access)回路、出力側にオーディオデータを後段のブロックに出力するためのDMA回路を備えている(それぞれ図示せず)。また、再生FIFO144は、フレーム周期毎に複数chのオーディオデータを取り込み、取り込んだ複数chのオーディオデータをサンプリング周期毎に1サンプルずつ出力するFIFO(FIFO方式のバッファメモリ装置を含む再生部)であって、入力側にオーディオデータを前段のブロックから取り込むためのDMA回路、出力側にオーディオデータを後段のブロックに出力するためのDMA回路を備えている(それぞれ図示せず)。
【0045】
また、集積回路121は、USBインターフェースによるUSB端子122経由でのオーディオデータ等の入出力機能を持つ。USBトランシーバ149は、USBの通信プロトコルの物理レベルを担う回路である。エンドポイントコントローラ145は、USBプロトコルにおいてエンドポイントを構成するFIFO(First In First Out:先入れ先出し)バッファ146〜148を内部に備え、これらのバッファを制御するとともに、ホストとの間のデータ転送を制御するための回路である。
【0046】
送信FIFO146は、集積回路121からPC100へのデータ転送(ホストであるPC100から見てIN方向のアイソクロナス転送のパイプによるデータ転送)におけるエンドポイントとなるFIFOバッファ(FIFO方式のバッファメモリ装置を含む送信部)である。録音FIFO142は、入力側のDMA回路により、サンプリング周期毎に、PC100に向けて出力したい複数ch分のオーディオサンプルをDSP139の出力レジスタから取り込む。この処理が複数繰り返され、録音FIFO142に、ある程度の量のオーディオデータが溜められる。録音FIFO142に溜められたオーディオデータは、その出力側のDMA回路により、所定のタイミングで送信FIFO146に転送される。以上のDSP139から録音FIFO142を介して送信FIFO146にオーディオデータを転送する処理は、録音制御部141の制御の下で、録音FIFO142の入力側と出力側のDMA回路により実現される(後に詳述する)。送信FIFO146に格納されたオーディオデータは、USBのプロトコルに従って、USBトランシーバ149およびUSB端子122を介してPC100に転送される。
【0047】
受信FIFO147は、PC100から集積回路121へのデータ転送(ホストであるPC100から見てOUT方向のアイソクロナス転送のパイプによるデータ転送)におけるエンドポイントとなるFIFOバッファ(FIFO方式のバッファメモリ装置を含む受信部)である。PC100からUSB_I/O109を介して出力されたオーディオデータ(複数ch×複数サンプリング周期分のデータ)は、USBのプロトコルに従って、USB端子122およびUSBトランシーバ149を介して受信FIFO147に格納される。受信FIFO147に格納された複数chのオーディオデータは、再生FIFO144の入力側のDMA回路により、所定のタイミングで再生FIFO144に転送される。再生FIFO144の複数chのオーディオデータは、その出力側のDMA回路により、サンプリング周期毎に、DSP139の入力レジスタに書き込まれる。以上の受信FIFO147から再生FIFO144を介してDSP139にオーディオデータを転送する処理は、再生制御部143の制御の下で、再生FIFO144の入力側と出力側のDMA回路により実現される(後に詳述する)。
【0048】
設定FIFO148は、集積回路121とPC100との間でセットアップ用の制御データや設定パラメータを転送するためのエンドポイント0となるFIFOバッファ(FIFO方式のバッファメモリ装置を含む設定部)である。設定FIFO148を利用する転送は、USB規格のコントロール転送のプロトコルを使用した双方向のデータ転送である。集積回路121からPC100にデータを送信する場合、CPU131が送信データを設定FIFO148に格納すると、コントロール転送により設定FIFO148のデータがPC100に送信される。PC100から集積回路121にコントロール転送で送信されたデータは設定FIFO148に格納される。CPU131は、設定FIFO148から受信データを取り込むことができる。
【0049】
以上のようなオーディオデータ等の入出力機能を持つデバイス120は、DSP139にどのような信号処理を行わせるかによって、各種の音楽データ処理装置として機能する。例えば、ミキサやエフェクタなどである。
【0050】
図2は、図1のシステムにおいてデバイス120をミキサとして機能させる場合の機能ブロック図である。ADC201は、図1のADC123と波形I/O140に相当する。ADC201によりアナログディジタル変換された複数系統のオーディオデータは、入力パッチ202に入力する。USB入力212は、図1のPC100からデバイス120へUSBインターフェース経由で入力するオーディオデータ(ch数は任意)を表す。入力パッチ202は、ADC201やUSB入力212から入力したオーディオデータを48個ある入力ch203に割り当てる任意結線を行う。その結線の設定は、ユーザが任意に行うことができる。入力ch203は、入力したオーディオデータに対するレベル制御や周波数特性の制御などの調整処理を行う。入力ch203の任意のchのオーディオデータを16本のミックスバス204へ出力し、該ミックスバス204上で任意に混合処理を行うことができる。
【0051】
そのミキシング結果は、16本のミックスバス204にそれぞれ対応する16本の出力ch205に出力される。16本の出力ch205は、出力側の調整処理を行う。出力ch205の出力は、出力パッチ206に入力する。出力パッチ206は、出力ch205からのオーディオデータおよび入力ch203からダイレクトに出力されたオーディオデータを、DAC207の任意の出力系統またはUSB出力211に、割り当てる任意結線を行う。USB出力211は、図1のデバイス120からPC100へUSBインターフェース経由で出力するオーディオデータ(ch数は任意)を表す。上述の入力パッチ202から出力パッチ206に至る各ブロックの機能は、図1のDSP139により実現される。また、DAC207は、図1の波形I/O140とDAC124に相当する。DAC207に入力した複数系統のオーディオデータは、ディジタルアナログ変換されて外部に出力される。
【0052】
例えば、PC100でオーディオデータの録音再生機能を果たす音楽アプリケーションが実行されていたとすると、ミキサとして機能するデバイス120から出力されたオーディオデータをPC100で録音(ハードディスクレコーディング)したり、PC100で再生したオーディオデータをデバイス120に出力してミキシングに使用したりできる。
【0053】
図3は、図1のシステムにおいてデバイス120をエフェクタとして機能させる場合の機能ブロック図である。ADC301は、図1のADC123と波形I/O140に相当する。ADC301によりアナログディジタル変換された複数系統のオーディオデータは、エフェクタ(32ch)302に入力する。エフェクタ302は、入力したオーディオデータに各種の効果を付与するものであり、その機能は図1のDSP139で実現される。エフェクタ302から出力されるオーディオデータは、USB出力311でPC100に出力したり、ダイレクト出力313を介してエフェクタ304に出力することができる。USB出力311は、図1のデバイス120からPC100へUSBインターフェース経由で出力するオーディオデータ(ch数は任意)を表す。
【0054】
PC100から出力されたオーディオデータは、USB入力312でエフェクタ304に入力させることができる。USB入力312は、図1のPC100からデバイス120へUSBインターフェース経由で入力するオーディオデータ(ch数は任意)を表す。エフェクタ304は、エフェクタ302と同様の、図1のDSP139で実現するエフェクタである。従って、ダイレクト出力313は、DSP139内部で、あるエフェクト処理の出力を別のエフェクト処理へ入力する結線を設定することに相当する。エフェクト304の出力は、DAC305に渡される。DAC305は、図1のDAC124と波形I/O140に相当する。DAC305に入力した複数系統のオーディオデータは、ディジタルアナログ変換されて外部に出力される。なお、上述のエフェクタ302,304は、入力したオーディオデータのエフェクトを付与せずそのままスルーするchがあってもよい。
【0055】
例えば、PC100でオーディオデータの録音再生機能を果たす音楽アプリケーションが実行されていたとすると、エフェクタとして機能するデバイス120から出力された効果付与済みのオーディオデータをPC100で録音したり、PC100で再生したオーディオデータをデバイス120に出力して効果付与することができる。
【0056】
図4は、図1のPC100(ホスト)とデバイス120の集積回路121との間で送受信されるパケットの構成を示す。図4(a)は、USB規格に従い1ms(ミリ秒)周期で繰り返し転送されるフレームの構成を示す。1つのフレームは、SOF(スタートオブフレーム)と呼ばれるパケットで開始される複数のトランザクションからなる。図4(a)および(b)に示すように、トランザクションの中には、アイソクロナス転送で送受信されるオーディオデータを転送するトランザクション(Audio)の他、インタラプト転送で転送されるマウスのデータ転送のためのトランザクション(Mouse)やバルク転送で転送されるプリンタのデータ転送のためのトランザクション(Printer)などが含まれる場合がある。ホストは、フレームの先頭でSOFをUSBケーブルに接続されている全てのデバイスにブロードキャストし、その後のフレーム内のトランザクションの配置によりコントロール転送、バルク転送、インタラプト転送、およびアイソクロナス転送をスケジューリングする。なお、オーディオデータの転送に利用するアイソクロナス転送は、一定時間内のデータ量が保証されるように優先的にスケジューリングされる。
【0057】
図4(c)は、アイソクロナス転送におけるオーディオデータのトランザクションを構成するパケット列を示す。このパケット列は、トークンパケット(Token Packet)とデータパケット(Data Packet)からなる。
【0058】
図4(d)(1)に、ホストがブロードキャストするトークンパケットの構成を示す。SYNCは、同期を取るためにパケットの先頭に付けられる1バイトデータである。PID(packet identifier)は、当該パケットの種別を表すデータであり、ここではIn(デバイスからホストへのデータ転送を要求するトークン、すなわち「出力要求」であることを示すコード)またはOut(ホストからデバイスへのデータ転送の要求するトークン、すなわち「入力要求」であることを示すコード)の何れかが設定される。ADDRは、デバイスを特定するデバイスアドレスである。ENDPは、エンドポイントを特定するエンドポイント番号の4ビットデータである。CRC5は、5ビットのCRCチェックコードである。EOPは、パケットの終了を示す。
【0059】
図4(d)(2)に、データパケットの構成を示す。SYNC,EOPは、上述のトークンパケットで説明した各データと同様である。PIDには、本パケットがデータパケットであることを示すコード(Data0)が設定される。CRC16は16ビットのCRCチェックコードである。DATAは、ホストからデバイスへ、または、デバイスからホストへ、転送するデータである。DATAは、図4(e)に示すように0〜1023バイトの任意の長さのデータを必ずバイト単位で設定する。本実施形態では、ここに最大32chの複数サンプリング周期分のオーディオデータを設定する。
【0060】
ホストがブロードキャストした図4(d)(1)のトークンパケットのPIDにInが設定されていたときは、これに続くデータパケットによりデバイスからホストへのデータ転送が行われる。この場合、トークンパケットのADDRで特定されるデバイスが、当該トークンを取得し、トークンパケットのENDPで特定されるエンドポイントのFIFOバッファに格納されているデータをDATAに設定したデータパケットを作成し、ホストへ送信する。
【0061】
ホストがブロードキャストした図4(d)(1)のトークンパケットのPIDにOutが設定されていたときは、これに続くデータパケットによりホストからデバイスへのデータ転送が行われる。この場合、トークンパケットのADDRで特定されるデバイスが、当該トークンを取得し、続いてホストから送信されるデータパケットを受信し、該データパケットのDATAに設定されているデータを、トークンパケットのENDPで特定されるエンドポイントのFIFOバッファに取り込む。
【0062】
なお、図4(d)(3)に示すように、ハンドシェイクによるデータ再送要求は、アイソクロナス転送では行わない。また、図4(b)では、各フレームに、オーディオのトランザクションが1つだけ配置されているが、各フレームには、オーディオのトランザクションを複数配置することができ、それにより、PC100(ホスト)とデバイス120との間で時分割双方向のオーディオ転送が行える。
【0063】
図5は、デバイス120の電源がオンされたとき(あるいはPC100とデバイス120とがUSBケーブル150で接続されたとき)に、CPU131が実行するメインルーチンのフローチャートを示す。ステップ501で初期化を行った後、ステップ502でイベント検出を行い、検出されたらステップ503から504に進んで、当該イベントに対応するイベント処理を行う。以後、同様の処理を繰り返す。
【0064】
ステップ501の初期化では、PC100側で動作しているUSB_I/O109およびデバイスドライバと協働し、コントロール転送を利用してコンフィギュレーションを行う。このコンフィギュレーションでは、まずデバイス120の集積回路121からPC100にコンフィギュレーション用データ(予め集積回路121内の不揮発性の記憶手段に格納されているディスクリプタ)がコントロール転送で転送され、PC100はそのデータを確認した後、集積回路121に対してコントロール転送で設定コマンドを送信する。このコンフィギュレーションにより、集積回路121(ないしデバイス120)にデバイスアドレスが割り当てられ、オーディオデータを転送するパイプおよび転送モードが設定される。
【0065】
設定されるパイプは、PC100から集積回路121へのデータ転送用のパイプ(ホスト側から見てOUT方向のパイプ)と、集積回路121からPC100へのデータ転送用のパイプ(ホスト側から見てIN方向のパイプ)である。なお、上記OUT方向のパイプを「OUTパイプ」、IN方向のパイプを「INパイプ」と呼ぶものとする。また、OUTパイプのデータ転送においてPC100からブロードキャストするトークンを「OUTトークン」、INパイプのデータ転送においてPC100からブロードキャストするトークンを「INトークン」と呼ぶものとする。上記パイプの設定により、INパイプでは送信FIFO146に対応するエンドポイント番号が決定され、OUTパイプでは受信FIFO147に対応するエンドポイント番号が決定される。これらのINパイプおよびOUTパイプは、何れも転送モードがアイソクロナス転送に設定される。これらの設定(デバイスアドレス、エンドポイント番号、および転送モードなど)は、PC100側とエンドポイントコントローラ145側の双方で保持される。
【0066】
以上のようなコンフィギュレーションにより、PC100とデバイス120との間の予定された方式による通信の準備が整ったことになる。これ以後、PC100は、デバイスアドレスとINパイプのエンドポイント番号を指定してアイソクロナス転送で、オーディオデータをデバイス120から入力できる。また、PC100は、デバイスアドレスとOUTパイプのエンドポイント番号を指定してアイソクロナス転送で、オーディオデータをデバイス120に出力できる。
【0067】
図6は、コンフィギュレーションの後、PC100からデバイス120にオーディオデータを出力する際の処理の流れの概要を示すフローである。まず、PC100がデバイス120に、オーディオデータ出力のためのOUT方向エンドポイントの設定コマンドを送信する(ステップ601)。これは、上述したコンフィギュレーションにより既に設定されているOUTパイプを利用して転送するオーディオデータに係るパラメータを、コントロール転送を利用してPC100から集積回路121に通知する処理である。パラメータとしては、該パイプで転送するオーディオデータに関するサンプリング周波数、サンプルのビット数、および出力ch数などがある。該コマンドを受信したCPU131は、通知されたパラメータを、(適宜表現形式を変えて)DSP139および再生制御部143に設定する(ステップ602)。また、DSP139におけるアルゴリズムもPC100からデバイス120に送られ、CPU131は、前記アルゴリズムをDSP139に送って設定する。
【0068】
次に、PC100からデバイス120に、コントロール転送で、オーディオデータの出力開始コマンドを送信し、集積回路121でオーディオデータを入力する動作の開始を指示する(ステップ603)。このコマンドを受けたCPU131は、再生制御部143に対して動作の開始を指示する(ステップ604)。再生制御部143は、ハードウェアの初期化を行い動作を開始する(ステップ605)。これ以降、PC100は、信号処理させたいオーディオデータを前記OUTパイプを使用してデバイス120の集積回路121へ送信する処理(アイソクロナス送信処理:ここでPC100により実行されるコードは、該OUTパイプ経由の該デバイス120の1つのエンドポイント(受信FIFO147)へのオーディオデータの書き込み命令である。)を繰り返す(ステップ606)。再生制御部143は、これを受けて、次の図7に示すステートマシン図が示す各種処理を実行する(ステップ607)。PC100は、ステップ606において、まず、Outに設定されたPIDとデバイス120に割り当てられたアドレスADDRと受信FIFO147に割り当てられたエンドポイント番号ENDPとを含むトークンパケット(OUTトークン)を送信し、さらに続けて、1フレーム分の複数chのオーディオデータを含むデータパケットを送信する。デバイス120の集積回路121は、そのOUTトークンのADDRとENDPとに基づいて次のデータパケットを受信すべきと認識し、そのデータパケットの複数chのオーディオデータを受信FIFO147に取り込む。
【0069】
図7は、PC100からオーディオデータを受信する場合の再生制御部143の動作を示すステートマシン図である。なお、本願で「再生」と言っているのは、典型的なケースとして、PC100がそこにある一連のオーディオデータを、フレーム周期毎に1フレーム分ずつデバイス120に転送し、デバイス120においてサンプリング周期毎に1サンプルずつ外部に出力するケース(Render)を想定したものであって、その一連のオーディオデータは、必ずしもPC100がオーディオファイルから「再生」したオーディオデータではなくてもよく、PC100に別のソース(本デバイス120と同じような別のデバイス、レコーダ等)からストリーミング入力されているオーディオデータであってもよい。
【0070】
図7において、システムの電源がオンされ上述したコンフィギュレーションが実行された後、再生制御部143はアイドル状態708にある。その後、PC100からデバイス120へのオーディオデータの出力のために図6のステップ601〜604が実行されると、出力開始コマンドに応じて、ステップ604で再生制御部143に動作開始が指示され、再生制御部143はアイドル状態708からハードウェア初期化701(ステップ605)へと移行する。この初期化701では、受信FIFO147と再生FIFO144をクリアするなどの初期化を行う。また、この初期化により、エンドポイントコントローラ145および再生FIFOは、「受信有効」および「再生停止」にそれぞれ設定される。「受信有効」とは、USBトランシーバ149とエンドポイントコントローラ145による受信動作(すなわち、前記OUTパイプを利用してPC100から送信されるオーディオデータを受信して受信FIFO147に格納する動作)を開始することを意味する。「再生停止」とは、再生FIFO144の出力側のDMA回路が、サンプリング周期毎に、再生FIFO144のオーディオデータを、DSP139に1オーディオサンプルずつ転送する動作を停止中であることを意味する。初期化701の後、再生制御部143は、SOF待ち702に移行する。
【0071】
PC100は、図6のステップ606で説明したとおり、信号処理させたいオーディオデータをOUTパイプを使用して集積回路121へ送信する。集積回路121側は「受信有効」になっているので、OUTパイプから前記オーディオデータを受信して受信FIFO147に格納する。なお、エンドポイントコントローラ145は、SOFが受信されたとき、およびOUTトークンが受信されたとき、それぞれその旨を再生制御部143に通知するものとする。再生制御部143は、SOFが受信されたとき、フレーム周期タイミング(具体的には、フレーム周期の境界であるSOF受信タイミング)を検出して図7の(1)〜(5)の分岐条件に従って、SOF待ち702から状態が移行する。
【0072】
(1)は「再生停止」かつ[OUT]有りの状態でSOFを受信した場合の分岐を示す。[OUT]有りとは、いま受信したSOFの直前のフレーム中でOUTトークンが受信されていることを表す。この場合、受信FIFO147に受信したオーディオデータが存在するはずである。すなわち、(1)の条件は、DSP139による再生FIFO144からのオーディオデータの取り込み動作が停止しており、受信FIFO147にオーディオデータが存在する場合である。この場合、状態703に移行し、再生FIFO144に再生開始できるだけのオーディオデータが充填されたか確認し、充填されていたら再生FIFO144の出力側のDMA回路に再生開始(これにより「再生停止」から「再生中」に移る)を指示して、状態704に移行する。未だ充填が完了していないときは、何もせずに状態704に移行する。状態704では、受信FIFO147中のオーディオデータを再生FIFO144にDMA転送する。その後、SOF待ち702に戻る。状態703において、「再生中」となった再生FIFO144の出力側のDMA回路は、サンプリング周期毎に、再生FIFO144の複数chのオーディオデータを、DSP139に1オーディオサンプルずつ転送する動作(再生動作)を、次に「再生停止」が指示されるまでの間、継続的に実行する。
【0073】
(2)は「再生停止」かつ[OUT]無しの状態でSOFを受信した場合の分岐を示す。[OUT]無しとは、いま受信したSOFの直前のフレーム中で、デバイス120のアドレスADDRと受信FIFO147のエンドポイント番号ENDPとを含むOUTトークンが受信されなかったことを表す。この場合、オーディオデータは受信されていないので、何もせずにSOF待ち702に戻る。
【0074】
(3)は、再生FIFO144が満杯または不足、かつ、[OUT]有りの状態でSOFを受信した場合の分岐を示す。再生FIFO144には状態704のDMA転送でオーディオデータが書き込まれるが、このとき再生FIFO144が満杯になり、次に状態702に戻ってSOFを受信した場合は、この(3)の分岐となる。また、再生FIFO144のオーディオデータは、その出力側のDMA回路によりサンプリング周期毎に1サンプルずつDSP139に供給され、DSP139において処理されていくが、DSP139が信号処理を安定的に継続して行うためには、常に所定量以上のオーディオデータが再生FIFO144中に存在することが必要である(状態703は、再生FIFO144に1フレーム分(当該所定量以上)のオーディオデータを充填するものである)。従って、再生制御部143は、再生FIFO144中のオーディオデータが前記所定量を下回ったことを検出するようになっており、それが検出されたとき「再生FIFO144が不足」となる。その状態でSOFを受信した場合も、この(3)の分岐となる。
【0075】
これらの条件の場合、状態705に移行し、エラー割込を発生させて、CPU131にエラーを通知する。そして、エラー復帰処理を行う。エラー復帰処理では、再生FIFO144の出力側のDMA回路に対して「再生停止」を指示してその再生動作を停止させ、再生FIFO144をクリアする(空にする)などの初期化を行った後、状態704から動作を継続する。これにより、一旦、音は途切れるが、動作は継続できる。この動作の継続は、自動復帰機能のオン(有効)を意味する。また、エラーからの自動復帰機能はオフ(無効化)することもでき、オフに設定されている場合は、エラー復帰処理は行わず、706に示すように動作停止状態を継続するものとする。なお、これらの自動復帰機能のオンおよびオフは、CPU131によって指示される。また、エラー復帰処理では、再生FIFO144をクリアし受信FIFO147をクリアしていない。これは、エラー時に再生FIFO144にオーディオデータが残っていれば、それをクリアしてしまったほうが、その後の再生の再開を早くでき、一方、受信FIFO147は、そこに入っているオーディオデータが、その後の再生の再開に使えるかもしれないので、クリアせずに使ったほうが、再生の再開を早くできることによる。
【0076】
上記(3)の再生FIFO144が満杯の場合、「再生停止」にすることなく、再生FIFO144から所定量のデータを消去して空きを作り、動作を継続するようにしてもよい。また、再生FIFO144が不足の場合、「再生停止」にすることなく、再生FIFO144に全てゼロ値のサンプルで構成されるダミーのオーディオデータを所定量書き込んで、動作を継続するようにしてもよい。何れの場合も音は途切れてしまうが再生動作は継続できる。
【0077】
(4)は「再生中」かつ[OUT]有りの場合の分岐を示す。この場合、状態704に移行し、再生FIFO144の入力側のDMA回路により、受信FIFO147中の複数chのオーディオデータを、1フレーム分、再生FIFO144にDMA転送する。その後、SOF待ち702に戻る。
【0078】
(5)は「再生中」かつ[OUT]無しの場合の分岐を示す。この場合、状態707に移行し、再生FIFO144の出力側のDMA回路を「再生停止」とし、SOF待ち702に戻る。その後、[OUT]有りになれば再び(1)の分岐から動作が再開される。
【0079】
PC100から送信されるオーディオデータを受信してDSP139で信号処理する典型的な流れは、まず状態701から702に移行し、(1)の分岐で状態702→703→704→702を何回か繰り返して再生FIFO144に複数chのオーディオデータを溜め、所定量が溜まったら再生開始される。再生FIFO144の出力側のDMA回路により再生された複数chのオーディオデータは、DSP139に供給され信号処理される。以降は(4)の分岐で状態702→704→702を繰り返して、再生FIFO144の入力側のDMA回路による順次受信されるオーディオデータの受信FIFO147から再生FIFO144へのフレーム単位の転送と、出力側のDMA回路による再生FIFO144からDSP139へのサンプル単位の転送とを平行して継続する。この際、再生FIFO144の満杯または不足のエラーが発生すると、(3)の分岐でエラー復帰処理が自動的に実行される。また、PC100からの送信が途切れてしまったときは、(5)の分岐で自動的に「再生停止」とされる。
【0080】
なお、PC100から転送されるオーディオデータのサンプリング周波数、サンプルのビット数、および出力ch数は図6のステップ602でDSP139および再生制御部143に設定されているので、再生制御部143は、再生FIFO144に格納されたオーディオデータが前記指定されたサンプリング周波数、サンプルのビット数、および出力ch数と適合しないことを検出できる。そのような「データサイズエラー」が検出された場合は(3)に分岐するようにしてもよい。
【0081】
また、図6,7では図示していないが、PC100はオーディオデータの出力を停止する場合、出力停止コマンドをコントロール転送でデバイス120に送る。これを受けて、集積回路121のCPU131は、再生制御部143に対して動作停止を指示する。この指示を受けた再生制御部143は、「受信無効」かつ「再生停止」とするとともに、図7の自動受信(再生)機能から抜けてアイドル状態708に移行する。
【0082】
図8は、コンフィギュレーションの後、PC100がデバイス120から出力されるオーディオデータを入力する際の処理の流れの概要を示すフローである。まず、PC100がデバイス120に、オーディオデータ入力のためのIN方向エンドポイントの設定コマンドを送信する(ステップ801)。これは、上述したコンフィギュレーションにより既に設定されているINパイプを利用して転送するオーディオデータに係るパラメータを、コントロール転送を利用してPC100から集積回路121に通知する処理である。パラメータとしては、該パイプで転送するオーディオデータに関するサンプリング周波数、サンプルのビット数、および出力ch数などがある。該コマンドを受信したCPU131は、通知されたパラメータを、(適宜表現形式を変えて)DSP139および録音制御部141に設定する(ステップ802)。また、この場合も、DSP139におけるアルゴリズムもPC100からデバイス120に送られ、CPU131は、前記アルゴリズムをDSP139に送って設定する。
【0083】
次に、PC100からデバイス120に、コントロール転送で、オーディオデータの入力開始コマンドを送信し、集積回路121からオーディオデータを出力する動作の開始を指示する(ステップ803)。このコマンドを受けたCPU131は、録音制御部141に対して動作の開始を指示する(ステップ804)。録音制御部141は、ハードウェアの初期化を行い動作を開始する(ステップ805)。これ以降、PC100は、デバイス120の集積回路121に対してINトークンを送信し、該トークンに続いて集積回路121から送信されるオーディオデータを前記INパイプを使用して受信する処理(アイソクロナス受信処理:ここでPC100により実行されるコードは、該INパイプ経由で該デバイスの1つのエンドポイント(送信FIFO146)からオーディオデータを読み出す命令である。)を繰り返す(ステップ806)。ステップ806では、まず、PC100が、Outに設定されたPIDとデバイス120に割り当てられたアドレスADDRと送信FIFO146に割り当てられたエンドポイント番号ENDPとを含むトークンパケット(OUTトークン)を送信する。続けて、デバイス120は、そのOUTトークンのADDRとENDPとに基づいて次にデータパケットを送信すべきと認識し、1フレーム分の複数chのオーディオデータを含むデータパケットを送信する。そして、PC100は、その送信されたデータパケットからオーディオデータを取り込む。録音制御部141は、次の図9に示すステートマシン図が示す各種処理を実行する。
【0084】
図9は、デバイス120からPC100へオーディオデータを送信する場合の録音制御部141の動作を示すステートマシン図である。なお、本願で「録音」と言っているのは、典型的なケースとして、デバイス120にサンプリング周期毎に1サンプルずつ入力するオーディオデータを順次記憶し、フレーム周期毎に1フレーム分ずつPC100に転送し、PC100において受信したオーディオデータを連結して一連のオーディオデータを再構成するケース(Capture)を想定しているが、その一連のオーディオデータは、必ずしもPC100によってオーディオファイルとして「録音」される必要はなく、PC100から別のシンク(本デバイス120と同じような別のデバイス、レコーダ等)へストリーミング出力されるオーディオデータであってもよい。
【0085】
図9において、システムの電源がオンされ上述したコンフィギュレーションが実行された後、録音制御部141はアイドル状態909にある。その後、PC100がデバイス120からオーディオデータを入力するために図8のステップ801〜804が実行されると、入力開始コマンドに応じて、ステップ804で録音制御部141に動作開始が指示され、録音制御部141はアイドル状態909からハードウェア初期化901(ステップ805)へと移行する。この初期化901では、送信FIFO146と録音FIFO142をクリアするなどの初期化を行う。また、この初期化により、エンドポイントコントローラ145および録音FIFO142は、「送信無効」および「録音停止」にそれぞれ設定される。「送信無効」とは、USBトランシーバ149とエンドポイントコントローラ145による送信動作(すなわち、前記INトークンを取得したとき、送信FIFO146に格納されているデータからデータパケットを生成して、前記INパイプによりPC100へ送信する動作)を行わないことを意味する。ただし、前記INトークンが送られてきた場合には、そのデータパケットの代わりに、複数chでかつ無音のオーディオデータを含むデータパケットがPC100へ送信されるので、トランザクション自体は成立している。「録音停止」とは、録音FIFO142の入力側のDMA回路が、複数chのオーディオデータを、サンプリング周期毎に、DSP139の出力レジスタから1オーディオサンプルずつ録音FIFO142に転送する動作を停止中であることを意味する。初期化901の後、録音制御部141は、SOF待ち902に移行する。
【0086】
PC100は、図8のステップ806で説明したとおり、INトークンを送信し、該トークンに続いてデバイス120から送信されるデータパケットを受信する動作を開始する。ただし、集積回路121側は未だ「送信無効」の状態であるので、前記INトークンを受信しても送信FIFO146に格納されているデータ(この時点ではデータは未だない)の送信は行われない。なお、エンドポイントコントローラ145は、SOFが受信されたとき、およびINトークンが受信されたとき、それぞれその旨を録音制御部141に通知するものとする。録音制御部141は、SOFが受信されたとき、フレーム周期タイミング(具体的には、フレーム周期の境界であるSOF受信タイミング)を検出して図9の(1)〜(5)の分岐条件に従って、SOF待ち902から状態が移行する。
【0087】
(1)は録音開始前の「録音停止」の状態、すなわち、録音FIFO142の入力側のDMA回路による、DSP139から録音FIFO142へのオーディオサンプルの転送動作が停止している状態でSOFを受信した場合の分岐を示す。この場合、状態903に移行して、録音開始する(「録音停止」から「録音中」に移る)。これにより、録音FIFO142の入力側のDMA回路による録音動作が開始され、サンプリング周期毎に、複数chの各々の1オーディオサンプルがDSP139の出力レジスタから録音FIFO142に転送されて、録音FIFO142に溜められていく。「録音停止」から「録音中」に移行するタイミングを制御することにより、PC100への送信開始時(何回か後のSOF受信時)に録音FIFO142に溜まっているオーディオサンプルの量(X:予測値、単位はフレーム)を調整できる。例えば、録音FIFO142が2フレーム分の容量である場合は、該移行タイミングを今回のSOF受信タイミングから半フレームの時間経過後とするのが良く(X=1/2)、また、録音FIFO142が3フレーム分の容量である場合は、今回のSOF受信タイミングに直ちに「録音中」に移行するのが良い(X=1)。最適な量Xは、録音FIFOの容量をSとしてX=(S−1)/2と算出され、また、SOF受信から移行タイミングまでの遅れ時間Dは、D=1−Frac(X)と算出される(Frac()は小数部を取り出す関数)。状態903の後、SOF待ち902に戻る。
【0088】
(2)は「録音中」かつ「送信無効」の状態でSOFを受信した場合の分岐を示す。この場合、状態904に移行し、録音FIFO142に、送信FIFO146への転送を開始するのに最適な所定量Xのオーディオデータが(ほぼ)充填されたか確認し、充填されていたらUSBトランシーバ149とエンドポイントコントローラ145に送信動作の開始(これにより「送信無効」から「送信有効」に移る)を指示して、状態905に移行する。未だ充填が完了していないときは、何もせずに状態905に移行する。状態905では、録音FIFO142の複数chのオーディオデータが、その出力側のDMA回路により、1フレーム分、送信FIFO146にDMA転送される。その後、SOF待ち902に戻る。
【0089】
(3)は「録音中」、「送信有効」、かつ[IN]無しの状態でSOFを受信した場合の分岐を示す。[IN]無しとは、いま受信したSOFの直前のフレーム中でINトークンが受信されなかったことを表す。この場合、送信FIFO146中のデータが送信されないので、送信FIFO146または録音FIFO142で空き容量不足が発生する可能性がある。そこで、状態906に移行して、1フレーム中で送信するだけの量のオーディオデータを消去する。消去の方式としては2つの方式があり、予めどちらにするかを設定しておくことができる。第1の方式は、送信FIFO146から1フレーム中で送信するだけの量を消去する方式である。この場合は、その後(a)に示すように状態905に移行する。送信FIFO146の空きが増えたので、状態905でのDMA転送を実行できる。第2の方式は、録音FIFO142から1フレーム中で送信するだけの量を消去する方式である。この場合は、その後(b)に示すようにSOF待ち902に移行する。録音FIFO142の空きが増えたので、DSP139から録音FIFO142への書き込み動作は継続して実行できる。なお、前記(a)(b)の選択は、CPU131からの指示に従う。
【0090】
(4)は「録音中」、「送信有効」、かつ録音FIFO142が満杯または不足の状態でSOFを受信した場合の分岐を示す。「録音中」であるので、録音FIFO142には、その入力側のDMA回路により、サンプリング周期毎に、DSP139の出力レジスタから複数chの各々の1オーディオサンプルデータが書き込まれるが、このとき録音FIFO142が満杯になって書き込むことができず、次にSOFを受信した場合は、この(4)の分岐となる。また、録音FIFO142のオーディオデータは、基本的な手順では状態905のDMA転送で送信FIFO146に、1フレーム中に送信するだけの量が取り出されてホストに送信されていくものであるが、ホストへの送信を安定的に継続して行うためには、常に所定量以上のオーディオデータが録音FIFO142中に存在することが必要である(状態904は、録音FIFO142に1フレーム分(当該所定量以上)のオーディオデータを充填するものである)。従って、録音制御部141は、録音FIFO142中のオーディオデータが前記所定量を下回ったことを検出するようになっており、それが検出されたとき「録音FIFO142が不足」となる。その状態でSOFを受信した場合も、この(4)の分岐となる。
【0091】
上記(4)の分岐では、状態907に移行し、エラー割込を発生させて、CPU131にエラーを通知する。そして、エラー復帰処理を行う。エラー復帰処理では、エンドポイントコントローラ145等による送信動作は「送信無効」とし、録音FIFO142の入力側のDMA回路によるDSP139から録音FIFO142への録音動作は停止(すなわち「録音停止」)とし、送信FIFO146と録音FIFO142をクリアする(空にする)などの初期化を行った後、状態902に戻って動作を継続する。この動作の継続は、自動復帰機能のオン(有効)を意味する。また、エラーからの自動復帰機能はオフ(無効化)することもでき、オフに設定されている場合は、エラー復帰処理は行わず、908に示すように動作停止状態を継続するものとする。なお、これらの自動復帰機能のオンおよびオフは、CPU131によって指示される。また、「録音」でのエラー時には送信FIFO146と録音FIFO142の両方をクリアしている。これは、送信FIFO146は、オーディオデータの連続性が崩れているので必ずクリアする必要があるからであり、また録音FIFO142をクリアするのは、PCからのSOF受信タイミングの録音FIFO142のオーディオデータのサンプル数を最適値に初期設定するためである。
【0092】
上記(4)の録音FIFO142が満杯の場合、「送信無効」や「録音停止」にすることなく、録音FIFO142から次に送信FIFO146に転送すべきデータを消去して、動作を継続するようにしてもよい。また、上記(4)の録音FIFO142が不足の場合、「送信無効」や「録音停止」にすることなく、録音FIFO142に全てゼロ値のサンプルで構成されるダミーのオーディオデータを所定量録音FIFO142に書き込んで、動作を継続するようにしてもよい。何れの場合も音は途切れてしまうが動作は継続できる。
【0093】
(5)は「録音中」、「送信有効」、かつ[IN]有りの場合の分岐を示す。この場合、状態905に移行し、録音FIFO142から送信FIFO146へのDMA転送を行う。その後、SOF待ち902に戻る。
【0094】
PC100がDSP139から出力されるオーディオデータを入力する典型的な流れは、まず状態901から902に移行し、(1)の分岐で「録音中」すなわち、録音FIFO142による、サンプリング周期毎のDSP139から録音FIFO142へのオーディオデータの転送を有効とし、次に(2)の分岐の状態902→904で録音FIFO142に送信を開始するに最適な量Xのオーディオデータを溜めて「送信有効」とし、その量Xのデータがほぼ溜まったら状態905で録音FIFO142から送信FIFO146へDMA転送し、以降は(5)の分岐で状態902→905→902を繰り返してオーディオデータの送信を続けていく、というものである。この際、PC100からのINトークンが途切れたときは、(3)の分岐の状態902→906で1フレーム分のオーディオデータを消去して動作を継続する。また、録音FIFO142の満杯または不足のエラーが発生すると、(4)の分岐でエラー復帰処理が自動的に実行される。
【0095】
なお、SOFの発生間隔とサンプリング周波数とに基づいて、各SOFに応じて送信すべきデータのサイズは微妙に変動する。例えば、1フレーム中で6サンプル転送することが基本になっていたとしても、SOFの周期が乱れたりすると、1フレーム中の転送サンプル数が5になったり7になったりする場合がある。しかし、想定されるサンプル数は何パターンかに特定できるので、転送データのサイズはそれらの各パターン毎のサイズになるはずである。そこで、転送データのサイズが変動して、それらのサイズの何れとも異なるデータサイズとなった場合に、その特定されたサイズのうちの大きいほうを超えないように丸め込んだり、「データサイズエラー」として検出するようにしてもよい。「データサイズエラー」が検出された場合は(4)に分岐するようにしてもよい。
【0096】
また、図8,9では図示していないが、PC100はオーディオデータの入力を停止する場合、入力停止コマンドをコントロール転送でデバイス120に送る。これを受けて、集積回路121のCPU131は、録音制御部141に対して動作停止を指示する。この指示を受けた録音制御部141は、「送信無効」かつ「録音停止」とするとともに、図9の自動送信(録音)機能から抜けてアイドル状態909に移行する。
【0097】
上記図7や図8で説明したように、「再生」や「録音」における転送シーケンスおよび受信FIFOや送信FIFOに対するDMA転送などの動作は、ハードウェアである再生制御部143および録音制御部141による自動処理で実現され、CPU131に負担をかけることがほとんど無い。従来のUSB方式のデバイスにおけるオーディオデータの入出力では、各フレーム周期毎にCPUに割込をかけ、CPUがUSBインターフェースやDMAの制御を行っていたが、本実施形態ではハードウェアである再生制御部143や録音制御部141がそれらの処理を行うので、CPU131の負荷を軽減できる。また、「再生」や「録音」時にイレギュラー動作が発生した場合のエラー検知と自動復帰処理も、再生制御部143や録音制御部141の制御の元で実行でき、CPU131の負荷を軽減できる。
【0098】
なお、上記実施形態ではUSB1.1を利用した例を説明したが、USB2.0その他の規格を利用してもよい。
【符号の説明】
【0099】
100…パーソナルコンピュータ(PC)、101…中央処理装置(CPU)、102…フラッシュメモリ、103…ランダムアクセスメモリ(RAM)、104…ハードディスク(HDD)、105…タイマ、106…ネットワーク入出力インターフェース(I/O)、107…表示器I/O、108…表示器(ディスプレイ)、109…USB_I/O、110…キーボード、111…マウス、120…USBオーディオデバイス、121…半導体集積回路、122…USB端子、123…アナログデジタル変換器(ADC)、124…デジタルアナログ変換器(DAC)、131…CPU、132…フラッシュメモリ、133…RAM、134…タイマ、135…操作子I/O、136…操作子、137…表示器I/O、138…表示器、139…DSP、140…波形I/O、141…録音制御部、142…録音FIFO、143…再生制御部、144…再生FIFO、145…エンドポイントコントローラ、146…送信FIFO、147…受信FIFO、148…設定FIFO、149…USBトランシーバ、150…USBケーブル。

【特許請求の範囲】
【請求項1】
ホスト装置から、所定のフレーム周期毎に、通信バスを介して供給されるオーディオデータを入力し、所定の処理の後、出力するオーディオデータ出力装置であって、
先入れ先出し方式の受信バッファを有し、前記通信バスを介して、前記フレーム周期毎に、前記ホスト装置からの出力要求に応じて、前記ホスト装置から複数サンプルずつ送られてくる複数チャンネル(ch)のオーディオデータを受信し、受信した複数chのオーディオデータを前記受信バッファに書き込む、受信動作を行う受信部と、
先入れ先出し方式の再生バッファを含み、前記再生バッファに記憶されている複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ読み出して、出力する再生部と、
装置全体を制御するプロセッサと、
前記プロセッサからの指示に従い、前記受信部および再生部の動作を制御する制御部と
を備え、
前記プロセッサは、
(1)前記通信バスを介して、前記ホスト装置から、受信するオーディオデータに関するパラメータを受け取ったときは、前記制御部に、該パラメータを設定し、
(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの出力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、
前記制御部は、
前記プロセッサからの動作開始の指示に応じて、前記受信バッファと前記再生バッファをクリアし、前記受信部の受信動作を有効化するとともに、前記再生部のサンプル読み出しの動作を停止中とし、その後、前記フレーム周期毎に、
(1)前記受信部がオーディオデータを受信しており、かつ、前記再生部のサンプル読み出しの動作が停止中であれば、受信したオーディオデータを前記受信バッファから前記再生バッファに転送するとともに、前記再生バッファのオーディオデータが所定量に達したとき、前記再生部に対して、前記サンプル読み出しの動作の開始を指示して、その動作を開始させ、
(2)前記受信部がオーディオデータを受信しており、かつ、前記再生部の前記サンプル読み出しの動作が動作中であれば、受信したオーディオデータを前記受信バッファから前記再生バッファに転送し、
(3)前記受信部がオーディオデータを受信していなければ、前記再生部の前記サンプル読み出しの動作を停止する
ことを特徴とするオーディオ出力装置。
【請求項2】
請求項1に記載のオーディオ出力装置において、
前記制御部は、さらに、前記フレーム周期毎に、
(4)前記受信部がオーディオデータを受信しており、かつ、前記再生バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記再生部の前記サンプル読み出しの動作を停止するとともに、前記再生バッファのオーディオデータをクリアし、受信したオーディオデータを前記受信バッファから再生バッファに転送する
ことを特徴とするオーディオ出力装置。
【請求項3】
請求項2に記載のオーディオデータ出力装置において、
前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、
前記制御部は、前記自動復帰処理が有効であるときは、前記(4)の動作を実行し、前記自動復帰処理が無効であるときは、前記(4)の動作の代わりに、前記フレーム周期毎に実行している動作を停止して、以後は動作停止状態を維持する
ことを特徴とするオーディオデータ出力装置。
【請求項4】
請求項1に記載のオーディオデータ出力装置において、
前記プロセッサは、前記通信バスを介して、前記ホスト装置から出力停止指示を受け取ったとき、その出力停止指示に応じて、前記制御部に対し、動作の停止を指示し、
前記制御部は、該動作の停止の指示に応じて、前記再生部のサンプル読み出しの動作を停止する
ことを特徴とするオーディオデータ出力装置。
【請求項5】
請求項1に記載のオーディオデータ出力装置において、
前記再生部から出力されるオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行する、デジタル信号処理部を備えており、
前記プロセッサは、受信するオーディオデータに関するパラメータを設定する
ことを特徴とするオーディオデータ出力装置。
【請求項6】
請求項1から5の何れか1つに記載のオーディオデータ出力装置において、
前記オーディオデータに関するパラメータは、該オーディオデータのサンプリング周波数、サンプルのビット数、およびch数のうちの、少なくとも1つのパラメータを含むことを特徴とするオーディオデータ出力装置。
【請求項7】
外部からオーディオデータを入力し、所定の処理の後、所定のフレーム周期毎に、通信バスを介してホスト装置に供給するオーディオ入力装置であって、
先入れ先出し方式の録音バッファを有し、前記外部から入力した複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ前記録音バッファに書き込む録音部と、
先入れ先出し方式の送信バッファを有し、前記フレーム周期毎に、前記ホスト装置から送られる入力要求に応じて、前記送信バッファに記憶された複数chのオーディオデータを、前記通信バスを介して前記ホスト装置に複数サンプルずつ送信する、送信動作を行う送信部と、
装置全体を制御するプロセッサと、
前記プロセッサからの指示に従い、前記送信部および録音部の動作を制御する制御部と
を備え、
前記プロセッサは、
(1)前記通信バスを介して、前記ホスト装置から、送信するオーディオデータに関するパラメータを受け取ったときは、前記制御部に、該パラメータを設定し、
(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの入力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、
前記制御部は、
前記プロセッサからの動作開始の指示に応じて、前記送信バッファと録音バッファをクリアし、前記送信部の送信動作を無効化するとともに、前記録音部の前記サンプル書き込みの動作を停止し、その後、前記フレーム周期毎に、
(1)前記録音部の前記サンプル書き込みの動作が停止中であれば、前記録音部に対して前記サンプル書き込みの動作の開始を指示して、その動作を開始させ、
(2)前記録音部の前記サンプル書き込みの動作が動作中であり、かつ、前記送信部が送信無効であれば、録音バッファのオーディオデータを送信バッファに転送するとともに、前記送信バッファに所定量のオーディオデータがある場合は、前記送信部の送信動作を有効化し、
(3)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求がある場合は、録音バッファのオーディオデータを送信バッファに転送する
ことを特徴とするオーディオデータ入力装置。
【請求項8】
請求項7に記載のオーディオデータ入力装置において、
前記制御部は、さらに、前記フレーム周期毎に、
(4)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求が無い場合は、(a)送信バッファに記憶されたオーディオデータを1フレーム周期分消去し、録音バッファのオーディオデータを送信バッファに転送し、または、(b)録音バッファに記憶されたオーディオデータを1フレーム周期分消去する
ことを特徴とするオーディオデータ入力装置。
【請求項9】
請求項8に記載のオーディオデータ入力装置において、
前記プロセッサが、前記制御部に対して、前記(4)の場合に前記(a)または(b)の何れを適用するかを指示し、
前記制御部は、該指示に応じて、前記(4)の場合に前記(a)または(b)の何れかの動作を実行する
ことを特徴とするオーディオデータ入力装置。
【請求項10】
請求項7に記載のオーディオデータ入力装置において、
前記制御部は、さらに、前記フレーム周期毎に、
(5)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、録音バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記送信部の送信動作を無効化するとともに、録音バッファおよび送信バッファのオーディオデータをクリアする
ことを特徴とするオーディオデータ入力装置。
【請求項11】
請求項10に記載のオーディオデータ入力装置において、
前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、
前記制御部は、前記自動復帰処理が有効であるときは、前記(5)の動作を実行し、前記自動復帰処理が無効であるときは、前記(5)の動作の代わりに、前記フレーム周期毎に実行している動作を停止して、以後は動作停止状態を維持する
ことを特徴とするオーディオデータ入力装置。
【請求項12】
請求項7に記載のオーディオデータ入力装置において、
前記プロセッサは、前記通信バスを介して、前記ホスト装置から入力停止指示を受け取ったとき、その入力停止指示に応じて、前記制御部に対し、動作の停止を指示し、
前記制御部は、該動作の停止の指示に応じて、前記録音部のサンプリング書き込みの動作を停止する
ことを特徴とするオーディオデータ入力装置。
【請求項13】
請求項7に記載のオーディオデータ入力装置において、
前記外部からのオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行し、前記録音部に出力する、デジタル信号処理部を備えており、
前記プロセッサは、受信するオーディオデータに関するパラメータを設定するものである
ことを特徴とするオーディオデータ出力装置。
【請求項14】
請求項7から13の何れか1つに記載のオーディオデータ入力装置において、
前記オーディオデータに関するパラメータは、該オーディオデータのサンプリング周波数、サンプルのビット数、およびch数のうちの、少なくとも1つのパラメータを含むことを特徴とするオーディオデータ入力装置。
【請求項15】
ホスト装置から、所定のフレーム周期毎に、通信バスを介して供給されるオーディオデータを入力し、所定の処理の後、出力するオーディオデータ出力装置であって、
先入れ先出し方式の受信バッファと、
先入れ先出し方式の再生バッファと、
前記通信バス上の信号からフレーム周期を検出する検出部と、
前記通信バスを介して、前記フレーム周期毎に、前記ホスト装置からの出力要求に応じて、前記ホスト装置から複数サンプルずつ送られてくる複数チャンネル(ch)のオーディオデータを受信し、受信した複数chのオーディオデータを前記受信バッファに書き込む、受信動作を行う受信部と、
前記再生バッファに記憶されている複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ読み出して、出力する再生部と、
装置全体を制御するプロセッサと、
前記プロセッサからの指示に従い、前記受信バッファおよび再生バッファに係るデータ転送を制御するとともに、前記受信部および再生部の動作を制御する制御部と
を備え、
前記プロセッサは、
(1)前記通信バスを介して、前記ホスト装置から、受信するオーディオデータに関するパラメータを受け取ったときは、前記制御部および前記再生部に、該パラメータを設定し、
(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの出力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、
前記制御部は、
前記プロセッサからの動作開始の指示に応じて、前記受信バッファと再生バッファをクリアし、前記受信部の受信動作を有効化するとともに、前記再生部の前記サンプル読み出しの動作を停止中とし、その後、フレーム周期が検出される毎に、
(1)前記受信部がオーディオデータを受信しており、かつ、前記再生部の前記サンプル読み出しの動作が停止中であれば、受信したオーディオデータを受信バッファから再生バッファに転送するとともに、再生バッファのオーディオデータが所定量に達したとき、前記再生部に対して、前記サンプル読み出しの動作の開始を指示して、その動作を開始させ、
(2)前記受信部がオーディオデータを受信しており、かつ、再生バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記再生部の前記サンプル読み出しの動作を停止するとともに、再生バッファのオーディオデータをクリアし、受信したオーディオデータを受信バッファから再生バッファに転送し、
(3)前記受信部がオーディオデータを受信しており、かつ、前記再生部の前記サンプル読み出しの動作が動作中であれば、受信したオーディオデータを受信バッファから再生バッファに転送し、
(4)前記受信部がオーディオデータを受信していなければ、前記再生部の前記サンプル読み出しの動作を停止する
ことを特徴とするオーディオ出力装置。
【請求項16】
外部からオーディオデータを入力し、所定の処理の後、所定のフレーム周期毎に、通信バスを介してホスト装置に供給するオーディオ入力装置であって、
先入れ先出し方式の送信バッファと、
先入れ先出し方式の録音バッファと、
通信バス上の信号からフレーム周期を検出する検出部と、
前記外部から入力した複数chの各々のオーディオデータを、所定のサンプリング周期毎に、1サンプルずつ録音バッファに書き込む録音部と、
前記フレーム周期毎に、前記ホスト装置から送られる入力要求に応じて、送信バッファに記憶された複数chのオーディオデータを、前記通信バスを介して前記ホスト装置に複数サンプルずつ送信する、送信動作を行う送信部と、
装置全体を制御するプロセッサと、
前記プロセッサからの指示に従い、前記送信バッファおよび録音バッファに係るデータ転送を制御するとともに、前記送信部および録音部の動作を制御する制御部と
を備え、
前記プロセッサは、
(1)前記通信バスを介して、前記ホスト装置から、送信するオーディオデータに関するパラメータを受け取ったときは、前記制御部および前記録音部に、該パラメータを設定し、
(2)前記通信バスを介して、前記ホスト装置から、オーディオデータの入力開始の指示を受け取ったとき、前記制御部に動作開始を指示し、
前記制御部は、
前記プロセッサからの動作開始の指示に応じて、前記送信バッファと録音バッファをクリアし、前記送信部の送信動作を無効化するとともに、前記録音部の前記サンプル書き込みの動作を停止し、その後、フレーム周期が検出される毎に、
(1)前記録音部の前記サンプル書き込みの動作が停止中であれば、前記録音部に対して前記サンプル書き込みの動作の開始を指示して、その動作を開始させ、
(2)前記録音部の前記サンプル書き込みの動作が動作中であり、かつ、前記送信部が送信無効であれば、録音バッファのオーディオデータを送信バッファに転送するとともに、前記送信バッファに所定量のオーディオデータがある場合は、前記送信部の送信動作を有効化し、
(3)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求が無い場合は、(a)送信バッファに記憶されたオーディオデータを1フレーム周期分消去し、録音バッファのオーディオデータを送信バッファに転送し、または、(b)録音バッファに記憶されたオーディオデータを1フレーム周期分消去し、
(4)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、録音バッファにデータ満杯またはデータ不足が生じていれば、自動復帰処理として、前記送信部の送信動作を無効化するとともに、録音バッファおよび送信バッファのオーディオデータをクリアし、
(5)前記録音部の前記サンプル書き込みの動作が動作中であり、前記送信部の送信動作が有効化されており、かつ、前記ホスト装置から送られる前記入力要求がある場合は、録音バッファのオーディオデータを送信バッファに転送する
ことを特徴とするオーディオデータ入力装置。
【請求項17】
請求項15に記載のオーディオデータ出力装置または請求項16に記載のオーディオデータ入力装置において、
前記オーディオデータに係るパラメータは、該オーディオデータのサンプリング周波数、サンプルのビット数、およびch数のうちの、少なくとも1つのパラメータを含むことを特徴とするオーディオデータ出力装置またはオーディオデータ入力装置。
【請求項18】
請求項15に記載のオーディオデータ出力装置において、
前記再生部から出力されるオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行する、デジタル信号処理部を備えており、
前記プロセッサは、前記デジタル信号処理部における信号処理を規定するアルゴリズムやパラメータを設定するものである
ことを特徴とするオーディオデータ出力装置。
【請求項19】
請求項16に記載のオーディオデータ入力装置において、
前記外部からのオーディオデータを入力し、サンプリング周期毎に複数chの各chのオーディオデータに対する信号処理を個別に実行し、前記録音部に出力する、デジタル信号処理部を備えており、
前記プロセッサは、前記デジタル信号処理部における信号処理を規定するアルゴリズムやパラメータを設定するものである
ことを特徴とするオーディオデータ出力装置。
【請求項20】
請求項15に記載のオーディオデータ出力装置において、
前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、
前記制御部は、前記自動復帰処理が有効であるときは、前記(2)の動作を実行し、前記自動復帰処理が無効であるときは、前記(2)の動作の代わりに、前記フレーム周期が検出される毎に実行している動作を停止して、以後は動作停止状態を維持する
ことを特徴とするオーディオデータ出力装置。
【請求項21】
請求項16に記載のオーディオデータ入力装置において、
前記プロセッサが、前記制御部に対して、前記自動復帰処理の有効または無効を指示し、
前記制御部は、前記自動復帰処理が有効であるときは、前記(4)の動作を実行し、前記自動復帰処理が無効であるときは、前記(4)の動作の代わりに、前記フレーム周期が検出される毎に実行している動作を停止して、以後は動作停止状態を維持する
ことを特徴とするオーディオデータ入力装置。
【請求項22】
請求項16に記載のオーディオデータ入力装置において、
前記プロセッサが、前記制御部に対して、前記(3)の場合に前記(a)または(b)の何れを適用するかを指示し、
前記制御部は、該指示に応じて、前記(3)の場合に前記(a)または(b)の何れかの動作を実行するものである
ことを特徴とするオーディオデータ入力装置。
【請求項23】
請求項15に記載のオーディオデータ出力装置または請求項16に記載のオーディオデータ入力装置において、
前記プロセッサは、前記通信バスを介して、前記ホスト装置から出力停止指示または入力停止指示を受け取ったとき、その出力停止指示または入力停止指示に応じて、前記制御部に対し、動作の停止を指示し、
前記制御部は、該動作の停止の指示に応じて、オーディオ信号の出力または入力動作を停止する
ことを特徴とするオーディオデータ出力装置またはオーディオデータ入力装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−215861(P2012−215861A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2012−68417(P2012−68417)
【出願日】平成24年3月23日(2012.3.23)
【出願人】(000004075)ヤマハ株式会社 (5,930)
【Fターム(参考)】