Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Прикладное программирование на CC++ с нуля до мультимедийных и сетевых приложений
.pdf
Коммуникации по телефонным линиям 131
комментировать не будем, а остановимся только на принципиальных особенностях.
Итак, при конструировании формы производится обновление телефонной книги, что вполне естественно. При нажатии стрелки в компоненте
ComboBox и выборе имени из списка срабатывает функция-обработчик
ComboBox1Change. Здесь выполняется функция RasGetEntryProperties, которая
получает общие свойства выбранного соединения. Как можно видеть из текста, и здесь функция вызывается дважды — такова специфика задачи. Подобная функция RasGetCredentials также работает со свойствами соединения, но
уже не общими, а определенными пользователем. В результате производится
заполнение полей Edit значениями соответствующих свойств, а сами свойства
сохраняются в соответствующих структурах.
Функция-обработчик нажатия кнопки Button1 — Редакт св-ва вызывает
функцию RasEditPhonebookEntry, которая, как следует из ее названия, занимается изменением свойств выбранного соединения. После редактирования требуется обновить телефонную книгу, что и делается в обработчике. Кнопка
Button2 — Выход закрывает программу, и здесь все ясно.
Button3 — Подключиться выполняет непосредственное подключение к
удаленному компьютеру. Здесь размещается в памяти и заполняется несколько структур, из которых далее извлекаются данные о вызывающем соединении, а после успешного подключения — о вызванном хосте. Производятся
необходимые операции над этими данными функциями RasGetEapUserData è
RasGetProjectionInfo, в частности, определяются и выводятся в информационные поля IP-адреса соединенных машин. Непосредственное же подключение
выполняется функцией RasDial.
Отключение от удаленного компьютера выполняется обработчиком кнопки Button4 — ÎÒÊË. Здесь главным персонажем является функция
RasHangUp, что означает «ПОЛОЖИТЬ ТРУБКУ». Заметим, что предварительно снова анализируется телефонная книга, и отключение производится в
цикле для всех возможных соединений. После этого программа остается в рабочем состоянии, то есть готовой к новому подключению. В связи с этим в
конце обработчика очищаются все текстовые поля и восстанавливаются некоторые значения переменных по умолчанию.
В функции FormCreate устанавливаются начальные параметры доступности ряда кнопок, запрещающие, в частности, некоторые несвоевременные
операции. Кнопка Button5 — Создать соединение инициирует выполнение
функции RasCreatePhonebookEntry, которая как раз и создает новую запись в
телефонной книге. После этого, естественно, требуется выполнить обновление книги.
Ïðè нажатии кнопки Button6 — Обновить вызывается функция
RefreshConnList, обновляющая список соединений. Удаление выбранного соединения из телефонной книги (Button7 — Удалить) производится с помощью
обращения к функции RasDeleteEntry с первым аргументом, содержащим название соединения, и нулевым вторым аргументом, после чего снова обновля
ется список.
-

132 Глава 3. Передача информации в сетях
Теперь на очереди обработка установки отметки в поле CheckBox4. Если
отметка поставлена, то переименовывается кнопка Выбрать файл и становятся доступными элементы Button9 è Edit10. Тем самым открывается возможность выбора файла для передачи. Пересылку файла выполняет обработчик
нажатия кнопки Button8 — Передать. Здесь используется знакомый нам аппарат потоковой транспортировки данных. Следует отметить, что если в предыдущих разделах мы рассмотрели потоковую передачу строки, то здесь производится пересылка целого файла, помещаемого в поток с помощью метода
LoadFromFile.
Далее по тексту главного модуля следует ряд функций-обработчиков некоторых событий, происходящих с потоком. Не будем их пояснять, поскольку
многое здесь уже знакомо, а остальное вполне понятно. В основном эти
функции занимаются выдачей сообщений в информационное поле. Остановимся только на событии NMStrmServ1MSG, которое произойдет на удаленном компьютере при получении файла. Полученные данные копируются из
потока в файл, вызывается диалог сохранения файла, где пользователь присваивает файлу имя и указывает место, где файл будет сохранен.
И последней в тексте описана функция-обработчик нажатия кнопки
Button9 — Выбрать файл. Здесь сначала открывается диалог выбора файла для
отправки — имя файла заносится в поле Edit11. Далее с помощью метода
CreateFile выбранный файл открывается для использования (в данном случае — для помещения в поток). Соответствующая текстовая информация отображается в окне. На этом описание программы будем считать законченным.
Мы отдаем себе отчет в том, что описание это сделано довольно бегло, но надеемся, что читатель, который к этому моменту уже приобрел нужный опыт,
разберется с возможными вопросами самостоятельно.

