Microsoft Visual Studio Express ダウンロード手順
2008, 2010, 2012 の手順(参考ウェブサイト)を示す。
なお、最新版は 2013 だが Windows 8.1 に特化しているようなので当サイトでは扱わない
当サイトは Windows 7 に限定している
Microsoft Visual Studio 2008 ダウンロード手順
2014年12月現在の情報
- Visual C++ 2008 Express Edition Webインストール
※直リンク 公式ウェブサイトは発見できなかった
http://go.microsoft.com/?LinkId=9348304 - その他の Visual Studio 製品は以下のサイトを参照
30日以上使用する場合は無償のプロダクトキーが必要
・Microsoftサイトにログインするには "Windows Live ID" が必要
・Visual C++ 2008Express の "メニュー" → "ヘルプ" → "製品の登録" → "今すぐ登録"
以下のサイトでとても丁寧に解説されています。
太田研究室 > Visual C++ 2008 Express Edition インストール メモ
Microsoft Visual Studio 2012 ダウンロード手順(参考)
2014年12月現在の情報
以下のサイトを参考にするとよい
NonSoft - Visual Studio 2012 Expressのダウンロードとインストール
残念ながらまだインストールと動作確認をしていない
Microsoft Visual Studio 2010 ダウンロード手順(参考)
当サイトでは使用しない
2014年12月現在の情報
- Microsoft Visual Studio ダウンロードサイトへ
- 下の方に "Visual Studio 2010 Express" がある
- Visual C++ 2010 Express をダウンロード(Webインストーラ)
- 他のC#とかBasicもここからダウンロード可能(当サイトでは使用しない)
以上
DirectX SDK ダウンロード手順
Microsoftの公式から入手
Download DirectX Software Development Kit from Official Microsoft Download Center
リンク切れの場合は「DirectX Software Development Kit」で検索すると良い
2014年12月の時点で「DirectX SDK(June 2010)」が最新
ダウンロード手順
-
http://www.microsoft.com/en-us/download/details.aspx?id=6812 にアクセス
- Download ボタンをクリック
- "DXSDK_Jun10.exe" がダウンロードされる
以上
PortAudio SDK ダウンロード手順
以下の PortAudio コミュニティサイトより無料でダウンロードできる
PortAudio - an Open-Source Cross-Platform Audio API
・PortAudioは、無料でオープンソースのオーディオインプット・アウトプットライブラリ
ダウンロード手順
- PortAudio - an Open-Source Cross-Platform Audio API にアクセス
- 左側のメニューの download をクリック
- pa_stable_v19_20140130.tgz をクリックしてダウンロード
展開(解凍)
- tgzを展開(解凍)→ tarアーカイブを展開 ※7-zipなどを使用
以上
ASIO SDK ダウンロード手順
基本的に以下のページを参考にするとよい
ただし、2012年11月23日の記事であるためかリンクが飛べなくなっている
上記ページを参考にしつつ2014年版の手順を示す
Steinberg のユーザーアカウントを入手
Home : Steinberg 日本語サイト | http://japan.steinberg.net/
ちなみにスタインバーグは Cubase で有名
ASIO や VST 規格を策定したドイツの会社
2005年にヤマハの子会社となったらしい(スタインバーグ - Wikipedia)
- 上記ページの MySteinberg にアクセス
- アカウントの作成
サードパーティ開発者アカウントの取得
サードパーティ開発者アカウントの取得は英語版でないとできないようなので英語版で進める
Home : Welcome to Steinberg | http://www.steinberg.net/
- 下の方にある Developers にアクセス
(もしくは Home>Company>Developers) - 3rd party developer accountに拡張する
住所、郵便番号、電話番号などを記入する必要がある - Developers から ASIO SDK をダウンロードする
- この記事を書いた時点で バージョン2.3でした
以上
PortAudioでリアルタイム入出力制御 (2)
~入出力編~
前回のサンプルを動かすあたりが雑だったので詳しく
ファイル(F)→新規作成(N)→プロジェクト(P)
テンプレート(T):空のCLRプロジェクト
プロジェクト名(N):PA(なんでもいい)
場所(L):デフォルトでいい。ドキュメントのプロジェクト内(例 C:\Users\[*ユーザー名*]\Documents\Visual Studio 2008\Projects)
ソリューション(S):新しいソリューションを作成する(ソリューションのディレクトリを作成(D)にチェック)
ソリューション名(M):PA(なんでもいい プロジェクト名と同じ)
ソリューション エクスプローラが以下のようになる
プロジェクト内のフォルダを開く
(例 C:\Users\[*ユーザー名*]\Documents\Visual Studio 2008\Projects\PA\PA)
(PA.vcproj みたいな名前のファイルがあるところ)
上記フォルダ内に以下のファイルを入れる
portaudio.h
portaudio_x86.lib
portaudio_x86.dll
paex_saw.c(サンプルファイル:pa_stable_v19_20111121\portaudio\examples\paex_saw.c)
ヘッダーファイルに portaudio.h を追加
ソースファイルに paex_saw.c を追加
重要! paex_saw.c を paex_saw.cpp にリネーム
コンパイルの関係上必要. 詳細は省略 共通ランタイムサポートを使用しないに設定すれば、必須ではないことがわかりました(2014/12/17)
ソリューション(PA)のプロパティを開き、構成プロパティを選択
構成(C):[すべての構成]に、プラットフォーム(P):[Win32]にしておく
構成プロパティ→リンカ→入力→追加の依存ファイル を選択("$(NoInherit)"ってなっているはず)
portaudio_x86.lib と入力
親またはプロジェクトの既定値から継承(I)にチェック
すると以下のようになる
これでportaudio_x86.lib/dll が読み込まれる
準備が完了したのでとりあえずデバッグモードでビルド
アクティブソリューション構成を Debug にする
ビルド(B)→ソリューションのビルド F7
*2014/12/17 追記
上記の設定では、Windowsの設定でデフォルトインプット・アウトプットデバイスをオーディーインターフェースにしていてもASIOが使用されないことがあることがわかりました。
以下に対策を記載します。
ソリューション(PA)のプロパティを開き、構成プロパティを選択
構成(C):[すべての構成]に、プラットフォーム(P):[Win32]にしておく
構成プロパティ→全般→共通言語ランタイムサポート の項目で、
「共通言語ランタイム サポートを使用しない」を選択
適用→OK
(追記ここまで)
手順通りなら問題なくビルドできるはず
エラー出たら以下を参考にするか、変な所いじったならはじめからやり直すとよい
(出そうなエラーと解決策)
cl : コマンド ライン error D8045 : C ファイル '.\paex_saw.c' を /clr オプションと共にコンパイルできません
→ paex_saw.c を paex_saw.cpp にリネーム
もしくはソリューション(PA)のプロパティを開き、いい感じの設定にしてください(説明は省略)
動かしてみよう(ノコギリ波を鳴らそう!)
うまくいくとコンソールが開いて4秒ほどノコギリ波を鳴らして勝手に終了します。
音が出ない時はオーディオインターフェイスの設定などを見直しましょう。
例えばQuad-Captureの場合 MIX が INPUT だと鳴りません. MIX か PLAYBACK にツマミを回しましょう.
デバッグなしで開始(H) Ctrl+F5 だとプログラムが終了した後もコンソールが残ります
実行ファイルにしよう
アクティブソリューション構成を Release にする
ビルド(B)→ソリューションのビルド F7
すると、プロジェクトのReleaseフォルダに PA.exe ができる
(C:\Users\[*ユーザ名*]\Documents\Visual Studio 2008\Projects\PA\Release)
この実行ファイルは単体では動きません
フォルダの中に portaudio_x86.dll を入れると動きます
pdpファイルは削除して大丈夫です
EXEを実行する
なにか配布とかすることがあればこの2つのファイルがあればよいことがわかる
録音してみよう
paex_saw.cpp をプロジェクトから除外
paex_record.c(サンプルファイル:pa_stable_v19_20111121\portaudio\examples\paex_record.c)
を追加
paex_record.cpp にリネーム
ソリューションのリビルド(R) Ctrl+Alt+F7
(※ソースファイルを入れ替えたあとはリビルドしましょう. ビルドだと前の中間ファイルをビルドしちゃうことがある)
数秒録音して再生します
デバイスの設定を表示
pa_devs.c
これで何番目のデバイスがASIOなのかとか確かめられる
再生しているドライバが表示され、15秒間入出力を行う
paex_read_write_wire.c
さらっと書いたけど実はこれが本題のリアルタイム入出力制御のサンプルソースとなる
ASIOドライバを使っていればレイテンシ(遅延)1msecくらいになると思うのでリアルタイムと言ってよいだろう
なお、オーディオインターフェイスの設定によってはレイテンシが大きくなってしまう
オーディオインターフェイス:Quad-Capture ver.1.5.2
ASIOバッファサイズ 32samples(44100Hz)
低レイテンシーモード
→ 0.000725624sec(32/44100=0.000725623)
バッファを大きくするとその分レイテンシが増えていく
サンプリング周波数を上げるとバッファを増やさざるを得ないのでレイテンシが増える
paex_read_write_wire.c は 15秒間の時間制限付きで使いにくいため次のサンプルを推奨する
ファズエフェクターサンプル
pa_fuzz.c
実行するとエンターキーを押すまでストリーミングし続けます
エンターキーで終了
(間違っても右上の×ボタンは押さないこと. exeが固まります. 再起動で直ります. )
Lchにギターをつなげばとんでもない歪み系サウンドのできあがり
(Rchはスルーです)
fuzzCallback 関数内の FUZZ(*in++) を *in++ に変えれば Lch もスルーになります
このサンプルを参考に色々改造していける
自作のエファクター考えてみたり
B○SSのエフェクターをシミュレートしてみたり
ボイスチェンジャー作ってみたり
と夢が広がるのではないでしょうか
信号処理系のオススメ書籍
C言語ではじめる音のプログラミング 青木 直史 著 C言語信号処理初心者に捧げるバイブル
http://floor13.sakura.ne.jp/book03/book03.html
サウンドプログラミング入門 青木 直史 著 こちらはリアルタイム処理まで網羅している
http://floor13.sakura.ne.jp/book06/book06.html
以下のサイトを参考に致しました
PortAudio公式のWindows適用例
http://portaudio.com/docs/v19-doxydocs/compile_windows.html
PortAudio公式のレイテンシについての回答
http://www.portaudio.com/docs/latency.html
hiloyaの日記 VC++2008を使用 DirectX
http://d.hatena.ne.jp/k002/20110929/1317309185
DenkiYagi VC++2012だとうまくいくらしい 2010だけダメなのだろうか
http://terurou.hateblo.jp/entry/2013/07/29/080512
たいてい自宅で迷想中 コールバック関数が詳しく解説されている
http://2ten1ryu.blog90.fc2.com/blog-category-8.html
Is this easiest way to make DLL for PortAudio ASIO on Windows using VisualC++ Express ? DLLの作成ができない場合はここを参考にするといいかも
http://junzo.sakura.ne.jp/c_plus1/c_plus1.htm
雷鳴の日記 PortAudioの低遅延について PA_MIN_LATENCY_MSEC = 50 を設定した人の話 特に改善したかどうかは書いてない
http://d.hatena.ne.jp/sorayukinoyume/20120216/1329361809
VS2012でPortAudioの環境構築
http://qiita.com/nicolai_twi/items/86c26fb192f1613ec96a
以上
PortAudioでリアルタイム入出力制御 (1)
PortAudioを用いてリアルタイム入出力制御を行う
~環境構築編~
■必要なもの*1
Windows7 32bit
Visual Studio 2008 Express (Visual C++ 2008)*2
ASIO SDK v2.3
PortAudio SDK v19
■Visual Studio 2008 Express (Visual C++ 2008) インストール時の注意
VS2010, VS2008, VS2005のランタイムライブラリが入っているとインストールに失敗することがある
→アンインストールしてからVS2008をインストール
VS2010など後継ソフトが入っていると(略
→アンインストールしてからVS2008をインストール
エラー1935(VS2005Runtimeを入れていると出ることがある)
→1) Windowsの[スタート]で[プログラムとファイルの検索]にfeatures」とタイプ入力
2) (1)の検索結果から[Windowsの機能の有効化または無効化]を選択
3)[Windowsの機能]ダイアログボックスで、
「Microsoft .NET Framework 3.5.1」の項目内にある、
「Windows Communication Foundation HTTP Activation」をチェック
■DirectX SDK(June 2010)のインストール
http://www.microsoft.com/en-us/download/details.aspx?id=6812
特に問題はないはず*3
■ASIO SDK v2.3
http://blog.livedoor.jp/sce_info3-craft/archives/7590862.html
いろいろ登録とかしないとダウンロードできない
でも無料なのでそのくらいの手間は惜しむべきではない
■PortAudio v19 から DLLをビルドする方法
基本的にここの情報に従う
http://portaudio.com/docs/v19-doxydocs/compile_windows.html
以下コメント
1) Windows用PortAudio は DirectX SDK(June 2010) の「dsound.h」「dsconf.h」「Dsound.lib」あたりが必要らしい
VC++2008を開いて、ツール→オプション→プロジェクトおよびソリューション
→VC++ディレクトリ
ディレクトリを表示するプロジェクトでインクルードファイルを選択
DirectX SDKのIncludeフォルダとPortAudioのIncludeフォルダを追加
例:「C:\Program Files\Microsoft DirectX SDK (June 2010)\Include」
例:「C:\Users\(*ユーザー名*)\Documents\Visual Studio 2008\Projects\pa_stable_v19_20111121\portaudio\include」
ディレクトリを表示するプロジェクトでライブラリファイルを選択
例:「C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x64」※なぜかx64で動いた(未検討)
2) ASIOSDK2.3からASIOSDKにリネーム src\hostapi\asio にコピー
3) VS6, 7, 2001, 2003, VC.NET では無いので省略
4) Visual C + + 2008 Express で build\msvc\portaudio.sln を開く
コードが変換される
多少警告が出るようだが変換が出来ればOK
5) ソリューション(Portaudio)のプロパティを開き、構成プロパティを選択
6) 構成(C):[すべての構成]に、プラットフォーム(P):[Win32]にしておく(すべてのプラットフォームがあるならそれ)
7) オプションを設定
C/C++ -> 最適化 -> フレームポインタなし=はい(/Oy)
C/C++ -> コード生成 -> ランタイムライブラリ=マルチスレッド (/MT)
C/C++ -> コード生成 -> 浮動小数点モデル=Fast (/fp:fast)
C/C++ -> コード生成 -> 構造体メンバのアライメント -> 既定値(※MATLABの資料には 4 バイト (/Zp4)にしろと書いてあるがそうしたら動かなくなった)
8) 構成(C):[Release]に変更
PA_ENABLE_DEBUG_OUTPUT を削除(コンソールがデバッグメッセージを出力しなくなる)
9) 構成(C):[Release]
以下のようにASIOとWASAPIのみ使用するように変更
PA_USE_ASIO=1
PA_USE_DS=0
PA_USE_WMME=0
PA_USE_WASAPI=1
PA_USE_WDMKS=0
10) Release, Win32 で ビルド
portaudio_x86.dll/lib が build\msvc\Win32\Release に作成される
例:「C:\Users\(*ユーザー名*)\Documents\Visual Studio 2008\Projects\pa_stable_v19_20111121\portaudio\build\msvc\Win32\Release」
■portaudio_x86.dllを使用してサンプルを動かす
プロジェクトの新規作成
Win32コンソールアプリケーション
名前は適当に「PATEST」
空のプロジェクトでいい
プロジェクトのフォルダの中に以下を用意
portaudio.h
portaudio_x86.dll
サンプルプログラム(paex_saw.c, paex_read_write_wire.c, など)
ヘッダーファイルにportaudio.hを追加
ソースファイルにサンプルプログラムを追加
(※サンプルプログラムは1つだけ入れること.複数入れるとmain()が複数になるのでビルドできない)
ビルドしてデバッグ
音が出ればOK
paex_read_write_wire.c を実行すると遅延(レイテンシ)が表示される
0.100~0.050secとかだとなにかおかしい
ASIOになっていないかも…
ちなみに
Quad-Capture ver.1.5.2
ASIOバッファサイズ 32samples(44100Hz)
低レイテンシーモード
だと0.000725624secでした(32/44100=0.000725623)
上記設定はQuad-Capture ver.1.5.2で設定できる最小バッファサイズなので
これがこのオーディオインターフェイスのレイテンシの限界
ということになるはず
以上