ti-enxame.com

API de som de plataforma cruzada para jogos?

Existe uma API apenas para som?

APIs como Allegro ou SDL fornecem muito para minhas necessidades. Eu simplesmente preciso de uma biblioteca que possa fazer algo como:

InitSound();
Sound *door = LoadSound("door.wav");
PlaySound(door,volume);

Também seria ótimo se pudesse suportar formatos compactados como Vorbis ou MP .

21
jmasterx

Sou um grande fã da biblioteca SFML. Ele fornece recursos gráficos e de rede adicionais, mas o que é relevante para essa questão é que também possui um pacote de áudio bacana.

Os recursos de áudio são:

  • Usa aceleração de hardware sempre que possível
  • Pode carregar e salvar formatos de som padrão: Ogg , WAV , FLAC , AIFF , A , RAW =, paf, 8SVX , NIST, VOC, IRCAM , W64 , MAT4 , MAT5 PVF , HTK , SDS , AVR, SD2 , Formato de áudio principal , WVE, MPC2K, RF64
  • Pode carregar todos os recursos de áudio diretamente de arquivos na memória
  • Espacialização de som 3D
  • Interface fácil para captura de áudio
  • Gerencia a memória com eficiência, para que você não precise se preocupar com a vida útil dos recursos ou armazenamento
  • Suporta streaming para arquivos grandes; você pode até escrever sua classe de streaming personalizado para qualquer fonte (rede, ...)
  • Suporta formatos multicanais (mono, estéreo, 4.0, 5.1, 6.1, 7.1)

Site: http://www.sfml-dev.org/

19
rochal

Use PortAudio . É uma API de áudio multiplataforma portátil.

11
Baget

Se você está acostumado a usar OpenGL, então pode tentar OpenAL ?

A API é muito semelhante ao OpenGL, então você deve se sentir em casa.

8
graham.reeds

Eu realmente gosto de SFML , é escrito em C++ e segue a maioria das regras de bom design de API ( RAII e assim por diante).

Se você preferir uma biblioteca mais "semelhante ao C", SDL precisa ser mencionado.

4
Dragontamer5788

SDL_sound é muito simples de usar e cuida da decodificação para você. Se você usou OpenAL , você mesmo teria que fazer a decodificação (pela última vez que usei). Na verdade, prefiro OpenAL para jogos.

2
Bob

Eu sei que é uma pergunta antiga, mas qualquer um que topar com isso agora pode querer dar uma olhada FMOD

Você pode usar a API de baixo nível para começar de forma simples e depois usar os recursos mais poderosos (e o FMOD Studio) posteriormente, se necessário.

Aqui está o documentação para reproduzir um som, que faz referência aos exemplos na API:

Este exemplo mostra como simplesmente carregar e reproduzir vários sons, o uso mais simples de FMOD.

Usei essa API de baixo nível para um clone do Space Invaders multiplataforma (Mac, Windows) que desenvolvi e achei muito útil!

2
Simon Bosley

Considere libsoundio . Não suporta compressão ou codecs, mas fornece uma API robusta de plataforma cruzada. Pode ser um nível um pouco baixo para suas necessidades; a biblioteca que você está procurando pode ser construída em cima da libsoundio.

1
andrewrk

Se você está procurando uma API de design de som multiplataforma profissional e um aplicativo de criação, dê uma olhada em Audiokinetic Wwise . Ele pode fazer muito mais do que apenas reproduzir sons. Tem efeitos, sistema de lógica de som complexo, camadas de som, perfis, ferramentas de música interativas, etc ... Ele fornece suporte Ogg Vorbis e MP , e é gratuito para não -projetos comerciais.

1
decasteljau

Embora seja gratuito apenas para aplicativos não comerciais, Baixo é realmente fácil de implementar.

Exemplo de uso:

// initialize device at 44kHz
if (!BASS_Init(-1,44100,0,0,NULL))
{
    printf("Can't initialize device");
    return 0;
}

HSAMPLE sample;
HCHANNEL channel;

// load from disk
if( sample = BASS_SampleLoad(FALSE,"foo.wav",0,0,1,BASS_SAMPLE_OVER_POS) ) {

    // get playable channel
    channel = BASS_SampleGetChannel( sample,FALSE);

    // play
    BASS_ChannelPlay(channel,TRUE);

    // wait for playback to finish
    while( BASS_ChannelIsActive( channel ) )
         Sleep(100);

   BASS_SampleFree(sample);
}

// cleanup
BASS_Free();
1
Izzy

Você pode querer dar uma olhada no projeto Kowalski , uma API de áudio de plataforma cruzada voltada para jogos e aplicativos interativos semelhantes. É lançado sob a licença zlib.

1
perarne

Experimente libao http://www.xiph.org/ao/ - é muito simples e suporta uma variedade de plataformas. Experimentei com sucesso em um Raspberry Pi.

0
rndrfero