Глава 4
ЗАПИСЬ, ОБРАБОТКА
И ВОСПРОИЗВЕДЕНИЕ ЗВУКА
Аналоговый и цифровой звук
Как известно еще из школьного курса физики, звук представляет собой
волну, распространяющуюся в среде — газе, жидкости, твердом теле. В зависимости от среды распространения в волне меняются во времени и в пространстве давление газа, механические напряжения или другие характеристики. Человеческое (и не только человеческое) ухо воспринимает колебания
плотности воздуха, которые преобразуются в механические колебания барабанной перепонки. Изменения указанных характеристик, будь то давление
воздуха или смещение перепонки относительно некоторого положения, происходят непрерывно. Имеется в виду то, что параметры пробегают все свои
возможные значения последовательно во времени, так сказать, без скачков.
Такие процессы принято называть непрерывными, в контексте информационно-компьютерной тематики — аналоговыми. В противоположность этому
процессы, в которых некая величина изменяется скачкообразно от одного
фиксированного значения к другому, можно назвать дискретными. Если дискретные состояния характеризуются числовыми значениями, то говорят о
цифровом представлении процесса. Эта же терминология применяется к сигналам и формам представления информации.
Итак, звуковая волна в воздухе и колебания барабанной перепонки —
аналоговые процессы. Звук, воспринимаемый микрофоном, в конечном итоге
преобразуется в непрерывно изменяющийся во времени электрический ток в
цепи микрофона. Ток в данном случае также является аналоговым процессом
или сигналом. Но даже далекие от компьютерной тематики люди знают или,
по крайней мере, слышали, что вычислительная техника оперирует с информацией, представляемой в цифровой форме. По этой причине первое, с чем
мы должны разобраться, это то, как происходит преобразование аналогового
звукового сигнала в цифровой, который может обрабатываться компьютером. Процесс
преобразования любого сигнала из аналогового представления в цифровое называется
оцифровкой, в данном случае — оцифровкой звука (рис. 4.1).
Ðèñ. 4.1

134 Глава 4. Запись, обработка и воспроизведение звука
Смысл оцифровки легче всего пояснить графически, как это представлено на приведенном выше рисунке. Непрерывная кривая в левой части рисунка, отображающая зависимость некоторой физической величины от времени
(например, тока в цепи микрофона), заменяется последовательностью отрезков в правой части рисунка, сохраняющих постоянные значения на протяжении небольших интервалов времени и скачкообразно меняющих значение
при переходе от одного интервала к следующему. Разумеется, последовательность отрезков только приблизительно описывает гладкую кривую, и это фундаментальное обстоятельство: аналого-цифровое преобразование, как и обратное цифроаналоговое преобразование — это преобразование приближенное.
Возможно, этот факт имеет некоторый негативный оттенок, но зато мы переходим в некое новое качество. Для описания непрерывного процесса необходимо бесконечное множество значений, например, силы тока. Для цифрового
описания процесса необходимо конечное число значений.
Интуитивно ясно, что чем короче интервалы постоянства цифровой величины, приближенно представляющей непрерывную кривую, тем точнее выполняется преобразование. Величина, характеризующая точность воспроизведения исходной кривой при ее оцифровке, называется частотой дискретизации. Размерность этой характеристики — обратное время. Следовательно,
единицей измерения здесь могут служить герцы (Гц), килогерцы (кГц) и так
далее. Таким образом, если оцифровка производится с частотой дискретизации, допустим, 800 Гц, то каждую восьмисотую долю секунды производится
определение величины сигнала. Очевидно, что чем выше частота дискретизации, тем большее количество памяти потребуется для запоминания оцифрованного сигнала заданной длительности: за высокое качество приходится расплачиваться дополнительным расходованием памяти.
Цифровое представление информации предполагает, что в любой временной точке, в которой произведена оцифровка, величина сигнала запоминается
с некоторой ошибкой — сохраняется значение, ближайшее к измеренному из
диапазона значений, представленных набором числовых данных. Этот диапазон значений, разумеется, конечен. В цифровой технике набор возможных
значений оцифрованной величины определяется параметром, называемым
разрядностью оцифровки. Разрядность измеряется в битах или байтах. Так,
например, разрядность оцифровки 8 битов (1 байт) означает, что для представления измеренной величины в нашем распоряжении имеется 2
8
= 256 различных значений. Диапазон возможных изменений аналоговой величины разбивается на 255, как правило, одинаковых отрезков, и измеренная величина
округляется до ближайшего значения из набора от 0 до 255. Чем больше разрядность оцифровки, тем более точно она выполняется и тем больше памяти
расходуется для запоминания сигнала.
Применительно к аналого-цифровому преобразованию звука используется еще одна характеристика — количество каналов. При оцифровке монофонического сигнала этот параметр, естественно, равен 1. Для стереозвука он
равен 2, для квадро — 4.
Комбинация (произведение) частоты дискретизации, разрядности оцифровки и количества каналов задает важнейшую характеристику — интенсив
-

