信号処理のためのプログラミング入門
〜オーディオファイルの読み込み・書き込みからリアルタイム信号処理まで〜
2009年3月26日紙版発売
松下耕二郎 著
B5変形判/256ページ
定価3,168円(本体2,880円+税10%)
ISBN 978-4-7741-3789-6
ただいま弊社在庫はございません。
書籍の概要
この本の概要
C/C++で信号処理を学びたい学生や開発者に向け,信号処理の身近な題材(オーディオ)をベースに基礎と応用を解説する。PCオーディオなどMP3などデジタルオーディオが身近になった昨今,オーディオエディタとしてメジャーなオープンソースの「Audacity」を利用することで,信号処理初心者から開発者まで幅広くカバーできる。
こんな方におすすめ
- C/C++で信号処理を学びたい学生/開発者
著者の一言
本書では,信号処理,特にオーディオ処理にフォーカスしたプログラミングの解説をしています。信号処理といえばMATLABが定番ですが,MATLABはPCでリアルタイム処理を行うには向いていません。本書は,オープンソースのライブラリをVisual C++から呼び出して,初心者でも手軽に信号処理を実現できるようにしています。また,初心者でもオープンソースのライブラリをビルドしたり,Visual C++の設定をできるように解説しています。
オーディオファイルの読み込み/書き込みをして信号処理を勉強したい方,オーディオの再生/録音をしたい方はぜひ本書を手にとってください。
目次
第1章 PCとディジタル信号処理
- 1.1 ディジタル信号とは?
- 1.2 ディジタル信号の特徴
- 1.3 オーディオファイル
- 1.4 Audacity
- 1.5 終わりに
第2章 AFspによるコンソール信号処理
- 2.1 コンソール
- 2.2 コンソールプログラム
- 2.3 CUIを使う理由
- 2.4 AFspの概要
- 2.5 AFspのダウンロード
- 2.6 AFspのインストール
- 2.7 AFspのユーティリティツール
- 2.8 終わりに
- まとめ
第3章 オーディオプログラミングのソフトウェア
- 3.1 ソフトウェア概要
- 3.2 Visual C++ 2005 Express Edition
- 3.3 Windows Platform SDK
- 3.4 DirectX SDK
- 3.5 libsndfile
- 3.6 PortAudio
- 3.7 ASIO SDK
- 3.8 環境変数の設定
- 3.9 終わりに
- まとめ
第4章 Visual C++の基礎
- 4.1 Visual C++とは?
- 4.2 ソリューションとプロジェクト
- 4.3 Visual C++の起動
- 4.4 プロジェクトの作成
- 4.5 アプリケーションの種類の選択
- 4.6 Visual C++の作業スペース
- 4.7 ソリューションとプロジェクトの違い
- 4.8 プロジェクトの依存関係
- 4.9 ソースコードの追加
- 4.10 ソースコードの編集
- 4.11 ビルド
- 4.12 プログラムの実行
- 4.13 プロパティの修正
- 4.14 デバッグの実行
- 4.15 デバッグモードとリリースモード
- 4.16 検索
- 4.17 VC++ディレクトリ
- 4.18 ライブラリの追加
- 4.19 終わりに
- まとめ
第5章 サンプリングレート,チャネル数を表示するプログラム
- 5.1 プロジェクト作成
- コラム コンソールアプリケーションしか作成できない?
- 5.2 プロジェクト設定の変更
- コラム ランタイムライブラリについて
- 5.3 sndfile.hのインクルード
- 5.4 オーディオファイルのOpen/Close
- 5.5 ライブラリの追加
- 5.6 サンプリングレートとチャネル数を表示する
- 5.7 PATHの変更
- 5.8 終わりに
- まとめ
第6章 PCMをカウントするプログラム
- 6.1 sf_seekを使う方法
- 6.2 sf_read関数を使う方法
- 6.3 終わりに
- 6.4 ソースコード
- まとめ
第7章 gnuplot
- 7.1 gnuplotとは?
- 7.2 gnuplotのインストール
- 7.3 gnuplotの起動
- 7.4 Gnuplotの使い方
- 7.5 基本的なプロット方法
- 7.6 時間信号のプロット
- 7.7 終わりに
- まとめ
第8章 FFTとFFTW
- 8.1 FFTとは?
- 8.2 DFTの導入
- 8.3 アナログからデジタルへ
- 8.4 DFTとFFT
- 8.5 FFTWとは?
- 8.6 FFTW3のインストール
- 8.7 プロジェクト作成
- 8.8 オーディオファイル処理のテンプレート
- 8.9 fftw3.hのインクルード
- 8.10 fftwの変数宣言
- 8.11 バッファの確保
- 8.12 FFTWプランの作成
- 8.13 FFTの実行
- 8.14 Gnuplotによるスペクトルの描画
- 8.15 描画設定の変更
- 8.16 IFFT
- 8.17 窓関数
- 8.18 終わりに
- 8.19 ソースコード
- まとめ
第9章 PortAudio
- 9.1 DLLプロジェクトの作成
- 9.2 ディレクトリ構造
- 9.3 ファイルの追加
- 9.4 ビルドエラーの対処
- 9.5 ランタイムライブラリの変更
- 9.6 バッチビルド
- コラム libportaudioのランタイムライブラリ
- 9.7 インポートライブラリの作成
- 9.8 終わりに
- まとめ
第10章 オーディオデバイスを一覧表示するプログラム
- 10.1 プロジェクトの追加
- 10.2 依存関係の追加
- 10.3 portaudio.hのインクルード
- 10.4 PortAudioのAPI
- 10.5 初期化&後処理
- 10.6 オーディオデバイスの数の取得
- 10.7 オーディオデバイスの一覧
- 10.8 ソースコード
- まとめ
第11章 オーディオファイルを再生するプログラム
- 11.1 変数宣言
- 11.2 入出力の設定
- 11.3 ユーザーデータの準備
- 11.4 Callback関数の定義
- 11.5 ストリームのオープン
- 11.6 コールバック関数の修正
- 11.7 ストリームの開始/停止/クローズ
- 11.8 オーディオプレイヤーの完成
- 11.9 ソースコード
- まとめ
第12章 オーディオを録音するプログラム
- 12.1 プロジェクト作成
- 12.2 ファイルポインタの追加
- 12.3 サンプリング周波数とチャネル数の設定
- 12.4 ファイルを書き込みモードで開く
- 12.5 読み込みファイル情報の削除
- 12.6 PCMバッファサイズの変更
- 12.7 録音パラメータの設定
- 12.8 ユーザーデータの設定
- 12.9 ストリームのオープン
- 12.10 コメントの変更
- 12.11 コールバック関数の修正
- 12.12 録音のテスト
- 12.13 ソースコード
- まとめ
第13章 オーディオの録音/再生を同時に行うプログラム
- 13.1 プログラムの引数の修正
- 13.2 ファイルポインタの無効化
- 13.3 再生パラメータの設定
- 13.4 エフェクト処理の記述
- 13.5 ソースコード
- まとめ
第14章 WDM Kernel Streamingによるオーディオプログラミング
- 14.1 WDM Kernel Streamingとは?
- 14.2 WDM-KSのソースコードの追加
- 14.3 WDM-KSの有効化
- 14.4 WASAPIの無効化
- 14.5 setupapi.libの追加
- 14.6 オーディオデバイスの確認
- 14.7 再生/録音パラメータの修正
- 14.8 ソースコード
- まとめ
第15章 getopt
- 15.1 getoptとは?
- 15.2 getoptによるコマンドライン例
- 15.3 getoptの入手
- 15.4 プロジェクトの作成
- 15.5 ソースコードのコピー
- 15.6 getoptの修正
- 15.7 getoptのプロジェクトへの追加
- 15.8 getopt_long.hのインクルード
- 15.9 struct option構造体の変数宣言
- 15.10 getopt_longの呼び出し
- 15.11 プロジェクトのビルド
- 15.12 getopt_longのデバッグ
- 15.13 パラメータのスキャン
- 15.14 必須オプションのチェック
- 15.15 エラーの表示位置
- 15.16 デフォルトパラメータの設定
- 15.17 パラメータの値のチェック
- 15.18 パラメータの表示
- 15.19 オプションの後ろの引数
- 15.20 終わりに
- 15.21 ソースコード
- まとめ
第16章 Linuxにおけるコンソールプログラミング
- 16.1 MakefileからAutomakeへの移行
- 16.2 automake&autoconfの概要
- 16.3 automake&autoconfのインストール
- 16.4 簡単なautomakeサンプル
- 16.5 automakeによるビルド
- 16.6 有用なmakeのターゲット
- 16.7 Linuxにおけるlibsndfileのインストール
- 16.8 Visual C++とAutomakeの関係
- 16.9 終わりに
- まとめ
サンプルソースコード一覧
- 5.1 サンプリングレートとチャンネル数を表示するプログラム(au-dioinfo.cpp)
- 6.1 PCMをカウントするプログラム(count_samples.cpp)
- 8.1 FFTのテストプログラム(ffttest.cpp)
- 10.1 オーディオデバイスを一覧表示するプログラム(devicelist.cpp)
- 11.1 オーディオファイルを再生するプログラム(consoleplayer.cpp)
- 12.1 オーディオを録音するプログラム(xxxxxxxxx.cpp)
- 13.1 オーディオを録音/再生するプログラム(consoleeffect.cpp)
- 14.1 WDM-KS対応(consoleplayer.cpp)
- 15.1 getoptのサンプルプログラム(getopt_test.cpp)