2010-09-03 7 views
21

¿Hay una API solo para sonido?API de sonido de plataforma cruzada para juegos?

Las API como Allegro o SDL proporcionan demasiado para mis necesidades. Simplemente necesito una biblioteca que puede hacer algo como:

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

También sería genial si pudiera soportar los formatos comprimidos como Vorbis o MP3.

Respuesta

18

Soy un gran admirador de la biblioteca SFML. Proporciona gráficos adicionales y funciones de red, pero lo relevante para esta pregunta es que también tiene un paquete de audio ordenado.

características de audio son:

  • utiliza la aceleración de hardware siempre que sea posible
  • puede cargar y guardar los formatos de sonido estándar: Ogg, WAV, FLAC, AIFF, Au, RAW, paf, 8SVX, NIST, COV , IRCAM, W64, MAT4, MAT5 PVF, HTK, SDS, AVR, SD2, Core Audio Format, WVE, MPC2K, RF64
  • puede cargar todos los recursos de audio directamente de los archivos en la memoria
  • espacialización del sonido 3D
  • fácil interfaz para capturar audio
  • administra la memoria de manera eficiente, de manera que usted no tiene que preocuparse acerca de los recursos de por vida o almacenamiento
  • Admite la transmisión de archivos grandes; incluso se puede escribir su clase de flujo continuo a medida para cualquier fuente (red, ...)
  • compatible con los formatos de múltiples canales (mono, estéreo, 4.0, 5.1, 6.1, 7,1)

Sitio Web: http://www.sfml-dev.org/

+2

Boooo, me ganaste por un minuto. Pero sí, SFML es genial. – Dragontamer5788

+4

Lee mi comentario sobre la respuesta de graham.reeds. SFML incluye bibliotecas de sonido con licencia LGL y existen muchos riesgos potenciales con el código de licencia gpl. Iba a usar SFML para mi juego, pero a diferencia de las personas de la fundación de software libre (que ya parecen ser ricas o que otras personas pagan sus facturas), me gustaría mantener mi trabajo duro como propietario más allá de toda duda razonable. Solo algo de reflexión. –

+0

@TechnikEmpire: debe estar confundido; LGPL! = GPL. puede usar una biblioteca en proyectos de fuentes cerradas. la única restricción es que proporcione un aviso de licencia en alguna parte. –

11

Use PortAudio. Es una API portátil de audio multiplataforma.

+0

Lo he usado también, era muy simple de integrar en mi proyecto. –

8

Si está acostumbrado a usar OpenGL, entonces puede intentar OpenAL?

La API es muy similar a OpenGL por lo que debe sentirse como en casa.

+0

¡Buen punto, de hecho! –

+0

OpenAL está notando como OpenGL. Es una API impulsada más o menos por una empresa, e incluso este "impulso" ya no existe. Si bien el diseño de la API es bueno, la disponibilidad en varias plataformas no es tan buena. Su implementación de Windows está llena de peculiaridades y errores, especialmente con HW (incluido Creative HW). – Suma

+0

Originalmente comenzó hace muchos años (iirc) por Sean Palmer (junto con OpenML y un par de otros) pero solo OpenAL ganó impulso. Encontró favor en Linux y fue utilizado en los puertos de mayo de los juegos de Windows a Linux por los juegos de Loki. La desaparición de Loki (y argubly Linux como una plataforma de juegos rentable) acabó con OpenAL, no con Creative. Mi experiencia se remonta a varios años y me pareció bien en aquel momento y funcionó bien para pruebas de audio simples. –

3

Me gusta mucho SFML, está escrito en C++ y sigue la mayoría de las reglas del buen diseño de API (RAII y demás).

Si prefiere una biblioteca más "C-like", es necesario mencionar SDL.

2

SDL_sound es muy simple de usar y maneja la descodificación por usted. Si usaste OpenAL, tendrías que hacer la descodificación tú mismo (la última vez que la utilicé). Aunque prefiero OpenAL para juegos.

+0

Lo he usado y envuelto en mi 'motor de carnicería 'de motor de juego 2D, pero tuve sorpresas de tiempo al tiempo sobre un informe valgrind; o sonido crackeando la segunda vez que se reproduce ... No lo recomendaría hoy. –

1

Si está buscando una API profesional de diseño de sonido multiplataforma y una aplicación de creación, eche un vistazo a Audiokinetic Wwise. Puede hacer mucho más que solo reproducir sonidos.Tiene efectos, sistema lógico de sonido complejo, capas de sonido, creación de perfiles, herramientas de música interactiva, etc. Proporciona soporte para Ogg Vorbis y MP3, y es gratis para proyectos no comerciales.

1

Es posible que desee echar un vistazo a la Kowalski project, una API de audio de plataforma cruzada orientada a juegos y aplicaciones interactivas similares. Se lanzó bajo la licencia de zlib.

+0

"actualmente se está refactorizando, aún no se puede usar", pero no se ha confirmado durante los últimos 8 meses. – Justin

0

Probar libaohttp://www.xiph.org/ao/ - es muy simple & compatible con una variedad de plataformas. Lo probé en una frambuesa pi con éxito.

+0

libao es GPL, no LGPL. – Justin

1

Aunque es solo gratuito para aplicaciones no comerciales, Bass es realmente fácil de implementar.

Ejemplo 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

Considérese libsoundio. No es compatible con la compresión o los códecs, pero proporciona una sólida API de sonido multiplataforma. Puede ser un nivel un poco bajo para sus necesidades; la biblioteca que está buscando podría construirse encima de libsoundio.

1

Sé que es una vieja pregunta, pero nadie tropezar con esto ahora puede gustar de revisar FMOD

Puede hacer uso de la API de bajo nivel para iniciar simple entonces hacer uso de las características más potentes (y FMOD Studio) más adelante si es necesario.

Aquí está la documentation para reproducir un sonido, que hace referencia a las muestras en la API:

Este ejemplo muestra cómo simplemente cargar y reproducir sonidos múltiples, el uso más simple de FMOD.

Utilicé esta API de bajo nivel para una plataforma cruzada (Mac, Windows) La clonación de Space Invaders la desarrollé y la encontré muy útil.

Cuestiones relacionadas