Аналоговый и цифровой звук 135
ность потока цифровых данных. Из английского языка пришло новое, в какой-то степени жаргонное, слово — битрайт (bit rate), как раз и определяющее
интенсивность. Количественно битрайт равен произведению указанных параметров, а измеряется он в байтах в секунду. Таким образом, способность аппаратных или программных средств компьютера «переваривать» (преобразовывать, передавать) поток данных определяется битрайтом.
С какими же значениями битрайта нам приходится иметь дело, когда мы
работаем со звуком? Прежде всего, отметим, что «средний человек» способен
воспринимать звуковые волны в диапазоне от нескольких герц до, примерно,
20 килогерц. Самые низкочастотные колебания, которые не только не воспринимаются человеческим ухом, но и представляют определенную угрозу
для здоровья, называются инфразвуком. Высокочастотные волны, которые
также не слышит человек, лежат в ультразвуковом диапазоне. Хотя указанная
цифра в 20 килогерц вполне реальна, высококачественная звуковая цифровая
техника обеспечивает перекрытие воспринимаемого диапазона частот с некоторым запасом.
Математика и физика дают ответ на вопрос о том, как следует выбирать
частоту дискретизации. Ответ содержится в утверждении, которое известно
как теорема Котельникова. Эта теорема, применительно к нашему рассмотрению, говорит примерно следующее: для качественной оцифровки звукового
сигнала необходимо, чтобы частота отсчетов вдвое превышала максимальную
частоту колебаний, присутствующих в сигнале. Поскольку мы считаем, что
верхняя граница диапазона частот звука, воспринимаемого человеком, составляет примерно 20 кГц, частота дискретизации, обеспечивающая хорошее качество звука, должна составлять примерно 40 кГц.
Разрядность оцифровки звука обычно выбирается в пределах от 8 до
24 битов. Восьмиразрядное кодирование соответствует весьма низкому качеству. При передаче голоса такое качество считается приемлемым, но, например, для оцифровки музыки один байт явно недостаточен. Трехбайтовое кодирование используется только в исключительных случаях. Оно, конечно,
обеспечивает высочайшее качество, но, как правило, явно избыточно. Будем
считать, что оптимальная разрядность оцифровки составляет 16 битов, отметив также, что используются системы с разрядностью, не равной целому числу байтов — например 12 разрядов. Ну и, наконец, если речь идет о записи и
воспроизведении стереозвука, то, перемножив представленные параметры, мы
приходим к оценке битрайта для работы с качественным звуком. Величина
интенсивности потока данных составляет 150 кбайт/с. Теперь, воспользовавшись понятием битрайт, можно оценивать размер файла, в который будет записан некоторый звуковой фрагмент с заданным уровнем качества. Так, например, для сохранения в файле музыкального произведения с высоким качеством стереофонического звучания длительностью 2 минуты размер этого
файла составит примерно 10 мегабайт — весьма значительное число!
Приведенные простые расчеты соответствуют созданию файла именно с
оцифровкой по указанной методике, называемой импульсно-кодовой модуляцией (РСМ — соответствующая английская аббревиатура). Файлы со звуковыми данными такого сорта обычно имеют расширение .wav (от английского

136 Глава 4. Запись, обработка и воспроизведение звука
wave — волна) и называются волновыми. Мы уже убедились, что wav-файлы
очень расточительно обходятся с дисковой памятью компьютера. По этой
причине волновые файлы, хотя и находят некоторое применение, серьезно
для хранения аудиоданных не используются. Дело в том, что существуют методы эффективного сжатия звуковых файлов с незначительной потерей качества или даже вообще без таковой. Компрессия файлов, в зависимости от используемой методики, приводит к уменьшению размера звукового файла как
минимум в несколько раз. Так, наиболее популярный в настоящее время формат mp3 сжимает звуковые данные в 5—10 раз. Далее в нашей книге мы поговорим о сжатии звуковых (и не только звуковых) файлов весьма подробно, а
теперь перейдем к рассмотрению аппаратных средств работы со звуком на
персональном компьютере.
Звуковое оснащение компьютера
Основную работу при записи и воспроизведении звука на персональном
компьютере выполняет специальное электронное устройство, называемое звуковой платой или звуковой картой. Это устройство занимается, в первую очередь, аналого-цифровым и цифроаналоговым преобразованием, то есть одновременно является АЦП и ЦАП — два в одном. Конструктивно звуковая карта может быть интегрирована в материнскую плату компьютера или
представлять собой отдельный модуль, который подключается к слоту расширения материнской платы. Второй вариант предпочтительнее с точки зрения
качества звукового устройства. Интегрированные платы, как правило, высоким качеством не отличаются.
Различные типы устройств могут быть снабжены и различными наборами
входов и выходов. Нас будут интересовать микрофонный вход, обычно маркируемый как Mic In, и выход для головных телефонов (наушников) или звуковых колонок, маркируемый как Speaker. Это, естественно, аналоговые входы
и выходы. Цифровая часть платы подключена к системной шине. Микрофонный вход достаточно чувствителен для восприятия слабых сигналов даже для
недорогих устройств, а вот выходная мощность звуковой платы не велика —
для воспроизведения звука обычно требуется усилитель мощности.
В зависимости от типа звукового адаптера его возможности могут быть
самыми разнообразными. Ознакомиться с различными параметрами вашей
аудиоплаты и изменить ее настройки можно через свойства регулятора громкости, обычно выведенного на панель задач (трэй) рабочего стола Windows,
или через разделы Çâóê è Мультимедиа на странице Настройки Панели управ-
ления. Здесь можно обнаружить возможности, например, раздельной регулировки громкости в каналах, включение специальных эффектов типа эхо или
объемного звука и многое другое. Некоторые звуковые карты имеют аппаратный регулятор громкости. Для других регулировка осуществляется программно. Все особенности отдельных устройств описать здесь просто невозможно,
но одно свойство упомянуть необходимо. Речь идет о возможности работы
платы в дуплексном или полудуплексном режиме. Эти термины пришли из

