Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / wav format files / 11 сообщений из 11, страница 1 из 1
23.10.2006, 15:18
    #34074280
Wavesql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Подскажите пожалуйста, как правильно осуществить запись с детальным описанием формата после прочтения этого файла?
...
Рейтинг: 0 / 0
23.10.2006, 15:33
    #34074354
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
WavesqlПодскажите пожалуйста, как правильно осуществить запись с детальным описанием формата после прочтения этого файла?

Т.е. как подабрать WaveFormat?
...
Рейтинг: 0 / 0
23.10.2006, 15:44
    #34074398
Wavesql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
после открытия файла <file.wav>, нужно записать в новый файл прочитанную информацию о wav-файле и вот как бы записать эту ниформацию о нем?
...
Рейтинг: 0 / 0
23.10.2006, 15:48
    #34074413
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Wavesqlпосле открытия файла <file.wav>, нужно записать в новый файл прочитанную информацию о wav-файле и вот как бы записать эту ниформацию о нем?

Текстом, или скопируй заголовок...

Не понял, что требуется. При чем здесь wav файл? При чем открытие?
...
Рейтинг: 0 / 0
23.10.2006, 15:54
    #34074440
Den_di
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Имеется ввиду разобрать заголовок и записать в файл? Тогда смотрим формат файла и считываем в соответствии с форматом и расшифровываем в файл или что спросили то?
...
Рейтинг: 0 / 0
23.10.2006, 15:59
    #34074473
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Den_diИмеется ввиду разобрать заголовок и записать в файл? Тогда смотрим формат файла и считываем в соответствии с форматом и расшифровываем в файл или что спросили то?

После первого уточнения вопроса стало понятно, что записать необходимо не на звуковое устройство. :)
...
Рейтинг: 0 / 0
24.10.2006, 12:16
    #34076501
Wavesql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Да, необходимо разобрать заголовок файла .wav и полученную информацию записать в файл.

Просто не совем понятно как это осуществляется...

Например объявляю след. структуру:
typedef struct{
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
} WAVEFORMAT;

Затем открыть файл *.wav, считать его и можно записывать в файл значения полей структуры? так?
...
Рейтинг: 0 / 0
24.10.2006, 12:26
    #34076538
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
W A V - формат
Это RIFF файл фирмы Microsoft. Он используется в Windows. Поэтому весьма "популярен". Он похож на AIFF - формат Apple, который используется для хранения высококачественного звука инструментов, он так же используется на SGI. Он похож, но не совместим.

Вначале идет заголовок RIFF файла:

typedef struct {
char id[4]; - идентификатор файла = "RIFF" = 0x46464952
long len; - длина файла без этого заголовка
} IDRiff;

Сам WAV-файл может состоять из нескольких кусков, а эти куски, могут содержать по несколько выборок, или какую-то другую информацию. Но чаще всего, пока - всегда, часть одна и выборка одна.

Заголовок куска WAV:

typedef struct {
char id[4]; - идентификатор = "WAVE" = 0x45564157
char fmt[4]; - идентификатор = "fmt " = 0x20746D66
long len; - длина этого куска WAV - файла,
} IDChuckWave;

За ним не посредственно кусок WAV:

typedef struct {
int type; - тип звуковых данных, бывает - !!!
1 - просто выборка;
0x101 - IBM mu-law;
0x102 - IBM a-law;
0x103 - ADPCM.
int channels; - число каналов 1/2 - !!!
long SamplesPerSec; - частота выборки - !!!
long AvgBytesPerSec; - частота выдачи байтов
int align; - выравнивание
int bits; - число бит на выборку - !!!
} IDWave;

Помеченные - особо необходимы. Далее идентификатор выборки:

typedef struct {
char id[4]; - идентификатор ="data" =0x61746164
long len; - длина выборки ( кратно 2 )
} IDSampleWave;

Выборок в куске может быть несколько.

Пример программы для просмотра WAV:

#include
#include

typedef struct {
char id_riff[4];
long len_riff;

char id_chuck[4];
char fmt[4];
long len_chuck;

int type;
int channels;
long freq;
long bytes;
int align;
int bits;

char id_data[4];
long len_data;
} TitleWave;


void main
( int argc, char * argv[] )
{
FILE * f;
TitleWave tw;

if ( argc<2 ) { printf("Укажи имя .wav файла\n"); return ; }
f=fopen(argv[1],"rb");
if ( f==0 ) { printf("Не открыть файл - %s\n",argv[1]); return; }
fread(&tw,sizeof(TitleWave),1,f);
fclose(f);
printf("LEN RIFF\t - %ld\n", tw.len_riff );
if ( strncmp(tw.id_riff,"RIFF",4)!=0 )
printf("Не совпал идентификатор RIFF\n");
printf("LEN Chuck\t - %ld\n", tw.len_chuck );
if ( strncmp(tw.id_chuck,"WAVE",4)!=0 )
printf("Не совпал идентификатор CHUCK\n");
if ( strncmp(tw.fmt,"fmt ",4)!=0 )
printf("Не совпал идентификатор FMT\n");
printf("Type\t\t - %d\n", tw.type );
printf("Channels\t - %d\n", tw.channels );
printf("Sample Per Sec\t - %d\n", tw.freq );
printf("Bytes Per Sec\t - %d\n", tw.bytes );
printf("Bits\t\t - %d\n", tw.bits );
printf("Aligned\t\t - %d\n", tw.align );
printf("LEN Data\t - %ld\n", tw.len_data );
if ( strncmp(tw.id_data,"data",4)!=0 )
printf("Не совпал идентификатор DATA\n");
}
...
Рейтинг: 0 / 0
24.10.2006, 12:28
    #34076551
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Я, вообще-то использую mmio:
например, тута
...
Рейтинг: 0 / 0
24.10.2006, 12:46
    #34076616
Wavesql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
большое спасибо.
...
Рейтинг: 0 / 0
24.10.2006, 12:53
    #34076666
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wav format files
Wavesqlбольшое спасибо.

Пожалуйста. Учись правельно ставить вопросы.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / wav format files / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]