SDL é uma biblioteca básica, mas possui muitas bibliotecas de apoio. Uma delas é a SDL_Mixer. #include <SDL/SDL_mixer.h> void init(){ void carregar(){ Mix_PlayMusic( musica, -1 ); Mix_PlayChannel( -1, bomba, 0 );
De acordo com alguns tutoriais que andei vendo por aí, a forma mais fácil de tocar música e efeitos sonoros em seu jogo feito em SDL é com SDL_Mixer.
Além de suportar mais formatos (wav, mp3, ogg, mid(Timidity instalado), ...) você não tem que se preocupar com a função callback que é utilizada na SDL.
Siga este passo a passo de como deixar o seu jogo mais divertido !!!
» Post Completo...*** Instalando ***
Certifique-se que a lib SDL já esteja instalada. (Caso não esteja)
No Windows baixe o binário (SDL_mixer-devel-1.2.8-VC8.zip), o pacote (SDL_mixer-1.2.6-2mol.DevPak) ou use o repositório do Dev-Cpp.
No Linux baixe o binário (SDL_mixer-devel-1.2.8-1.i386.rpm), o código para compilar (SDL_mixer-1.2.8.tar.gz) ou use o repositório do Debian/Ubuntu (sudo apt-get install libsdl-mixer1.2-dev).
Para compilar é preciso, além de incluir a biblioteca SDL_mixer.h, linkar a lib ao seu projeto (-lSDL_mixer). exemplo: gcc -o mix mix.c `sdl-config --cflags --libs` -lSDL_mixer
Caso esteja com problemas consulte: » Setting up SDL Extension Libraries
*** Programando com SDL_mixer ***
Aqui temos os tipos que armazenam a musica e o efeito sonoro:
Mix_Music *musica = NULL; //- música de fundo
Mix_Chunk *bomba = NULL; //- efeito sonoro mixável.
Mix_Chunk *tiro = NULL;
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
atexit(SDL_Quit);
screen = SDL_SetVideoMode( W, H, 32, SDL_SWSURFACE);
Mix_OpenAudio( 22050, MIX_DEFAULT_FORMAT, 2, 1024 ); //- inicializa SDL_Mixer
atexit(Mix_CloseAudio);
}
musica = Mix_LoadMUS("007JamesBond.mid");
bomba = Mix_LoadWAV("bomba.ogg");
tiro = Mix_LoadWAV("tiro.wav");
}
Mix_PlayChannel( -1, tiro, 0 );
*** O Exemplo ***
Este é o exemplo que criei para testar a SDL_Mixer:
Não chega a ser um teclado, mas a intenção foi boa ! Ainda não sei como melhorar, mas estarei estudando.
EDIT (23/12/2007): Mudei o buffer de 4096 para 1024. Isso acelerou a mixagem das notas musicais ao som de fundo.
Download: » código fonte
*** Onde Encontar ?! ***
Onde encontrar músicas e efeitos sonoros para meus jogos ?!
» Arcade Accurate (incluíndo o Pacman)
» Sunncity (mid's)
» Midiworld (mid's)
» Simply The Best
» Galbadia
» Find Sound (ou Google msm !)
No eMule uma busca por "midis" ajuda bastante:
Mas de 500 Midis Heavy Metal.rar [hash]
[Midi] Classical Piano Midis...zip [hash]
40000.mids.Nacional.e.Internacionais...rar [hash]
Uma maneira de aproveitar melhor tudo isso é saber manipular programas de audio.
Pra Linux temos:
» Audacity (sudo apt-get install audacity) - Para editar audio.
» Rosegarden (sudo apt-get install rosegarden) - Editor de arquivos midi e de partituras.
» Timidity (sudo apt-get install timidity) - Sequenciador midi. Sem ele não tem como ouvir midi no Linux. dica: $ timidity 007.mid -Ov 007.ogg - Salva saída no formato ogg.
*** Link's ***
Download: » código fonte
» SDL
» SDL_Mixer - Página do projeto
» Playing Sounds - Tutorial Lazy Foo
» OSG/SDL Tutorial 17 - Audio with SDL_Mixer
» SDL_Mixer Tutorial
» Utilizando áudio com SDL_mixer
---
Essa semana foi dura ! Aprendi muita coisa de uma vez !!!
.:: Menu Rápido ::.
Linux | C/C++ | Downloads | SDL | [×]
Para programar tem que ser Linux ! Para Desktop prefiro o Ubuntu !
A melhor maneira de se descobrir uma lib gratuita é nos repositórios do Ubuntu: $apt-cache search lib <palavra_chave> dev
Ou pelo devpaks.org, mas o repositório tem me ajudado mais !!!
A melhor maneira de se descobrir uma lib gratuita é nos repositórios do Ubuntu: $apt-cache search lib <palavra_chave> dev
Ou pelo devpaks.org, mas o repositório tem me ajudado mais !!!
- Script's GIMP - Python-Fu !!!
- Dicas Web
- Vídeo Compiz Fusion (Desktop 3D)
- Compilando com gcc e Makefile
- Que tal mudar para Ubuntu ?!
C e C++ são minhas linguagens de programação. No começo foi muito difícil, mas agora já estou mais prático (Ainda não é fácil).
- SDL - A Biblioteca dos Jogos 2D
- Analisador léxico de arquivos script
- Simpatizando com a Libxml2
- AsciiGen - Tabela ASCII em C
- Conexão com API C do MySQL
- Compilando com gcc e Makefile
Jogos e programas de minha autoria !
- DR Tetris 0.3 - Tetris no estilo tradicional !
- DR Quebra-Cabeça disponível para download !!!
- Freeggs - Liberdade aos ovos \o/
Se você quer aprender a desenhar... lápis e palel.
Se você quer aprender a programar jogos... SDL !!!
Se você quer aprender a programar jogos... SDL !!!
- Carregando mapas 2D no formato TMX
- Controle de tempo e Frame Rate
- SDL em Processamento de Imagens
- SDL_Surface - Introdução detalhada
- Imprimindo texto com SDL_Ttf
- SDL_Collide - Colisão 2D para jogos
- Tocando música e sons com SDL_mixer
- Gerando e carregando mapas 2D em jogos
- SDL - A Biblioteca dos Jogos 2D
quarta-feira, 12 de dezembro de 2007
Tocando música e sons com SDL_Mixer
SDL é uma biblioteca básica, mas possui muitas bibliotecas de apoio. Uma delas é a SDL_Mixer.
De acordo com alguns tutoriais que andei vendo por aí, a forma mais fácil de tocar música e efeitos sonoros em seu jogo feito em SDL é com SDL_Mixer.
Além de suportar mais formatos (wav, mp3, ogg, mid(Timidity instalado), ...) você não tem que se preocupar com a função callback que é utilizada na SDL.
Siga este passo a passo de como deixar o seu jogo mais divertido !!!
» Post Completo...
Assinar:
Postar comentários (Atom)
4 comentários:
O SDL_Mixer não funcionava corretamente com o ogg e mp3 até essa última versão. Havia leaks de memória, o código travava, era horrível.
A versão atual corrigiu esses e outros bugs. :)
A SDL_Mixer não funcionou com todos os arquivos ogg, mas tbm não travou nada !
Estou satisfeito com os formatos suportados, só queria entender o porque de demorar para executar efeitos sonoros.
Olá kara gostei muito desse programa estou no primeiro ano de ciência da computação e estou gostando muito, já estou pensando em bolar um jogo p/ minha iniciação cientifica e esse programa vai me ajudar muito, Valeu!!
;)
Acho que você também vai gostar desse jogo em SDL: http://themanaworld.org/
Dá uma olhada em como é feito a animação de um sprite no TMW:
* http://themanaworld-br.googlecode.com/svn/tmwdata/graphics/sprites/monstro-cachorro.png
* http://themanaworld-br.googlecode.com/svn/tmwdata/graphics/sprites/monstro-cachorro.xml
Jogos 2D se constituem de:
* mapas criados por tiles
* animações por sprites
* efeitos especiais por partículas
Isso a parte de recursos é claro... a lógica do jogo pode envolver diversas coisas.
T++
Postar um comentário