Звуковое оснащение компьютера 137
практики радиосвязи. Связные радиостанции, поддерживающие дуплексный
(точнее — полнодуплексный) режим, могут одновременно работать как на
прием, так и на передачу. В полудуплексном режиме станция в данный момент либо принимает сообщение, либо передает. То же самое имеет место и
для звуковых плат. Еще раз подчеркнем, что дуплексные устройства работают
в обоих направлениях именно синхронно: аналого-цифровое и цифроаналоговое преобразование сигналов производятся независимо друг от друга и не мешают друг другу. Далее в книге мы увидим, что наличие полнодуплексного
режима принципиально важно, например, для систем IP-телефонии.
Некоторые характеристики звуковой карты, установленной на вашем
компьютере,
можно
установить с помощью специальной программы диагностики аудиоустройств. Программа разработана А. В. Фроловым и представляет
собой исполняемый файл drvlist.exe. Более точно следует считать, что программа производит диагностику драйверов соответствующих устройств. Сама
программа будет объектом нашего внимания позднее, когда мы расскажем о
ее структуре, а пока посмотрим на результаты работы программы, которые
выводятся в текстовый файл drvlist.txt, листинг которого представлен ниже.
* ================================= *
* DRVLIST, (C) Frolov A.V., 1994 *
* ================================= *
ESS AudioDrive Playback (9C00), v. 406, wMid=46, wPid=46, wChannels=2
11025 КГц, моно, 8 бит
11025 КГц, стерео, 8 бит
11025 КГц, моно, 16 бит
11025 КГц, стерео, 16 бит
22050 КГц, моно, 8 бит
22050 КГц, стерео, 8 бит
22050 КГц, моно, 16 бит
22050 КГц, стерео, 16 бит
44100 КГц, моно, 8 бит
44100 КГц, стерео, 8 бит
44100 КГц, моно, 16 бит
44100 КГц, стерео, 16 бит
Регулировка громкости
Раздельная регулировка громкости
Игровое устройство, v. 400, wMid=1, wPid=89, wChannels=1
Voice Modem Wave #00 Line, v. 400, wMid=1, wPid=81, wChannels=1
Как можно видеть из этого листинга, программа диагностики обнаружила
на компьютере драйвер звуковой платы из семейства ESS, обеспечивающей
двухканальную (стерео) обработку звука. Далее представлен список режимов
записи и воспроизведения звука. Низшее качество соответствует частоте дискретизации 11 025 Гц (в листинге указано кГц — это «опечатка») и разрядности оцифровки 8 бит. Высшее качество — 44 100 Гц и 16 бит соответственно.
На самом деле допустима работа и с другими сочетаниями разрядности и час
тоты, но будем считать остальные наборы «нештатными». Среди возможно-
-

