Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет для Delphi-программиста" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2005 → | ||||||
1
|
2
|
|||||
---|---|---|---|---|---|---|
3
|
4
|
5
|
6
|
8
|
9
|
|
10
|
11
|
12
|
14
|
15
|
16
|
|
17
|
18
|
20
|
21
|
22
|
23
|
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
Статистика
-4 за неделю
Рассылка сайта Delphi coding Рассылка сайта Delphi coding
Информационный Канал Subscribe.Ru |
Рассылка сайта Delphi CodingВыпуск от 07 Октября 2005 года. Noil.pri.eeПриглашаються авторы статей для сотрудничества с сайтом. Подробности о том как добавить свою статью на сервер читайте здесь
На сайте Delphi Coding собрано большое количество статей, книг и различной компьютерной документации. В рассылке вы сможете увидеть последнии поступления на сайте, а также более подробно ознакомиться с некоторыми материалами.
Желаем Вам приятного чтения. Архивы статей по различным тематикам Delphi
Коллекции статей
Последнии файлыФизикум-0 Версия 1.2.07/DN(пробная версия) в категории Программы от Noil-Team Программа "Физикум - 0" предназначалась для ускорения решения расчётных задач по физике за курс средней школы. JwbBalloon в категории Оформление "Пузыри" - всплывающие подсказки округлой формы, получившие своё распространение большей частью в Windows XP. Придают программе изящный вид. Gradient в категории Графика Градиент, предоставляющий большие возможности: несколько десятков вариантов
перетекания, эффекты, превращения и всё всё всё, чтобы сделать красивую программу. Easy Graph в категории Графика Мощная система для построения графиков функций и вывода разнообразных математических схем. DCPCrypt в категории Математика Один из известный пакетов для шифровки и расшифровки данных. Содержит более 100 алгоритмов шифрования. Domino в категории Оформление Компонент, имитирующий фишки домино. CollapsePanel в категории Улучшенные стандартные Отличный компонент. Каждый знаком с панельками, которые сворачиваются и разворачиваются. В отличие от подобных "групп" в Windows XP, CollapsePanel имеют сравнительно простой внешний вид, но здорово украсят любую программу. cxCPU в категории Невизуальные Библиотека, позволяющая узнать информацию о процессоре. ButtonComps в категории Улучшенные стандартные 5 симпатичных кнопочек с возможностью полного изменения внешнего вида. Очень красивые! Поддерживается 2,3,4,5 версии Delphi. Advanced Alert Window. в категории Оформление Всплывающие окна с напоминаниями (оповещениями) в стиле Outlook 2003. СтатьяДвигатель твоей колонкиТо, что звук в компе представлен цифрой это понятно. То, что звуковая это аналогово-цифровой преобразователь, тоже понятно. А вот ты когда-нибудь задумывался, как воспроизводится звук на программном уровне? Что делают программы для того, чтобы колонки запели? От используемого движка зависят возможности программы и уже по ним можно понять, насколько она будет хороша. (C) www.vr-online.ru Звуковые карты бывают разные и возможности у них отличаются очень сильно. Так ESS может с приемлемым качеством воспроизводить и записывать звук, а Creative Sound Blaster Live 256 уже поддерживает полноценный четырех канальный звук с множеством эффектов, фильтров и 3D. Если написать прогу, которая будет воспроизводить звук через ESS, то она будет работать практически везде. Но если задействовать уникальные возможности определенного железа то где гарантия, что она будет работать и с другой железкой? Конечно же, гарантии нет, и проблем может быть по самый дисковод :). Именно поэтому должна быть какая-то библиотека, которая позволит использовать максимальное количество возможностей различных звуковух. Свято место пусто не бывает. Раз есть спрос, значит, будет и предложение. Такие библиотеки существуют, и мы сейчас рассмотрим наиболее распространенные. Посмотрим на их преимущества и недостатки, а потом что-нибудь накодим и разберем по косточкам, ощупаем органы и пустим немножко крови :). Multimedia System Так уж получилось, что две наиболее распространенные технологии воспроизведения звука предоставляет нам Microsoft. Первая - Multimedia System (в народе просто MMSystem) появилась еще во времена 16-ти битных версий Windows. Ее появление основывалось на стремлении корпорации M$ упростить жизнь программистов и создать очень удобную и универсальную систему, с помощью которой можно было бы по простетски записывать и воспроизводить звуковые данные на любой железке. Библиотека функций MMSystem со временем совершенствовалась, появились новые сильные возможности, которые предоставляла 32-я версия Windows, новые примочки по фильтрации и преобразованию данных. Когда я первый раз познакомился со звуковой системой Windows, то поразился ее простоте и мощности. Для работы необходимо выполнить всего лишь следующие шаги: - Открыть нужное устройство (звуковых бывает несколько и у тебя есть выбор); - Запросить возможности, которые предоставляет звуковая; - Подготовить блоки данных для воспроизведения или записи; - По-очереди кидать блоки драйверу, а он уже все сделает сам. Простота и чудеса, но недостатков у этой библиотеки было не меньше, чем преимуществ. Например, если уже воспроизводиться какой-то саунд, то запустить параллельно что-то еще невозможно. Чтобы одновременно воспроизводить несколько потоков, нужно пользоваться сложными функциями микширования. (C) www.vr-online.ru Если звуковая не поддерживает какой-то возможности, то ты ее просто теряешь и не можешь воспользоваться. В этом случае можно забить на это, или писать программную реализацию нужного эффекта или фильтра. Для работы с данными библиотека использует кодеки. Гарантированная работа достигается только с форматами данных PCM (Pulse Code Modulation) без сжатия или сжатие примитивными алгоритмами, которые убивают качество звука (соответствующие кодеки уже устанавливаются в систему при инсталле). Я бы за такие алгоритмы сжатия звука вырвал ноги создателям :). Уж лучше бы вообще ничего не делали. Чтобы реализовать поддержку MP3 необходимо искать где-нибудь хороший кодек, устанавливать его на комп и потом сложными манипуляциями превращать данные в понятный системе формат. Страшно? Без этого вообще придется все делать вручную :). Система MMSystem удобна, если в программе нужно записать небольшой поток данных или когда нужно воспроизводить простые звуки, как в офисных приложениях. А вот игровая индустрия была в шоке, потому что создать нормальное озвучивание фантастическому или мистическому миру нереально. Помню, как еще 3-4 года назад, на игровом диске большую часть занимал звук. Были игры, на которых вообще первый трек был в виде данных, а остальное это музыка в формате CD Audio. И все это благодаря отсутствию хорошего кодека MP3 или другого формата с подобными возможностями. А отсутствие поддержки 3D звука вообще ставит жирный вопрос над возможностью создания нормальной игровой обстановки. Библиотека MMSystem давно не обновлялась и с некоторыми звуковыми работает некорректно. Например, я не смог изменить программно громкость отдельного канала на своей звуковой, хотя она точно это поддерживает. Глядя на все недостатки системы MMSystem, приходим к выводу, что лучше бы ее не было. Хотя зря мы так жестоко, ведь в большинстве офисных программ нужно простейшее озвучивание каких-то действий и здесь MMSystem подходит очень хорошо. DirectSound Библиотека DirectSound избавляет нас от недостатков, присущих MMSystem. Последняя версия предоставляет множество возможностей типа полного 3D звука, чего и близко нет в MMSystem. Когда разрабатывалась Multimedia System для окон, то MS сделала так, чтобы можно было работать с максимальным количеством оборудования, и при этом максимально использовались возможности железа. В DirectX (и, конечно же, в Direct Sound) звуковая система может работать на двух уровнях: - HAL (Hardware Abstraction Layer или уровень абстракции оборудования) позволяет абстрагироваться от звуковой и вне зависимости от железки использовать все навороченные возможности. Например, драйвер встроенной в чипсет звуковухи может требовать одни функции для создания какого-то эффекта, а драйвер звуковой от Creative другие функции. Благодаря Direct Sound нам параллельны эти функции. Достаточно использовать API из DirectSound, а он уже сам заставит звук литься так, как надо. - HEL (Hardware Emulation Layer или уровень эмуляции оборудования) позволяет эмулировать возможности, которые аппаратно не поддерживаются железом. Таким образом, в не зависимости от железки, которая установлена на компьютере пользователя, прога будет работать корректно. Эмуляция – это достаточно образная вещь. Конечно же, если звуковая не поддерживает стереозвучание, то его и не будет. Просто программа будет думать, что оно есть и сможет выпендриваться на два канала, хотя реально из колонок будет идти моно звук. Но в некоторых случаях эмуляция позволяет заставить железо работать так, как оно не умеет. Например, если звуковая не поддерживает аппаратное MIDI, то DirectSound позволяет сделать это программно. Правда такая эмуляция достигается достаточно большой нагрузкой на проц. А кто говорил, что все прекрасно? Нечего использовать звук встроенные в чипсет, простой Creative сейчас стоит не так уж и дорого, а по возможностям превосходит в несколько раз. Если запустить программу диагностики DirectX, то на закладке «Музыка» можно увидеть, какие возможности поддерживаются аппаратно, а какие реализуются эмуляцией. Если в MMSystem можно одновременно воспроизводить только один поток данных, а для двоих нужно микшировать, то в DirectSound все происходит автоматом. Можно смело запускать параллельно хоть несколько потоков данных, и все они будут воспроизводиться без проблем. При этом они работают независимо и ими можно управлять по отдельности, выставляя свои параметры громкости, скорости воспроизведения, 3D эффекты. Чтобы не заморачиваться с кодингом Direct Sound, для простых программ можно поступить более умно – использовать через COM компоненту Media Player. Он работает как раз через Direct Sound и достаточно наворочен. Проинсталлировав плеер как ActiveX, достаточно просто будет управлять не только звуком, но и одновременно видео. Для DirectSound намного больше кодеков и если MediaPlayer может воспроизвести какой-то формат, то и ты сможешь программно реализовать это без особого напряга. Это уже не просто набор API, это больше плеер, как MS Media Player, хотя некоторые упорно пытаются превратить это в отдельную технологию. Да, здесь есть свой алгоритм и свои великолепные возможности, но для разработчика под окна практически ничего нет (под Apple мне еще не приходилось кодить :(((). Но так как программист может получить возможность управлять плеером и использовать его функции по воспроизведению звука и видео в своих программах через COM, то я обязан вспомнить о нем в своем обзоре. Среди программеров QuickTime не так сильно популярен, но даже среди российских разработок есть энциклопедии и даже игры, которые выводят звук именно через нее. Зачем использовать такую экзотику? Во-первых – технология, используемая в QuickTime достаточно проста в использовании, мало требовательна к ресурсам и намного лучше реализовано поточное воспроизведение (по крайней мере на мой взгляд). Именно благодаря хорошей поточности, QuickTime постепенно завоевывает хорошее признание как Интернет плеер. Почему программеры обращают внимание на такую экзотику? Самый главный плюс это то, что в формате QuickTime вместе с аудио или видео данными сохраняется тайм-код (информация о времени). Благодаря этому, очень просто найти нужный фрагмент и синхронизировать аудио с видео потоком, что необходимо при написании, например, демок. Конечно же, под родную платформу Apple у QuickTime версии Pro больше возможностей, но и в окнах их не мало. Bass Bass Sound System – это всего одна dll библиотека, которая ничего особо нового в мир звука не привносит, но ее используют большинство демомейкеров. Именно поэтому она обязательно должна была появиться в нашем обзоре. К тому же библиотека является некоммерческой и открытой для всеобщего использования. Так почему же bass.dll так популярна? Это связано с маленьким размером библиотеки и богатыми возможностями. Да, новых возможностей нет, но зато старые реализованы на столько великолепно, что юзать их приятно. Смотри сам, при размере менее 100кб мы получаем возможность воспроизводить следующие форматы музыкальных файлов: mp3, ogg, mod, xm и т.д. Остальные технологи занимают намного больше места, да и не умеют воспроизводить mod и xm. Ну а чтобы заставить mmsystem воспроизвести любой из этих форматов, нужно неплохо попотеть и никакой дезодорант тут не поможет :). Помимо маленького размера и больших возможностей, Bass Sound System обладает высокой производительностью и малой нагрузкой на систему. Это становится уже законом, когда некоммерческие проекты работают лучше своих собратьев. Чтобы не говорили, а Media Player и Quick Time все же коммерческие. Пусть они зарабатывают не на продаже лицензии, но все же направлены на получение прибыли от продажи саунда через Интернет. Мои исследования показали, что Bass только загружает звуковые данные и подготавливает их к воспроизведению, а в качестве несущей используется DirectX, и Интернет это подтверждает. А самое главное, что для нормальной работы достаточно всего лишь 3-й версии DX. Поэтому Bass Sound System можно считать надстройкой над Direct Sound, расширяющей ее возможности. И я бы сказал очень удачной надстройкой. Старая версия DX и радует и смущает. Радость от того, что не надо заставлять пользователя обновлять DirectX, если у него установлена допотопная версия. А вот смущает то, что в новых версиях появилось достаточно много нового и bass просто игнорирует это. Практика По программированию MMSystem я уже исписал достаточно много бумаги. По Direct Sound в инете тоже не мало доков. QuickTime прост, дальше некуда. Поэтому нами принято решение показать пример работы с bass. Вникай внимательно, потому что в Интернете слишком мало информации, а библиотека полезная и с ее помощью легко создать плеер, по возможностям не уступающий WinAMP-у. Итак, создаем новые проект в Delphi. Сразу же помести в одну директорию с проектом файлы bass.dll и bass.pas. В исходном коде проекта в раздел uses добавь подключение модуля bass, чтобы стали доступны звуковые функции. На форме пока разместим компоненты OpenDialog и кнопку. По нажатию кнопки пишем код из листинга 1. Обрати внимание, что нет функций загрузки библиотеки. Сразу после отображения окна выбора файла, мы проверяем версию загруженной библиотеки. Это делается функцией BASS_GetVersion, которая возвращает версию в виде длинного целого числа. Нас интересует версия 0.8, поэтому результат сравниваем с числом, в котором верхний байт указывает на версию 0, а нижний на 8. Зачем проверять версию, если ты точно знаешь, что должна быть 0.8? Проверка необходима не только для версии, но и чтобы убедиться в доступности библиотеки. Если функция вернет нем не правильное значение, то возможно, что bass.dll недоступен или просто поврежден. После этого инициализируем систему с помощью функции BASS_Init, у которой три параметра: - Устройство которое надо использовать. Если указать -1, то будет использоваться устройство по умолчанию; - Частота дискретизации воспроизводимого звука. Не будем стесняться, а запросим качество CD, т.е. 44100; - Флаги воспроизведения. Тут можно запросить различные 3D эффекты, но не будем усложнять пока себе жизни; - Указатель на окно. На старт Теперь запускаем систему Bass функцией BASS_Start. После этого можно открывать файл и воспроизводить его. В данном случае для открытия используется функция BASS_StreamCreateFile. С ее помощью открываются WAV и MP3 файлы. Если нужны файлы форматов XM, MOD, S3M, IT или MTM, то файл загружается с помощью BASS_MusicLoad. У функции BASS_StreamCreateFile пять параметров: - Если первый параметр равен TRUE, то надо загрузить звук из памяти, иначе из файла; - Имя файла или указатель на память, в зависимости от первого параметра; - Смещение от начала; - Длина; - Флаги. Здесь можно указать BASS_SAMPLE_3D и/или BASS_MP3_LOWQ. Результатом работы функции будет поток, содержащий данные, готовые к воспроизведению. Чтобы начать воспроизведение, нужно вызвать функцию BASS_StreamPlay и указать в качестве параметров: указатель на поток с данными, необходим ли сброс буфера и флаги. Если планируется делать паузу, то в качестве второго параметра обязательно указывай FALSE. Если будет TRUE, то после остановки буфер сброситься и воспроизведение может начаться только с начала. Для остановки воспроизведения можно использовать функцию BASS_Stop. Поиграли и хватит После воспроизведения не забываем освобождать выделенную память. В нашем примере создан поток со звуковыми данными, и его надо освободить функцией BASS_StreamFree, а также освободить библиотеку функцией BASS_Free: BASS_StreamFree(Stream); BASS_Free; Освобождение любой выделенной памяти является не только хорошим тоном в программировании, но и показывает правильную работу мозгов. Проблема только в том, чтобы правильно определить место освобождения, иначе можно прервать звук на самом интересном месте. Данный пример прост, но показывает основы, которые помогут вам в дальнейшем изучении библиотеки. Возможностей достаточно много и в одной статье описать их невозможно. Итог Можно сказать, что MMSystem и DirectSound – это низкоуровневые библиотеки воспроизведения звука, с помощью которых мы получаем практически полный контроль над потоком данных. Quick Time и Bass это высокий уровень или надстройки, которые расширяют возможности обработки звука и упрощают жизнь программера, но при этом в некоторых случаях сковывают руки и не дают сделать то, что хочется. Если для программы достаточно надстроек, то лучше использовать их и не усложнять себе жизнь. Лично я для воспроизведения чаще всего использую простые функции MMSystem. Но если нужно что-то посерьезнее, то не стоит заморачиваться с Direct Sound, а можно использовать bass. Исходник Листинг
Автор:Horrific aka Фленов Михаил Опубликовал на сайте: Delist Посетите наши форумы:Delphi, Kylix, PascalDelphi - общие вопросы | WinAPI | Работа с сетью | Delphi и Multimedia | Базы данных | Работа с oc Windows | Курилка | Паскаль | Delphi.Net | Kylix Языки программирования C++ | Java | .NET | Ассемблер Web Технологии Php | Perl | Asp | Html Програмное обеспечение Софт для Windows | Oc Windows | Linux | BSD Разное Железо | Взлом и защита | Периферия | Внекомпьютерная жизнь | Объявления Дружественные рассылкиНа этом позвольте проститься с Вами и пожелать удачи. Свои замечания и предложения отправляйте на е-майл, указанный ниже. С уважением, Виталий (NoilTeam@gmail.com) |
Subscribe.Ru
Поддержка подписчиков Другие рассылки этой тематики Другие рассылки этого автора |
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphicoding Архив рассылки |
Отписаться
Вспомнить пароль |
В избранное | ||