音楽の音量

タグの編集
投稿者 music man  (学生) 投稿日時 2009/4/6 04:52:43
こんにちは

このサイトのサンプル集のマルチメディア>サウンドのボリュームを設定する
を応用してButton4を押すと100下がり、Button5を押すと100上がるのを作りたいのですが、
どうもうまくいきません

どなたか教えていただけないでしょうか?お願いします。
下は僕が書いたものです

    Dim vol As Integer = 1000

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If vol <> 100 Then
            vol = vol - 100
        End If
        Call mciSendString("setaudio MySound volume" to vol, "", 0, 0)
    End Sub
投稿者 (削除されました)  () 投稿日時 2009/4/6 07:12:47
(削除されました)
投稿者 (削除されました)  () 投稿日時 2009/4/6 07:25:13
(削除されました)
投稿者 葉月  (社会人) 投稿日時 2009/4/6 07:36:14
初めまして、よろしくお願いします。
最近、mciSendStringの質問が増えてきたので、サンプルを参考にいじってみました。
私のサンプルを動かすには――
Dim FileName As String = "音楽ファイルのパス"
再生する音楽ファイルのパスを指定する必要があります。

>>>サンプルコード
Imports System.IO

Public Class Form1

    ' winmm.Dllの利用 
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As StringByVal lpstrReturnString As StringByVal uReturnLength As IntegerByVal hwndCallback As IntegerAs Integer
    ' 現在の音量 
    Private iVol As Integer = 1000

    '開始 
    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        ' 音楽ファイルのパスを指定 
        Dim strFileName As String = "音楽ファイルのパス"

        Call mciSendString(String.Format("open ""{0}"" alias MySound", strFileName), "", 0, 0)
        Call mciSendString("play MySound""", 0, 0)
    End Sub

    '停止 
    Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button2.Click
        Call mciSendString("stop MySound""", 0, 0)
        Call mciSendString("close MySound""", 0, 0)
    End Sub

    'ボリュームを下げる 
    Private Sub Button3_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button3.Click
        Me.volumeChange(-100)
    End Sub

    'ボリュームを上げる。 
    Private Sub Button4_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button4.Click
        Me.volumeChange(100)
    End Sub


    ''' <summary> 
    ''' ボリュームを調整する 
    ''' </summary> 
    ''' <param name="iVol">調整するボリューム</param> 
    Private Sub volumeChange(ByVal iVol As Integer)

        Const INT_VOLUME_MIN As Integer = 0     '音量の最小値 
        Const INT_VOLUME_MAX As Integer = 1000  ' 〃 最大値 

        ' コマンド 
        Dim strCommand As String = String.Empty

        Me.iVol += iVol

        ' 閾値(最小と最大)の確認 
        If (Me.iVol < INT_VOLUME_MIN) Then
            Me.iVol = INT_VOLUME_MIN
        ElseIf (Me.iVol > INT_VOLUME_MAX) Then
            Me.iVol = INT_VOLUME_MAX
        End If

        strCommand = String.Concat("setaudio MySound Volume to "Me.iVol.ToString())
        Console.WriteLine("volumeChange:" + Me.iVol.ToString())

        Call mciSendString(strCommand, "", 0, 0)

    End Sub 
End Class