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

Наложение звукового эффекта на wav файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Хранение триангуляций http://www.cyberforum.ru/cpp/thread1128233.html
Требуется реализовать хранение триангуляций списком или массивом. Может кто встречал готовые варианты? Или в какой литературе можно найти как сделать?
C++ Как можно поставить иконку программе? Подскажите как можно поставить иконку программе ? PS. не .Net http://www.cyberforum.ru/cpp/thread1127749.html
C++ Фильтрация изображения линейным оконным фильтром
Люди будьте добры, мне нужна ваша помощь, мне дали задание, а я даже не могу сути его понять. Вот само задание: Фильтрация входного изображения линейным оконным фильтром, вывод результирующего изображения. Нужно написать код на c++, создать динамическую библиотеку, и подключить её к пакету MathCad. Подскажите с чего начать какие нибудь учебники или ссылочки, любая инфа будет в +
C++ Определение знака числа
тут опять потребовалась функция возвращающая -1 при отрицательном 1 при положительном и 0 при 0 числе int fnc(int n) { if(n<0) return -1; if(n>0) return 1; return 0; }
C++ Пересесть с языков высокого уровня на С++ http://www.cyberforum.ru/cpp/thread1124571.html
Здравствуйте, я ActionScript3 разработчик и в данный момент рассматриваю возможность пересесть на с++ для возможности вести разработку под платформы написанные на этом языке. Я слышал, что с++ неимоверно сложный язык и его нормально не освоить даже за 10 лет. А если планируется использовать его для прикладного программирования несложной бизнес логики? Может и не так страшен черт как его малюют?
C++ Неконсольное приложение До этого писал только в консоли. Решил попробовать написать программу с окном(Типа нажимешь на кнопку и в окне выводится Hello, world). Кто знает ПОНЯТНЫЕ уроки/пояснения. Я сам не нашел(а что нашел - то не понял) подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт CЭксперт С++
13135 / 7398 / 828
Регистрация: 27.09.2012
Сообщений: 18,234
Записей в блоге: 3
Завершенные тесты: 1
30.06.2015, 06:49
Цитата Сообщение от Trisha Ray Посмотреть сообщение
Как их получить?
Господи, неужели так тяжело додуматься, откуда берутся значения от -1 до 1?
конкретно для Вашего файла немного переделал функцию-член ShowInfo и main(для вывода в файл):
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
    void ShowInfo ( std::ostream & out ) {
 
        char *data = StreamToChar(collection[0].get_data());
        fmt * dat = CharsToFmt(data);
 
        out<<"audio format: "<<dat->audioFormat<<"\n"
            <<"num channels: "<<dat->numChannels<<"\n"
            <<"sample rate: "<<dat->sampleRate<<"\n"
            <<"byte rate: "<<dat->byteRate<<"\n"
            <<"block Align: "<<dat->blockAlign<<"\n"
            <<"bits per sample: "<<dat->bitsPerSample<<"\n"
            <<"extra fmt bytes: "<<dat->extraFmtBytes<<std::endl;
 
 
 
        //ВОТ ОНО
        Chunk::STREAM data_stream ( collection[getIndexChunkByName("data")].get_data() ) ;
 
        long double delim = 32768.0 ;
        for ( size_t i = 0 ; i < data_stream.size() ; i+=dat->bitsPerSample/8 )
        {
            int16_t * data16 = (int16_t*)&data_stream[i] ;
            out << std::fixed<<std::setprecision(15) << *data16/delim<< '\n' ;
        }
        //КОНЕЦ
 
        delete[] data;
    }
 
 
 
//...
 
 
 
int main(){
 
    try{
        WaveFile wf ( "1.wav" ) ;
        std::ofstream outFile ("info.txt") ;
        if ( outFile )
            wf.ShowInfo ( outFile ) ;
 
    }catch(std::string msg){
        std::cerr<<msg<<std::endl;
    };
 
}

Всё происходит здесь:
C++
1
2
3
4
5
6
7
8
9
10
        //ВОТ ОНО
        Chunk::STREAM data_stream ( collection[getIndexChunkByName("data")].get_data() ) ;
 
        long double delim = 32768.0 ;
        for ( size_t i = 0 ; i < data_stream.size() ; i+=dat->bitsPerSample/8 )
        {
            int16_t * data16 = (int16_t*)&data_stream[i] ;
            out << std::fixed<<std::setprecision(15) << *data16/delim<< '\n' ;
        }
        //КОНЕЦ
Заточено сугубо под файл с bits per sample равным 16 бит. Универсальное решение делайте сами.
Коротко: значение, которое можно поместить в 16 бит лежит в диапазоне от -32768 до +32767 (для знаковых чисел). Берем значение выборки соответствующей длины (16 бит в данном случае) и делим на 32768 ( max( abs(-32768), abs(32767) ) ). Всё!
Из вашего файла matlab_zn.txt:
-0,00137329101562500
-0,00244140625000000
-0,00198364257812500
-0,00140380859375000
-0,00186157226562500
-0,00250244140625000
-0,00256347656250000
-0,00198364257812500
-0,00122070312500000
-0,00189208984375000
из моего info.txt:
-0.001373291015625
-0.002441406250000
-0.001983642578125
-0.001403808593750
-0.001861572265625
-0.002502441406250
-0.002563476562500
-0.001983642578125
-0.001220703125000
-0.001892089843750
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru