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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Ramoncheg
24 / 17 / 1
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
#1

Сохранить как .wav файл - C++

20.05.2013, 20:04. Просмотров 1388. Ответов 4
Метки нет (Все метки)

Подскажите пожалуйста как сохранить массив как wav файл, с полями структуры wav файла я разберусь , что писать в поле data ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 20:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сохранить как .wav файл (C++):

Написать программу, формирующую по исходному WAV файлу новый WAV файл - C++
Написать программу, формирующую по исходному WAV файлу новый WAV файл, со сглаженным вершинами перегруженных (клипированных) фрагментов....

Как побайтово считать Wav файл? - C++
Так, чтобы у я мог с ним работать, а потом опять выгрузить его как wav файл?

Как сохранить в файл изображение? - C++
есть переменная CBitmap* m_pBitmap=(CBitmap*)hGlob; Как ее сохранить в файл в виде bmp или png файлов????

Как сохранить данные в файл - C++
Здраствуйте! Есть несколько текстовых данных около 5, которые нужно объединить и сохранить в файле. Как это сделать программно?

Как сохранить контейнеры STL в файл. И как потом их прочитать из файла - C++
В Qt такой контейнер как map<T,T> библиотеки STL заносится в файл занесением в поток "<<map;" , а как это можно сделать в C++ BUILDER6.0...

Как создать программу, и сохранить её как файл - C++
Добрый вечер. У меня вопрос: как создать программу, и сохранить её как файл. Например: Я создал программу которая будет определять...

4
Ramoncheg
24 / 17 / 1
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
21.05.2013, 20:59  [ТС] #2
нежели никто не знает ? киньте хоть литературу по сохранению wav файлов или исходники хоть какие - то ...
0
zss
Модератор
Эксперт С++
6474 / 6037 / 1980
Регистрация: 18.12.2011
Сообщений: 15,632
Завершенные тесты: 1
21.05.2013, 21:38 #3
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/ Структура, описывающая заголовок WAV файла.
struct WAVHEADER
{
// WAV-формат начинается с RIFF-заголовка:
 
// Содержит символы "RIFF" в ASCII кодировке
// (0x52494646 в big-endian представлении)
char chunkId[4];
 
// 36 + subchunk2Size, или более точно:
// 4 + (8 + subchunk1Size) + (8 + subchunk2Size)
// Это оставшийся размер цепочки, начиная с этой позиции.
// Иначе говоря, это размер файла - 8, то есть,
// исключены поля chunkId и chunkSize.
unsigned long chunkSize;
 
// Содержит символы "WAVE"
// (0x57415645 в big-endian представлении)
char format[4];
 
// Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
// Подцепочка "fmt " описывает формат звуковых данных:
// Содержит символы "fmt "
// (0x666d7420 в big-endian представлении)
char subchunk1Id[4];
 
// 16 для формата PCM.
// Это оставшийся размер подцепочки, начиная с этой позиции.
unsigned long subchunk1Size;
 
// Аудио формат, полный список можно получить здесь [url]http://audiocoding.ru/wav_formats.txt[/url]
// Для PCM = 1 (то есть, Линейное квантование).
// Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
unsigned short audioFormat;
 
// Количество каналов. Моно = 1, Стерео = 2 и т.д.
unsigned short numChannels;
 
// Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
unsigned long sampleRate;
 
// sampleRate * numChannels * bitsPerSample/8
unsigned long byteRate;
 
// numChannels * bitsPerSample/8
// Количество байт для одного сэмпла, включая все каналы.
unsigned short blockAlign;
 
// Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
unsigned short bitsPerSample;
 
// Подцепочка "data" содержит аудио-данные и их размер.
 
// Содержит символы "data"
// (0x64617461 в big-endian представлении)
char subchunk2Id[4];
 
// numSamples * numChannels * bitsPerSample/8
// Количество байт в области данных.
unsigned long subchunk2Size;
 
// Далее следуют непосредственно Wav данные.
}header;
        int size=10000;
        unsigned short data=new unsigned short[size];
        // заполнить data;
    header.sampleRate=44000.0;// частота оцифровки
    header.numChannels=1; // одноканальный
    header.bitsPerSample=16; // бит на один отсчет
    header.blockAlign=2; // размер блока в байтах
    header.subchunk2Size=size*2; // размер данных
 
    FILE* pf;fopen_s(&pf,buf,"wb");
        fwrite(&header, sizeof(WAVHEADER), 1, pf); 
        fwrite(data,2,size,pf);
        fclose(pf);
1
Ramoncheg
24 / 17 / 1
Регистрация: 04.03.2013
Сообщений: 170
Записей в блоге: 1
21.05.2013, 22:43  [ТС] #4
Код
[bcc32 Error]  Undefined symbol 'buf'
Что нужно подключать ?

Кстати с data такая же проблема
0
zss
Модератор
Эксперт С++
6474 / 6037 / 1980
Регистрация: 18.12.2011
Сообщений: 15,632
Завершенные тесты: 1
22.05.2013, 19:17 #5
buf - это имя открываемого файла.
(Я скопировал из работающего исходника и забыл заменить).
А под data память выделяется динамически (строка 66 моего кода), т.к. она может быть достаточно большой.
В примере под каждый отсчет выделяется двухбайтовое слово (unsigned short).
Если надо писать стерео, то отсчеты чередуются (2 байта на левый, 2 байта на правый).
1
22.05.2013, 19:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 19:17
Привет! Вот еще темы с ответами:

Как сграбить экран и сохранить картинку в файл? - C++
Здравствуйте! У меня следующий вопрос: как сграбить экран, и потом это все дело сохранить в файл? Читал MSDN - что-то не понятно. И...

Как открыть файл xlsx и сохранить в txt? - C++
Написать консольное windows приложение на Visual C++ со следующим функционалом: - на вход программы (в виде параметров командной строки)...

Как взять данные из файла и сохранить в файл? - C++
День добрый. Подскажите, как взять данные из файла и как сохранить данные в файл. Желательно на примере графа. Спасибо!

Как сохранить\прочитать контейнер в бинарный файл - C++
ostream_iterator<string, char> out(cout, "\n"); set<string> mat; set<string> pat; string temp; cout << "Input Mat's...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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