Wav файлы что это
Формат WAV
WAVE или WAV является короткой формой Wave Audio File Format (реже именуемой как Аудио для Windows). Этот формат является стандартом для хранения аудио потока на ПК. Он является сферой приложения формата RIFF для хранения аудио в «цепочках», это очень напоминает форматы 8SVX и AIFF, используемые компьютерами Amiga и Macintosh соответственно. Это также основной формат на системах Windows для хранения обычного несжатого звука. Как правило, для этого применяется кодирование методом линейной импульсно-кодовой модуляции.
Описание
Как WAV, так и AIFF совместимы с операционными системами Windows, Macintosh или Linux. Формат также учитывает некоторые отличия процессоров Intel, такие как порядок байтов от младшего к старшему. RIFF формат выполняет роль обертки для различных кодеков аудио сжатия.
Несмотря на то, что WAV файл может содержать сжатое аудио, наиболее обычным его применением является хранение как раз несжатого аудио в формате линейной импульсно-кодовой модуляции (LPCM). Стандартным форматом Audio-CD, например, является аудио в формате LPCM, с 2 каналами, частотой дискретизации 44 100 Гц и 16 бит на сэмпл. Так как формат LPCM хранит несжатое аудио, которое абсолютно идентично оригиналу, это позволяет использовать его профессиональным пользователям и аудио экспертам для получения максимального качества звучания. WAV аудио файл также может быть изменен практически в любом аудио редакторе. WAV формат работает со сжатым звуком в системах семейства Windows через Audio Compression Manager (ACM). Любой ACM кодек может быть использован для сжатия WAV файла. Пользовательский интерфейс для ACM может быть доступен через множество программ, включая и стандартную программу для записи звука в некоторых версиях Windows.
Начиная с Windows 2000, появился заголовок WAVE_FORMAT_EXTENSIBLE, который позволял хранить многоканальные аудио данные, учитывал расположение динамиков, исключал неоднозначности в плане типов сэмпла и размеров контейнера в стандартном WAV формате. Также он поддерживал произвольные расширения формата чанка.
Также существует много несоответствий в формате WAV: например, 8-битные данные являются беззнаковыми, в то время как 16-битные — знаковыми.
WAV файлы могут содержать встроенные IFF «списки», которые могут содержать несколько «подчанков».
Метаданные
Будучи форматом, производным от Resource Interchange File Format (RIFF), WAV-файлы могут иметь метаданные (тэги) в чанке INFO. В дополнение к этому, в WAV файлы могут быть встроены метаданные стандарта Extensible Metadata Platform (XMP).
Популярность
WAV файлы достаточно большие, что делает этот формат неудобным для обмена по сети Интернет, и это сильно подрывает его популярность. Однако, этот формат — как правило, чаще всего используется для сохранения первозданного вида для файлов высокого качества в таких случаях, где размер свободного дискового пространства не является ограничением. Он также используется в программах для редактирования аудио, где экономят время на сжатии и распаковке данных.
Более часто данные сжимаются с помощью форматов с потерями, такими как Ogg Vorbis, MP3, ATRAC, AAC, Musepack и WMA, которые используются для хранения и обмена музыки (например, среди пользователей Интернета). Небольшой размер файла и возможность быстро скачивать их также является существенным плюсом наряду с тем, что такие аудио данные занимают намного меньше места. Но форматы с потерями жертвуют качеством ради размера, поэтому их алгоритмы не сохраняют первозданное качество звука во всех деталях. Но существуют и кодеки без потерь, такие как FLAC, Shorten, Monkey’s Audio, ATRAC Advanced Lossless, Apple Lossless, WMA Lossless, TTA, WavPack, но ни один из этих кодеков нельзя назвать общепринятым.
Использование формата WAV является общепринятым, благодаря его простоте и простой структуре, которая в большой степени основана на формате файлов RIFF. Благодаря этому, формат WAV не испытывает притеснения среди различного программного обеспечения или аппаратных плееров, он поддерживается практически везде.
Назло огромному размеру данных несжатого WAV, этот формат иногда используется для радиовещания, особенно для адаптированных безкассетных систем. Радио BBC (BBC Radio) в Соединенном Королевстве использует 44.1 кГц, 16 бит, стерео аудио данные как стандарт в их системе VCS. Система ABC «D-Cart», которая разработана Австралийским радиовещателем, использует 48 кГц, 16 бит, стерео аудио данные, что идентично цифровым аудио кассетам (DAT).
Что такое файлы WAV и WAVE?
Содержание:
Что такое WAV?
Файлы с расширением WAV или WAVE (Waveform Audio file) — это стандартный формат для хранения музыки и звука в цифровом виде в ОС Windows. Чаще всего файлы WAV хранят звук в оригинальном виде, без сжатия, но они поддерживают сжатие, поэтому не всегда звук или музыка, которые имеют расширение WAV являются оригинальными.
WAV занимают значительное место в памяти, гораздо больше, чем популярные MP3 или AAC, поэтому очень мало людей используют этот формат для хранения собственной аудиотеке на компьютере. Однако, если вы занимаетесь редактирование звуков и музыки, либо создание аудиоэффектов для компьютерных игр — тогда формат WAV будут лучшим вариантом для хранения.
Если уходить ещё дальше в историю, то окажется, что формат WAV является одним из форков формата RIFF (Resource Interchange File Format). Можно даже сказать, что WAV это тоже самое, что и AIFF или 8SVX, которые более распространены среди пользователей компьютеров от Apple.
Помните: в виде давности создания этого формата у него имеются ограничения, например, размер одного файла не может превышать 4 Гб, а некоторые программы не смогут открыть WAV файл уже в том случае, когда он будет превышать 2 Гб.
Как открыть файлы Wav или Wave
WAV открываются почти любым современным мультимедийным проигрывателем, за свою жизнь я ещё не встретил ни одного проигрывателя, который бы мог открыть, например, MP3, но не справился бы с WAV.
Но чтобы было нагляднее, я перечислю программы, которые гарантированно открывают WAV: Windows Media Player, VLC, iTunes, QuickTime, Microsoft Groove Music, Winamp, Clementine, XMMS и многие другие.
Как конвертировать WAV файлы
WAV являются идеальным источником, который мы будем конвертировать в любой другой формат, т.к. он хранит музыку без сжатия.
Именно из таких файлов принято получать следующие форматы: MP3, AAC, FLAC, OGG, M4A, M4B, M4R и другие файлы, которые хранят музыку с сжатием.
Конвертацию можно произвести с помощью некоторых бесплатных аудио редакторов, таких как: Freemake Audio Converter, MediaHuman Audio Converter, Hamster Free Audio Converter, Switch и многих других.
Также можно воспользоваться онлайн сервисами, они удобны в тех случаях, когда вам нужно обработать всего несколько файлов: FileZigZag или Zamzar.
СОДЕРЖАНИЕ
Описание
В формате WAV есть некоторые несоответствия: например, 8-битные данные не подписаны, а 16-битные данные подписаны, а многие фрагменты дублируют информацию, обнаруженную в других фрагментах.
Технические характеристики
Преимущество формата файлов с тегами состоит в том, что формат можно расширить позже, не запутывая существующие программы чтения файлов. Правило для чтения RIFF (или WAV) состоит в том, что он должен игнорировать любой помеченный фрагмент, который он не распознает. Читатель не сможет использовать новую информацию, но читатель не должен запутаться.
Ожидалось, что файлы RIFF будут использоваться в международных средах, поэтому есть CSET блок для указания кода страны, языка, диалекта и кодовой страницы для строк в файле RIFF. Например, указание соответствующего CSET фрагмента должно позволить INFO интерпретировать строки в фрагменте (и другие фрагменты в файле RIFF) как кириллические или японские символы.
RIFF также определяет JUNK чанк, содержимое которого не представляет интереса. Чанк позволяет удалить блок, просто изменив его FourCC. Этот фрагмент также можно использовать для резервирования места для будущих изменений, чтобы файл можно было изменять без перезаписи. Более позднее определение RIFF представило аналогичный PAD фрагмент.
РИФФ ВОЛНА
Определение верхнего уровня файла WAV:
В определении показана форма RIFF верхнего уровня с WAVE тегом. За ним следует обязательный блок формата, который описывает формат следующих примеров данных. Блок формата включает такую информацию, как кодирование выборки, количество бит на канал, количество каналов, частота дискретизации. Спецификация WAV включает некоторые дополнительные функции. Необязательный блок фактов сообщает количество выборок для некоторых схем кодирования со сжатием. Блок cue point ( cue ) идентифицирует некоторые важные номера выборок в волновом файле. Фрагмент списка воспроизведения позволяет воспроизводить сэмплы не по порядку или повторять, а не только от начала до конца. Связанный список данных позволяет прикреплять метки и примечания ( labl и note ) к ключевым точкам; текстовая аннотация ( ltxt ) может быть дана для группы образцов (например, информация о заголовке). Наконец, обязательный блок волновых данных содержит фактические выборки (в указанном формате).
Обратите внимание, что определение файла WAV не показывает, где INFO следует разместить фрагмент. Он также ничего не говорит о размещении CSET блока (который определяет используемый набор символов).
Спецификация RIFF пытается быть формальной спецификацией, но ее формализму не хватает точности, наблюдаемой в других форматах с тегами. Например, в спецификации RIFF не проводится четкого различия между набором подэлементов и упорядоченной последовательностью подэлементов. Фрагмент формы RIFF предполагает, что это должен быть контейнер последовательности. Спецификация предполагает, что блок LIST также является последовательностью: «Блок LIST содержит список или упорядоченную последовательность подчленов». Однако спецификация не дает формальной спецификации INFO блока; пример INFO блока LIST игнорирует последовательность блоков, подразумеваемую в INFO описании. Определение блока LIST для действительно использует блок LIST как контейнер последовательности с хорошей формальной семантикой.
Спецификация WAV допускает не только единый непрерывный массив аудиосэмплов, но также дискретные блоки сэмплов и тишины, которые воспроизводятся по порядку. Большинство файлов WAV используют один массив данных. Неправильная спецификация для демонстрационных данных:
Эти постановки запутаны. Очевидно (не определено) и (определено, но не указано) должны быть идентичными. Даже если эта проблема устранена, производство позволяет содержать рекурсивный объект (что подразумевает проблемы интерпретации данных). Спецификация должна была выглядеть примерно так:
чтобы избежать рекурсии.
Файлы WAV могут содержать встроенные «списки» IFF, которые могут содержать несколько «подчастей».
Метаданные
Будучи производным от RIFF, файлы WAV могут быть помечены метаданными в блоке INFO. Кроме того, файлы WAV могут включать в себя любые виды метаданных, включая, помимо прочего, данные расширяемой платформы метаданных (XMP) или теги ID3 в дополнительных фрагментах. Приложения могут не обрабатывать эту дополнительную информацию или ожидать ее появления в определенном месте. Хотя спецификация RIFF требует, чтобы приложения игнорировали блоки, которые они не распознают, некоторые приложения вводят в заблуждение дополнительные блоки.
Популярность
Несжатые файлы WAV имеют большой размер, поэтому совместное использование файлов WAV через Интернет является редкостью, за исключением профессионалов в области видео, музыки и аудио, где несжатая форма стала самым популярным из всех аудиоформатов, и для большинства высокоскоростные веб-соединения с большой пропускной способностью являются банальность. Многие производители аудио и музыкального программного обеспечения теперь предпочитают его в качестве формата файла по умолчанию, хотя другие часто поддерживаются. Высокое разрешение формата делает его подходящим для хранения заархивированных файлов первого поколения высокого качества, для использования в системе, где дисковое пространство не является ограничением, или в таких приложениях, как редактирование аудио, где время, затрачиваемое на сжатие и распаковку данных, и потеря качества таких преобразований вызывает беспокойство.
Использование вещательными компаниями
Несмотря на большой размер, несжатые файлы WAV используются большинством радиовещательных компаний, особенно теми, которые используют безленточную систему.
Ограничения
Неаудиоданные
Аудио компакт-диски
Чтобы звук PCM можно было записать на компакт-диск, он должен быть в 16-битном стерео формате 44100 Гц.
Сравнение схем кодирования
Формат | Битрейт ( кбит / с ) | 1 минута ( KiB ) |
---|---|---|
11025 Гц 16 бит PCM | 176,4 | 1292 |
0 8000 Гц 16 бит PCM | 128 | 0 938 |
11025 Гц 8 бит PCM | 0 88,2 | 0 646 |
11025 Гц µ-закон | 0 88,2 | 0 646 |
0 8000 Гц 8 бит PCM | 0 64 | 0 469 |
0 Μ-закон 8000 Гц | 0 64 | 0 469 |
11025 Гц 4-битный ADPCM | 0 44,1 | 0 323 |
0 8000 Гц, 4-битный ADPCM | 0 32 | 0 234 |
11025 Гц GSM 06.10 | 0 18 | 0 132 |
0 8000 Гц MP3 16 кбит / с | 0 16 | 0 117 |
0 8000 Гц GSM 06.10 | 0 13 | 0 103 |
0 8000 Гц Lernout & Hauspie SBC 12 кбит / с | 0 12 | 00 88 |
0 8000 Гц DSP Group Truespeech | 00 9 | 00 66 |
0 8000 Гц MP3 8 кбит / с | 00 8 | 00 60 |
0 8000 Гц Lernout & Hauspie CELP | 00 4.8 | 00 35 год |
Формат звуковых файлов WAV
Данный формат использует Microsoft-скую версию формата IFF (Interchange File Format) от Electronic Arts для хранения данных в виде «секций» (так называемых «чанков», «chunks»).
Форматы данных
WAV-файлы могут содержать строки текста, например метки секций, информационные комментарии и т. д. Строки сохраняются в стиле Pascal. Первый байт – счетчик количества текстовых байтов ASCII, за которым следует указанное количество текстовых байтов. Общее количество байтов в этом типе данных должно быть четным. Для этого в конец текста можно добавить байт-заполнитель. Этот байт заполнения не отражается в счетчике размера.
Структура файла
WAV-файл использует стандартную RIFF-структуру, которая группирует содержимое файла из отдельных секций (chunks) – формат выборок аудиоданных, аудиоданные, и т.п. Каждая секция имеет свой отдельный заголовок и отдельные данные. Заголовок секции указывает на тип секции и количество содержащихся в секции байт. Такой принцип организации позволяет программам анализировать только необходимые секции, пропуская остальные, которые неизвестны, или которые не требуют обработки. Некоторые секции могут иметь в своем составе подсекции (sub-chunks). Например, как можно увидеть на рисунке ниже, описывающем формат простейшего WAV-файла, секции » fmt » и » data » являются подсекциями секции » RIFF «.
Рисунок 1 – Формат простейшего WAV-файла
Еще одна особенность, связанная с секциями файла RIFF, – адреса начала секций должны быть выровнены на размер слова (2 байта). Это означает, что общий размер секции должен быть кратен 2. Если секция содержит нечетное число байт данных, то в конец данных секции добавляется дополнительный нулевой байт данных. Этот дополнительный байт не учитывается в размере секции в заголовке, таким образом, программа всегда должна учитывать выравнивание для расчета смещения начала следующей секции.
Заголовок WAV-файла, секция типа RIFF
Заголовки WAV-файла используют стандартный формат RIFF. Первые 8 байт файла – стандартный заголовок секции RIFF, который содержит ID секции, равный » RIFF «, и размер секции, равный размеру файла минус 8 байт, используемых для RIFF-заголовка. Первые 4 байта данных в секции » RIFF » определяют тип ресурса, который содержится в секции. WAV-файлы всегда используют тип ресурса » WAVE «. После типа ресурса (ID » WAVE «) идут все остальные секции файла, которые определяют аудиосигнал.
Секции WAV-файла
Для WAV-файлов, определено довольно много типов секций, но большинство файлов содержат только две из них – секцию формата (» fmt «) и секцию данных (» data «). Это именно те секции, которые необходимы для описания формата выборок аудиоданных, и для хранения самих аудиоданных.
Итак, в простейшем случае в WAV-файле должна быть обязательная секция формата (» fmt «), которая содержит важные параметры, описывающие сигнал, такие как частота дискретизации, и секция данных (» data «), которая содержит непосредственно данные сигнала (рисунок 1). Все остальные секции необязательны.
Среди необязательных секций могут быть те, которые определяют ключевые точки, перечисляют параметры инструментов, хранят информацию о приложении и т.д. Все эти секции подробно описаны ниже.
Все приложения, использующие WAV-файлы, должны иметь возможность читать 2 обязательных секции и выборочно игнорировать необязательные секции. Программа, копирующая WAV-файл, должна копировать все секции WAV-файла, даже те, которые она не интерпретирует.
На порядок секций в WAV-файле нет никаких ограничений, за исключением того, что секция формата должен предшествовать секции данных. Некоторые жестко написанные программы ожидают, что секция формата будет первым секцией (после заголовка RIFF), хотя они не должны этого делать потому, что спецификация этого не требует.
Все секции формата RIFF и соответственно секции WAVE сохраняются в следующем формате (таблица ниже). Заметьте, что даже вышеупомянутая секция RIFF соответствует этому формату.
Смещение | Размер | Название | Описание |
---|---|---|---|
0 | 4 | Chunk ID | ID секции |
4 | 4 | Chunk Data Size | Размер данных секции |
8 | Байты данных секции |
Остальная часть этой статьи посвящена описанию различных типов секций Wave, их формату данных и что эти данные означают.
Секция формата » fmt «
Секция формата содержит информацию о том, как сохранены аудиоданные и как они должны воспроизводиться. Информация включает в себя тип используемой компрессии, количество каналов, частоту дискретизации, разрядность выборок и другие атрибуты.
Идентификатор секции всегда » fmt » ( 0x666D7420 ).
Поле размера данных равно размеру стандартного формата WAV (16 байт) плюс размер всех дополнительных байтов формата, необходимых для поддержки специфических форматов звука, если он не содержит несжатых данных PCM. Обратите внимание, что идентификатор секции » fmt » оканчивается на символ пробела ( 0x20 ).
Код формата сжатия (Compression Code)
Первое слово в данных формата указывает на тип сжатия, используемого для данных звука. В таблице приведен список примеров кодов сжатия.
Код | Описание |
---|---|
0 (0x0000) | Неизвестный формат |
1 (0x0001) | PCM / несжатые данные |
2 (0x0002) | Microsoft ADPCM |
6 (0x0006) | ITU G.711 a-law |
7 (0x0007) | ITU G.711 µ-law |
17 (0x0011) | IMA ADPCM |
20 (0x0016) | ITU G.723 ADPCM (Yamaha) |
49 (0x0031) | GSM 6.10 |
64 (0x0040) | ITU G.721 ADPCM |
80 (0x0050) | MPEG |
65,535 (0xFFFF) | Экспериментальный формат |
Количество каналов (Number of Channels)
Количество каналов указывает, сколько отдельных аудиосигналов закодировано в секции данных звука. Значение 1 означает монофонический сигнал, 2 означает стерео, и т.п.
Частота дискретизации (Sample Rate)
Число выборок аудиосигнала, приходящихся на секунду.
Количество байт в секунду (Average Bytes Per Second)
Величина, показывающая, сколько байт данных должно быть пропущено за секунду через цифро-аналоговый преобразователь во время воспроизведения файла. Эта информация полезна, чтобы определить, могут ли данные поступать от источника с нужной скоростью, чтобы не отставать от воспроизведения. Эта величина просто вычисляется по формуле:
Количество байт в секунду = Частота дискретизации × Размер блока
Размер блока (Block Align)
Количество байт на одну выборку. Эта величина может быть вычислена по формуле:
Размер блока = Количество значащих бит на выборку / 8 × Количество каналов
Количество значащих бит на выборку (Significant Bits Per Sample)
Значение указывает количество бит, формирующих каждую выборку сигнала. Обычно эта величина 8, 16, 24 или 32. Если число бит не выровнено по байту (не делится на 8 без остатка), количество используемых байт на выборку округляется вверх. Неиспользуемые биты устанавливаются в 0 и игнорируются.
Размер дополнительных данных формата (Extra Format Bytes)
Указывает, сколько далее идет дополнительных данных, описывающих формат. Если код сжатия равен 1 (файл с несжатыми PCM данными), то дополнительных данных о формате нет. Для других типов сжатия дополнительные данные могут присутствовать и иметь любой размер, зависящий от количества необходимых для декодирования данных. Если размер дополнительных данных не выровнен на слово (не делится на 2 без остатка), то в конец данных должен быть добавлен дополнительный байт; но при этом значение в поле размера не меняется.
Секция данных » data «
Секция данных Wave (Wave Data Chunk) содержит данные цифровых выборок аудиосигнала, которые можно декодировать с использованием формата и метода компрессии, указанных в секции формата Wave (Wave Format Chunk). Если код сжатия равен 1 (несжатый PCM), то данные представлены в виде сырых, необработанных (raw) величин выборок. Данная статья описывает, как сохраняются несжатые данные PCM, и не вдается в подробности форматов с компрессией.
WAV-файлы обычно содержат только одну секцию данных, но таких секций может быть несколько, если они содержатся в секции списка Wave (Wave List Chunk » wavl «).
Смещение | Длина | Название | Описание | Значение |
---|---|---|---|---|
0 | 4 | Chunk ID | ID секции | » data » ( 0x64617461 ) |
4 | 4 | Chunk Data Size | Размер данных секции | зависит от количества выборок и формата сжатия |
8 | Данные выборок |
Аудиовыборки многоканального цифрового звука сохраняются как чередуемые данные, которые просто означают последовательные аудиовыборки нескольких каналов. Выборки каналов сохраняются последовательно друг за другом, перед тем как произойдет переход к следующему времени выборки. Это сделано, чтобы можно было проигрывать файл без необходимости перед этим прочитать этот файл целиком. Значения в таблице ниже были бы сохранены в WAV-файле в порядке, как они перечислены в столбце «Значение» (сверху вниз).
Момент времени | Канал | Значение |
---|---|---|
0 | 1 (левый) | 0x0053 |
2 (правый) | 0x0024 | |
1 | 1 (левый) | 0x0057 |
2 (правый) | 0x0029 | |
2 | 1 (левый) | 0x0063 |
2 (правый) | 0x003C |
Как уже было указано ранее, все секции RIFF (включая секции WAVE » data «) должны быть выровнены по размеру на слово (2 байта). Если данные выборок содержатся в нечетном количестве байт, то в конец данных должен быть добавлен выравнивающий нулевой байт. За заголовке секции » data » размер не должен учитывать этот выравнивающий байт.
Секция » fact «
Смещение | Размер | Название | Описание | Значение |
---|---|---|---|---|
0 | 4 | Chunk ID | ID секции | » fact » ( 0x66616374 ) |
4 | 4 | Chunk Data Size | Размер данных секции | зависит от формата |
8 | Format Dependant Data | Данные, зависящие от формата |
Данные, зависящие от формата (Format Dependant Data)
В настоящий момент задано только одно поле для данных, зависящих от формата. Это единственное 4-байтное значение, которое указывает число выборок в секции данных аудиосигнала. Эта значение может использоваться вместе с количеством выборок в секунду (Samples Per Second value), указанным в секции формата, для вычисления продолжительности звучания сигнала в секундах.
По мере появления новых форматов WAVE секция fact будет расширяться добавлением полей после поля числа выборок. Приложения могут использовать размер секции fact для определения, какие поля представлены в секции.
Секция списка Wave – » wavl «
Секция списка Wave (wave list chunk) используется для указания нескольких чередований секций » slnt » и » data «. Эти секции могут помочь уменьшить размер файла путем указания слышимых сегментов выборок, когда поток аудиоданных содержит несколько интервалов тишины.
Этот тип секции, по мнению многих программистов, является злоупотреблением в формате WAV-файла, и его использование не рекомендуется. Также много приложений не будут распознавать этот тип секции, просто игнорируя его. Этот формат сжатия без надобности усложняет структуру WAV-файла и может быть выгодно реализован другими способами, включая несколько существующих форматов компрессии.
Смещение | Размер | Название | Описание | Значение |
---|---|---|---|---|
0 | 4 | Chunk ID | ID секции | » wavl » ( 0x736C6E74 ) |
4 | 4 | Chunk Data Size | Размер данных секции | зависит от размера секций » data » и » slnt « |
8 | Список чередования секций » slnt » и » data « |
Секция тишины – «slnt»
Секция тишины (silent chunk) используется для указания сегмента паузы звучания, которая имеет некоторую продолжительность в выборках сигнала. Секция тишины всегда содержится только внутри секции списка Wave (wave list chunk). Когда эта секция объявляет тишину, не нужно задавать нулевую громкость или базовую выборку. Она фактически удерживает последнюю выборку сигнала, считанную из предыдущей секции данных (Wave Data Chunk) секции списка Wave (wave list chunk). Если предыдущих секций данных не было, то необходимо использовать базовое значение выборки, равное 127 для 8-битных данных, 0 для 16-битных данных и всех данных с большим количеством бит на выборку. Эти требования могут казаться тривиальными, но если их не выполнить, то в аудиосигнале могут появиться нежелательные щелчки и хлопки.
Секция ключевых точек – » cue «
Секция » cue » определяет одно или более смещения выборок, которые часто используются, чтобы отметить ключевые разделы аудиоданных. Например, у начала и конца куплета в песне могут быть установлены метки, по которым их легче найти. Секция ключевых точек является необязательной, и если она добавлена, то одна секция ключевых точек должна указать все ключевые точки секции » WAVE «. Внутри секции » WAVE » не допускается содержание более одной секции » cue «.
Смещение | Размер | Название | Описание | Значение |
---|---|---|---|---|
0 | 4 | Chunk ID | ID секции | » cue » ( 0x63756520 ) |
4 | 4 | Chunk Data Size | Размер данных секции | Зависит от количества ключевых точе |
8 | 4 | Num Cue Points | Количество ключевых точек в списке | |
12 | List of Cue Points | Список ключевых точек |
Идентификатор секции и объем данных (Chunk ID и Chunk Data Size) Идентификатор секции для секции ключевых точек всегда » cue » ( 0x666D7420 ). Обратите внимание, что строка ID оканчивается на символ пробела ( 0x20 ). Размер данных секции равен размеру поля Num Cue Points (4 байта) плюс количество последующих ключевых точек, помноженное на размер данных каждой точки (24 байта). Для вычисления размера данных секции ключевых точек может использоваться следующая формула:
ChunkDataSize = 4 + ( NumCuePoints × 24) Количество ключевых точек (Num Cue Points) Эта величина указывает количество последующих ключевых точек в этой секции. Список ключевых точек (List of Cue Points)
Список ключевых точек – это просто набор описаний последовательных точек, который имеет следующий формат.
Смещение | Размер | Название | Значение |
---|---|---|---|
0 | 4 | ID | Уникальный идентификатор |
4 | 4 | Position | Позиция порядка воспроизведения |
8 | 4 | Data Chunk ID | RIFF ID соответствующей секции данных |
12 | 4 | Chunk Start | Байтовое смещение секции данных |
16 | 4 | Block Start | Байтовое смещение к выборке первого канала |
20 | 4 | Sample Offset | Байтовое смещение к байту выборки первого канала |
ID Каждая ключевая (cue) точка имеет уникальный идентификатор, используемый для связи ключевых точек с информацией в других секциях. Например, секция метки (Label chunk) содержит текст, который описывает точку в WAV-файле со ссылкой на связанную с ней ключевую точку. Позиция (Position) Определяет смещение выборки, связанное ключевой точкой, с точки зрения позиции выборки в заключительном потоке выборок, сгенерированных списком воспроизведения. Другими словами, если указана секция списка воспроизведения (play list chunk), значение позиции равно номеру выборки, на которой эта ключевая точка встретится при воспроизведении всего списка (play list) в заданном порядке. Если нет секции списка воспроизведения (play list chunk), то значение позиции должно быть равно 0. ID секции данных (Data Chunk ID) Указывает ID из 4 байт, используемый секцией, содержащей выборку, которая соответствует этой ключевой точке. В WAV-файле без списка воспроизведения (play list chunk) это значение всегда » data «. В WAV-файле, имеющем список воспроизведения (play list chunk) с секциями данных и тишины, это значение может быть либо » data «, либо » slnt «. Начало секции (Chunk Start) Указывает байтовое смещение в секции списка Wave (Wave List Chunk) секции, содержащей выборку, соответствующую этой точке. Это та же самая секция, описанная значением ID секции данных (Data Chunk ID). Если в WAV-файле нет секции списка Wave (Wave List Chunk), это значение равно 0, иначе это значение равно смещению в секции » wavl «. Первая секция в секции списка (Wave List Chunk) указывается значением 0. Начало блока (Block Start) Указывает смещение в байтах в секции » data » или секции » slnt » для начала блока, содержащего выборку. Начало блока задает первый байт несжатых аудиоданных PCM или последний байт в сжатых данных звука, где для нахождения соответствующего значения выборки может начаться декодирование. Смещение выборки (Sample Offset) Указывает смещение в блоке (указанном в Block Start) для выборки, соответствующей ключевой точке. В несжатых аудиоданных PCM это просто байтовое смещение в секции » data «. В сжатых данных звука это значение равно количеству выборок (которое может и не быть в байтах) от Block Start до выборки, соответствующей ключевой точке.
Секция списка воспроизведения (плейлиста) – » plst «
Секция плейлиста указывает порядок воспроизведения последовательности ключевых точек (cue points). Эти точки заданы в секции » cue «, где-то в другом месте файла. Плейлист состоит из массива сегментов, каждый из которых содержит информацию о том, с какой выборки сегмент должен начать проигрывание, длительность сегмента (в выборках), и сколько раз должен повториться сегмент перед переходом к следующему по списку сегменту.
Список сегментов – просто набор следующих друг за другом описаний сегментов, которые составлены по формату, приведенному в таблице ниже. Сегменты не должны идти в каком-то определенном порядке потому, что для определения порядка воспроизведения используется позиция ключевой точки, связанной с сегментом.
Секция связанного списка данных – » list «
Секция связанного списка данных (Associated Data List Chunk) используется для задания текстовых меток и имен, которые связаны с ключевыми точками, для предоставления для каждой позиции текстовой метки или имени.
Смещение | Размер | Название | Описание | Значение |
---|---|---|---|---|
0 | 4 | Chunk ID | ID секции | » list » ( 0x6C696E74 ) |
4 | 4 | Chunk Data Size | Размер данных секции | зависит от содержащегося текста |
8 | 4 | Type ID | Идентификатор типа | » adtl » ( 0x6164746C ) |
12 | Список текстовых меток и имен |
Type ID Идентификатор типа используется для обозначения типа связанного списка данных и всегда имеет значение » adtl «. Список текстовых меток и имен Просто список сортированных секций, которые определяют текст различными способами. В файлах WAVE используются три основных типа секций – секция метки (Label Chunk), секция примечания (Note Chunk) и секция помеченного текста (Labeled Text Chunk).
Секция метки – » labl «
Секция метки (Label Chunk) всегда содержится внутри секции связанного списка данных (Associated Data List Chunk). Она используется для связывания текстовой метки с ключевой точкой (Cue Point). Эта информация часто отображается на маркерах или флажках в аудиоредакторах.
Секция примечания или комментария – » note «
Секция примечания (Note Chunk) всегда содержится внутри секции связанного списка данных (Associated Data List Chunk). Она используется для связывания текстового комментария с ключевой точкой. Эта информация сохраняется тем же способом, что и метки в секции метки.
Секция помеченного текста – » ltxt «
Секция помеченного текста (Labeled Text Chunk) всегда содержится внутри секции связанного списка данных (Associated Data List Chunk). Она используется для связывания текстовой метки с областью или секцией данных звука. Эта информация часто отображается в помеченных областях звука в аудиоредакторах.
Секция семплера – » smpl «
Секция семплера (Sampler Chunk) задает основные параметры инструмента, как например семплер MIDI, который должен использоваться для воспроизведения данных звука. Наиболее важно, что она включает в себя информацию о зацикливаниях звука во время воспроизведения. Конечно, вы можете решить, что это является дублированием информации, которую можно найти в секциях ключевых точек и списка воспроизведения формата WAVE, но, к счастью, в секции семплера это сделано более гибко, непротиворечиво, и более задокументированным способом.
Поле производителя указывает код MIDI Manufacturer’s Association (MMA) для семплера предназначенного для приема звука этого файла. Каждый производитель продуктов MIDI имеет свой уникальный ID, который идентифицирует компанию. Если не указан конкретный производитель, то должно быть уставлено значение 0.
В значении имеется некоторая дополнительная информация, которую можно использовать для трансляции в значение, используемое в передаче на семплер формата MIDI System Exclusive. Старший байт показывает количество младших байт (1 или 3), которые значимы для кода производителя. Например, значение для Digidesign будет 0x01000013 (0x13), и значение для Microsoft будет 0x03000041 (0x00, 0x00, 0x41).
Product Поле продукта указывает ID модели MIDI, заданный производителем. Для получения идентификаторов продукта связывайтесь с производителем семплера. Если не указан конкретный продукт производителя, то должно быть уставлено значение 0. Sample Period Период выборки указывает длительность времени воспроизведения одной выборки в наносекундах (обычно равно 1 / количество выборок в секунду, где количество выборок в секунду равно величине, указанной в секции формата). MIDI Unity Note Величина, имеющая то же самое значение, как и MIDI Unshifted Note секции инструмента (instrument chunk). Поле MIDI Unshifted Note указывает музыкальную ноту, на которой выборка будет воспроизведена с её исходной частотой дискретизации (частота дискретизации указана в секции формата). MIDI Pitch Fraction Указывает доли полутона вверх от величины, указанной в поле MIDI Unity Note. Значение 0x80000000 означает 1/2 полутона (50 cents), и значение 0x00000000 означает неточную настройку между полутонами. SMPTE Format
Указывает формат времени Society of Motion Pictures and Television E, используемый в следующем поле SMPTE Offset. Если установлено значение 0, SMPTE Offset также должно быть равно 0.
Список зацикливаний – простой набор последовательных описаний циклов, которые следуют нижеописанному формату. Зацикливания не имеют какого-либо определенного порядка, поскольку каждый цикл выборок связан с ключевой точкой, позиция которой используется для определения порядка воспроизведения. Секция семплера не является обязательной.
Поле типа задает, каким образом зацикливаются выборки звука.
Секция инструмента – » inst «
Секция инструмента (instrument chunk) используется для описания, каким образом звук должен быть проигран как звук инструмента. Эта информация полезна для обмена музыкальной информацией между музыкальными редакторами-семплерами, основанными на выборках (семплах), трекерами или программными таблицами звука. Эта секция является необязательной, и не может встречаться в WAVE-файле больше одного раза.
Изменения формата
Обратная сторона популярности формата файла WAVE – из сотен программ, которые поддерживают этот формат, многие злоупотребляют или неправильно используют формат из-за плохой разработки программного обеспечения и/или плохой документации. Как только некоторые из этих «непослушных» программ становятся довольно популярными и производят в большом количестве миллионы неправильных WAVE файлов, остальная часть отрасли программного обеспечения вынуждена иметь дело с этим и создавать код, который может распознавать эти неправильные файлы. Новый код не должен записывать эти ошибки, но должен читать ошибочный WAV-файл. Ниже описано несколько таких исключений, которые были сделаны в дополнение к строгому/исходному формату WAVE.