138 Глава 4. Запись, обработка и воспроизведение звука
стей звуковой платы отмечены регулировка громкости и раздельная регулировка по каналам. Интересно отметить, что диагностирующая программа относит к звуковым аппаратным средствам и игровые устройства (джойстики) и
голосовые модемы, что и указано в листинге.
Тот факт, что звуковая карта является, по сути, аналого-цифровым преобразователем, находит для нее интересное применение не совсем по назначению. Входной сигнал, оцифрованный платой, может быть представлен графически на экране монитора в виде зависимости входного напряжения от времени. Таким образом, компьютер, снабженный звуковой картой, превращается в
цифровой осциллограф. Эта возможность была подмечена достаточно давно.
В результате появились программы, реализующие такой виртуальный осциллограф.
Мы представляем здесь условно-бесплатную программу «Осциллограф»,
разработанную В. А. Мещеряковым. В условно-бесплатной программе заблокированы некоторые полезные режимы работы осциллографа, в связи с чем
на следующем рисунке представлена «визитная карточка», с помощью которой можно связаться с разработчиком и приобрести коммерческую полнофункциональную версию (рис. 4.2).
Ðèñ. 4.2
Теперь инсталлируем программу, подключим к звуковой карте микрофон
и запустим приложение. Скажите или спойте что-нибудь в микрофон и посмотрите на экран программы. Вы увидите нечто похожее на то, что изображено ниже. Это — осциллограмма звукового сигнала, полученного со входа
звуковой платы, оцифрованного ею и представленного в виде временной зависимости (рис. 4.3).
Поэкспериментировать с сигналом очень познавательно. Попробуйте поменять тон звука, который вы передаете в микрофон, громкость звука. Графическое отображение сигнала очень показательно.
Заметим, что, поскольку звуковое устройство, как правило, двухканальное
(стереофоническое), наш виртуальный осциллограф можно сделать двулучевым. При этом программа может быть настроена на отображение так называе
мых фигур Лиссажу, когда один сигнал развертывается по горизонтальной
-

