Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.61
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
#1

Чтение самплов из wav файла в массив - C++

27.03.2013, 23:46. Просмотров 4355. Ответов 3
Метки нет (Все метки)

Всем привет!!!

Ситуация такая:
Заголовок успешно читаю. Хочу получить массив с самплами.
Проблема: Не понимаю как преобразовать битовое представление.
Цель: Необходимость выводить в виде звуковой волны с последующими трансформациями и записью в файл. (Задание курсовой.)

Пока выглядит так:

Это структура:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef struct  WAV_HEADER{
        char                RIFF[4];        // RIFF Header      Magic header
        unsigned long       ChunkSize;      // RIFF Chunk Size
        char                WAVE[4];        // WAVE Header
        char                fmt[4];         // FMT header
        unsigned long       Subchunk1Size;  // Size of the fmt chunk
        unsigned short      AudioFormat;    // Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM
        unsigned short      NumOfChan;      // Number of channels 1=Mono 2=Sterio
        unsigned long       SamplesPerSec;  // Sampling Frequency in Hz
        unsigned long       bytesPerSec;    // bytes per second
        unsigned short      blockAlign;     // 2=16-bit mono, 4=16-bit stereo
        unsigned short      bitsPerSample;  // Number of bits per sample
        char                Subchunk2ID[4]; // "data"  string
        unsigned long       Subchunk2Size;  // Sampled data length
 
    }wav_hdr;
Это читалка заголовка в конструкторе:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    wav_hdr wavHeader;
 
     FILE *wavFile;
 
     int headerSize = sizeof(wav_hdr), filelength = 0;
 
     wavFile = fopen( FileName.toAscii().data() , "r" );
 
         if(wavFile == NULL){
             std::cout << "ERROR READ FILE" << std::endl;
         }
         else
         {
             std::cout << "FILE IS OPEN TO READ" << std::endl;
 
         fread(&wavHeader,headerSize,1,wavFile);
         filelength = getFileSize(wavFile);
 
         for (int i = 0; i < wavHeader.Subchunk2Size; i++)
         {
             audioData[i] = // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                            // А что тут теперь делать ???
                            // Как читать данные ???
                            // И в каком формате они должны быть представленны ???
                            // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         }
 
         fclose(wavFile);
Буду благодарен за объяснения и примеры кодов!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2013, 23:46     Чтение самплов из wav файла в массив
Посмотрите здесь:

Чтение файла в массив строк C++
Чтение из файла в массив C++
Чтение 16-и битных слов из бинарника (загрузка Wav) C++
C++ Чтение из файла в массив string
C++ Чтение из файла в массив
C++ Чтение из файла в массив
C++ Открытие wav файла и чтение его заголовка
Прочитать несколько секунд wav файла в массив C++
C++ Чтение из файла в массив
Чтение из файла в массив C++
Чтение из файла в динамический массив C++
Реализовать чтение файла в массив C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
28.03.2013, 00:17     Чтение самплов из wav файла в массив #2
Цитата Сообщение от Hrundel Посмотреть сообщение
Буду благодарен за объяснения и примеры кодов!
txt to wav там pcm плейерок с кодом - как раз всё по твоей тематике.
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
28.03.2013, 00:23  [ТС]     Чтение самплов из wav файла в массив #3
Юра, спасибо, ты как всегда - супер!!!
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
23.09.2013, 11:34     Чтение самплов из wav файла в массив #4
Hrundel,
Если вам не сложно, напишите полную версию кода.
Yandex
Объявления
23.09.2013, 11:34     Чтение самплов из wav файла в массив
Ответ Создать тему
Опции темы

Текущее время: 11:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru