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

Работа с Wav файлом - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа читающая почту http://www.cyberforum.ru/cpp/thread1224741.html
Привет. Надумал такую идею. Есть почтовый ящик с кучей писем. Нужно из этого ящика скопировать в таблицу word дату, отправителя и название каждого письма. Ящик открывается в браузере(или если будет проще - в спец программе для чтения почты). Вопрос в том, что я не знаю какие для этого нужны средства. Собираюсь использовать c++, а что ещё нужно будет применить - не знаю. Буду рад, если доступно...
C++ Написать скрипт для игры WoW на проверку баффов из БД и сохранение их в отдельную таблицу помогите написать скрипт На проверку баффов из бд и сохранение их в отдельную таблицу. игра world of warcraft по типу этого bool Unit::HasAura(uint32 spellId, uint64 casterGUID, uint64 itemCasterGUID, uint8 reqEffMask) const { if (GetAuraApplication(spellId, casterGUID, itemCasterGUID, reqEffMask)) return true; return false; } ๖ۣۜNarko: AuraApplication *... http://www.cyberforum.ru/cpp/thread1224718.html
Написать функцию вычисляющую амплитудный спектр отсчетов звукового сигнала формата WAV C++
Нужно написать функцию вычисляющую амплитудный спектр отсчетов звукового сигнала формата WAV. Посоветуйте с чего начать выполнение задания, что изучить? на данный момент я пока понял, что нужно как-то использовать дискретное преобразование Фурье и теорему отсчетов
Большая загрузка при распознавании лиц с камеры C++
Всем привет. почти закончил писать программу и столкнулся с такой проблемой. Есть кусок когда, который отвечает за распоознование лиц с камеры void Faces(IplImage* frame1) { CascadeClassifier face_cascade("/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml"); Mat frame = frame1; Mat frame_gray; cvtColor(frame,frame_gray,CV_BGR2GRAY);
C++ Как скачать с базы данных sqllite нужные мне данные в структуру? http://www.cyberforum.ru/cpp/thread1224453.html
Подскажите пожалуйста, работаю через sqllite, как скачать с базы данных нужные мне данные, например в структуру rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg); static int callback(void *data, int argc, char **argv, char **azColName) // Выводит всё подряд и не записывает никуда { int i; while(i<argc) { printf("%s = %s\n", azColName, argv ? argv : "NULL");
C++ После сборки в Release краш с Access Violation Имеется Dll, собранная в Release /MT. На Win8 все прекрасно работает, а на 7ке крашится с исключением c0000005. Причем если запускать в режиме совместимости, то ошибка исчезает. А так же, когда меняю Runtime Library на /MTd, все опять же работает. Подскажите с чем это может быть связано и куда копать? Добавлено через 1 час 16 минут Ладно, поставим вопрос так: ничего страшного, если... подробнее

Показать сообщение отдельно
Myha_fly
Заблокирован

Работа с Wav файлом - C++

09.07.2014, 11:57. Просмотров 2669. Ответов 18
Метки (Все метки)

Пишу курсовую. Надо получить спект Wav файла. Прочитал достаточно статей и форумов. В общем оформил шапку и вытащил параметры.

Для того, что бы получить спектр нужно применить преобразование Фурье, но для этого нужны данные.
тут у меня и возникли вопросы.
И как я понимаю сами данные Wav файла находятся после шапки.

Но я не понимаю, как узнать сколько их и какой размерности. То есть, нужно ли создавать для них массив и какой размерности. В каком формате данные. и в каком их лучше всего отправить на обработку

нашел вот это (0x00,0x01),(0x22,0x43),(0x74,0x15),(0x74,0x65)... - 16 бит моно

что касается самого wav файла, работаю с 44100Гц 1 канал 2 байта

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <fstream>
#include <iostream>
using namespace std;
struct WAVHEADER
{
char chunkId[4];// RIFF-заголовок:
unsigned long chunkSize;
char format[4]; // Содержит символы "WAVE"
char subchunk1Id[4];// Содержит символы "fmt "
unsigned long subchunk1Size; // Это оставшийся размер подцепочки, начиная с этой позиции.
unsigned short audioFormat;// Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
unsigned short numChannels;// Количество каналов. Моно = 1, Стерео = 2 и т.д.
unsigned long sampleRate;// Частота дискретизации. 8000 Гц, 44100 Гц и т.д
unsigned long byteRate;// sampleRate * numChannels * bitsPerSample/8
unsigned short blockAlign; // numChannels * bitsPerSample/8  Количество байт для одного сэмпла, включая все каналы.
unsigned short bitsPerSample; // Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
char subchunk2Id[4]; // Содержит символы "data"
unsigned long subchunk2Size; //numSamples * numChannels * bitsPerSample/8 Количество байт в области данных.
};
void main(){
    FILE *file;
    errno_t err;
    err = fopen_s(&file, "00032.00.wav", "rb");
    if (err)
    {
    printf_s("Failed open file, error %d", err);
    system("pause");
    exit(0);
    }
    WAVHEADER head;
    fread_s(&head, sizeof(WAVHEADER), sizeof(WAVHEADER), 1, file);
    
    float fDurationSeconds = 1.f * head.subchunk2Size / (head.bitsPerSample / 8) / head.numChannels / head.sampleRate;
    int iDurationMinutes = (int)floor(fDurationSeconds) / 60;
    fDurationSeconds = fDurationSeconds - (iDurationMinutes * 60);
    printf_s("Duration: %02d:%02.f\n", iDurationMinutes, fDurationSeconds);
 
    printf_s("Sample rate: %d\n", head.sampleRate);
    printf_s("Channels: %d\n", head.numChannels);
    printf_s("Byte per sample: %d\n", head.bitsPerSample/8);
    /*printf_s("Byte Rate: %d\n", head.byteRate);
    printf_s("Block Align: %d\n", head.blockAlign);
    printf_s("Subchunk 2 Size: %d\n", head.subchunk2Size);*/
    system("pause");
 
???????????????????
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru