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

Побитная запись в контейнер wav - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как исполльзовать оператор goto? http://www.cyberforum.ru/cpp-beginners/thread1104039.html
Как его юзать?
C++ Классы и объем ОЗУ Помогите пожалуйста с задачей... Создать класс таким образом, чтобы он отслеживал количество существующих в данный момент объектов и объем оперативной памяти, который они занимают. Указание: применить статические компоненты класса. http://www.cyberforum.ru/cpp-beginners/thread1104010.html
ПРограмма определяет цвет пикселя по координатам C++
В dev c++ пишу программу, которая определяет координаты, где сейчас находится мышь и цвет пикселя, находящегося в этих координатах. Что надо дописать, чтобы третьей строчкой выводился на экран цвет пикселя, находящегося в координатах Х У? #include <windows.h> #include <stdio.h> int main() { int x,y = 0; while(1){ Sleep(10); POINT cursorPos;
Задача про комплексные числа(закрытые переменные) C++
Нужна срочно ваша помощь, помогите не смыслящему человеку:cry:, модифицировать программу таким образом, чтобы класс содержал закрытые переменные. Код готов. И еще проблема в программе есть когда выводится комплексное число после сложения, вычитания или умножения получается какой-то неверный вид, как исправить?что-то там с типами. Буду благодарна за сразу исправленный код, так как я честно...
C++ Ввести несколько структур типа «Зачетка студента» http://www.cyberforum.ru/cpp-beginners/thread1103965.html
Вот условие задачи: Ввести несколько структур типа «Зачетка студента» с полями {Фамилия студента Номер зачетки Массив из 4 оценок } Написать программу, выполняющую следующие действия: Сортировка структур по фамилии или среднему баллу Удаление всех зачеток троечников
C++ Посоветуйте, как найти мёртвый код Интересуют целые мёртвые функции. подробнее

Показать сообщение отдельно
Sonance
6 / 6 / 3
Регистрация: 15.02.2013
Сообщений: 55
24.02.2014, 12:02     Побитная запись в контейнер wav
Всем привет, помогите написать функцию для побитной записи в wav контейнер. Собственно есть код представления звуковой волны в графическом виде:
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
#include "stdafx.h"
#include <math.h>
#include <iostream>
//#include <Wincon.h>
#include <Windows.h>
#include <cstdio>
 
 
double PI=3.14;
class Program {
    public: 
 
        static void Wave() {
            double *data = new double[75]; // Инициализируем массив.
            for (int index = 1; index < 76; index++) { // Вычисляем данные для всего массива.
                data[index-1] = Sine(index, PI * 2 * 2.0 / 75); // Период разделенный на частоту дискретизации.
            }
            Draw(data);
            std::cin.get(); // Ждем нажатия любой клавиши.
        }
 
        static double Sine(int index, double frequency) {
            return sin(frequency * index);
        }
 
        static void Draw (double *data) {
            //Console.BufferHeight = 25; // Изменяем длину буфера консоли чтобы избавиться от ползунка.
            //Console.CursorVisible = false; // отключаем курсор для красоты.
            for (int y = 0; y < 19; y++) {// Выписываем индексы уровня звука.
                COORD coord;
                coord.X = 77;
                coord.Y = y+5;
                SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);// Устанавливаем курсор в нужную позицию.
                std::cout << (9 - y); // Выписываем номер индекса уровня.
            }
            for (int x = 0; x < 75; x++) { // Перебираем все элементы массива
                COORD coord;
                coord.X = x;
                coord.Y = x % 3;
                SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);//Устанавливаем курсор в нужную точку.
                std::cout << (x + 1); // пишем индексы элемента.
                int point = (int)(data[x] * 9); // Вычисляем уровень и приводим его к амплитуде от -9 до 9.
                int step = (point > 0)? -1 : 1; // Узнаем в какую сторону 0.
                for (int y = point; y != step; y += step) {// перебираем столбик
                    COORD coord;
                    coord.X = x;
                    coord.Y = point + 14 - y;
                    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
//Устанавливаем курсор в нужную позицию.
                    std::cout << ("в–€"); // Рисуем точку.
                }
            }
        }
};
int main()
{
    Program r;
    r.Wave();
    //std::cin.get(); 
 
    return 0;
}
теперь нужно переписать побитно в wav, чтобы потом можно было проиграть. Есть пример подобного кода на С#, буду очень признателен если ктото сможет перевести на С++(нужен имено С++ а не включение классов С#) Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void SaveWave(Stream stream) {
            BinaryWriter writer = new BinaryWriter(stream);
            short frameSize = (short)(16 / 8);
            writer.Write(0x46464952);
            writer.Write(36 + data.Length * frameSize);
            writer.Write(0x45564157);
            writer.Write(0x20746D66);
            writer.Write(16);
            writer.Write((short)1);
            writer.Write((short)1);
            writer.Write(sampleRate);
            writer.Write(sampleRate * frameSize);
            writer.Write(frameSize);
            writer.Write((short)16);
            writer.Write(0x61746164);
            writer.Write(data.Length * frameSize);
            for (int index = 0; index < data.Length; index++) {
                foreach (byte element in BitConverter.GetBytes(data[index])) {
                    stream.WriteByte(element);
                }
            }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru