Boa noite,
Tem alguma macro para executar som no write ou calc. Agradeço.
Boa noite,
Tem alguma macro para executar som no write ou calc. Agradeço.
Olá @RonaldoElias,
Tem este também:
REM ***** BASIC *****
Sub Main
PlaySound("C:\Users\Public\Music\Sample Music\Alert.mp3")
End Sub
Sub PlaySound(i_soundpath as string)
dim oPlayer1 as object
dim sUrlSound as string
dim oSounMgr as object
Dim Time as Double
'if bInit then
if not isnull(oSounMgr) then
S_Start_New
exit sub
endif
'sUrlSound = F_get_Sound_URL("MySound.mp3")
sUrlSound = ConvertToUrl(i_soundpath)
If not fileexists(sUrlSound) Then
msgbox sUrlSound & " does not exist",16
else
If GetGuiType() = 1 Then
oSounMgr = CreateUnoService("com.sun.star.media.Manager_DirectX")
Else
'.comp. was not documented !!
oSounMgr = CreateUnoService("com.sun.star.comp.media.Manager_GStreamer")
'com.sun.star.media.Manager_GStreamer
End If
If IsNull(oSounMgr) Then
msgbox "Sound Mgr not set",16
else
oPlayer1 = oSounMgr.createPlayer(sUrlSound)
oPlayer1.setMediaTime(0.0)
oPlayer1.setVolumeDB(-10)
'msgbox oPlayer1.getduration()
Time = oPlayer1.getduration() * 1000 'Pega o tempo do áudio e multiplica por 1000 para ser utilizado na instrução Wait, processada em milisegundos
oPlayer1.setPlayBackLoop( 0 )
oPlayer1.start(0)
'Aguarda o tempo do áudio para dar continuídade com o procedimento
Wait Time
oPlayer1 = nothing
oSounMgr = nothing
msgbox "som encerrado",16
End If
End If
End Sub
Fonte: Calc Macro to play an MP3 Audio File. (View topic) • Apache OpenOffice Community Forum
@Beto, este código está em libre, e funciona com mp3.
A pedidos do @Gilberto SChivinatto, alterei a instrução para que pegasse o tempo do áudio multiplicado por 1000, e adicionei o procedimento Wait (lido em milisegundos), para que após o tempo de execução do áudio, ele finalize o procedimento.
Segue arquivo
@Conras, Não querendo abusar, sabe como desligar, pois mesmo acabando a musica a macro permanece ligada.
@Gilberto Schiavinatto , pelo teste que fiz aqui, a música fica tocando até que ela termine seu tempo, mesmo pausando a macro. Vou dar uma analisada e mais uma fuçada para fazer uns testes. Vou colocar um som de alerta para verificar também.
@Gilberto Schivinatto, fiz um download de um áudio de 2s de alerta neste site http://soundbible.com/tags-alert.html . Coloquei a macro para rodar, e acionou o áudio apenas no tempo do som. Esta parte do código, é a responsável pela continuação da macro até que o som termine:
while oPlayer1.isplaying()
doevents
wend
Enquanto o som tocar, ela fica repetindo While, Wend - doesevents (faça o procedimento, traduzindo o código)
Se acionar uma segunda macro via Botão, funciona, mas se for diretamente onde se escreve a macro esta bloqueada, a musica da macro anterior, mesmo terminada fica ativa.
Ótimo @Gilberto Schiavinatto, só uma pergunta, fez o teste com áudio maior que 2s? (avaliando no caso do 2000 ms colocado como Integer). Na versão que coloquei, ele aguarda exatamente o tempo que o áudio tem, em double no caso, por conta de áudios com tempos quebrados. Fiz os testes com a versão que corrigi, e a macro finaliza normalmente. Outra coisa, está multiplicando o tempo do áudio por 2s (2000 ms). Caso o áudio tenha 5 min (300s) ficará com 600s o procedimento WAIT
Obrigado pela instrução.
@Gilberto Schiavinatto, sem problemas, estamos todos aqui para aprender…essa para mim é nova também.
@RonaldoElias, se deu certo a instrução, indique como resposta correta para que outras pessoas possam identificar também. Agradeço.