Играть в WAV в Raspberry Pi на C / C ++, должны использовать DSP? - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время я пытаюсь воспроизвести файл WAV с использованием C или C ++ (я хочу знать, как можно подробно воспроизвести файл WAV). Однако все примеры кодов, которые я обнаружил, сначала пытались обнаружить / dev / dsp (например, пример github ). Я работаю над Raspberry Pi и не могу найти, где находится dsp.

У меня вопрос: нужно ли использовать dsp для того, чтобы игра wav работала? Иначе, есть ли другое решение? И я никогда раньше не использовал dsp.

(ps: я уже знаю формат в файле wav и знаю, как его читать, мне просто интересно его воспроизвести).

1 Ответ

0 голосов
/ 06 июля 2018

Короче ваш вопрос:

Нужно ли использовать 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 ++ может быть легким:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...