Найти в Дзене
Electronics Engineer

Программирование на СИ, как проиграть звук в своей программе

В этой статье я покажу вам один из приёмов проигрывания аудио файла с расширением "*.wav", Это может быть полезно, например, для озвучивания действий пользователя, таких как нажатие кнопок, завершение какого-либо процесса, окончание отсчёта таймера, срабатывание будильника и других подобных задач.

Предполагается, что вы уже умеете создавать проекты в редакторе Visual Studio Code и у вас установлен компилятор GCC.

Для написания кода мы будем использовать редактор Visual Studio Code и создадим в нём файл проекта под названием "MySound.c".

Файл проекта
Файл проекта

Для воспроизведения аудио файла нам понадобится сам файл в формате WAV, в моём проекте это будет файл под названием "sound.wav", я помещу его в папку с проектом для удобства его использования.

Далее подключим в наш в проект библиотеку windows.h и playsoundapi.h в которой описана Функция воспроизведения аудио файла PlaySound в неё необходимо передать 3 параметра.

  • Первый параметр "pszSound" несёт в себе имя файла или ресурса в текстовом формате, передадим в него путь к нашему WAW файлу в двойных кавычках "sound.wav".
  • Второй параметр "hmod" несёт в себе идентификатор ресурса, но так как мы воспроизводим файл то передадим в него пустой параметр "NULL".
  • Третий параметр "fdwSound" может принять несколько "флагов" параметров воспроизведения, передаваемых друг за другом через побитовое "или", передадим в него параметр "SND_SYNC" который отвечает за синхронное воспроизведение звука, так как наше приложение консольное этот параметр не даст закрыть окно раньше того как проиграет весь аудио файл, вторым параметром передадим "SND_FILENAME" который определяет что мы воспроизводим аудио файл.

Вот как всё это выглядит в окне редактора Visual Studio Code

Окно редактора с проектом
Окно редактора с проектом

Далее в ожидании волшебства жмём кнопку сборка и отладка проекта, выбираем компилятор из выпадающего списка gcc.exe у меня он идёт вторым

Сборка проекта
Сборка проекта

в процессе сборки в папке с проектом "MySound" будет создан файл настроек проекта "tasks.json"

-4

и увы, компилятор сообщит нам об ошибке.

Ошибка процесса сборки проекта
Ошибка процесса сборки проекта

Эта ошибка говорит о проблеме со связыванием объектных файлов или библиотек в процессе компиляции.

В моём случае это произошло потому что при сборке проекта я не указал в параметрах компилятора что необходимо подключить библиотеку "winmm.lib", исправляемся, открываем в редакторе вкладку с файлом "tasks.json" и в конец раздела "args" добавляем строку в двойных кавычках "-lwinmm".

Подключение библиотеки "winmm.lib"
Подключение библиотеки "winmm.lib"

Снова переходим на вкладку с проектом и жмём кнопку сборка и отладка, в этот раз компиляция прошла без ошибок, открылось окно консоли и начал проигрываться файл "sound.wav", по окончании звучания окно закрылось.