GRSa 3 Posted June 5, 2013 Report Share Posted June 5, 2013 (edited) Olá colegas. Depois de uma pesquisa encontrei uma forma de executar sons em programas escritos em pascal. Este método funciona somente em programas compilados e executados no Windows. Não se trata de invocar uma determinada freqüência, como o disponível através do procedimento sound(freq), mas da execução de ficheiros .wav disponíveis em algum diretório acessível. Aqui será tratada a função SndPlaySound(). Esta função está disponível na unit MMSystem, que faz interface com a biblioteca padrão do Windows. Há muitas outras funções que funcionam similarmente, mas essa é a mais simples e fácil de usar e entender. Este recurso é disponibilizado, por exemplo, pelo freepascal. Alguns compiladores como o Pascalzim NÃO fazem uso deste recurso. O uso desta função é extremamente simples, tão simples que chega a ser irritante. A função tem retorno do tipo BOOLEAN e basicamente retorna true se for possível tocar o áudio ou false se não for possível tocar o áudio. Veja o exemplo: SndPlaySound('C:\click.wav', 1); //Executa o arquivo especificado Para explicar um pouco mais tecnicamente veja o protótipo da função: function SndPlaySound(pszSound: STRING; fdwSound: INTEGER): BOOLEAN; Parâmetros pszSound: Recebe o caminho até o arquivo como uma string fdwSound: Flags para reproduzir o áudio. (Confira as constantes abaixo) Constantes para atribuição à fdwSound SND_ASYNC: O som é reproduzido de maneira assíncrona e a função retorna imediatamente após o início do som. Para finalizar um som de forma assíncrona chame a função atribuindo ao parâmetro pszSound o valor NIL. SND_LOOP: O som é reproduzido repetidamente até a função ser invocada novamente com o parâmetro pszSound definido como NIL. SND_NODEFAULT: Especifica que se o som não puder ser encontrado, a função deve retornar silenciosamente sem tocar o som padrão. SND_NOSTOP: Se algum áudio já estiver sendo executado no mesmo processo, a função retorna imediatamente FALSE, sem reproduzir o som solicitado. SND_SYNC: O som é reproduzido de forma síncrona e a função não retorna até que o som termina. Exemplo: Program Sounds; Uses CRT, MMSystem; Begin SndPlaySound('.\click.wav', SND_ASYNC + SND_LOOP); Readkey; End. Outros: SndPlaySound('.\click', SND_ASYNC); SndPlaySound('C:\audio\click.wav', SND_SYNC + SND_NOSTOP); É importante salientar que há outras funções que fazem isso de forma similar, mas essa é, ao meu ver, a mais fácil de usar e de entender. Para mais funções e constantes acesse o link http://msdn.microsoft.com/en-us/library/windows/desktop/dd798676(v=vs.85).aspx. Lá é possível encontrar mais informações sobre a função aqui tratada assim como ver detalhes sobre todas as funções da biblioteca do Windows disponível para o pascal através da unit MMSystem. Confira a página http://wiki.freepascal.org/Multimedia_Programming para verificar mais formas de usar recursos multimídia com o pascal. Grande abraço. Edited June 5, 2013 by GRSa 1 Report Link to post Share on other sites
I-NOZex 135 Posted June 5, 2013 Report Share Posted June 5, 2013 boa dica se na altura soubesse tinha usado isso no meu projecto, mas tambem nao usei porque so da mesmo para wav ne? formato decomprimido... tamanhos abusados... B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now