Формат WAVE файлов
WAVE – это формат хранения оцифрованных аудио данных. Данный формат поддерживает данные различной битности, с различной частотой выборки и числом каналов. Данный формат весьма популярен на платформах стандарта IBM PC (и совместимых с ним).
Этот формат подразумевает хранение аудио данных в особых блоках, которые называют чанками (chunks).
Форматы данных
ID = array[1..4] of Char; — идентификатор чанка .
Организация данных
Все данные хранятся в виде 8-ми битовых чисел, расположенных таким образом, что младшая часть слова данных записывается первой.
Word : | байт 0 | байт 1 |
Integer : | байт 0 | байт 1 | байт 2 | | байт 3 |
Структура файла
Wav файл представляет собой набор из многочисленных чанков разного типа. Важнейшим чанком является чанк формата (Format chunk – «fmt»), который содержит важные параметры звуковых данных, например частоту выборки. Другим важным чанком является чанк данных (Data chunk), который и определяет форму аудио сигнала. Присутствие других дополнительных чанков (optional chunks) не обязательно.
Все приложения использующие wav файлы должны уметь читать обязательные чанки, и уметь выборочно игнорировать дополнительные чанки. Программы, предназначенные для копирования wav файлов должны копировать все чанки, даже те которые он не может интерпретировать. Порядок следования чанков разного типа может быть произвольным. Исключение составляет чанк формата, который должен предшествовать чанку данных. Некоторые грубо написанные программы всегда интерпретируют первый чанк (после RIFF заголовка) как чанк формата, хотя в спецификации формата подразумевается, что первый чанк может быть не только чанком формата, но и дополнительным чанком.
Рассмотрим схему простейшего wav файла
Формат wav файла создавался и модифицировался без всякой координации множеством авторов (каждый из которых вносил свои специфические чанки). В результате он получился отчасти противоречивым, например 8-ми битные данные являются беззнаковыми, а 16-битные – числа со знаком.
Элементы выборок и фреймы
Важнейшими понятиями при интерпретация wave файлов, являются понятия элементы выборок и фреймы. Элемент выборки представляет собой мгновенное значение амплитуды сигнала. Данные длинной более 8-ми бит хранятся в виде блока размером от 9 до 32 бит состоящего из двух смежных слов (определяется значением поля wBitsPerSample, в чанке формата, для несжатого подстандарта PCM ). Например для 16 битного формата (2х8 бит) диапазон значений амплитуд от -32768 ($8000) до 32767 ($7FFF). Для формата 8бит и меньше (1 беззнаковый байт) диапазон значений амплитуд от 0 до 255.
В связи с архитектурой современных процессоров было решено, что при сохранении данных размер выборки будет округлятся до величины кратной 8-битам. Для АЦП с разрядностью не более 8-бит данные сохраняются в 8-ми битном формате. Для АЦП с разрядностью от 9 до 16 бит элемент выборки будет 16 битным числом со знаком.
Для АЦП с разрядностью от 17 до 24 бит выборка будет 3-х байтной. Для АЦП с разрядностью от 25 до32 бит выборка будет двойным знаковым 32 битным словом. И т.д.
Кроме того, биты данных (не кратных 8) должны быть выровнены по левому краю. Например 12 битные данные (записываются 16-ти битным словом) выравниваются следующим образом – данные выборки записываются с 4-го по 15 бит включительно, биты от 0 до 3 устанавливаются в нуль. Т.о. число 101000010111 записывается как
Но в файл данные будут записаны так
При многоканальной записи элементы выборок записываются поочередно. Так для стерео записи в начале пишется одна выборка левого канала, затем правого, затем следующая выборка левого и т.д. Такое расположение выборок упрощает пересылку данных в ЦАП. Блок из нескольких выборок воспроизводимых одновременно называется фреймом. В нашем примере фрейм это блок, состоящий из двух выборок (левого и правого каналов)
Для одноканальной записи, фрейм состоит просто из одной выборки. Для многоканальной записи правила составления фрейма следующие:
Выборки в пределах одного фрейма записываются непрерывно один за другим без неиспользованных байтов между ними. Следует отметить, что все вышеупомянутое относится к формату записи без сжатия ( PCM ).
Чанк формат (Format Chunk)
Чанк Формат (« fmt ») описывает фундаментальные параметры данных, частоту выборки, разрядность данных и число каналов цифровой звукозаписи.
ChankFormat – может иметь и дополнительные поля, поэтому нельзя игнорировать поле
chunkSize – определяющее размер записи минус 8 бит (поля chunkID и chunkSize ),.
Значение chunkedID всегда равно “fmt “. Звуковые данные могут хранится без сжатия, тогда выборки хранятся как было описано в разделе Элементы выборок и фреймы. В случае формата со сжатием размеры выборок могут отличаться от разрядности звуковых данных. На наличие сжатия указывает поле wFormatTag. В этом случае его значение wFormatTag отличается от единицы. Кроме того в ChankFormat появятся несколько полей идентифицирующие метод сжатия.
— Первое дополнительное поле (типа Word ) определяет длину добавочного блока(после этого поля).
-Далее следует специальный чанк ( Fact chunk ) содержащий переменную типа Cardinal , определяющую размер всех аудио данных (в несжатом ввиде). Размер задается в выборках. Существует большое количество методов сжатия. Детальное описание каждого из них можно посмотреть на сайте Microsoft .
Если никакое сжатие не используется (то есть, wFormatTag = 1), то после ChankFormat нет дополнительных служебных полей.
Поле wChannels содержит число звуковых каналов. Значение 1 указывает на моно звучание, значение 2 стерео ,4 четыре канала звука и т.д. Напомню, что выборки многоканальных записей чередуются, а элементарный блок из таких данных образуют Фрейм. Реальные данные хранятся в чанке данных ( Data Chunk ), который будет описан позже.
-Поле dwSamplesPerSec хранит частоту выборок в секунду (то есть, Герц). Существуют три стандарта MPC — 11025, 22050, и 44100 ГЦ, хотя допускается использование других частот.
— Поле dwAvgBytesPerSec указывает, сколько байтов проигрываются каждую секунду. dwAvgBytesPerSec может использоваться приложением, чтобы оценить, буфер какого размера необходим, для того чтобы должным образом воспроизводить звук без проблем связанных с прерыванием воспроизведения звука. Его значение должно быть равно результату произведения dwSamplesPerSec * wBlockAlign округленного в большую сторону.
— Поле wBlockAlign должно быть равно значению выражения
wChannels * ( wBitsPerSample div 8) округленному в большую сторону. По существу, wBlockAlign — размер фреймов в байтов. (т.о. фрейм для 16-битовой выборки равен 2 байтом, фрейм для 16-битовой стерео выборки 4 байта. И т.д).
В каждом звуковом файле может быть не более одного чанка формата.
Чанк данных (Data Chunk)
Чанк данных содержит фреймы звуковых данных (все каналы звуковых данных)
-Значение ID всегда равно ‘data’.
— chunkSize — число байтов в чанке минус 8 байт (поля ID и chunkSize ) кроме того, не учитываются байты выравнивания структуры. Помните, что описание данных хранится в чанке формата. Все вышеперечисленное относится только к несжатому формату.
-Массив waveformData содержит собственно выборки, порядок их следования и выравнивание описано в разделе выборки и фреймы. Число фреймов можно вычислить, разделив значение chunkSize на wBlockAlign чанка формата.
Чанк данных является необходимой частью любого звукового файла. В одном файле может присутствовать только один чанк данных.
В заключение хочется напомнить, что существуют множество других чанков таких как например Cue Chunk(вроде описания данного аудио файла), Playlist chunk, Associated Data List, Label Chunk, Note Chunk, Labeled Text Chunk, Sampler Chunk, Instrument Chunk Format. Для воспроизведения аудио их надо просто игнорировать.
Пример чтения wav
Продолжение чтение wav файлов (мой пример).
А теперь попробуем правельно прочитать прочитать wav файл как этого требует формат.
Что такое файлы 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.
Windows wave file output
Пожалуйста, сообщите об этом — просто выделите ошибочное слово или фразу и нажмите Shift Enter.
Wave File Format — формат звукового файла WAV |
Написал microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26.08.2010 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Формат WAV изначально использовался в системе Windows для сохранения цифровых аудиоданных. Это самый известный и широко поддерживаемый формат благодаря популярности платформы Windows и большому количеству написанных для неё программ. Почти любая современная программа, работающая со звуком, может прочитать или записать формат WAV, поэтому этот формат очень интересен для разработчиков программного обеспечения. Далее подробно описываются структуры данных формата WAV. Поскольку формат WAV-файла пришел от операционной системы Windows, в которой традиционно использовались процессоры Intel, все значения данных формата хранятся как Little-Endian, т. е. самый младший значащий байт идет первым. WAV-файлы могут содержать строки текста, например метки секций, информационные комментарии и т. д. Строки сохраняются таким образом, что первый байт указывает количество байт текста ASCII в строке.
Пример формата строки Wave WAV-файл использует стандартную RIFF-структуру, которая группирует содержимое файла из отдельных секций (chunks) — формат выборок аудиоданных, аудиоданные, и т. п. Каждая секция имеет свой отдельный заголовок секции и отдельные данные секции. Заголовок секции указывает на тип секции и количество содержащихся в секции байт. Такой принцип организации позволяет программам анализировать только необходимые секции, пропуская остальные секции, которые не известны или которые не требуют обработки. Некоторые определенные секции могут иметь в своем составе подсекции (sub-chunks). Например, как можно увидеть на диаграмме, описывающий основной формат WAV-файла, секции «fmt » и «data» являются подсекциями секции «RIFF».
Одна хитрая вещь, связанная с секциями файла RIFF, состоит в том, что адреса начала секций должны быть выровнены на размер слова (2 байта). Это означает, что общий размер секции должен быть кратен 2. Если секция содержит нечетное число байт данных (невыравненное до 2 байт), то добавляется дополнительный нулевой байт данных в конец данных секции. Этот дополнительный байт не учитывается в размере секции заголовка, таким образом программа всегда должна учитывать выравнивание для расчета смещения начала следующей секции. [Заголовок WAV-файла, секция типа RIFF] Заголовки WAV-файла используют стандартный формат RIFF. Первые 8 байт файла — стандартный заголовок секции RIFF, который имеет ID секции «RIFF» и размер секции, равный размеру файла минус 8 байт, используемых для RIFF-заголовка. Первые 4 байта данных в секции «RIFF» определяют тип ресурса, который можно найти в секции. WAV-файлы всегда используют тип ресурса «WAVE». После типа ресурса (ID «WAVE») идут все секции звукового файла, которые определяют аудиосигнал.
Существует довольно много типов секций, заданных для файлов WAV, но большинство WAV-файлов содержат только две из них — секцию формата («fmt «) и секцию данных («data»). Это именно те секции, которые необходимы для описания формата выборок аудиоданных, и для хранения самих аудиоданных. Хотя официальная спецификация не задает жесткий порядок следования секций, наилучшей практикой будет размещение секции формата перед секцией данных. Многие программы ожидают именно такой порядок секций, и он наиболее разумен для передачи аудиоданных через медленные, последовательные источники наподобие Интернет. Иначе если формат придет после данных, то перед стартом воспроизведения необходимо считать и запомнить все аудиоданные, только после получения формата запускать воспроизведение. Все секции формата RIFF и соответственно секции Wave сохраняются в следующем формате (см. диаграмму). Заметье, что даже вышеупомянутая секция RIFF соответствует этому формату.
Остальная часть этой статьи посвящена описанию различных типов секций Wave, их формату данных и что эти данные означают. [Секция формата — «fmt «] Секция формата содержит информацию от том, как сохранены аудиоданные и как они должны воспроизводиться. Информация включает в себя тип используемой компрессии, количество каналов, скорость выдачи выборок (sample rate), количество бит в выборке (bits per sample) и другие атрибуты.
Значения секции формата (Wave Format Chunk), * читайте для подробностей текст далее Идентификатор секции (Chunk ID) и объем данных (Data Size) Код сжатия (Compression Code)
Общеиспользуемые коды сжатия Количество каналов (Number of Channels) Скорость выборок (Sample Rate) Среднее количество байт в секунду (Average Bytes Per Second) Выравнивание блока (Block Align) Количество используемых бит на выборку (Significant Bits Per Sample) Дополнительные данные формата (Extra Format Bytes) [Секция данных — «data»] Секция данных Wave (Wave Data Chunk) содержит данные цифровых выборок аудиосигнала, которые можно декодировать с использованием формата и метода компрессии, указанных в секции формата Wave (Wave Format Chunk). Если код компрессии 1 (несжатый PCM, Pulse Code Modulation), то данные представлены в виде сырых, непреобразованных (raw) величин выборок. Эта статья описывает, как сохранены несжатые данные PCM, однако не вдается в подробности многих используемых форматов с компрессией. WAV-файлы обычно содержат только одну секцию данных, но секций может быть несколько, если они содержатся в секции списка Wave (Wave List Chunk «wavl»).
Формат секции данных «data» Аудиовыборки многоканального цифрового аудио сохраняются как чередуемые (interlaced) данные, которые просто означают последовательные аудиовыборки нескольких каналов (таких как стерео и каналы окружения surround). Выборки каналов сохранены последовательно друг за другом, перед тем как произойдет переход к следующему времени выборки. Это сделано с целью возможности последовательного проигрывания файла даже тогда, когда еще не весь файл прочитан целиком. Это удобно, когда проигрывается большой файл с диска (который не может быть размещен целиком в памяти) или файл передается в последовательном потоке данных через сетевое соединение (например Интернет). Значения в диаграмме ниже были бы сохранены в WAV-файле в порядке, как они перечислены в столбце значений (от начала до конца).
Чередуемые выборки стерео Wave Один момент, касающийся данных выборок, который может вызвать некоторое замешательство — когда выборки представлены 8 битами, они определены как значения без знака (unsigned). Все другие битовые размеры указываются как величины со знаком (signed). Например, выборка 16 бит может иметь значение в диапазоне от -32768 до +32767, где средняя точка (напряжение сигнала равно 0) соответствует значению 0. Как уже было указано ранее, все секции RIFF (включая секции WAVE «data») должны быть выровнены по размеру на слово (2 байта). Если данные выборок содержатся в нечетном количестве байт, в конец данных выборок должен быть добавлен выравнивающий нулевой байт. За заголовке секции «data» размер не должен учитывать этот выравнивающий байт. Далее описываются дополнительные секции WAV-файла, которые довольно редко используются. Поэтому для реализации простейшего программного анализа WAV-файла обработку этих секций можно опустить. [Секция fact — «fact»] Секция fact содержит информацию о содержимом WAV-файла, зависящую от кода компресии. Она требуется для всех форматов WAVE со сжатием, и требуется, если данные сигнала содержатся внутри секции списка (LIST) «wavl», но не требуется для несжатого формата PCM WAVE (код компресии 1), который содержит аудиоданные в секции «data».
Формат секции Fact Данные, зависящие от формата (Format Dependant Data) По мере появления новых форматов WAVE секция fact будет расширена с добавлением полей после поля числа выборок. Программы могут использовать размер секции fact для определения, какие поля представлены в секции. [Секция списка Wave — «wavl»] Секция списка wave (wave list chunk) используется для указания нескольких чередований секций «slnt» и «data». Эти секции могут помочь уменьшить размер файла путем указания слышимых сегментов выборок, когда поток аудиоданных содержит несколько интервалов тишины. Этот тип секции по мнению многих программистов является злоупотреблением в формате WAV-файла, и его использование не рекомендуется. Также много программ не будут распознавать этот тип секции, просто игнорируя его. Эта форма сжатия усложняет без надобности структуру WAV-файла и может быть выгодно реализована другими способами, включая несколько существующих форматов компресии.
Формат секции Wave List [Секция тишины — «slnt»] Секция тишины (silent chunk) используется для указания сегмента паузы звучания, которая имеет некоторую продолжительность в выборках сигнала. Секция тишины всегда содержится только внутри секции списка wave (wave list chunk). Когда эта секция объявляет тишину, не нужно задавать нулевую громкость или базовую выборку. Это фактически удерживается последняя выборка сигнала, считанная в предыдущей секции данных ((Wave Data Chunk)) секции списка Wave (wave list chunk). Если не было предыдущих секций данных, должно использоваться базовое значение выборки, равное 127 для 8-битных данных, 0 для 16-битных данных или всех данных с бОльшим количеством бит на выборку. Эти требования могут казаться тривиальными, но если это не выполнить, то могут появится нежелательные щелчки и перепады в аудиосигнале.
Silent Chunk Format Количество выборок тишины (Number of Silent Samples) Секция cue определяет один или более смещения выборок, которые часто используются, чтобы отметить примечательные разделы аудио. Например, у начала и конца стиха в песне могут быть метки, по которым легче найти начало и конец стиха. Секция cue является необязательной, и если она добавлена, то одна секция cue должна указать все примечательные точки для секции «WAVE». Не допускается больше одной секции cue внутри секции «WAVE».
Формат секции Cue Индентификатор ID секции и объем данных (Chunk ID and Data Size) Количество примечательных точек (Num Cue Points) Список примечательных точек (List of Cue Points)
Формат точки Cue ID Позиция (Position) ID секции данных (Data Chunk ID) Начало секции (Chunk Start) Начало блока (Block Start) Смещение выборки (Sample Offset) [Секция списка воспроизведения (плейлиста) — «plst»] Секция плейлиста указывает порядок воспроизведения последовательности интересующих точек (cue points). Эти точки заданы в секции «cue «, где-то в другом месте файла. Плейлист состоит из массива сегментов, каждый из которых содержит информацию о том, какой сегмент откуда должен стартовать на проигрывание, какой длительности сегмент проигрывания (в выборках) и сколько раз должен повториться сегмент перед переходом к следующему по списку сегменту.
Формат секции Playlist Количество сегментов (Number of Segments) Список сегментов (List of Segments)
Формат сегмента плейлиста ID интересующей точки (Cue Point ID) Длина (Length) Количество повторений (Number of Repeats) [Секция связанного списка данных — «list»] Секция связанного списка данных (Associated Data List Chunk) используется для задания текстовых меток и имен, которые связаны с интересующими точками — для предоставления для каждой позиции текстовой метки или имени.
Формат связанного списка данных Type ID Список текстовых меток и имен [Секция метки — «labl»] Секция метки (Label Chunk) всегда содержится внутри секции связанного списка данных (associated data list chunk). Она используется для связывания текстовой метки с интересующей точкой (Cue Point). Эта информация часто отображается на маркерах или флажках в аудиоредакторах.
Формат секции метки Cue Point ID Текст [Секция примечания или комментария — «note»] Секция примечания (Note Chunk) всегда содержится внутри секции связанного списка данных (associated data list chunk). Она используется для связывания текстового комментария с интересующей точкой (Cue Point). Эта информация сохраняется тем же самым способом, как и метки в секции метки.
Формат секции примечания Cue Point ID Text [Секция помеченного текста — «ltxt»]
Формат секции помеченного текста Cue Point ID Sample Length Purpose ID Country, Language, Dialect, Code Page Text [Sampler Chunk — «smpl»] Секция семплера (Sampler Chunk) задает основные параметры инструмента, как например семплер MIDI, который должен использоваться для воспроизведения данных звука. Наиболее важно, что он включает в себя информацию о зацикливаниях звука во время воспроизведения. Конечно, Вы можете найти, что это является дублированием информации, которую можно найти в секциях Cue и Playlist формата WAVE, но, к счастью, в секции семплера это сделано более гибко, непротиворечиво, и лучше задокументированным способом.
Формат секции семплера Manufacturer В значении имеется некоторая дополнительная информация, которую можно использовать для трансляции в величину, используемую в передаче на семплер формата MIDI System Exclusive. Старший байт показывает количество младших байт (1 или 3), которые значимы для кода производителя. Например, значение для Digidesign будет 0x01000013 (0x13) и значение для Microsoft будет 0x30000041 (0x00, 0x00, 0x41). См. список MIDI Manufacturers List. Product Sample Period MIDI Unity Note MIDI Pitch Fraction SMPTE Format
Значения формата SMPTE SMPTE Offset Sample Loops Sampler Data List of Sample Loops
Формат цикла выборок Cue Point ID Type
Значения Loop Type Start End Fraction Play Count [Секция инструмента — «inst»] Секция инструмента (instrument chunk) используется для описания — каким образом звук должен быть проигран как звук инструмента. Эта информация полезна для обмена музыкальной информацией между музыкальными редакторами-семплерами, основанными на выборках (семплах), трекерами или программными таблицами звука. Эта секция является необязательной, и не может встречаться в WAVE-файле больше одного раза.
Формат секции инструмента Unshifted Note Fine Tune Gain Low Note и High Note Low Velocity и High Velocity Обратная сторона популярности формата файла WAVE — из сотен программ, которые поддерживают этот формат, многие злоупотребляют или неправильно используют формат из-за плохого программирования и/или плохой документации. Как только некоторые из этих «непослушных» программ становятся довольно популярными и производят в большом количестве миллионы неправильных WAVE файлов, остальная часть отрасли программного обеспечения вынуждена иметь дело с этим и производить код, который может распознавать эти неправильные файлы. Новый код не должен записывать эти ошибки, но должен читать ошибочный WAVE-файл. Ниже описано несколько таких исключений, которые были сделаны в дополнение к строгому/исходному формату WAVE. * Некорректная величина блока выравнивания (Block Alignment) — с этим можно иметь дело, вычисляя Block Alignment по указанной ранее формуле. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее обновление ( 04.04.2013 ) |
Комментарии
- #7 MS24
2013-04-04 15:04:04 Спасибо большое, для новичков статья очень хорошо понимается. А вот как воспроизвести wav-файлы с помощью AVR не будет статьи случайно? Очень хотелось бы!
microsin: Вы могли бы взять исходный код из статьи [1], несмотря на то, что там описан проект на ARM. Модули оттуда можно легко вставить в проект AVR Studio, и взять для файловой системы облегченную библиотеку FAT — PetitFS. Она очень хорошо работает на микроконтроллер ах AVR. Добавил также ссылки [2, 3], они должны Вам помочь.
#6 Serge23
2012-03-27 09:06:18 Все бы хорошо, смысл доходчив. Только цифры смещения не везде верные. Для общего понимания хорошо, а для практического применения
microsin: как-то Вы слишком туманно выражаетесь. «Не везде» — это где конкретно?
2012-03-22 17:25:26 Статья хороша, спасибо!
2011-08-19 15:23:00 Очень даже неплохая статья
2011-06-09 14:52:25 Хороший, технически грамотный перевод вот отсюда:
http://www.sonicspot.com/guide/wavefiles.html
Спасибо!
2011-05-26 00:15:44 Интересно, автор сам-то понимает, что написал? Судя по тому, что терминологией он не владеет, вряд ли
microsin: наверное, Вы просто не весь материал поняли. Мне кажется — наоборот, автор отлично разбирается в вопросе, и очень подробно и доходчиво излагает структуру формата WAV-файла.
2011-03-17 23:05:30 сверхкрутая статья