Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации

<Содержание

Глава 1: Введение в API Звука Java

Цели проекта

API Звука Java является низкоуровневым API для осуществления и управления входом и выходом звуковых носителей, и включая аудио и включая Музыкальный инструмент Цифровой Интерфейс (MIDI) данные. API Звука Java обеспечивает явное управление возможностями, обычно требуемыми для звукового входа и выхода в платформе, которая способствует расширяемости и гибкости.

Кто API Звука Java Для?

Поскольку звук является так основным принципом, API Звука Java выполняет потребности широкого диапазона разработчиков приложений. Области возможного применения включают:

Как Java Звучит, API Касаются Других Интерфейсов?

API Звука Java обеспечивает самый низкий уровень звуковой поддержки на платформе Java. Это предоставляет прикладным программам большое количество управления звуковыми операциями, и это расширяемо. Например, API Звука Java предоставляет механизмы для того, чтобы установить, получить доступ, и управлять системными ресурсами, такими как аудио микшеры, синтезаторы MIDI, другое аудио или устройства MIDI, средства чтения файлов и писатели, и звуковые преобразователи формата. API Звука Java не включает сложные звуковые редакторы или графические инструменты, но он обеспечивает возможности, на которых могут быть созданы такие программы. Это подчеркивает низкоуровневое управление, кроме того обычно ожидаемое конечным пользователем.

Есть другие API платформы Java, у которых есть связанные со звуком элементы. Платформа Носителей Java (JMF) является высокоуровневым API, который в настоящий момент доступен как Стандартное Расширение платформы Java. JMF определяет объединенную архитектуру, передавая протокол, и интерфейс программирования для того, чтобы получить и воспроизвести основанные на времени носители. JMF обеспечивает более простое решение для основных прикладных программ медиапроигрывателя, и он включает синхронизации между различными типами носителя, такими как аудио и видео. С другой стороны программы, которые сосредотачиваются на звуке, могут извлечь выгоду из API Звука Java, особенно если они требуют большего количества расширенных функций, таких как возможность тщательно управлять буферизованным воспроизведением аудио или непосредственно управлять синтезатором MIDI. Другие API Java со звуковыми аспектами включают 3-D Java и API для телефонии и речи. Реализация любого из этих API могла бы использовать реализацию API Звука Java внутренне, но не обязана делать так.

Пакеты

API Звука Java включает поддержку и цифрового аудио и данных MIDI. Эти два главных модуля функциональности обеспечиваются в отдельных пакетах:

Два других пакета разрешают поставщикам услуг (в противоположность разработчикам приложений) создавать компоненты заказного программного обеспечения, которые расширяют возможности реализации API Звука Java: Остальная часть этой главы кратко обсуждает выбранную аудиосистему, систему MIDI, и пакеты SPI. Каждый из них тогда обсуждается подробно в последующей части руководства.

Выбранное Аудио

Что Выбирается Аудио?

javax.sound.sampled пакет обрабатывает данные цифрового аудио, которые API Звука Java именует как выбранное аудио. Выборки являются последовательными снимками сигнала. В случае аудио сигнал является звуковой волной. Микрофон преобразовывает акустический сигнал в соответствующий аналоговый электрический сигнал, и аналого-цифровой преобразователь преобразовывает тот аналоговый сигнал в выбранную цифровую форму. Следующие данные показывают краткий момент в звукозаписи.

Выбранная звуковая волна Выбранная Звуковая волна

Этот график графически изображает звукового давления (амплитуда) на вертикальной оси, и время на горизонтальной оси. Амплитуда аналоговой звуковой волны периодически измеряется на определенном уровне, приводящем к дискретным выборкам (красные точки данных в числе), которые включают сигнал цифрового аудио. Центральная горизонтальная строка указывает на нулевую амплитуду; точки выше строки являются положительно оцененными выборками, и точки ниже отрицательны. Точность цифрового приближения аналогового сигнала зависит от его разрешения вовремя (уровень выборки) и его квантование, или разрешение в амплитуде (число битов, используемых, чтобы представить каждую выборку). Как ориентир, аудио, записанное для хранения на компакт-дисках, выбирается 44 100 раз в секунду и представляется с 16 битами за выборку.

Термин "выбранное аудио" используется здесь немного свободно. Звуковая волна могла быть выбрана в дискретных интервалах, будучи оставленным в аналоговой форме. В целях API Звука Java, однако, "выбранное аудио" эквивалентно "цифровому аудио."

Как правило, выбранное аудио на компьютере прибывает из звукозаписи, но звук мог вместо этого быть искусственно сгенерирован (например, чтобы создать звуки сенсорного телефона). Термин "выбранное аудио" относится к типу данных, не его источнику.

Дополнительная информация о структуре данных цифрового аудио дается под, "Каковы Отформатированные Аудиоданные?" в Главе 2, "Краткий обзор Выбранного Пакета."

Аудио Конфигурации

API Звука Java не принимает определенную аудио аппаратную конфигурацию; это разрабатывается, чтобы позволить различным видам аудио компонентов быть установленными на системе и полученными доступ API. API Звука Java поддерживает общую функциональность, такую как вход и выход от звуковой платы (например для записи и воспроизведения звуковых файлов) так же как смешивание многократных потоков аудио. Вот один пример типичной аудио архитектуры:

Следующий контекст описывает эту графику

Типичная Аудио Архитектура

В этом примере у устройства, такого как звуковая плата есть различные порты входа и выхода, и смешивание обеспечивается в программном обеспечении. Микшер мог бы получить данные, которые были считаны из файла, переданного потоком от сети, сгенерированной на лету прикладной программой, или произведенные синтезатором MIDI. ( javax.sound.midi пакет, обсужденный затем, предоставляет интерфейс языка Java для синтезаторов.) Микшер комбинирует все свои звуковые входы в единый поток, который может быть отправлен устройству вывода для того, чтобы представить.

