Win32 API | MIDI | Windows Media Format SDK (wma/mp3) | Direct Sound | OpenAL | ASIO | Vorbis OGG | Прочие исходники | Мои любимые книги по программированию | Написать письмо администратору сайта

Программирование звука в Windows (С++)

 

На этом сайте вы можете найти простые и краткие примеры кода для Windows на языке Си++ (их можно использовать в программах на C#, если вставлять небезопасный код на C++). Эти примеры позволят вашим программам издавать звуки. По мере возможности, сайт будет пополняться новыми примерами. Сайт родился 15 февраля 2009 года. Сайт создаётся силами музыканта и программиста из Новосибирска Мурата Джусупова (домашняя страничка, программы для развития музыкального слуха (на yellow-gold-soft.ru), программы для развития музыкального слуха (на yellow-gold-soft.com)). Ваше желание опубликовать здесь свои примеры будет приветствоваться.

Тема программирования звука напрямую не связана с тонкостями языка Си++. Здесь приходится использовать такие технологии как Win32 API, ASIO, DirectSound, OpenAL и некоторые другие.

Если вам нужны подробные сведения, то советую обратить внимание на статьи Евгения Музыченко. Некоторые его статьи я планирую разместить на этом сайте. Если вы хорошо владеете английским, то очень поможет MSDN.

Я постоянно сталкиваюсь с нехваткой примеров кода в области программирования звука. Несмотря на обилие подробных объяснений в MSDN мне часто приходится искать элементарный пример применения той или иной функции. Мне жалко терять целые дни или недели для изучения нескольких новых функций. Иногда достаточно увидеть хороший краткий пример, и понимание приходит быстрее. Этот сайт я делаю для себя, чтобы в любой точке земного шара получать доступ к испытанным примерам кода на Си++.

Какими знаниями должен обладать читатель для того, чтобы материалы этого сайта оказались ему полезны? Читатель должен знать язык Си++ хотя бы на начальном уровне. Желательно иметь представление о том, как взаимодействует ОС Windows с запущенной программой. Впрочем, даже консольная программа может воспроизводить звуки с помощью тех же функций, которые используются в оконных программах для Windows.

Необходимо иметь на своём компьютере установленную среду программирования для Windows (мне очень нравятся Visual Studio и Borland C++ Builder). На русском языке можно найти много справочной документации по этим инструментам программиста (и это хорошая новость для нашего брата).

Внимание! Перед тем как компилировать какой-либо пример, убедитесь, что перед вызовом функций, работающих со звуком в начале исходника есть #include <mmsystem.h>. В Visual C++ проектах такие #include можно один раз вставлять в файл stdafx.h (если я не ошибаюсь, иногда может потребоваться #include <windows.h>, но как правило у меня всё компилировалось без ручного добавления этой строки). Кроме того, нужно присобачить к проекту библиотеку winmm.lib. В Visual C++ проектах это делается так: (1) наведите мышку на имя проекта в Solutions Explorer, (2) кликнув правой кнопкой мыши, выберите Properties, (3) Далее найдите там Configuration Properties -> Linker -> Input -> Additional Dependencies, (4) в найденное поле введите winmm.lib. Указанное действие нужно сделать как для Release, так и для Debug версии проекта (для этого достаточно переключить Debug на Release и убедиться, что в обоих вариантах видна введённая строка "winmm.lib"). В Borland C++ Builder 5 у меня всё работает и без добавления библиотеки winmm.lib (во всяком случае я её сам не добавлял, вероятно, что winmm.lib там присоединяется по умолчанию). А вообще в Borland C++ Builder 5 добавление библиотеки происходит через меню Project -> Add to Project, или через меню View -> Project Manager. При этом надо умудриться найти где-то нужный lib-файл (как правило, следует порыться в папках установленной программы Borland C++ Builder).

Буду очень признателен, если читатели будут присылать мне свои статьи или ссылки на примеры кода в области программирования звука. Это будет здесь публиковаться.

В настоящее время я уже более 2-х лет работаю программистом, последний год пишу приложения для iPhone. Весь мой опыт кратко описан в резюме программиста C++ (Win32, iPhone, OpenGL, OpenAL, Direct Sound, ASIO). В настоящий момент я готов рассмотреть интересные предложения по работе в городе Новосибирске. В качестве шпаргалки записываю свой опыт в блог о программировании средствами iPhone SDK (зеркало 1, зеркало 2).

Win32 API | MIDI | Windows Media Format SDK (wma/mp3) | Direct Sound | OpenAL | ASIO | Vorbis OGG | Прочие исходники | Мои любимые книги по программированию | Написать письмо администратору сайта