Spec-Zone .ru
спецификации, руководства, описания, API
|
API Звука Java является низкоуровневым API для осуществления и управления вводом и выводом звуковых носителей, и включая аудиоинтерфейс и включая Цифровой интерфейс музыкальных инструментов (MIDI) данные. API Звука Java обеспечивает явное управление возможностями, обычно требуемыми для звукового ввода и вывода в платформе, которая способствует расширяемости и гибкости.
API Звука Java выполняет потребности широкого диапазона разработчиков приложений. Области возможного применения включают:
API Звука Java обеспечивает самый низкий уровень звуковой поддержки на платформе Java. Это предоставляет прикладным программам большое количество управления звуковыми операциями, и это расширяемо. Например, API Звука Java предоставляет механизмы для того, чтобы установить, получить доступ, и управлять системными ресурсами, такими как аудио микшеры, синтезаторы MIDI, другие аудиоустройства или MIDI-устройства, средства чтения файлов и писатели, и звуковые преобразователи формата. API Звука Java не включает сложные звуковые редакторы или графические инструменты, но он обеспечивает возможности, на которых могут быть созданы такие программы. Это подчеркивает низкоуровневое управление, кроме того обычно ожидаемое конечным пользователем.
API Звука Java включает поддержку и цифрового аудио и данных MIDI. Эти два главных модуля функциональности обеспечиваются в отдельных пакетах:
javax.sound.sampled
javax.sound.midi
Два других пакета разрешают поставщикам услуг (в противоположность разработчикам приложений) создавать компоненты заказного программного обеспечения, которые расширяют возможности реализации API Звука Java:
Эта страница представляет выбранную аудиосистему, систему MIDI, и пакеты SPI. Каждый пакет тогда обсуждается более подробно позже в учебном руководстве.
Есть другие API платформы Java, у которых также есть связанные со звуком элементы.
javax.sound.sampled
Выбранная Звуковая волна
Этот график графически изображает звукового давления (амплитуда) на вертикальной оси, и время на горизонтальной оси. Амплитуда аналоговой звуковой волны периодически измеряется на определенном уровне, приводящем к дискретным выборкам (красные точки данных в числе), которые включают цифровой аудиосигнал. Центральная горизонтальная строка указывает на нулевую амплитуду; точки выше строки являются положительно оцененными выборками, и точки ниже отрицательны. Точность цифрового приближения аналогового сигнала зависит от его разрешения вовремя (уровень выборки) и его квантование, или разрешение в амплитуде (число битов, используемых, чтобы представить каждую выборку). Как ориентир, аудио, записанное для хранения на компакт-дисках, выбирается 44 100 раз в секунду и представляется с 16 битами за выборку.
Термин "выбранное аудио" используется здесь немного свободно. Звуковая волна могла быть выбрана в дискретных интервалах, будучи оставленным в аналоговой форме. В целях API Звука Java, однако, "выбранное аудио" эквивалентно "цифровому аудио."
Как правило, выбранное аудио на компьютере прибывает из звукозаписи, но звук мог вместо этого быть искусственно сгенерирован (например, чтобы создать звуки сенсорного телефона). Термин "выбранное аудио" относится к типу данных, не его источнику.
API Звука Java не принимает определенную аудио аппаратную конфигурацию; это разрабатывается, чтобы позволить различным видам аудио компонентов быть установленными на системе и полученными доступ API. API Звука Java поддерживает общую функциональность, такую как ввод и вывод от звуковой карты (например для записи и воспроизведения звуковых файлов) так же как смешивание многократных потоков аудио. Вот один пример типичной аудио архитектуры:
Типичная Аудио Архитектура
В этом примере у устройства, такого как звуковая карта есть различные порты ввода и вывода, и смешивание обеспечивается в программном обеспечении. Микшер мог бы получить данные, которые были считаны из файла, переданного потоком от сети, сгенерированной на лету прикладной программой, или произведенные синтезатором 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 Звука Java содержит основной набор служб, но интерфейс поставщика услуг (SPI), пакеты позволяют третьим сторонам создавать новые службы. Эти сторонние службы интегрируются в систему таким же образом как встроенные службы. AudioSystem
MidiSystem