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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка в поиске первого положительного элемента http://www.cyberforum.ru/cpp-beginners/thread820670.html
Помогите найти ошибку. Нужно найти первый положительный элемент в двумерном массиве вот код. int ib; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (M > 0) {
C++ Нужны советы по задачам У меня при написании программ возникли проблемы. 1)в программе где я работаю со списками: #include <conio.h> #include <stdio.h> #include <iostream> using namespace std; struct STack { int *number; http://www.cyberforum.ru/cpp-beginners/thread820628.html
класс-контейнер C++
Класс МАГАЗИН содержит массив объектов класса ТОВАРЫ. класс ТОВАРЫ содержит название товара, свидетельство качества, стоимость. класс ПОКУПАТЕЛЬ содержит перечень нужных товаров. Определить необходимые данные, конструкторы, деструкторы и методы работы с элементами данных. Осуществить покупку и определить стоимость товаров согласно перечню. класс я создал но как покупку сделать и стоимость...
Свинячья латынь( работа с С-строками ) C++
Задание такое: вводится строка и нудно ее перевести в такую латынь. Алгоритм такой: первую букву поставить в конец слова и добавить к концу слова "ау". Получается из слова "the" - "hetay", "computer" - "omputercay" и тд. Вроде бы все должно работать, но программа виснет. Подскажите, где у меня ошибка. #include <iostream> #include <cstring> char* latin( char* ); int main() { char a; ...
C++ Как захватить звук с микрофона? http://www.cyberforum.ru/cpp-beginners/thread820619.html
Собственно интересует тема топика. Наверное делается это так: создаётся какой - то буфер и начинается запись в него до тех пор, пока он не запольнится, далее буфер копируется куда надо, обнуляется и запись начинается заново. Собственно, как это можно реализовать? Желательно без SDL или DirectShow.
C++ Чтение из файла и занесение в массив Народ помогите пожалуйста! Есть текстовый файл, в него записаны числа 0.1 0.2 0.3(каждое на новой строке). Нужно открыть файл посчитать количество элементов и занести их в массив, а затем заново считать из файла значения и занести их в созданный ранее массив. Понимаю что задача легкая но проблема стоит в том что я абсолютно не знаком с языком С++, но реализация нужна именно на нем. Если не... подробнее

Показать сообщение отдельно
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114

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

27.03.2013, 23:46. Просмотров 4457. Ответов 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);
Буду благодарен за объяснения и примеры кодов!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru