arquivo de som
Moderador: Moderadores
arquivo de som
Pessoal, alguém sabe me informar se tem como, usando um programa feito em Harbour (modo console ou até em modo gráfico), gravar um pequeno arquivo de som (coisa de poucos segundos) a partir de um microfone ligado na placa de som?
Queria fazer algo bem simples: o usuário tecla um botão, ele capta o áudio do microfone, ele tecla novamente, encerra a gravação. Daí o programa grava o som num arquivo de som, do tipo .wmv, ou qualquer outro tipo reconhecível.
É possível?
Queria fazer algo bem simples: o usuário tecla um botão, ele capta o áudio do microfone, ele tecla novamente, encerra a gravação. Daí o programa grava o som num arquivo de som, do tipo .wmv, ou qualquer outro tipo reconhecível.
É possível?
Inacio de Carvalho Neto
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
arquivo de som
Não conheço nada pronto em xHarbour, mas da para fazer usando as API do Windows, veja a API:
http://msdn.microsoft.com/en-us/library/aa446573.aspx
E procure aqui no foram como usar as API do Windows.
De uma olhada também em: Microsoft.DiretctX.DirectSound
http://msdn.microsoft.com/en-us/library ... 05782.aspx
http://msdn.microsoft.com/en-us/library/aa446573.aspx
E procure aqui no foram como usar as API do Windows.
De uma olhada também em: Microsoft.DiretctX.DirectSound
http://msdn.microsoft.com/en-us/library ... 05782.aspx
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
arquivo de som
Achei o exemplo do José Quintas postado aqui no grupo para chamar a API da Windows. Fiz umas adaptações, ficou assim:
Neste exemplo, não está dando erro, está retornando corretamente o 1 do teste. Entretanto, aparentemente, não está acontecendo nada, não está gravando.
Na verdade ainda estou tentando entender os links que vc citou. Peguei o waveinstart apenas como exemplo, para teste.
Será que estou no caminho certo?
Código: Selecionar todos
#include "hbdyn.ch"
PROCEDURE Main
LOCAL nCont
?getaudio()
inkey(10)
RETURN
FUNCTION CallWindowsAPI( cFunctionName, cLib, ... )
LOCAL hHandleDll := 0, nVar
hHandleDll := hb_LibLoad( cLib )
nVar := hb_DynCall( { cFunctionName, hHandleDll, HB_DYN_CALLCONV_STDCALL }, ... )
hb_LibFree( hHandleDll )
RETURN nVar
function getaudio()
CallWindowsAPI( "waveinstart", "kernel32.dll" )
RETURN 1
Na verdade ainda estou tentando entender os links que vc citou. Peguei o waveinstart apenas como exemplo, para teste.
Será que estou no caminho certo?
Inacio de Carvalho Neto
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
arquivo de som
Está no caminho sim, a DLL certa ser usada é: Winmm.dll, veja o link abaixo
http://msdn.microsoft.com/en-us/library ... 51(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library ... 51(v=vs.85).aspx
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
arquivo de som
O link que vc referiu está com algum problema, está dando página não encontrada.
Testei com a winmm.dll, mas não mudou nada. Será que fiz algo errado?
Coloquei assim:
Testei com a winmm.dll, mas não mudou nada. Será que fiz algo errado?
Coloquei assim:
Código: Selecionar todos
#include "hbdyn.ch"
PROCEDURE Main
LOCAL nCont
?getaudio()
inkey(10)
RETURN
FUNCTION CallWindowsAPI( cFunctionName, cLib, ... )
LOCAL hHandleDll := 0, nVar
hHandleDll := hb_LibLoad( cLib )
nVar := hb_DynCall( { cFunctionName, hHandleDll, HB_DYN_CALLCONV_STDCALL }, ... )
hb_LibFree( hHandleDll )
RETURN nVar
function getaudio()
CallWindowsAPI( "waveinstart", "winmm.dll" )
RETURN 1
Inacio de Carvalho Neto
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
arquivo de som
O fórum está comendo bola em alguns link, ele quebra o link. Postei abaixo o link como código:
Código: Selecionar todos
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743851(v=vs.85).aspxLeonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
arquivo de som
Pelo que pude analisar rapidamente, segue uma sequencia:
Waveinopen
Waveinprepareheader
waveinstart
waveinunprepareheader
waveinclose
...
...
Waveinopen
Waveinprepareheader
waveinstart
waveinunprepareheader
waveinclose
...
...
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
arquivo de som
Li o link inteiro. Só não entendi o que significa o MMRESULT que chama cada função, nem onde eu o colocaria.
Fiz assim por enquanto, mas ainda não funcionou:
É isso? Falta alguma coisa?
Fiz assim por enquanto, mas ainda não funcionou:
Código: Selecionar todos
#include "hbdyn.ch"
PROCEDURE Main
LOCAL nCont
?getaudio()
inkey(10)
RETURN
FUNCTION CallWindowsAPI( cFunctionName, cLib, ... )
LOCAL hHandleDll := 0, nVar
hHandleDll := hb_LibLoad( cLib )
nVar := hb_DynCall( { cFunctionName, hHandleDll, HB_DYN_CALLCONV_STDCALL }, ... )
hb_LibFree( hHandleDll )
RETURN nVar
function getaudio()
CallWindowsAPI( "waveinopen", "winmm.dll" )
CallWindowsAPI( "waveinprepareheader", "winmm.dll" )
CallWindowsAPI( "waveinstart", "winmm.dll" )
CallWindowsAPI( "waveinunprepareherader", "winmm.dll" )
CallWindowsAPI( "waveinclose", "winmm.dll" )
RETURN .t.
Inacio de Carvalho Neto
