Para ello utilizaremos las ventajas que ofrece la librería de Windows "winmm.dll", yo me he guiado usando una un tutorial de Visual Basic 6 el cual lo pueden consultar Aquí.
Desde programa y usando esta librería podremos crear un archivo .wav. Ya he subido un detalle de como despues pueden comprimir a .mp3 en archivo creado jejeje.
Bueno, el uso de esta librería es muy simple, solo debemos instanciar una función desde nuestro programa y enviarle las opciones que deseamos ejecutar, para ello:
En el formulario crearemos la siguiente variable, que hará referencia a la función de la dll que vamos a utilizar de la siguiente forma.
Private Declare Function mciSendString Lib _
"winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
luego en el método que atenderá la captura de sonido, debemos escribir la siguiente llamada:
SendCommand("open new type waveaudio alias WavFile")
SendCommand("record WavFile insert")
No deben cambiar ni una tilde, ya que la dll ase uso de los texto para ejecutar las instrucciones.
Deben tener en cuenta que, el máximo de grabación estará dado por la capacidad de almacenamiento del disco, ya que en estos momentos estamos capturando la información y la estamos dejando en memoria, por lo cual se debe controlar el período máximo de grabación, mediante un timer o algo por el estilo.
Una vez que ya han capturado el sonido que deseaban, el siguiente paso es guardarlo a lo cual deben ejecutar
SendCommand("save WavFile c:\Ruta\..\wav.wav")
Con esto, ya hemos creado un archivo .wav. Lo que queda ahora es cerrar el proceso, para ello, debemos utilizar la siguiente linea de comando:
SendCommand("close WavFile")
Mi método controla los dos pasos, por lo cual les escribo un ejemplo reducido de este:
Dim m_Monitor As Boolean = False
Private Sub sbtRekord_Click _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles sbtRekord.Click
Try
If Not Me.m_Monitor Then
Me.m_Monitor = True
sender.Text = "Terminar la grabación"
SendCommand("open new type waveaudio alias WavFile")
SendCommand("record WavFile insert")
Else
Me.m_Monitor = True
sender.Text = "Iniciar la grabacion"
If Not System.IO.Directory.Exists("c:\Ruta\..\") Then
System.IO.Directory.CreateDirectory("c:\Ruta\..\")
End If
If System.IO.File.Exists("c:\Ruta\..\wav.wav") Then
System.IO.File.Delete("c:\Ruta\..\wav.wav")
End If
SendCommand("save WavFile " & dir_path + arv_name)
SendCommand("close WavFile")
End If
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Por ultimo, siempre no deben olvidar de cerrar el proceso, por lo cual en el método que atiende el evento Closing del formulario deben cerrar la llamada a la clase, como se muestra acontinuación:
Private Sub Frm_Closing _
(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles MyBase.Closing
Try
SendCommand("close WavFile")
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Bueno amigos, papita pal loro, si no les funciona, es que tal vez primero deben pasar por las nociones basicas de programación en Visual Basic, no lo puedo explicar más facil.
Salu2
No hay comentarios:
Publicar un comentario