Звуковое оснащение компьютера 139
Ðèñ. 4.3
оси, а другой — по вертикальной. Можно настраивать чувствительность входов, частоту обновления экрана и ряд других характеристик. Осциллограмму
можно сохранить в графическом файле для дальнейшей демонстрации, например, в презентациях. Напомним, однако, что большинство настроек доступно только в коммерческой версии.
В состав звукового оснащения персонального компьютера принято вклю-
дисковод компакт-диска (CD ROM drive). В настоящее время эти приво-
чать
ды могут быть действительно устройствами только для чтения либо записывающими устройствами. В свою очередь, последние, в зависимости от типа
носителя, могут выполнять запись или запись и перезапись диска — CD-R
или CD-RW. Основной технической характеристикой привода является скорость работы. Она измеряется в единицах кратности, то есть в скорости относительно некоторой базовой производительности. Так, например, ваш
CD-ROM может быть 48-скоростным или 16-скоростным приводом. Казалось бы, чем больше кратность скорости, тем лучше. Это, конечно, в основном так, но опыт показывает, что высокоскоростные устройства могут не
справляться с обработкой некоторых старых или не очень качественно изготовленных компакт-дисков.
Для работы со звуком, естественно, необходимы средства воспроизведения. Таковыми могут быть специализированные компьютерные акустические
колонки или головные телефоны (наушники). Разумеется, выход звуковой
карты через усилитель может быть подключен и к обычным колонкам. Отме
тим, что для работы с системами IP-телефонии, о которых мы будем гово
-
-

140 Глава 4. Запись, обработка и воспроизведение звука
рить, предпочтительнее использовать наушники. При этом исключается возникновение эффекта эха, обусловленного громко работающими колонками.
Что касается источников звука, то они могут быть самыми разнообразными —
бытовые магнитофоны и проигрыватели, радио и телевизионные приемники.
Для нас наибольший интерес представляет запись звука с микрофона. За редкими исключениями для подключения к входу звуковой платы годится любой
микрофон. Наиболее удобным в использовании следует считать микрофон,
объединенный с головными телефонами, — так называемая гарнитура, хотя
нужно иметь в виду, что качество такого микрофона не высокое. Для записи
же стереофонического звука потребуется, естественно, два микрофона.
После физического подключения аппаратных средств мультимедиа и установки
граммные установки. Во-первых, имеет смысл установить весь комплекс программ мультимедиа, входящий в стандартный дистрибутив Windows. Если вы
этого еще не сделали, то откройте Панель управления, активируйте Установку
и удаление программ, выберите вкладку Установка Windows и поставьте флажок
в пункте Мультимедиа. После перезагрузки системы цель будет достигнута.
Мультимедиа, вкладку Аудио. Здесь можно настроить различные параметры
работы со звуком. Не будем вдаваться в подробности настроек. Во-первых, их
довольно много, во-вторых, смысл и назначение настроек вполне понятен, а
самое главное заключается в том, что возможные опции определяются типом
звуковой карты, установленной на компьютере, и могут сильно различаться.
Для некоторых карт, например, возможно задать увеличение чувствительности по микрофонному входу. В других случаях можно установить так называемый режим объемного звука. Одним словом, рекомендуем поподробнее разобраться с этими настройками.
необходимых драйверов можно сделать некоторые первичные про-
Теперь имеет смысл в той же Панели управления активировать значок
Основы программирования звукозаписи
Перед началом непосредственного программирования работ со звуком
необходимо четко представлять всю «идеологию» записи и воспроизведения
аудио. В зависимости от инструментальных средств, используемых для программирования, существует несколько подходов к разработке приложений.
Здесь мы рассмотрим подход, основанный на применении функций системы
Windows API — набора инструментов разнообразного назначения от корпорации Microsoft, ориентированных на разработку 32-разрядных приложений.
В этой системе сосредоточено большое количество процедур работы с мультимедиа. Информацию о функциях Windows API можно получить непосредственно из Builder'а, вызвав справку (Help) из главного меню — раздел Windows
SDK. Более подробное описание и примеры использования находятся на
диске MSDN, свободно распространяемом корпорацией Microsoft. Разрабатывая программы, мы будем следовать рекомендациям, предлагаемым
А. В. Фроловым, которые были обнаружены в одном из html-документов в
Интернете.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
