Гордеев о в программирование звука в windows
Арзуманов Сергей. Секреты гитарного звука
Бьюик П. Живой звук. РА для концертирующих музыкантов
Soundrobot
Пользователь
artscripts добавил(а) новый ресурс:
Книга посвящена вопросам программирования звука в Microsoft Windows и описывает как старые, так и новые методы записи и воспроизведения звука. Подробно рассмотрены запись и воспроизведение с использованием стандартной библиотеки обработки звука (mmsystem). Приводится описание работы с системным микшером звука и менеджером сжатия аудио (Audio Compression Manager, ACM). Большое внимание уделено программированию звука с использованием DirectX и применению.
Новичок
Мавзуна
Пользователь
Создайте аккаунт или войдите, чтобы комментировать
Вы должны быть пользователем, чтобы оставлять комментарии
Создайте учетную запись на нашем сайте. Это просто!
Уже есть аккаунт? Войдите здесь.
Внесите свой вклад в развитие проекта!
Библиотека собирает всю информацию из открытых источников и предоставляет материалы только для ознакомительных целей. Если у вас возникли вопросы или есть претензии от правообладателей Ознакомьтесь с документацией
Информационный ресурс soundmain.ru является общедоступным для пользователей и осуществляет свою деятельность c соблюдением действующего законодательства РФ.
Администрация soundmain.ru не осуществляет контроль и не может отвечать за размещаемую пользователями на ресурсе soundmain.ru информацию.
Администрация ресурса отрицательно относится к нарушению авторских прав на информационном ресурсе soundmain.ru.
Посмотреть на карте
Звукорежиссер помогает сделать из творческого произведения «продукт», который передает заложенную автором идею слушателю. Фактически, этот специалист является связующим звеном между творчеством и технологиями, без него не обходится ни один концерт, кинофильм, театральное представление или шоу.
Звукорежиссер должен понимать акустику и физику звука, в чем могут хорошо помочь такие книги по звукорежиссуре: Modern Recording Techniques (Дэвид Майлс Хубер), Mixing Secrets For The Small Studio (Майк Сеньйор), The Art Of Mixing: A Visual Guide To Recording, Engineering And Production (Дэвид Гибсон), The Recording Engineer’s Handbook (Бобби Овсински);
Кроме этого, не забывайте читать статьи для звукорежиссеров, где можно почерпнуть не только информацию, но и некоторые хитрости опытных специалистов.
ProgBook — книги и учебники по программированию
Руководство программиста по работе со звуком — Тим Кинтцель
Применение низкоуровневых средств работы со звуком для Win32, Mac OS и Unix; декомпрессия данных в форматах MPEG, IMA ADPCM; чтение файлов WAVE, VOC, AIFF и AU; воспроизведение файлов MIDI и MOD- интересующие вас темы? Тогда вы стоите на правильном пути. Данная книга именно то, что вам необходимо. Но это далеко не все, что можно в ней прочесть, а именно включен материал о синтезе звучания музыкальных инструментов, восприятии звуков людьми, цифровой фильтрации и преобразований Фурье. Этот литературный источник станет другом для разработчиков, использующих в своих приложениях обработку звука. Является истинным руководством программиста по работе со звуком. Специалисты, разрабатывающие программные средства обработки сигналов для геофизики, телеметрии, связи, систем автоматического управления и сбора данных также смогут почерпнуть важные для себя знания.
Обработка звука на PC — Н. Секунов
Звук в играх. Технологии программирования — Мейсон МакКаски
Книга Мейсона МакКаски «Звук в играх. Технологии программирования» познакомит читателя с программированием звука с нуля. Изучив данную книгу, пользователь сможет разработать свой звуковой движок и вместе с тем, научится воспроизводить midi, wav, mp3, wma, ogg файлы, аудио компакт-диски и трекерную музыку. В основном здесь описывается работа с DirectMusic, но есть материал и для ознакомления с OpenAL и различными вспомогательными библиотеками обработки и воспроизведения звука. Также в книге приводится изучение вопросов создания динамического музыкального сопровождения и его визуализации, звуковых спецэффектов, трехмерного звука и голосового общения в Интернет. Данная книга создана для всех желающих ознакомиться с миром компьютерного звука и музыки.
Программирование звука в Windows — О. Гордеев
В книге О. Гордеева «Программирование звука в Windows. Руководство для профессионалаов» находится обсуждение вопроса программирования звука в Microsoft Windows, описываются старые и новые методы записи и воспроизведения звука. В данном издании детально рассматриваются: запись и воспроизведение с применением стандартной библиотеки обработки звука (mmsystem); работа с системным микшером звука и менеджером сжатия аудио (Audio Compression Manager, ACM). Также здесь можно больше узнать: о программировании звука с использованием DirectX; о применении трёхмерных эффектов при воспроизведении звука в DirectX; о максимальном использовании возможностей Win32. Каждая обсуждаемая тема сопровождается примерами программ, созданных в Microsoft Visual C++. Книга будет интересна пользователю, желающему обучиться программированию звука, а может пригодиться как справочник.
ChucK — программируем звук
Языков программирования существует великое множество: от мейнстримовых до эзотерических, от учебных до узкоспециализированных. И если с мейнстримом знакомы так или иначе многие из нас (хотя бы на уровне школьного бейсика), то языки программирования, предназначенные для выполнения специальных задач, остаются для многих тайной покрытой мраком. Давайте немного приоткроем занавес и посмотрим, пусть одним глазком, мир программирования… музыки!
Итак, наш сегодняшний гость ChucK, придуманный Пери Куком (Perry Cook) и Ги Вонгом (Ge Wang) из университета Принстон в 2003 году, последняя версия вышла в 2009 году.
ChucK — один из языков программирования, предназначенный для написания музыки, синтеза звука в реальном времени и организации взаимодействия различной специализированной периферии.
ChucK является интерпретируемым языком. Нативно поддерживает параллельное исполнение нескольких потоков (так называемых «шредов») программы, причем исполнение шредов происходит в соответствии с определенными циклами (sample rate, control rate), что позволяет производить их синхронизацию силами самого Чака. К слову, в описании авторов сказано, что «ChucK is on-the-fly programming language», что на деле позволяет вносить изменения в программу прямо во время исполнения и дает возможность некоторым вытворять удивительные вещи на сцене. (Да, да! Гики строчащие на сцене код, который тут же превращается в музыку — это реальность!)
ChucK является мультипарадигменным языком со строгой типизацией данных и не совсем обычным синтаксисом, связанным с особенностью области применения (об этом чуть позже). Удобнее всего подходить к Чаку с позиции ООП, особенно тем, кто уже сталкивался с модульными студиями синтеза.
Начнем?
Распространяется ChucK под лицензией GNU GPL и доступен для платформ Windows, Linux, Mac OS X, а с недавнего времени еще и iOS (с закрытым кодом).
Для начала обзаведемся инструментами. За необходимым софтом идем сюда.
По ссылке можно найти бинарники консольного интерпретатора под Mac OS X и Windows, для Linux представлены исходные коды для самостоятельной компиляции (со всеми необходимыми инструкциями, так что разберется даже новичок). Но блокнот + консоль не самая удобная связка, для комфортной работы нам потребуется среда разработки. Тут на выбор дается два варианта:
• miniAudicle – редактор с подсветкой синтаксиса, отладчик и виртуальная машина в одном флаконе. Уже давно в стадии бета версии, поэтому готовьтесь к множеству сюрпризов. Например, мне (и не только) так и не удалось собрать эту поделку под Linux с поддержкой JACK, а в Windows при выходе приходится вручную сносить процесс miniAudicle.exe, т.к. программа завершается некорректно.
Скриншот
• Audicle – экспериментальная среда модульной разработки, может показаться удобнее тем, кто знаком с Max/MSP. Однако, тем кто привык работать в классических IDE, Audicle покажется малопонятной. К тому же оно еще более сырое и глючное, чем miniAudicle.
Я лично остановился на первом варианте ввиду большей стабильности и большему (субъективно) удобству. Скриншот
Версии под iOS на сайте нет, вероятно, ее можно найти в AppStore. Я не буду останавливаться подробно на сборке и установке необходимого ПО, надеюсь, что тот, кто захочет — разберется в этом сам, благо все инструкции на сайте имеются, а на хабре сидят люди образованные. Для тех, у кого все же возникли трудности в конце я дам ссылку на форум чакистов.
10 HELLO, WORLD!
Не совсем обычный синтаксис объясняется очень просто: Чак просто не предназначен для работы со стандартным текстовым выводом и то, что заключено в символы >>, по сути, является выводом отладочной информации. Посмотрим на следующий пример:
.5 => float hello; // вещественной переменной hello присваивается значение 5
Обратите внимание на запись вещественных чисел. Такая запись не является обязательной, однако в документации используется именно она. Кстати, вот и первый пример «не совсем обычного» синтаксиса, оператор =>.
Оператор => называется chuck, и выполняет не только функции оператора присваивания. По сути, он выполняет роль соединительного шнура между объектами, а присваивание будет лишь одним из частных случаев «соединения». Например, модель классического синтезатора, записанная с помощью этой конструкции, выглядела бы так: 440 => Oscillator => Envelope => Filter => AudioOut.
Попробуем разобраться в этом вот на таком типичном примере (а заодно разберемся в привязке к временным промежуткам):
SinOsc S => JCRev R => dac;
.2 => S.gain;
440 => S.freq;
.3 => R.mix;
5::second + now => time later;
Попробуйте запустить этот кусок кода. Вы услышите 5 секунд синусоиды частотой 440Hz, пропущенной через ревербератор. Разберем все по порядку. В первой строчке представлена следующая конструкция: инициализируется экземпляр синусоидального осциллятора S, далее, с помощью оператора =>, сигнал направляется в экземпляр ревербератора JCReverb R, а из него сигнал поступает на dac (стандартный вывод звука в ChucK). В строках 2 и 3 мы устанавливаем параметры звука: gain – громкость, mix – степень смешения оригинальной (так называемой, сухой) синусоиды и сигнала обработанного ревербератором. Так же, как и в жизни: мы слышим как прямой, так и отраженный звук. (Ревербератор же имитирует отражения от поверхностей, позволяя добиваться эффекта звучания в каком-либо помещении). В S.freq – задается частота.
А дальше начинается самое интересное. Дело в том, что в Чаке существуют два специальных типов данных для управления синхронизацией и некоторых других нужд. Это тип time и тип dur (duration). Тип time – время абсолютное, а dur – относительное. Строкой
5::second + now => time later;
мы отсчитываем 5 секунд с текущего момента (специальная переменная now (типа time) служит для определения текущего времени) и присваиваем это значение переменной later. Как не сложно догадаться, дальше идет цикл, каждый шаг которого выполняется за строго определенный период времени (здесь в одну секунду). Здесь данный цикл приведен для наглядности привязки к времени, и в реальной ситуации то же самое запишется много проще:
SinOsc S => JCRev R => dac;
.2 => S.gain;
440 => S.freq;
.3 => R.mix;
5::second => now;
Время можно задавать не только в секундах, но и в семплах, миллисекундах, минутах, часах и даже днях, неделях и годах. Тут разработчики явно подошли к предмету с юмором.
Пожалуй, хватит
На этом закончим знакомство с Чаком. Думаю, в качестве введения хватит и этого. Добавлю только, что ChucK не ограничивается лишь простым синтезом. Он позволяет работать с протоколом MIDI, внешними звуковыми файлами и секвенсорами.
Для тех, кто захочет продолжить знакомство, приложу несколько полезных ссылок:
chuck.cs.princeton.edu/doc/language — официальная спецификация языка, крайне рекомендуется к полному прочтению
wiki.cs.princeton.edu/index.php/ChucK — wiki
chuck.cs.princeton.edu/doc/examples — примеры кода. (Также мануал в pdf и множество примеров можно найти в папке с miniAudicle.)
electro-music.com/forum/forum-140.html — немногочисленное, но чуть ли не единственное живое сообщество чакистов.
На русском языке, к сожалению, полезной информации нет вообще.
Компьютерное распознавание и порождение речи
Глава 1. Программирование звука в Windows.
1.2.Интерфейс низкого уровня.
Итак, под низким уровнем мы понимаем элементарный уровень, предоставляемый непосредственно драйвером звукового устройства. Звуковые устройства бывают типа Wave (с ними мы и будем работать) и типа MIDI. Wave-устройства работают с цифровым звуком, представленным в виде последовательности значений (отсчетов) амплитуды, идущих друг за другом с определенной частотой, называемой частотой дискретизации. MIDI-устройства служат для управления музыкальными устройствами, поддерживающими этот формат.
Из чего состоит и как работает звуковая карта, взаимодействуя с программой? В состав звукового адаптера входят аналого-цифровой преобразователь (АЦП), цифро-аналоговый преобразователь(ЦПА), управляющий процессор и микшер.
Звук представляет собой колебания воздуха или другой проводящей среды (например, воды) с частотой от 70 Гц (колебаний в секунду) до 7КГц (7000 колебаний в секунду). Звук поступает на внешнее устройство ввода ( в нашем случае на микрофон) и преобразуется в электромагнитные колебания этой же частоты, которые и передаются на вход звуковой карты, а именно в микшер, который служит для регулировки уровней различных источников, и оттуда в АЦП. АЦП служит для преобразования аналогового (то есть непрерывного), каковым и является наш сигнал, в дискретную (то есть состоящую из отдельных значений) последовательность мгновенных значений амплитуды, называемых отсчетами. Частота, с которой АЦП генерирует отсчеты называется частотой дискретизации. Для представления аналогового сигнала частоты f требуется как минимум частота дискретизации 2*f. Таким образом, для представления звукового сигнала требуется как минимум частота дискретизации 14000 отсчетов в секунду.
Последовательность отсчетов из АЦП управляющим процессором звуковой карты отправляется в память компьютера по внепроцессорной шине ISA или PCI. После заполнения определенной части выделенной для обмена памяти звуковой адаптер подает драйверу сигнал аппаратного прерывания и тот извлекает их и переносит в буфер программы, которая запросила запись звука.
При воспроизведении звука все происходит в обратном порядке. Программа записывает последовательность звуковых отсчетов в буфер, отсылает запрос на запись драйверу звуковой карты, и тот по частям переносит данные из буфера в память компьютера. Управляющий процессор звуковой карты последовательно извлекает отсчеты из памяти компьютера и направляет их в ЦАП, где последовательность дискретных цифровых сигналов преобразуется в непрерывный электрический звуковой сигнал, далее поступающий на наушники или колонки и преобразующийся в колебания воздуха звуковой частоты, то есть в звук.
Каков алгоритм взаимодействия программы со звуковой подсистемой?