Подтвердить что ты не робот

Кросс-платформенный звук API для игр?

Есть ли API только для звука?

API, такие как Allegro или SDL предоставляют слишком много для моих нужд. Мне просто нужна библиотека, которая может сделать что-то вроде:

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

Было бы здорово, если бы он поддерживал сжатые форматы, такие как Vorbis или MP3.

4b9b3361

Ответ 1

Я большой поклонник библиотеки SFML. Он предоставляет дополнительные графические и сетевые функции, но то, что имеет отношение к этому вопросу, заключается в том, что он также имеет аккуратный аудио пакет.

Звуковые функции:

  • Использование аппаратного ускорения по возможности
  • Можно загружать и сохранять стандартные звуковые форматы: Ogg, WAV, FLAC, AIFF, Au, RAW, paf, 8SVX, NIST, VOC, IRCAM, W64, MAT4, MAT5 PVF, HTK, SDS, AVR, SD2, Core Audio Format, WVE, MPC2K, RF64
  • Может загружать все аудио ресурсы непосредственно из файлов в памяти
  • 3D-пространственная пространственная сортировка
  • Легкий интерфейс для захвата аудио
  • Эффективно управляет памятью, поэтому вам не нужно беспокоиться о ресурсах или хранении ресурсов
  • Поддержка потоковой передачи больших файлов; вы даже можете написать свой собственный потоковый класс для любого источника (сети,...)
  • Поддерживает многоканальные форматы (моно, стерео, 4.0, 5.1, 6.1, 7.1)

Веб-сайт: http://www.sfml-dev.org/

Ответ 2

Используйте PortAudio. Это портативный кросс-платформенный аудио API.

Ответ 3

Если вы используете OpenGL, вы можете попробовать OpenAL?

API очень похож на OpenGL, поэтому вы должны чувствовать себя как дома.

Ответ 4

Мне действительно нравится SFML, он написан на С++ и следует большинству правил хорошего дизайна API (RAII и т.д.).

Если вы предпочитаете более "C-like" библиотеку, SDL, необходимо указать.

Ответ 5

SDL_sound очень прост в использовании и обрабатывает декодирование для вас. Если вы использовали OpenAL, вам нужно было бы сделать декодирование самостоятельно (последнее время я его использовал). Однако я предпочитаю OpenAL для игр.

Ответ 6

Если вы ищете профессиональный межплатформенный звуковой дизайн API и авторское приложение, посмотрите Audiokinetic Wwise. Это может сделать гораздо больше, чем просто играть звуки. Он имеет эффекты, сложную систему звуковой логики, звуковое наслаивание, профилирование, интерактивные музыкальные инструменты и т.д. Он обеспечивает Ogg Vorbis и MP3, и она бесплатна для некоммерческих проектов.

Ответ 7

Возможно, вам стоит взглянуть на проект Kowalski, кросс-платформенный аудио API, ориентированный на игры и аналогичные интерактивные приложения. Он был выпущен под лицензией zlib.

Ответ 8

Хотя он доступен только для некоммерческих приложений, Бас действительно прост в реализации.

Пример использования:

// 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();

Ответ 9

Рассмотрим libsoundio. Он не поддерживает сжатие или кодеки, но он обеспечивает надежный кросс-платформенный звук API. Это может быть немного низким уровнем для ваших нужд; библиотека, которую вы ищете, может быть построена поверх libsoundio.

Ответ 10

Я знаю, что это старый вопрос, но кто-то наткнулся на это сейчас, возможно, захочет проверить FMOD

Вы можете использовать низкоуровневый API для простого запуска, а затем использовать более мощные функции (и FMOD Studio) позже, если это необходимо.

Здесь documentation для воспроизведения звука, который ссылается на образцы в API:

В этом примере показано, как просто загружать и воспроизводить несколько звуков, Простейшее использование FMOD.

Я использовал этот низкоуровневый API для разработки кросс-платформы (Mac, Windows) Space Invaders, разработанной и найденной очень полезной!

Ответ 11

Попробуйте libao http://www.xiph.org/ao/ - это очень просто и поддерживает множество платформ. Я пробовал это на малиновом пие с успехом.