メニュー
▼ アクセス(地図)
▼ Windowsアプリ開発 ▼ マイコン開発 ▼ CGI・PHP制作 |
▼ サイトマップ(全投稿記事)
▼ タイトル(画像一覧) ▼ 事業内容 |
お問い合わせメールフォームが開きます。
2010年03月22日
DirectSound+VB2008 アプリ制作
先日DirectX・DirectSound を利用したVisualBasic2008 のアプリケーションを制作しました。
利用するにあたり、川田さんがVectorにアップしているdll(VB用DirectSound活用モジュール)を使わせていただくことで、短時間に完成することができました。
http://www.vector.co.jp/soft/win95/prog/se050103.html
今回のサンプルは、wavファイルの再生周波数と再生期間を制御するものでした。
その中で再生周波数の制御に上記dllを利用しました。
VectorにアップされているサンプルはVisualBasic6.0用に書かれているので一部記述の修正が必要です。
(例)
Declare Function dsCreateDSB Lib "VbDSnd2" (ByRef lpRIFF As Byte, ByVal bufCount As Short) As Integer
今回のサンプルでは高速で音源のOn/off を行ってみましたが、きれいに聞くためにはポイントがありました。
それは ・・・ 使用する関数は
dsPlya ・ dsStop ではなく
dsSetVolume(handle, 0) ・ dsSetVolume(handle, -10000)
を使うほうが良さそうだということです。
また、高速でOn/off するための時間管理は Windows API の
QueryPerformanceCounter ・ QueryPerformanceFrequency
を使用することにより、数msec単位の制御が可能です。
(例)
Declare Function QueryPerformanceCounter Lib "Kernel32" (ByRef X As Long) As Short
Public Sub waitQuery(ByVal tmpTime As Long)
Call QueryPerformanceCounter(curStartTime) '開始時刻
Call QueryPerformanceCounter(curEndTime) '終了時刻
Do While (((curEndTime - curStartTime)) <= tmpTime)
Call QueryPerformanceCounter(curEndTime)
Loop
End Sub
上記の例は相対的に時間管理しています。
時間を知りたい場合は QueryPerformanceFrequency(Freq) を使用して
パフォーマンスカウンタの周波数を取得する必要があります。