Macro para executar som no write ou calc

Boa noite,

Tem alguma macro para executar som no write ou calc. Agradeço.

Ola @RonaldoElias, de uma olhada aqui:

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

Muito bom @Conras, funcionando.

@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.

Descrição da imagem

@Gilberto Schiavinatto, você chegou a testar com a correção que fiz?

Ó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

Ok @Conras, entendi/executei errado, desculpe-me o seu esta Ok…

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.

Oi, @Conras. Valeu!