logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 2638120
    kll
    Poziom 11  
    witam was moi drodzy mam malitki problemik odnośnie efektu echa w c++. Zrobiłem już taki programik i chciałem dodać do niego jeszcze ten efekt. Teoretycznie wiem jak to zrobić. Aby uzyskać efekt echa należy odtworzyć np. dwa razy tę samą próbkę dźwięku w pewnym odstępie czasu nie mniejszym jednak niż 100 ms.

    oto programik

    #include <fstream>
    #include <iostream>

    using namespace std;

    typedef struct _wave{
    char riff[4];
    unsigned int RozmiarPliku;
    char wave[4];
    char fmt[4];
    unsigned short FormatProbek;
    unsigned short AudioFormat;
    unsigned short NunChannels;
    unsigned long SampleRate;
    unsigned long ByteRate;
    unsigned short BlockAlign;
    unsigned short BitsPerSample;
    char data[4];
    unsigned int long LiczbaProbek;
    } wave;

    int main(int argc, char* argv[])
    {
    wave waveplik;
    char nazwa_pliku[80], *tab;
    int index;
    cout << "Podaj sciezke do pliku: ";
    cin.get(nazwa_pliku, 80);
    ifstream plik(nazwa_pliku, ios::binary);
    if(!plik)
    {
    cout << "Blad otwarcia pliku " << nazwa_pliku << " plik zostanie zamkniety!";
    return 1;
    }
    plik.read((char*)&waveplik, sizeof(wave));
    tab = new char[waveplik.LiczbaProbek];
    plik.read(tab, waveplik.LiczbaProbek);
    plik.close();
    cout << "O ile chcesz sciszyc/poglosnic plik (+/-): ";
    cin >> index;
    for(int i=0; i<waveplik.LiczbaProbek; i++)
    tab[i] = (index>0) ? (tab[i]*index):(tab[i]/index);
    ofstream plik1("c:\\a1.wav", ios::binary);
    plik1.write((char*)&waveplik, sizeof(wave));
    plik1.write(tab, waveplik.LiczbaProbek);
    plik1.close();
    delete [] tab;
    return 0;
    }

    z góry dzięki za pomoc
  • REKLAMA
REKLAMA