Curso completo de DarkGdk
Gameprog - Escola de programação de jogos digitais
Contato: gameprog.br@gmail.com
Fase 7.3
07.3 Efeitos sonoros
07.2 som
Segue abaixo o elenco de funções básicas para tratamento de som:
dbLoadSound( sArquivo, nSom)
void dbLoadSound ( char* szFilename, int iSound )
Essa função carrega um arquivo de som no formato wav e identifica-o
com o handle nSom pelo qual o som vai sofrer manipulações posteriores.
Ex.: dbLoadSound ("c:\\gameprog\\gdkmedia\\som\\amostra_som.wav",1);
---------------------------------------------------------------------------
dbDeleteSound (nSom)
void dbDeleteSound ( int iSound )
Essa função deleta o som especificado nSom.
Ex.: dbDeleteSound(1);
---------------------------------------------------------------------------
dbPlaySound (nSom)
void dbPlaySound ( int iSound )
Essa função toca o som especificado.
Ex.: dbPlaySound(1);
---------------------------------------------------------------------------
dbLoopSound (nSom)
void dbLoopSound ( int iSound )
Essa função configura o som especificado para tocar continuamente.
Ex.: dbLoopSound(1);
---------------------------------------------------------------------------
dbStopSound (nSom)
void dbStopSound ( int iSound )
Essa função pára o som especificado.
Ex.: dbStopSound(1);
---------------------------------------------------------------------------
dbPauseSound (nSom)
void dbPauseSound ( int iSound )
Pausa o som especificado.
Ex.: dbPauseSound(1);
---------------------------------------------------------------------------
dbResumeSound ( nSom)
void dbResumeSound ( int iSound )
Continua com a execução do som especificado que foi pausado previamente.
Ex.: dbResumeSound(1);
---------------------------------------------------------------------------
dbSetSoundVolume (nSom, nVolume)
void dbSetSoundVolume ( int iSound, int iVolume )
Configura o volume (nVolume) de som do som especificado (nSom);
Ex.: dbSetSoundVolume (1,70);
---------------------------------------------------------------------------
dbSoundExist ( nSom)
int dbSoundExist ( int iSound )
Retorna 1 caso o som especificado exista.
Ex.: int nsts = dbSoundExist(1);
---------------------------------------------------------------------------
dbSoundPlaying (nSom)
int dbSoundPlaying ( int iSound )
Retorna 1 caso o som especificado esteja tocando.
Ex.: int nsts = dbSoundPlaying(1);
---------------------------------------------------------------------------
dbSoundLooping (nSom)
int dbSoundLooping ( int iSound )
Retorna 1 caso o som especificado esteja configurado para tocar continuamente.
Ex.: int nsts = dbSoundLooping(1);
---------------------------------------------------------------------------
dbSoundPaused (nSom)
int dbSoundPaused ( int iSound )
Retorna 1 caso o som especificado esteja pausado.
Ex.: int nsts = dbSoundPaused(1);
---------------------------------------------------------------------------
nVolume = dbSoundVolume (nSom)
int dbSoundVolume ( int iSound )
Retorna o volume ( nVolume) configurado para o som especificado.
Ex.: int nvolume = dbSoundVolume(1);
Segue abaixo programa exemplo:
// tst_Sound.cpp
// Esse programa mostra como usar as funções de som
#include "DarkGDK.h"
// Protótipo das funções
void initsys(); // inicializa o sistema
void tst_som(); // Testa funções de som
void menu(); // Mostra um menu de opções na tela
// Cores
const int nPreto = 0;
const int nBranco = 0xFFFFFF;
const int nAzul = 0x0000FF;
int terminar_app = 0;
// ----------------------------------------------------------------------------
void DarkGDK ( void ) {
// Começo da aplicação DarkGdk
initsys();
// Carrega um som para teste
dbLoadSound ("c:\\gameprog\\gdkmedia\\som\\amostra_som.wav",1);
while ( LoopGDK ( ) ) {
menu();
tst_som();
if (terminar_app == 1) return;
dbSync ( );
} // fim do while
return;
} // fim da função: DarkGDK
// ----------------------------------------------------------------------------
void initsys() {
// Esta função inicializa o sistema
dbSyncOn( );
dbCLS(nBranco);
dbSetWindowTitle("tst_som.cpp");
dbSetTextOpaque();
} // fim da função: initsys()
// ----------------------------------------------------------------------------
void menu() {
// Variáveis de trabalho para mostrar texto
int xpos = 260;
int ypos = 10;
int coluna = xpos;
int linha = ypos;
int espaco_entrelinhas = 20;
int ncx = 0;
// Nossa lista de opções
char *slista[8] = {"1- dbPlaySound(1)",
"4- dbStopSound(1)",
"q- para sair ou botao direito do mouse",
"6- dbLoopSound(1)",
"8- dbPauseSound(1)",
"9- dbResumeSound(1)",
"a- dbSetSoundVolume(1,70)",
"--------------------------------------"}; // fim da lista
// Mostre a lista
dbInk (nAzul, nBranco);
for (ncx = 0; ncx < 8; ncx++) {
linha = ypos + ( ncx * espaco_entrelinhas );
dbText (coluna, linha, slista[ncx]);
} // fim do for(ncx)
} // menu().end
// ----------------------------------------------------------------------------
void tst_som() {
// Execute enquanto não for pressionado "q" ou o botão direito do mouse
while (dbMouseClick() != 2) {
char *tecla = dbInKey();
if (!strcmp(tecla,"1")) dbPlaySound (1);
if (!strcmp(tecla,"4")) dbStopSound (1);
if (!strcmp(tecla,"q"))break;
if (!strcmp(tecla,"6")) dbLoopSound (1);
if (!strcmp(tecla,"8")) dbPauseSound(1);
if (!strcmp(tecla,"9")) dbResumeSound(1);
if (!strcmp(tecla,"a")) dbSetSoundVolume(1,70);
dbInk (nPreto, nBranco);
dbText (10,10,dbStr (dbSoundExist(1) )); dbText (50,10, "dbSoundExist(1)" );
dbText (10,30,dbStr (dbSoundPlaying(1) )); dbText (50,30, "dbSoundPlaying(1)" );
dbText (10,50,dbStr (dbSoundLooping(1) )); dbText (50,50, "dbSoundLooping(1)" );
dbText (10,70,dbStr (dbSoundPaused(1) )); dbText (50,70, "dbSoundPaused(1)" );
dbText (10,90, " "); // Limpe o espaço antes de imprimir
dbText (10,90,dbStr (dbSoundVolume(1) )); dbText (50,90, "dbSoundVolume(1)" );
dbSync();
} // endwhile
// Delete os arquivos utilizados
if (dbSoundExist(1)) dbDeleteSound (1);
terminar_app = 1;
} // tst_som().end