注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジ ナルの英語版をご参照願います。 PIC32 向け サンプリング レート変換 ライブラリ ユーザガイド 2013 Microchip Technology Inc. DS61190A_JP Microchip 社製デバイスのコード保護機能に関して次の点にご注意ください。 • Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。 • Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流 通している同種製品の中でも最も高度であると考えています。 • しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、 Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所 有権の侵害に該当する可能性が非常に高いと言えます。 • Microchip 社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。 • Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護 機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。 コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社 のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著 本書に記載されているデバイス アプリケーション等に関する 情報は、ユーザの便宜のためにのみ提供されているものであ り、更新によって無効とされる事があります。お客様のアプ リケーションが仕様を満たす事を保証する責任は、お客様に あります。Microchip 社は、明示的、暗黙的、書面、口頭、法 定のいずれであるかを問わず、本書に記載されている情報に 関して、状態、品質、性能、商品性、特定目的への適合性を は じ め と す る、い か な る 類 の 表 明 も 保 証 も 行 い ま せ ん。 Microchip 社は、本書の情報およびその使用に起因する一切の 責任を否認します。Microchip 社の明示的な書面による承認な しに、生命維持装置あるいは生命安全用途に Microchip 社の製 品を使用する事は全て購入者のリスクとし、また購入者はこ れによって発生したあらゆる損害、クレーム、訴訟、費用に 関して、Microchip 社は擁護され、免責され、損害をうけない 事に同意するものとします。暗黙的あるいは明示的を問わず、 Microchip社が知的財産権を保有しているライセンスは一切譲 渡されません。 商標 Microchip 社の名称と Microchip ロゴ、dsPIC、FlashFlex、 KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、 PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、 米 国お よ びそ の 他の 国 にお け る Microchip Technology Incorporated の登録商標です。 FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、 MTP、SEEVAL、Embedded Control Solutions Company は、 米国における Microchip Technology Incorporated の登録商標 です。 Silicon Storage Technology は、 その他の国における Microchip Technology Incorporated の登録商標です。 Analog-for-the-Digital Age、Application Maestro、BodyCom、 chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、 dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、 HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、 MPASM、MPF、MPLAB 認証ロゴ、MPLIB、MPLINK、mTouch、 Omniscient Code Generation、PICC、PICC-18、PICDEM、 PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、 SQI、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、 WiperLock、ZENA、Z-Scale は、米国およびその他の国におけ る Microchip Technology Incorporated の登録商標です。 SQTP は、米国における Microchip Technology Incorporated のサービスマークです。 GestICとULPPは、その他の国におけるMicrochip Technology Germany II GmbH & Co. & KG (Microchip Technology Incorporated の子会社 ) の登録商標です。 その他、本書に記載されている商標は各社に帰属します。 ©2013, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. ISBN: 978-1-62077-542-4 QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS 16949 == DS61190A_JP - p. 2 Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham ( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォ ルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を 取得しています。Microchip 社の品質システム プロセスおよび手順は、 PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイ ス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、ア ナログ製品に採用されています。さらに、開発システムの設計と製造 に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得し ています。 2013 Microchip Technology Inc. PIC32 向けサンプリング レート変換 ライブラリ ユーザガイド 目次 第1章 はじめに 1.1 第2章 第3章 1.1 アルゴリズムの概要 ................................................................. 9 インストール 2.1 2.1 インストール手順 ................................................................... 13 2.2 2.2 リソース使用量 ....................................................................... 14 2.3 2.3 Audacity オーディオ編集ツールの使い方 ............................... 16 API (Application Programming Interface) 3.1 3.1 サンプリング レート変換ライブラリの API 関数 ................... 18 2013 Microchip Technology Inc. DS61190A_JP - p. 3 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド NOTE: DS61190A_JP - p. 4 2013 Microchip Technology Inc. PIC32 向けサンプリング レート変換 ライブラリ ユーザガイド 序章 注意 全ての文書の内容は時間と共に古くなります。本書も例外ではありません。Microchip 社のツール とマニュアルは、お客様のニーズを満たすために常に改良を重ねており、実際のダイアログやツー ル の 内 容 が 本 書 の 説 明 と は 異 な る 場 合 が あ り ま す。最 新 の 文 書 は 弊 社 ウ ェ ブ サ イ ト (www.microchip.com) でご覧になれます。 文書は「DS」番号によって識別されます。この識別番号は、各ページのフッタのページ番号の前に 記載しています。DS 番号「DSXXXXXA」の「XXXXX」は文書番号、「A」は文書のリビジョン レ ベルを表します。 開発ツールの最新情報は、MPLAB® IDE のオンラインヘルプでご覧になれます。[Help] メニューか ら [Topics] を選択すると、オンラインヘルプ ファイルのリストが表示されます。 はじめに 序章には、PIC32 向けサンプリング レート変換ライブラリを使い始める前に知って おくと便利な一般情報を記載しています。主な内容は下記の通りです。 • 本書の構成 • 本書の表記規則 • 保証登録 • 推奨参考資料 • Microchip 社のウェブサイト • 開発システムの顧客変更通知サービス • カスタマサポート • 改訂履歴 本書の構成 本書では、PIC32 向けサンプリング レート変換ライブラリの使い方について説明しま す。本書の構成は下記の通りです。 • 第 1 章「はじめに」- SRC ライブラリの概要 • 第 2 章「インストール」- SRC ライブラリのインストール手順 • 第 3 章「API (Application Programming Interface)」- SRC ライブラリが提供する API 関数の使い方 2013 Microchip Technology Inc. DS61190A_JP - p. 5 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 本書の表記規則 本書には下記の表記規則を適用します。 本書の表記規則 概要 意味 例 二重かぎカッコ 参考資料 太字 テキストの強調 ... は唯一のコンパイラです ... 角カッコ : [ ] ウィンドウ名 [Output] ウィンドウ ダイアログ名 [Settings] ダイアログ メニューの選択肢 かぎカッコ : 「 」 ウィンドウまたはダイアログの フィールド名 右山カッコ (>) で区切った下 線付き斜体テキスト メニュー項目の選択 『MPLAB® IDE ユーザガイド』 [Enable Programmer] を選択 「Save project before build」 File>Save 角カッコで囲んだ太字のテキ ダイアログのボタン スト タブ [OK] をクリックする 山カッコ (< >) で囲んだテキ スト キーボードのキー <Enter>、<F1> を押す 標準書体の Courier New サンプル ソースコード #define START ファイル名 autoexec.bat ファイルパス c:\mcc18\h キーワード _asm, _endasm, static コマンドライン オプション -Opa+, -Opa- ビット値 0, 1 定数 0xFF, ‘A’ 変数の引数 file.o (file は有効な任意のファ 斜体の Courier New [Power] タブをクリックする イル名 ) 角カッコ : [ ] オプションの引数 mcc18 [options] file [options] 中カッコとパイプ文字 : 文字 :{ | } いずれかの引数を選択する場合 (OR 選択 ) errorlevel {0|1} 繰り返されるテキスト var_name [, var_name...] ユーザが定義するコード void main (void) { ... } ... Note 特に間違いやすい内容や、デバイ スの種類によって動作が異なる場 合等、読者に注意を促すための情 報を記載します。Note は、枠で 囲んで本文中に記載する場合と、 図または表の下に記載する場合が あります。 Note: これは標準的な Note ボック スです。 CAUTION これは警告を示す Note です。 Note 1: DS61190A_JP - p. 6 これは表内の Note です。 2013 Microchip Technology Inc. 序章 保証登録 同封の保証登録カードにご記入の上、お早めに郵送してください。折り返し、製品の アップデート情報をお届けします。ソフトウェアのマイナーリリースは弊社ウェブサ イトで提供しております。 推奨参考資料 本書には、PIC32 向けサンプリング レート変換ライブラリの使い方を記載していま す。参考資料として、Microchip 社が提供する下記の文書を推奨します。 PIC32 ファミリ リファレンス マニュアル ( 複数セクションに分冊 ) PIC32 ファミリ リファレンス マニュアルの各セクションには、PIC32 デバイスファ ミリのアーキテクチャと周辺モジュールの動作に関する説明を記載しています。デバ イスファミリごとの仕様は、各ファミリのデータシートに記載しています。 PIC32 向け MPLAB® C コンパイラ ユーザガイド (DS51686) このユーザガイドには、PIC32 マイクロコントローラを使った 32 ビット アプリケー ション開発における Microchip 社製 MPLAB C コンパイラの詳細な使い方を記載して います。 MPLAB® IDE ユーザガイド (DS51519) このユーザガイドには、MPLAB IDE ソフトウェアと付属の MPLAB エディタおよび MPLAB SIM シミュレータ ソフトウェアのインストールと実装に関する情報を記載し ています。 Microchip 社のウェブサイト Microchip 社は、自社が運営するウェブサイト (www.microchip.com) を通してオンラ イン サポートを提供しています。当ウェブサイトでは、お客様に役立つ情報やファイ ルを簡単に見つけ出せます。一般的なインターネット ブラウザを使って下記の内容を ご覧になれます。 • 製品サポート - データシートとエラッタ、アプリケーション ノート、サンプルコー ド、設計リソース、ユーザガイドとハードウェア サポート文書、最新ソフトウェア リリース、ソフトウェア アーカイブ • 一般的技術サポート - よく寄せられる質問 (FAQ)、技術サポートのご依頼、オンラ イン ディスカッション グループ、Microchip 社のコンサルタント プログラムおよび メンバーリスト • ご注文とお問い合わせ - 製品セレクタと注文ガイド、最新プレスリリース、セミナー / イベントの一覧、お問い合わせ先 ( 営業所 / 販売代理店 / 工場 ) の一覧 2013 Microchip Technology Inc. DS61190A_JP - p. 7 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 開発システムの顧客変更通知サービス Microchip 社の顧客変更通知サービスは、お客様に Microchip 社製品の最新情報をお 届けする配信サービスです。ご興味のある製品ファミリまたは開発ツールに関連する 変更、更新、エラッタ情報をいち早くメールでお知らせします。 Microchip 社のウェブサイト (www.microchip.com) にアクセスし、 「設計サポート」メ ニュー内の「製品変更のお知らせ」からご登録ください。 開発システム製品のグループ カテゴリは、以下の通りです。 • コンパイラ - Microchip 社の C コンパイラとその他の言語ツール (MPLAB® C コン パイラ、MPASM™ および MPLAB 16 ビット アセンブラ、MPLINK™ および MPLAB 16 ビット オブジェクトリンカ、MPLIB™ および MPLAB 16 ビット オブジェクト ラ イブラリ等 ) の最新情報 • エミュレータ - Microchip 社製インサーキット エミュレータ MPLAB REAL ICE™ の 最新情報 • インサーキット デバッガ - Microchip 社製インサーキットデバッガ MPLAB ICD 3 の 最新情報 • MPLAB IDE - Microchip 社の MPLAB IDE( 開発システムツール向け Windows® 統合 開発環境 : MPLAB IDE、MPLAB SIM シミュレータ、MPLAB IDE プロジェクト マ ネージャ、一般的な編集 / デバッグ機能等 ) の最新情報 • プログラマ - Microchip 社製プログラマ (MPLAB PM3 デバイス プログラマと PICkit™ 3 開発用プログラマを含む ) の最新情報 カスタマサポート Microchip 社製品をお使いのお客様は、下記のチャンネルからサポートをご利用頂け ます。 • 代理店または販売担当者 • 各地の営業所 • フィールド アプリケーション エンジニア (FAE) • 技術サポート サポートについては代理店、販売担当者、フィールド アプリケーション エンジニア (FAE) までお問い合わせください。各地の営業所もご利用頂けます。本書の末尾には 各国の営業所の一覧を記載しています。 技術サポートは下記のウェブサイトからもご利用頂けます。 http://www.microchip.com/support 改訂履歴 リビジョン A (2013 年 2 月 ) 本書は初版です。 DS61190A_JP - p. 8 2013 Microchip Technology Inc. PIC32 向けサンプリング レート変換 ライブラリ ユーザガイド 第 1 章 はじめに PIC32 向けサンプリング レート変換ライブラリは、リアルタイム RAW ステレオ オー ディオ データを、特定の標準的オーディオ サンプリング レートに変換する機能を提 供します。ライブラリはストリーミング オーディオ アプリケーション向けに設計さ れており、特定のサンプリング レートを持つアナログ フロントエンドと一緒に使え ます。ライブラリは 16 ビットと 24 ビットの入力データ分解能をサポートします。 16 および 24 ビット ライブラリは、下記のモードをサポートします。 • 44.1 kHz から 48 kHz へのアップ サンプリング レート変換 • 32 kHz から 48 kHz へのアップ サンプリング レート変換 24 ビット ライブラリのみ、下記のモードもサポートします。 • 48 kHz から 44.1 kHz へのダウン サンプリング レート変換 1.1 アルゴリズムの概要 SRC アルゴリズムは、リアルタイムの 16 または 24 ビット ステレオ オーディオデー タ ストリームのサンプリング レートを変換します。SRC 用 API 関数を呼び出すたび に、16 または 24 ビット ステレオ オーディオ サンプルを格納した長さ 1 ms のフレー ムを処理します。1 ms の入力オーディオデータは、48 kHz 入力では 48 個のステレオ サンプルを含み、32 kHz 入力では 32 個のステレオサンプルを含みます。44.1 kHz 入 力の場合、最初の 9 個のフレームは 44 個のステレオサンプルを含み、10 番目のフレー ムだけ 45 個のステレオサンプルを含みます。出力フレームに含まれるサンプルの個数 は出力サンプリング レートによって決まります。 図 1-1 に SRC アルゴリズムの基本的ブロック図を示します。オーディオデータは、 アップサンプラ ( 補間 ) 段に入力され、アンチエイリアシングのためのローパスフィ ルタを経て、ダウンサンプラ ( デシメーション ) 段から出力されます。 16 ビットと 24 ビットの SRC ライブラリではサポートする SRC モード ( 変換倍率 ) が異なるため、設計も異なります。16 ビット SRC ライブラリは、最大動作周波数が 40 MHz または 80 MHz の PIC32 デバイス向けに設計されています。24 ビット SRC ライブラリは、最大動作周波数が 80 MHz の PIC32 デバイス向けに設計されていま す。利用可能な MIPS には限りがあるため、16 ビット ライブラリと 24 ビット ライ ブラリでは MIPS と音質はトレードオフの関係にあります。 図 1-1: SRC アルゴリズムのブロック図 Audio Data In Upsample FIR Filter Downsample Polynomial Interpolation SRC Audio Data Out Polyphase Filtering 2013 Microchip Technology Inc. DS61190A_JP - p. 9 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 1.1.1 32 → 48 kHz サンプリング レート変換 入力を 3 倍にアップサンプリングした後に、有限インパルス応答 (FIR) フィルタを 使って信号を平滑化します。平滑化された信号にゲイン係数を適用する事で、ゼロ挿 入による信号ゲインの低下を補償します。この信号を 1/2 にダウンサンプリングする 事で、サンプリング レート 48 kHz の出力オーディオ信号を生成します。ダウンサン プリングでは、一部のサンプルを間引いて破棄します。それらのサンプルのフィルタ 処理を省略する事で、実行命令サイクル数を大幅に削減できます。これは多相フィル タ処理法を単純化した形態であり、SRC の処理速度が向上します。このモードの入 力サンプリング レートは 32 kHz であるため、長さ 1 ms の各入力オーディオ フレー ムは 32 個のステレオサンプルを含む必要があります。このモードの出力サンプリン グ レートは 48 kHz であるため、各出力オーディオ フレームは 48 個のステレオサン プルを含みます。 1.1.2 44.1 → 48 kHz サンプリング レート変換 16 ビットライブラリは入力を 2 倍にアップサンプリングし、24 ビットライブラリは 4 倍にアップサンプリングします。各入力サンプルの後にゼロを挿入し、FIR フィル タを使って信号を平滑化します。平滑化にゲイン係数を適用する事で、ゼロ挿入によ る信号ゲインの低下を補償します。ダウンサンプリングには多項式補間を使います。 16 ビット ライブラリでは、88.2 kHz にアップサンプリングしたサンプルを 147 個ず つ 48 kHz (80 個のサンプル ) にダウンサンプリングします。24 ビット ライブラリで は、176.4 kHz にアップサンプリングしたサンプルを 294 個ずつ 48 kHz (80 個のサン プル ) にダウンサンプリングします。また、多相フィルタ処理を採用する事で、冗長 なフィルタ処理を削減しています。このモードの入力サンプリング レートは 44.1 kHz であるため、入力オーディオ フレームの最初の 9 個は 44 個のステレオサンプルを含 み、10 番目のフレームは 45 個のステレオサンプル含む必要があります。このモード の出力サンプリング レートは 48 kHz であるため、各出力オーディオ フレームは 48 個 のステレオサンプルを含みます。 1.1.3 48 → 44.1 kHz サンプリング レート変換 (24 ビット専用 ) 24 ビットライブラリは入力を 4 倍にアップサンプリングし、各サンプルの後にゼロを 挿入した後、FIR フィルタを使って信号を平滑化します。多項式補間を使って、196 kHz にアップサンプリングしたサンプルを 640 個ずつ 44.1 kHz (147 個のサンプル ) にダ ウンサンプリングする事で、出力オーディオデータのサンプリング レートを 44.1 kHz に変換します。また、多相フィルタ処理を採用する事で、冗長なフィルタ処理を削減 しています。このモードの入力サンプリング レートは 48 kHz であるため、各入力 オーディオ フレームは 48 個のステレオサンプルを含む必要があります。このモード の出力サンプリング レートは 44.1 kHz であるため、出力オーディオ フレームの最初 の 9 個は 44 個のステレオサンプルを含み、10 番目のフレームは 45 個のステレオサ ンプルを含みます。 1.1.4 入力 FIR フィルタの設計 32 kHz 入力モードの場合、エイリアシング効果を抑制するために非常に急峻な減衰特 性を持つローパスフィルタを使います。カットオフ周波数は、中間サンプリング レー トの 1/6 よりも低く設定されています。これはナイキスト周波数よりも低いため、ダ ウンサンプリング時のエイリアシング効果は問題になりません。カットオフ周波数は、 16 ビットおよび 24 ビット ライブラリのどちらでも約 15 kHz です。これは、最初の 阻止帯域ゼロ点が入力のナイキスト周波数をカバーするようカットオフ周波数を調整 してフィルタ設計を最適化する場合に好ましい値です。 16 ビット ライブラリの 44.1 kHz 入力モードのローパスフィルタ カットオフ周波数は、 中間サンプリング レートの 1/4 よりも低い 19.7 kHz に設定されます。24 ビット ライ ブラリの 44.1 kHz および 48 kHz 入力モードのローパスフィルタ カットオフ周波数は 中間サンプリング レートの 1/8 よりも低い 16 kHz に設定されます。 DS61190A_JP - p. 10 2013 Microchip Technology Inc. はじめに フィルタをより高度に最適化するために、全てのフィルタに対して等リップル設計法 を適用しています。上記の各フィルタの通過帯域リップルは表 2-2、2-3、2-4 に記載 しています。阻止帯域減衰量は、44.1 kHz および 48 kHz 入力モードにおいて -70 dB 未満、32 kHz 入力モードにおいて -100 dB 未満です。FIR フィルタが処理負荷の大半 を占めますが、16 ビットおよび 24 ビット ライブラリのどちらでも、フィルタ設計と 出力音質はトレードオフの関係にあります。トレードオフ関係は、16 ビット ライブ ラリよりも 24 ビット ライブラリで顕著となります。これは、より高いデータ分解能 を処理するために、32 ビット PIC32 デバイスで実行する中間処理の命令サイクル数 が増加するためです。 2013 Microchip Technology Inc. DS61190A_JP - p. 11 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド NOTE: DS61190A_JP - p. 12 2013 Microchip Technology Inc. PIC32 向けサンプリング レート変換 ライブラリ ユーザガイド 第 2 章 インストール 本章では、PIC32 向けサンプリング レート変換ライブラリのインストール手順と、リ ソース使用量について説明します。 この章の主な内容は下記の通りです。 • インストール手順 • リソース使用量 • Audacity オーディオ編集ツールの使い方 2.1 インストール手順 SRC ライブラリはサンプリング レート変換関連のウェブページ (www.microchip.com/SRC) からダウンロードできます。ダウンロードしたファイルを解凍してインストーラを実 行し、パスを指定してライブラリをインストールします。24 ビット SRC ライブラリ と 16 ビット SRC ライブラリのインストールには、別々のインストーラを使います。 下記の手順でアプリケーションにライブラリを追加します。 1. アプリケーションの MPLABワークスペースで、 「Project」ウィンドウ内の[Library Files] を右クリックし、[Add files] を選択する。 2. アーカイブ ファイルのパス ( インストール ディレクトリ内の「libs」フォルダ ) をブラウザで指定し、下記ファイルのいずれか 1 つを選択する。 • libSRC_LITE_44_1KHz_to_48KHz_v1_0.a (24 ビット ライブラリ ) • libSRC_LITE_32KHz_to_48KHz_v1_0.a (24 ビット ライブラリ ) • libSRC_LITE_48KHz_to_44_1KHz_v1_0.a (24 ビット ライブラリ ) • libSRC_LITE_PIC32_v1_0.a (16 ビット ライブラリ ) • libSRC_FULL_PIC32_v1_0.a (16 ビット ライブラリ ) 3. ファイルを選択してから [Open] をクリックすると、その SRC ライブラリがアプ リケーションに追加される。 2013 Microchip Technology Inc. DS61190A_JP - p. 13 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 2.2 リソース使用量 2.2.1 16 ビット ライブラリの各 SRC モードにおける音質 (SNR) とリ ソース使用量 表 2-1 に、16 ビット ライブラリの各 SRC モードにおける性能 (SNR) とリソース使 用量を示します。 表 2-1: 16 ビット SRC モードの音質 (SNR) とリソース使用量 SRCライブラリ バージョン Lite バージョン フルバージョン Note 1: 2.2.2 SRC モード MIPS コードサイズ ( バイト ) データサイズ ( バイト ) SNR (dB)(1) 5684 1284 82 5760 1364 84 32 kH → 48 kHz 27.4 44.1 kHz → 48 kHz 30.1 32 kH → 48 kHz 33.5 44.1 kHz → 48 kHz 36.7 82 82 1 kHz のフルスケール正弦波信号を使って評価 24 ビット ライブラリの各 SRC モードにおける音質 (THDN) とリ ソース使用量 表 2-2、表 2-3、表 2-4 に 24 ビット ライブラリの各 SRC モードにおける MIPS、プ ログラムメモリ、データメモリ使用量と、オーディオ帯域内の各信号周波数における 全高調波歪み (THDN) を示します。 Note: 24 ビット SRC ライブラリでは利用可能な MIPS に限りがあるため、MIPS と音質はトレードオフの関係にあります。 表 2-2: 24 ビット 48 kHz → 44.1 kHz サンプリング レート変換の音質 (THDN) と リソース使用量 リソース 通過帯域リップル < ±1.5 dB MIPS = 57 プログラムメモリ = 5916 byte データメモリ = 6976 byte トーン周波数 (Hz) THDN (dBFS) 100 -70 1k -73 5k -70 10k -71 12k -70 15k -71 表 2-3: 24 ビット 44.1 kHz → 48 kHz サンプリング レート変換の音質 (THDN) と リソース使用量 リソース 通過帯域リップル < ±2 dB MIPS = 61 プログラムメモリ = 5984 byte データメモリ = 6612 byte DS61190A_JP - p. 14 トーン周波数 (Hz) THDN (dBFS) 100 -75 1k -70 5k -70 10k -76 12k -69 15k -69 2013 Microchip Technology Inc. インストール 表 2-4: 24 ビット 32 kHz → 48 kHz サンプリング レート変換の音質 (THDN) とリ ソース使用量 リソース 通過帯域リップル < ±0.2 dB MIPS = 53 プログラムメモリ = 2608 byte データメモリ = 3328 byte Note 1: 2013 Microchip Technology Inc. トーン周波数 (Hz) THDN (dBFS) 100 -104 1k -104 5k -110 10k -115 12k -105 15k -105 試験には 24 ビットのステレオ オーディオトーンを使いました。 2: リソース使用量は、XC32 コンパイラ (v1.20) を使った場合の値です。 3: ライブラリのコンパイルには 32 ビット命令セット使い、コンパイラの 実行速度最適化オプション ( レベル -O3) を有効にしています。 DS61190A_JP - p. 15 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 2.3 Audacity オーディオ編集ツールの使い方 SRC ライブラリは、RAW ステレオ オーディオ サンプルのオーディオ ストリームを リアルタイムに処理します。しかし、ライブラリを非リアルタイムに解析する必要が ある場合、Audacity オーディオ編集ツールを使って .RAW オーディオ ファイルを作成 および解析できます。Audacity オーディオ編集ツールを使うと、高音質オーディオ ス トリームを編集、作成、解析できます。 Audacity オーディオ編集ツールの使い方は以下の通りです。 1. 下記から Audacity オーディオ編集ツールをダウンロードしてインストールする。 http://audacity.sourceforge.net/ 2. .RAW オーディオ ファイルを作成する。 Note: 下記リンク (Track Drop-Down Menu) のチュートリアル を参照してくださ い。 http://manual.audacityteam.org/man/Track_Drop-Down_Menu a) Audacity にオーディオ ファイルをインポートする。 b) インポートしたオーディオがステレオ オーディオである事を確認する。ステ レオではない場合、片方のチャンネルのオーディオ信号を他方のチャンネル にコピーする (Track > Make Stereo Track)。 c) Track > Set Sample Format > 24-bit PCM を選択する。 d) File > Export を選択する。 e) Save as Type > Other uncompressed files を選択する。 f) [Options] をクリックし、Header > RAW (header-less) を選択する。 g) Encoding > Signed 32-bit PCM を選択する。 h) ファイル名を入力し、[Save] をクリックする。 3. .RAW オーディオ ファイルをインポートする。 a) File> Import > Raw Data を選択する。 b) ブラウザでファイルを選択し、[Open] をクリックする。 c) Encoding > Signed 32-bit PCM を選択する。 d) Byte Order > Little-endian を選択する。 e) Channels > 2 Channels (Stereo) を選択する。 f) 「Sample Rate」テキストボックスにサンプリング レートを入力する。 g) [Import] をクリックする。 h) インポートしたオーディオ ファイルを再生または解析する。 DS61190A_JP - p. 16 2013 Microchip Technology Inc. PIC32 向けサンプリング レート変換 ライブラリ ユーザガイド 第 3 章 API (Application Programming Interface) この章では、PIC32 向けサンプリング レート変換ライブラリの API (Application Programming Interface) について説明します。 SRC ライブラリの API 関数は簡単に使えます。API 関数のプロトタイプ宣言、使用 するステートバッファ、SRC モード用に使うバッファのサイズは、ライブラリ バー ジョン別のヘッダファイルに記述されています。アーカイブ ファイルは、プロジェク ト ワークスペース内で使うライブラリ ファイルです。例 3-1 と例 3-2 に、それぞれ 16 ビットおよび 24 ビット SRC ライブラリのヘッダファイルとアーカイブ ファイル のリストを示します。 例 3-1: 16 ビットライブラリのヘッダファイルとアーカイブ ファイル | |----- h | | | | |----- libs | | src_api.h (header file for SRC APIs) libSRC_x_y_v1_0.a (SRC library archive) 24 ビット SRC ライブラリは、変換モードごとに別々のファイルに分割されています。 実際に使用する変換モードのファイルだけをインクルードする事で、SRC のプログ ラムメモリ使用量を最小限に抑える事ができます。 例 3-2: 24 ビットライブラリのヘッダファイルとアーカイブ ファイル | |--------h | | src_api_LITE_44_1KHz_to_48KHz.h | src_api_LITE_32KHz_to_48KHz.h | src_api_LITE_48KHz_to_44_1KHz.h | |--------libs | | libSRC_LITE_44_1KHz_to_48KHz_v1_0.a | libSRC_LITE_32KHz_to_48KHz_v1_0.a | libSRC_LITE_48KHz_to_44_1KHz_v1_0.a 2013 Microchip Technology Inc. DS61190A_JP - p. 17 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 3.1 サンプリング レート変換ライブラリの API 関数 3.1.1 16 ビット ライブラリの API 関数 以下では、16 ビット SRC ライブラリ用の 2 つの API 関数について説明します。 SRC_init() 概要 API 関数 SRC_init() は変換モードを設定し、SRC ライブラリに必要なローカル ス テートバッファを初期化します。SRC ステートバッファはバッファポインタ、フィ ルタに必要な分割バッファ、多項式補間用のバッファを格納します。 プロトタイプ void SRC_init(int* ptrSRC_state, int cd_flag); 引数 ptrSRC_state SRC ライブラリのこのインスタンス向けのステートメモリを指す ポインタ cd_flag SRC_32KHZ_TO_48KHZ - 32 kHz → 48 kHz 変換モード SRC_44_1KHZ_TO_48KHZ - 44.1 kHz → 48 kHz 変換モード 例 #define CD_FLAG SRC_32KHZ_TO_48KHZ . . . int srcStateMem[SRC_STATE_MEM_SIZE_INT]; . . . SRC_init(srcStateMem, CD_FLAG); DS61190A_JP - p. 18 2013 Microchip Technology Inc. API (Application Programming Interface) SRC_apply() 概要 API 関数 SRC_apply() を呼び出す事で、1 フレーム (1 ms) の入力オーディオ信号に 対してサンプリング レート変換を実行します。この API は入力バッファ、出力バッ ファ、SRC ステートを指す各ポインタと、入力オーディオ バッファのサイズを引数 とします。入力オーディオ データバッファのサイズは、入力サンプリング レートが 32 kHz の場合は 64、入力サンプリング レートが 44.1 kHz の場合は 88 または 90 です。 プロトタイプ int SRC_apply(int* ptrSRC_state, short* Sin, short* Sout, int readCount); 引数 ptrSRC_state SRC のこのインスタンスのステートメモリを指すポインタ Sin 入力オーディオ信号に対応したサイズ SRC_IN_PROC_SIZE を持 つ入力バッファを指すポインタ Sout サイズ SRC_OUT_PROC_SIZE の出力バッファを指すポインタ readCount 入力バッファから読み出すサンプルの個数 ( 左右チャンネルのサ ンプルの合計数 ) 例 #define CD_FLAG SRC_32KHZ_TO_48KHZ . . . short Sin[SRC_IN_PROC_SIZE]; short Sout[SRC_OUT_PROC_SIZE]; int srcStateMem[SRC_STATE_MEM_SIZE_INT]; int read_count; int write_count; . . . read_count = 64; . . . SRC_init(srcStateMem, CD_FLAG); . . . write_count = SRC_apply(srcStateMem, Sin, Sout, read_count); 2013 Microchip Technology Inc. DS61190A_JP - p. 19 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 3.1.2 24 ビット ライブラリの API 関数 24 ビット SRC ライブラリは、変換モードごとに別々のファイルに分割されています。 実際に使用する変換モードのファイルだけをインクルードする事で、SRC のプログ ラムメモリ使用量を最小限に抑える事ができます。 SRC_init_x() 概要 API 関数 SRC_init_x() は実行する変換モードを設定し、24 ビット SRC ライブラリ に必要なローカル ステートバッファを初期化します。SRC ステートバッファは、バッ ファポインタ、フィルタに必要な分割バッファ、多項式補間用のバッファを格納しま す。 プロトタイプ void SRC_init_44_1KHz_to_48KHz(int* ptrSRC_state); void SRC_init_32KHz_to_48KHz(int* ptrSRC_state); void SRC_init_48KHz_to_44_1KHz(int* ptrSRC_state); 引数 ptrSRC_state SRC のこのインスタンスのステートメモリを指すポインタ 例 int srcStateMem[SRC_STATE_MEM_SIZE_INT]; . . . SRC_init_44_1KHz_to_48KHz(srcStateMem); DS61190A_JP - p. 20 2013 Microchip Technology Inc. API (Application Programming Interface) SRC_apply_x() 概要 API 関数 SRC_apply_x() を呼び出す事で、1 フレーム (1 ms) の 24 ビット入力オー ディオ信号に対してサンプリング レート変換を実行します。この API は、非圧縮ス テレオ オーディオ データの入力バッファ、非圧縮ステレオ オーディオ データを格納 する出力バッファ、SRC ステートバッファを指す各ポインタと、入力オーディオ バッ ファのサイズを引数とします。入力オーディオ データバッファのサイズは、入力サン プリング レートが 32 kHz の場合は 32、入力サンプリング レートが 48 kHz の場合は 48、入力サンプリング レートが 44.1 kHz の場合は 44 または 45 です。出力オーディ オ データバッファのサイズは、出力サンプリング レートが 32 kHz の場合は 32、出 力サンプリング レートが 48 kHz の場合は 48、出力サンプリング レートが 44.1 kHz の場合は 44 または 45 です。 Note: 24 ビット ライブラリの場合、readCount はステレオサンプルの個数を表 します。これとは異なり、16 ビット ライブラリの readCount は、左右 チャンネルのサンプルを合計した個数を表します。 プロトタイプ int int int SRC_apply_44_1KHz_to_48KHz(int* ptrSRC_state, AudioStereo32b* Sin, AudioStereo32b* Sout, int readCount); SRC_apply_32KHz_to_48KHz(int* ptrSRC_state, AudioStereo32b* Sin, AudioStereo32b* Sout, int readCount); SRC_apply_48KHz_to_44_1KHz(int* ptrSRC_state, AudioStereo32b* Sin, AudioStereo32b* Sout, int readCount); 引数 ptrSRC_state SRC のこのインスタンスのステートメモリを指すポインタ Sin AudioStereo32b 入力ステレオ オーディオ データバッファを指す ポインタ (AudioStereo32b のデータ型は、2 つの 32 ビット メン バー ( 左チャンネルと右チャンネルのオーディオデータ ) から成 る構造体です ) Sout AudioStereo32b 出力ステレオ オーディオ データバッファを指す ポインタ readCount 入力バッファから読み出すステレオサンプルの個数 2013 Microchip Technology Inc. DS61190A_JP - p. 21 PIC32 向けサンプリング レート変換ライブラリ ユーザガイド 例 AudioStereo32b Sin[SRC_IN_PROC_SIZE]; AudioStereo32b Sout[SRC_OUT_PROC_SIZE]; srcStateMem[SRC_STATE_MEM_SIZE_INT]; int read_count; int int write_count; . . . read_count = 32; . . . SRC_init_44_1KHz_to_48KHz(srcStateMem); . . . write_count = SRC_apply _44_1KHz_to_48KHz(srcStateMem, Sin, Sout, read_count); DS61190A_JP - p. 22 2013 Microchip Technology Inc. NOTE: 2013 Microchip Technology Inc. DS61190A_JP - p. 23 各国の営業所とサービス 北米 アジア / 太平洋 アジア / 太平洋 ヨーロッパ 本社 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel:480-792-7200 Fax:480-792-7277 技術サポート : http://www.microchip.com/ support URL: www.microchip.com アジア太平洋支社 Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon Hong Kong Tel:852-2401-1200 Fax:852-2401-3431 インド - バンガロール Tel:91-80-3090-4444 Fax:91-80-3090-4123 オーストリア - ヴェルス Tel:43-7242-2244-39 インド - ニューデリー Tel:91-11-4160-8631 Fax:91-11-4160-8632 デンマーク - コペンハーゲン Tel:45-4450-2828 Fax:45-4485-2829 インド - プネ Tel:91-20-3019-1500 フランス - パリ Tel:33-1-69-53-63-20 Fax:33-1-69-30-90-79 アトランタ Duluth, GA Tel:678-957-9614 Fax:678-957-1455 中国 - 北京 Tel:86-10-8569-7000 Fax:86-10-8528-2104 オーストラリア - シドニー Tel:61-2-9868-6733 Fax:61-2-9868-6755 オースティン (TX) Tel:512-257-3370 中国 - 成都 Tel:86-28-8665-5511 Fax:86-28-8665-7889 ボストン Westborough, MA Tel:774-760-0087 Fax:774-760-0088 中国 - 重慶 Tel:86-23-8980-9588 Fax:86-23-8980-9500 シカゴ Itasca, IL Tel:630-285-0071 Fax:630-285-0075 クリーブランド Independence, OH Tel:216-447-0464 Fax:216-447-0643 ダラス Addison, TX Tel:972-818-7423 Fax:972-818-2924 デトロイト Novi, MI Tel:248-848-4000 中国 - 杭州 Tel:86-571-2819-3187 Fax:86-571-2819-3189 中国 - 香港 SAR Tel:852-2943-5100 Fax:852-2401-3431 中国 - 南京 Tel:86-25-8473-2460 Fax:86-25-8473-2470 中国 - 青島 Tel:86-532-8502-7355 Fax:86-532-8502-7205 中国 - 上海 Tel:86-21-5407-5533 Fax:86-21-5407-5066 ヒューストン (TX) Tel:281-894-5983 中国 - 瀋陽 Tel:86-24-2334-2829 Fax:86-24-2334-2393 インディアナポリス Noblesville, IN Tel:317-773-8323 Fax:317-773-5453 中国 - 深圳 Tel:86-755-8864-2200 Fax:86-755-8203-1760 ロサンゼルス Mission Viejo, CA Tel:949-462-9523 Fax:949-462-9608 ニューヨーク (NY) Tel:631-435-6000 中国 - 武漢 Tel:86-27-5980-5300 Fax:86-27-5980-5118 中国 - 西安 Tel:86-29-8833-7252 Fax:86-29-8833-7256 サンノゼ (CA) Tel:408-735-9110 中国 - 厦門 Tel:86-592-2388138 Fax:86-592-2388130 カナダ - トロント Tel:905-673-0699 Fax:905-673-6509 中国 - 珠海 Tel:86-756-3210040 Fax:86-756-3210049 Fax:43-7242-2244-393 日本 - 大阪 Tel:81-6-6152-7160 Fax:81-6-6152-9310 ドイツ - デュッセルドルフ Tel:49-2129-3766400 日本 - 東京 Tel:81-3-6880- 3770 Fax:81-3-6880-3771 ドイツ - ミュンヘン Tel:49-89-627-144-0 Fax:49-89-627-144-44 韓国 - 大邱 Tel:82-53-744-4301 Fax:82-53-744-4302 ドイツ - プフォルツハイム Tel:49-7231-424750 イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781 韓国 - ソウル Tel:82-2-554-7200 Fax:82-2-558-5932 または 82-2-558-5934 イタリア - ベニス Tel:39-049-7625286 マレーシア - クアラルンプール Tel:60-3-6201-9857 Fax:60-3-6201-9859 オランダ - ドリューネン Tel:31-416-690399 Fax:31-416-690340 マレーシア - ペナン Tel:60-4-227-8870 Fax:60-4-227-4068 ポーランド - ワルシャワ Tel:48-22-3325737 フィリピン - マニラ Tel:63-2-634-9065 Fax:63-2-634-9069 シンガポール Tel:65-6334-8870 Fax:65-6334-8850 台湾 - 新竹 Tel:886-3-5778-366 Fax:886-3-5770-955 スペイン - マドリッド Tel:34-91-708-08-90 Fax:34-91-708-08-91 スウェーデン - ストックホル ム Tel:46-8-5090-4654 イギリス - ウォーキンガム Tel:44-118-921-5800 Fax:44-118-921-5820 台湾 - 高雄 Tel:886-7-213-7830 台湾 - 台北 Tel:886-2-2508-8600 Fax:886-2-2508-0102 タイ - バンコク Tel:66-2-694-1351 Fax:66-2-694-1350 10/28/13 DS61190A_JP - p. 24 2013 Microchip Technology Inc.
© Copyright 2024