MIDI

javax.sound.midi пакет содержит API для переноса и упорядочивания событий MIDI, и для того, чтобы синтезировать звук от тех событий.

Каков MIDI?

Принимая во внимание, что выбранное аудио является прямым представлением звука непосредственно, данные MIDI могут считаться рецептом для создания звука, особенно музыкальный звук. Данные MIDI, в отличие от аудиоданных, не описывают звук непосредственно. Вместо этого это описывает события, которые влияют на звук, который делает синтезатор. Данные MIDI походят на клавиатуру графического интерфейса пользователя и события от нажатия мыши. В случае MIDI события могут считаться действиями на музыкальную клавиатуру, наряду с действиями на различных педалях, ползунках, переключателях, и кнопках на том музыкальном инструменте. Эти события не должны фактически произойти с аппаратным музыкальным инструментом; они могут быть моделированы в программном обеспечении, и они могут быть сохранены в файлах MIDI. Программа, которая может создать, редактирует, и выполняет эти файлы, вызывается секвенсером. Много компьютерных звуковых плат включают УПРАВЛЯЕМЫЕ MIDI музыкальные микросхемы синтезатора, которым секвенсеры могут отправить свои события MIDI. Синтезаторы могут также быть реализованы полностью в программном обеспечении. Синтезаторы интерпретируют события MIDI, что они получают и производят звуковой выход. Обычно звук, синтезируемый от данных MIDI, является музыкальным звуком (в противоположность речи, например). Синтезаторы MIDI также способны к генерированию различных видов звуковых эффектов.

Некоторые звуковые платы включают порты входа и выхода MIDI, с которыми могут быть соединены внешние аппаратные устройства MIDI (такие как синтезаторы клавиатуры или другие инструменты). От входного порта MIDI прикладная программа может получить события, сгенерированные внешним ОБОРУДОВАННЫМ MIDI музыкальным инструментом. Программа могла бы играть музыкальное представление, используя внутренний синтезатор компьютера, сохранить это на диск как файл MIDI, или представить это в музыкальной нотации. Программа могла бы использовать выходной порт MIDI, чтобы играть внешний инструмент, или управлять другими внешними устройствами, такими как записывающее оборудование.

Больше информации о данных MIDI дается в Главе 8, "Краткий обзор Пакета MIDI," особенно в разделе "Переболее новый MIDI: Провода и Файлы."

Конфигурации MIDI

Схема ниже иллюстрирует функциональные отношения между главными компонентами в возможной конфигурации MIDI, основанной на API Звука Java. (Как с аудио, API Звука Java разрешает множеству устройств программного обеспечения MIDI быть установленным и соединенным. Система, показанная здесь, является одним потенциальным сценарием.) Поток данных между компонентами обозначается стрелками. Данные могут быть в стандартном формате файла, или (как обозначено ключом в правом нижнем углу схемы), это могут быть аудио, необработанные байты MIDI, или привязанные ко времени сообщения MIDI.

Следующий контекст описывает эту графику

Возможная Конфигурация MIDI

В этом примере прикладная программа готовит музыкальное представление, загружая музыкальный счет, это сохранено как стандартный файл MIDI на диске (левая сторона схемы). Стандартные файлы MIDI содержат дорожки, каждая из которых является списком привязанных ко времени событий MIDI. Большинство событий представляет музыкальные ноты (передачи и ритмы). Этот файл MIDI читается и затем "выполняется" секвенсером программного обеспечения. Секвенсер выполняет свою музыку, отправляя сообщения MIDI некоторому другому устройству, такие как внутренний или внешний синтезатор. Сам синтезатор может считать soundbank файл, содержащий инструкции для того, чтобы эмулировать звуки определенных музыкальных инструментов. В противном случае синтезатор будет играть, примечания, сохраненные в файле MIDI, используя любые инструментальные звуки, уже загружаются в синтезатор.

Как иллюстрировано, события MIDI должны быть преобразованы в необработанный (непривязанный ко времени) MIDI прежде, чем быть отправленным через выходной порт MIDI к внешнему синтезатору. Точно так же необработанные данные MIDI, входя в компьютер из внешнего источника MIDI (инструмент клавиатуры, в схеме) преобразовываются в привязанные ко времени сообщения MIDI, которые могут управлять синтезатором, или что секвенсер может сохранить для более позднего использования. Все эти аспекты потока данных MIDI объясняются подробно в последующих главах по MIDI (см. Вторую часть этого руководства).

Интерфейсы Поставщика услуг

javax.sound.sampled.spi и javax.sound.midi.spi пакеты содержат API, которые позволяют разработчикам программного обеспечения создавать новое аудио или ресурсы MIDI, которые могут быть предоставлены отдельно пользователю и "включены" к существующей реализации API Звука Java. Вот некоторые примеры служб (ресурсы), которые могут быть добавлены таким образом:

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

Реализация API Звука Java содержит основной набор служб, но интерфейс поставщика услуг (SPI), пакеты позволяют третьим сторонам создавать новые службы. Эти сторонние службы интегрируются в систему таким же образом как встроенные службы. AudioSystem класс в sampled пакет и MidiSystem класс в midi действие пакета как координаторы, которые позволяют прикладным программам получать доступ к службам явно или неявно. Часто существование службы абсолютно прозрачно к прикладной программе, которая использует его. Механизм поставщика услуг приносит пользу пользователям прикладных программ, основанных на API Звука Java, потому что новые звуковые опции могут быть добавлены к программе, не требуя нового выпуска SDK Java или среды выполнения, и, во многих случаях, даже не требуя нового выпуска прикладной программы непосредственно.

 


Oracle и/или его филиалы Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами