Wave format спэцыфікацыя

Здаецца вельмі простым самому пісаць гукавыя файлы, але калі даходзіць да справы... Такім чынам, глядзіце - Wave format спэцыфікацыя:
Назоў падзела Памер ды фармат Зьмест
Загаловак файла 4 байта (DWord) ASCII тэкст "RIFF" Працэдура перкладу стракі ў DWord - ў модулі Wave
Памер файла 4 байта (DWord) Памер файла без стракі "RIFF" (4 байта) і апісаньня файла (4 bytes). Гэта памер_файла - 8.
WAV description 4 байта (DWord) ASCII тэкст "WAVE"
Format description 4 байта (DWord) АSCII тэкст "fmt "(разам з прабелам)
Памер апісаньня 4 байта (DWord) Памер апісаньня WAVE format (2 байта) + mono/stereo (2 байта) + дыскрэтызацыя (4 байта) + байтаў ў секунду (4 байта) + размяшчэньне (2 байта) + + бітаў на сэмпл (2 байта). Звычайна гэта 16.
WAVE type format 2 байта (Word) Тып фармата. Для лінейнай дыскрэтызацыі 1, іншае - зьціснутыя дадзеныя.
Колькасьць каналаў 2 байта (Word) mono ($01) ці stereo ($02). Можна паспрабаваць больш...
Дыскрэтызацыя 4 байта (DWord) Час дыскрэтызацыі (usually 44100 Hz, 22050 Hz, ...)
Байтаў у секунду 4 байта (DWord) = Колькасьць_каналаў*Сэмплаў_у_секунду*Бітаў_на_сэмпл/8
Размяшчэньне 2 байта (Word) = Колькасьць_каналаў*Бітаў_на_сэмпл/8
Бітаў на сэмпл 2 байта (Word) Біты дыскрэтызацыі (звычайна 32, 24, 16, 8). А калі зрабіць, напрыклад, 5 ..?
Data description 4 байта (DWord) ASCII тэкст "data".
Памер дадзеных 4 байта (DWord) Памер ўласна гукавых дадзеных
Дадзеныя -?- Ўласна дадзеныя. Будзьце ўважлівыя з фарматам стэрэа

Заўвагі.

  1. Ня хвалюйцеся наконт фармата лікаў.Усё нармальна ў Delphi. Памятайце, што першы Word ў DWord - другі Word ў сьпісе.
    { Напрыклад: калі A1 і A2 - word, тады dword B=(A1 ды A2) ёсьць (A2 shl 16) + A1 }
  2. Памятайце пра парадак сэмплаў у стэрэа файлах:
    Sample 1 - Left Sample 1 - Right Sample 2 - Left Sample 2 - Right Sample 3 - Left ...

    Хутчэй ды прасьцей пісаць файлы ў DWord, таму левы (AL) ды правы (AR) сэмплы ў найбольш папулярным 16-бітным фармаце пакуюцца ў DWord як D = (AR shl 16) + AL Першы і другі сэмплы ў мона файлах пакуюцца ў DWord як
    D = (A2 shl 16) + A1
  3. Ў выпадку 8-бітнай дыскрэтызацыі сэмпл - байт без знака (0..255),
    16-бітнай - цэлае са знакам (-32767..32767)
Модуль Delphi, што ўтрымлівае асноўныя функцыі для апрацоўкі WAV-файлаў Wave.pas

©2002-2003, Veter      English  Беларуская  Русский
Сайт создан в системе uCoz