Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB.NET: Ääninauhuri

tnb [05.03.2005 16:20:29]

#

Simppeli ääninauhuri-luokka äänikortin mixeriltä nauhoittamista varten.

Esimerkissä on

button 1..3 : nauhoitus, seis, talletus
progressbar1: ajan näyttö
timer1
textbox1: tiedostopolku

moduulissa

Module NauhuriModule
    Public Nauhuri1 As Nauhuri
    Class Nauhuri
        'Simppeli ääninauhuri äänikortilta nauhoittamiseen
        'Käyttäjä asetelkoon äänenvoimakkuuden käsin
        Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
        Private Declare Function mciGetErrorString Lib "winmm.dll" Alias "mciGetErrorStringA" (ByVal _
            fdwError As Integer, ByVal lpszErrorText As String, ByVal cchErrorText As Integer) As Integer
        '
        '
        Public Sub Nauhoita()
            Dim i, cb As Integer
            Dim RS As String
            i = mciSendString("open new type waveaudio alias capture", RS, 128, cb)
            i = mciSendString("set capture format tag pcm", RS, 128, cb)
            i = mciSendString("set capture channels 2", RS, 128, cb) 'stereo
            i = mciSendString("set capture bitspersample 16", RS, 128, cb) ' 16 bit
            i = mciSendString("set capture samplespersec 44100", RS, 128, cb) ' CD laatu
            i = mciSendString("set capture alignment 4", RS, 128, cb)
            i = mciSendString("set capture bytespersec 176400", RS, 128, cb)
            i = mciSendString("set capture time format ms", RS, 128, cb)
            ' record
            i = mciSendString("record capture", RS, 128, cb)
        End Sub
        '
        '
        Public Sub Seis()
            Dim i, cb As Integer
            Dim RS As String
            i = mciSendString("stop capture", RS, 128, cb)

        End Sub
        '
        '
        Public Sub Talleta(ByVal filepath As String)
            Dim i, cb As Integer
            Dim RS, asa As String
            asa = "save capture " + filepath
            i = mciSendString(asa, RS, 128, cb)
            i = mciSendString("close capture", RS, 128, cb)
        End Sub
    End Class

End Module

Käyttöesimerkki

'nauhoitus
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Nauhuri1.nauhoita()
    ProgressBar1.Value = 0 : ProgressBar1.Step = 1 : ProgressBar1.Maximum = 200
    Timer1.Interval = 1000 : Timer1.Start()
End Sub
'
' Alustus
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    TextBox1.Text = "C:\koe.wav"
    Nauhuri1 = New Nauhuri
End Sub
'
' Nauhoitus seis
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Nauhuri1.seis()
    Timer1.Stop()
End Sub
'
'Talletus
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Nauhuri1.talleta(TextBox1.Text)
End Sub
'
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If ProgressBar1.Value < ProgressBar1.Maximum Then ProgressBar1.Value = ProgressBar1.Value + 1
End Sub

IT-Studio [10.03.2005 14:21:43]

#

Täähän on kätevä!!! :D
Tuli heti käyttöön.....

Juice [10.03.2005 19:52:22]

#

No, näitä ääninauhureita pyörii netissä pilvin pimein. Ei siinä muuta kun vaan hallitsee mciSendStringin. MSDN:ään siis.
Kieltämättä joissakin tilanteissa ihan hyödyllinen.

Skullboy0 [19.03.2007 19:17:12]

#

mikä ihmeen progressbar

tnb [22.05.2007 20:55:27]

#

Jos nykyinen Windows media player ei pysty soittamaan syntynyttä wav tiedostoa, korjaus ohje:

Public Sub Nauhoita()
    Dim i, cb As Integer
    Dim RS As String = New String("*"c, 128)
    i = mciSendString("open new type waveaudio alias capture", RS, 128, cb)
    i = mciSendString("set capture format tag pcm", RS, 128, cb)

    i = mciSendString("set capture alignment 4 bitspersample 16 samplespersec 44100 channels 2 bytespersec 176400", RS, 128, cb)

    i = mciSendString("set capture time format ms", RS, 128, cb)
    ' record
    i = mciSendString("record capture", RS, 128, cb)
End Sub

eli osa asetuksista täytyy antaa samalla rivillä!!!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta