Короче ваш вопрос:
Нужно ли использовать DSP для того, чтобы заставить играть в WAV?
Ответ - нет.
DSP (цифровая обработка сигнала) - это термин, используемый для описания взятия исходного цифрового сигнала и просмотра формы сигнала, чтобы затем применить какую-либо обработку (т. Е. Фильтрацию, задержку, модуляцию ... список можно продолжить). Если вам интересно, я уверен, что вы легко найдете больше информации о DSP, но вот небольшая статья для начала .
Поскольку все, что вы хотите сделать, это воспроизвести файл .wav, процесс просто читает файл .wav информация заголовка (выяснение метаданных -> частота дискретизации, количество выборок ... ), а затем воспроизведите данные .wav с правильными параметрами, описанными в информации заголовка.
1. Воспроизведите необработанные данные .wav
Поскольку вы сказали, что уже знаете, как читать WAV-файл, я предполагаю, что вы просто хотите воспроизвести массив аудиоданных?
Наиболее распространенная техника для выполнения этого в C / C ++ (в ОС) - это использование portaudio . Это кроссплатформенная (поддерживаемая Mac, Win и Linux) библиотека аудио ввода-вывода, написанная на C, и может вызываться из C / C ++ Они предоставляют примеров в своей документации для чтения / записи WAV-файлов, а также неблокирующего и блокирующего воспроизведения. Я думаю, это то, что вы ищете, и если вы застряли, есть много SO сообщений или людей, которые могут помочь вам.
Он также поддерживает запись и воспроизведение в режиме реального времени, если это имеет какое-либо применение для вашего проекта (т. Е. Позволит вам выполнять DSP в реальном времени, если вы этого хотите).
Существует также много других привязок для portaudio на других языках, таких как PyAudio (Python), PlayRec (Matlab / Octave), rust- portaudio (Rust) ... и многие другие, если они вам нужны на другом языке.
В противном случае есть библиотеки более низкого уровня, которые дадут вам больший доступ, но иногда это не то, что вам нужно, а вот ссылка на примеры проекта ALSA . Portaudio использует ALSA при сборке с ним в Linux.
2. Попробуйте DSP!
Поскольку у вас уже есть аудиоданные, вы можете делать с ними все, что захотите. Если это учебный проект, я бы определенно предложил попробовать немного DSP-программирования, поскольку оно помогает со всеми типами обработки сигналов ( отдельные изображения , видео и намного более сложные области -> по сути, все это та же теория, что и аудио).
Я бы порекомендовал попробовать простые задачи DSP на языках более высокого уровня (особенно в Python или Matlab / Octave , поскольку обычно они используются для аудио DSP макетирование). Если вы хотите заняться звуковым программированием, я думаю, что это отличный способ начать, и если у вас уже есть знания C / C ++, тогда перенос теории языка более высокого уровня в C / C ++ может быть легким:)