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

След: Звук

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

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

-->

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

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

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

Эта страница представляет выбранную аудиосистему, систему MIDI, и пакеты SPI. Каждый пакет тогда обсуждается более подробно позже в учебном руководстве.


Отметьте: 

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


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

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

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

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

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

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

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

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

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

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

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

Каков MIDI?

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

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

Некоторые звуковые карты включают порты ввода и вывода MIDI, с которыми могут быть соединены внешние устройства MIDI (такие как синтезаторы клавиатуры или другие инструменты). От входного порта MIDI прикладная программа может получить события, сгенерированные внешним ОБОРУДОВАННЫМ 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, которые могут управлять синтезатором, или что секвенсер может сохранить для более позднего использования.

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

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

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

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


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь
.

Предыдущая страница: Начало Учебного руководства
Следующая страница: Краткий обзор Выбранного Пакета