![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
shell14 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.5.2006 Репутация: нет Всего: нет |
Подскажите как записать данные в wav файл? Я записал полностью структуру заголовка файла, все нормально. Интересуют вопрос именно запись данных в файл.
Особой сложности не возникает, потому что файл нужен mono, не сжатый (PCM), 44100 Hz, и 16 bit per sample. т.е. как я понимаю сами данные должны храниться в массиве 2байтовых слов, (например short подойдет?). вот, теперь отдельно вопросы: как правильно организовать цикл записи данных, т.е. как сделать выборку? например любой сигнал в форме sin, если я хочу записать файл ну скажем длительностью 30 секунд? typedef struct waveformat_tag { WORD wFormatTag; // тип формата WORD nChannels; // количество каналов (моно или стeрео) DWORD nSamplesPerSec; // частота дискретизации DWORD nAvgBytesPerSec; // скорость потока данных WORD nBlockAlign; // выравнивание блока данных } WAVEFORMAT; |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
Если тебе нужен корректный WAV, который впоследствии можно было послушать, то разбирай структуру WAV файла. Общая структура RIFF файлов подробно, с примерами, описана в MSDN'е. Это набор функций mmio-. По вавам - не помню, врать не буду. WAV - эточастный случай RIFF. Обратись в раздел форума WinAPI, а лучше воспользуйся поиском.
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
shell14 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.5.2006 Репутация: нет Всего: нет |
GremlinProg, спасибо конечно, но с форматом я вроде как раз разобрался возникает именно проблема с данными... файл получаеться занимает n-ое колличество килобайт, но при этом winamp п оказывает 0 секунд
|
|||
|
||||
shell14 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.5.2006 Репутация: нет Всего: нет |
Хорошо, народ можете подсказать какой сигнал задать чтоб хоть какой-нибудь нормальный звук получился? ну например какие параметры для синуса?
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
Chunk "data" значит имеет нулевую длину. А сформировать любой сигнал - просто: заполни массив данных хотя бы так: Это будет гул на частоте дискретизации максимальной громкости Это еще простенький примерчик, разницу сам услышишь. в обоих примерах используется 16 битное ИКМ с одним каналом на 100 семплов -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
shell14 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.5.2006 Репутация: нет Всего: нет |
GremlinProg, спасибо, все заработало!!! у меня действительно был баг с записью размера!
только теперь остался один вопрос, ведь чем больше будет время, тем соответсвенно получаеться больше размер данных. Но ведь я не могу выделить памать под бесконечный объем. я имею ввиду например, что для длительности 40 секунд мне нужно элементов... а что делать если мне нужен сигнал боьшей длительности? Просто я организовал выборку данных в массив циклом по времени. |
|||
|
||||
regis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 232 Регистрация: 12.12.2005 Где: Москва, Россия Репутация: 2 Всего: 7 |
Буферизовать данные в памяти и время от времени дописывать в файл, естественно. --------------------
В. В чем разница между hardware и software?О. В отличие от второго, по первому можно двинуть кулаком или пнуть ногой. |
|||
|
||||
shell14 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 20.5.2006 Репутация: нет Всего: нет |
ааа, точно, спасибо
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |