Microsoft Visual Studio Express ダウンロード手順

2008, 2010, 2012 の手順(参考ウェブサイト)を示す。

なお、最新版は 2013 だが Windows 8.1 に特化しているようなので当サイトでは扱わない

当サイトは Windows 7 に限定している

 

Microsoft Visual Studio 2008 ダウンロード手順

2014年12月現在の情報

  1. Visual C++ 2008 Express Edition Webインストール
    ※直リンク 公式ウェブサイトは発見できなかった
    http://go.microsoft.com/?LinkId=9348304
  2. その他の Visual Studio 製品は以下のサイトを参照

    NonSoft - Visual Studio 2008 Expressのダウンロードとインストール

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月現在の情報

  1. Microsoft Visual Studio ダウンロードサイトへ

    http://www.visualstudio.com/downloads/

  2. 下の方に "Visual Studio 2010 Express" がある
  3. Visual C++ 2010 Express をダウンロード(Webインストーラ
  4. 他の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)」が最新

ダウンロード手順

  1. http://www.microsoft.com/en-us/download/details.aspx?id=6812 にアクセス

  2. Download ボタンをクリック
  3. "DXSDK_Jun10.exe" がダウンロードされる

 

以上

PortAudio SDK ダウンロード手順

以下の PortAudio コミュニティサイトより無料でダウンロードできる

PortAudio - an Open-Source Cross-Platform Audio API

・PortAudioは、無料でオープンソースのオーディオインプット・アウトプットライブラリ

 

ダウンロード手順

  1. PortAudio - an Open-Source Cross-Platform Audio API にアクセス
  2. 左側のメニューの download をクリック
  3. pa_stable_v19_20140130.tgz をクリックしてダウンロード

展開(解凍)

  • tgzを展開(解凍)→ tarアーカイブを展開 ※7-zipなどを使用

 

以上

 

ASIO SDK ダウンロード手順

基本的に以下のページを参考にするとよい

ASIO SDKのダウンロードの仕方 : 工作と競馬

ただし、2012年11月23日の記事であるためかリンクが飛べなくなっている

上記ページを参考にしつつ2014年版の手順を示す

 

Steinberg のユーザーアカウントを入手


Home : Steinberg 日本語サイト | http://japan.steinberg.net/

ちなみにスタインバーグは Cubase で有名

ASIO や VST 規格を策定したドイツの会社

2005年にヤマハの子会社となったらしい(スタインバーグ - Wikipedia

  1. 上記ページの MySteinberg にアクセス
  2. アカウントの作成

 

サードパーティ開発者アカウントの取得

サードパーティ開発者アカウントの取得は英語版でないとできないようなので英語版で進める


Home : Welcome to Steinberg | http://www.steinberg.net/

  1. 下の方にある Developers にアクセス
    (もしくは Home>Company>Developers)
  2. 3rd party developer accountに拡張する
    住所、郵便番号、電話番号などを記入する必要がある
  3. Developers から ASIO SDK をダウンロードする
  4. この記事を書いた時点で バージョン2.3でした

以上

 

 

 

 

 

 

 

 

 

 

PortAudioでリアルタイム入出力制御 (2)

~入出力編~

前回のサンプルを動かすあたりが雑だったので詳しく

 

 ファイル(F)→新規作成(N)→プロジェクト(P)

テンプレート(T):空のCLRプロジェクト
プロジェクト名(N):PA(なんでもいい)
場所(L):デフォルトでいい。ドキュメントのプロジェクト内(例 C:\Users\[*ユーザー名*]\Documents\Visual Studio 2008\Projects)
ソリューション(S):新しいソリューションを作成する(ソリューションのディレクトリを作成(D)にチェック)
ソリューション名(M):PA(なんでもいい プロジェクト名と同じ)


ソリューション エクスプローラが以下のようになる

f:id:kingkingyo:20140701165742p:plain

プロジェクト内のフォルダを開く
(例 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)にチェック

すると以下のようになる

f:id:kingkingyo:20140701165855p:plain

これでportaudio_x86.lib/dll が読み込まれる

準備が完了したのでとりあえずデバッグモードでビルド
アクティブソリューション構成を Debug にする
ビルド(B)→ソリューションのビルド F7

 

*2014/12/17 追記

上記の設定では、Windowsの設定でデフォルトインプット・アウトプットデバイスをオーディーインターフェースにしていてもASIOが使用されないことがあることがわかりました。

以下に対策を記載します。

f:id:kingkingyo:20141217162014p:plain

ソリューション(PA)のプロパティを開き、構成プロパティを選択

構成(C):[すべての構成]に、プラットフォーム(P):[Win32]にしておく

構成プロパティ→全般→共通言語ランタイムサポート の項目で、

「共通言語ランタイム サポートを使用しない」を選択

適用→OK

(追記ここまで)


手順通りなら問題なくビルドできるはず
エラー出たら以下を参考にするか、変な所いじったならはじめからやり直すとよい

(出そうなエラーと解決策)
cl : コマンド ライン error D8045 : C ファイル '.\paex_saw.c' を /clr オプションと共にコンパイルできません
→ paex_saw.c を paex_saw.cpp にリネーム
もしくはソリューション(PA)のプロパティを開き、いい感じの設定にしてください(説明は省略)

 

動かしてみよう(ノコギリ波を鳴らそう!)

デバッグ(D)→デバッグ開始(S) F5

うまくいくとコンソールが開いて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
(※ソースファイルを入れ替えたあとはリビルドしましょう. ビルドだと前の中間ファイルをビルドしちゃうことがある)

デバッグ(D)→デバッグなしで開始(H) Ctrl+F5

数秒録音して再生します

 

デバイスの設定を表示

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

DirectX SDK(June 2010)

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」

 

ディレクトリを表示するプロジェクトでライブラリファイルを選択

DirectX SDKのLibフォルダを追加

例:「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]に変更

  C/C++ -> プリプロセッサ

  PA_ENABLE_DEBUG_OUTPUT を削除(コンソールがデバッグメッセージを出力しなくなる)

9)  構成(C):[Release]

  C/C++ -> プリプロセッサ

  以下のように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で設定できる最小バッファサイズなので

これがこのオーディオインターフェイスのレイテンシの限界

ということになるはず

 

 以上

*1:必要なものというよりはこの条件では成功しましたよという意味合いが強い

*2:※なぜVS2010ではなくVS2008なのか

なぜかソリューションの変換に失敗する→手動で構築しないと→でもそもそもソリューション開けなかったらどのように構築するのかわからない!→断念

またライブラリのインクルードなどが2008と違ってちょっと面倒だったりするのも欠点

*3:DirectX SDK(June 2010)のインストール

ちなみにXP SP3だと失敗した.もうちょっと古いSDKを探せばいけたかもしれない(未解決)