Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
音楽について
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9699#CommentId15223
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
YAS
 (社会人)
投稿日時
2010/7/17 10:18:28
※一つ上の削除は私です。コードに間違いがありました。ごめんなさい。
高レベルMCIを使っているのですね。
再生位置の表示は次のようになると思います。
ついでにTrackBarを移動すると再生位置も移動するようにしています。
再生時間の取得はTrackBarのMaximumを指定するところを参考にしてください。
音量を変更したファイルの作成は高レベルMCIを使用した方法は思いつきません。
Waveファイルをバイナリで読み込んで直接変更するか,DirectShowを使うことになると思います。
Option Explicit On
Option Strict On
Imports System.Text
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("winmm.dll", CharSet:=CharSet.Auto)> _
Private Shared Function mciSendString( _
ByVal command As String, _
ByVal buffer As StringBuilder, _
ByVal bufferSize As Integer, _
ByVal hwndCallback As IntPtr) As Integer
End Function
Dim WithEvents Button1 As New Button
Dim WithEvents TrackBar1 As New TrackBar
Dim WithEvents Timer1 As New Timer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Button1.Text = "再生"
Me.TrackBar1.Location = New Point(0, 30)
Me.TrackBar1.Width = Me.ClientSize.Width
Me.Controls.AddRange({Me.Button1, Me.TrackBar1})
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FileName As String = Application.StartupPath & "\Test.wav"
Dim Command As String
Command = String.Format("open ""{0}"" alias MySound", FileName)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = String.Format("status {0} {1}", "MySound", "length")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
TrackBar1.Maximum = Integer.Parse(Res.ToString)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Me.Timer1.Interval = 500
Me.Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim Command As String = String.Format("status {0} {1}", "MySound", "position")
Dim Res As New StringBuilder(256)
mciSendString(Command, Res, Res.Capacity, IntPtr.Zero)
Me.TrackBar1.Value = Integer.Parse(Res.ToString)
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
Dim TrackBar As TrackBar = DirectCast(sender, TrackBar)
Dim Command As String = String.Format("seek {0} to {1}", "MySound", TrackBar.Value)
mciSendString(Command, Nothing, 0, IntPtr.Zero)
Command = "play MySound"
mciSendString(Command, Nothing, 0, IntPtr.Zero)
End Sub
End Class