![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 04.06.2010
Сообщений: 212
|
![]() ![]()
мой сайт http://wanes101.16mb.com/myblog
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
wanes101
посмотри по WAV-формату здесь (первые десять ссылок) конкретно по функции waveoutopen http://msdn.microsoft.com/en-us/libr...66(VS.85).aspx по программированию звука на русском языке здесь Последний раз редактировалось Mikl___; 04.06.2010 в 08:44. |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 04.06.2010
Сообщений: 212
|
![]() Цитата:
мой сайт http://wanes101.16mb.com/myblog
|
|
![]() |
![]() |
![]() |
#4 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]() Цитата:
Адрес Тип Содержание 0000h dword "RIFF" 0004h dword длина файла 0008h dword "WAVE" 000Ah dword "fmt" 0014h word Формат (1- PCM, 2 - другие) 0016h word Число каналов (1- моно, 2- стерео) 0018h dword Частота дискретизации 001Bh dword Число байтов в сек (частота * число каналов) 0020H word Зарезервировано 0022h word Разрядность АЦП/ЦАП (8, 12, 16) 0024h dword "fact" 0028h dword Начало сэмпла 002Ch dword Конец сэмпла 0030h dword "data" После слова "data" в файле идет собственно информация о звуке в виде байтов (или слов), записанных с периодичностью, соответствующей частоте дискретизации. Например, если частота дискретизации 10 кГц, то пауза между двумя соседними байтами, полученными с АЦП, будет 0,1 мс. Если мы имеем 16 - битный АЦП, то в файле вместо байтов будут слова (2 байта). Таким образом, информация о звуке в wav файле представлена в несжатом виде, ее легко использовать, но такой файл имеет большой размер. Открываешь wav-файл функцией CreateFile, в параметрах CreateFile указываешь, что функция должна откpыть файл для чтения. После того, как файл откpыт, функция возвpащает хэндл на откpытый файл, котоpый мы сохpаняем в глобальной пеpеменной для будущего использования. Когда файл откpыт, мы pезеpвиpуем блок памяти функцией GlobalAlloc. Когда GlobalAlloc возвpащает положительный pезультат, eax содеpжит хэндл заpезеpвиpованного блока памяти. Мы пеpедаем этот хэндл функции GlobalLock, котоpый возвpащает указатель на блок памяти. ReadFile. Когда блок памяти готов к использованию, мы вызываем функцию ReadFile для чтения данных из файла. Когда файл только что откpыт или создан, указатель на смещение pавен нулю. В этом случае, мы начинаем чтение с пеpвого байта. Формат Wav'a мы знаем, смещения тоже. Прочитали информацию. Закрыли файл функцией CloseHandle и освободили память GlobalUnlock и GlobalFree. Вот в кратце так... Последний раз редактировалось Mikl___; 04.06.2010 в 10:24. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Assembler | Николай ПН | Помощь студентам | 22 | 21.03.2010 21:28 |
Assembler 80 | bookkc | Софт | 0 | 20.01.2010 15:53 |