Какая структура для воспроизведения звука в WPF?

Я знаю, что это может звучать как субъективный вопрос, но мне нужны хорошо обоснованные мнения по этой теме:

В графическом интерфейсе C # / WPF мне нужно воспроизводить коротковолновые файлы в ответ пользователю взаимодействие.
Спецификации следующие:

  • низкая задержка (немедленное начало воспроизведения)
  • код должен быть родным C # (.Net 4.0)
  • должен уживаться с WPF
  • несколько одновременных воспроизведений
  • без ограничений на управление звуковым буфером
  • гарантированное будущее (я хочу использовать что-то, что будет поддерживать через несколько лет.)
  • модуль звукового проигрывателя должен быть простым классом (= код C #), а не инкапсулированной dll

До теперь я неплохо ладил с DirectSound (используя Microsoft DirectX SDK), он соответствует всем требованиям, упомянутым выше. Начиная с Visual Studio 2010 (.Net 4.0), управляемый DirectX (MDX) больше не поддерживается, и он также исчез из последней версии DirectX SDK.

Какие у меня варианты сейчас?

  • XNA кажется излишним (слишком большим) для меня, так как я разрабатываю не игру, а приложение. Предполагается, что он заменит MDX, но я читал много страшных историй о его реализации. Или это все сказки?
  • SlimDX может быть вариантом, но это сторонний продукт и, опять же, довольно большой проект.
  • Я знаю несколько «небольших» решений, каждое со своими недостатками:
    • MediaElement (только с WMP10 +)
    • P / Invoke с WinMM
    • PlaySound
    • SoundPlayer
    • MediaPlayer
  • Существует множество настраиваемых аудиобиблиотек, которые работают более или менее хорошо.
    (NAudio, BASS, waveOut ...)

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

Заранее спасибо!

5
задан Community 23 May 2017 в 12:31
поделиться