C++ Wav-Datei Samples addieren



  • @DocShoe Ok habs wieder zurück geändert. Ich habe von einer vorherigen Aufgabe einfache den Code kopiert um die Größe zu bestimmen.

    struct Wav{
        char ChunkID[4];
        int ChunkSize;
        char Format[4];
        char SubChunk1ID[4];
        int Subchunk1Size;
        short AudioFormat;
        short NumChannels;
        int SampleRate;
        int ByteRate;
        short BlockAlign;
        short BitsPerSample;
        char Subchunk2ID[4];
        int Subchunk2Size;
    
    };
    
    union ReadWav{
        struct Wav header;
        char c[44];
    };
    
    while(i < 44){
            header.c[i] = fgetc(myFile);
            i++;
        }
        fclose(myFile);
        
        printf("%d", header.header.ChunkSize * 8 / header.header.BitsPerSample);
    

    die printf- Ausgabe habe ich auf dem Netz gelesen, aber ich weis nicht ob die Formel stimmt.



  • @Berkan046

    Na dann probier mal fleißig weiter. Viel Glück.



  • @DocShoe danke. Ich weis ihr wollt, dass ich logisch voran gehen soll (was ich teilweise) mache, aber mit fehlt auch das Wissen um es logisch voranzugehen.



  • Danke an alle. Ich habe die Aufgaben dank euch lösen können.



  • @Berkan046 sagte in C++ Wav-Datei Samples addieren:

    struct Wav{
        char ChunkID[4];
        int ChunkSize;
        char Format[4];
        char SubChunk1ID[4];
        int Subchunk1Size;
        short AudioFormat;
        short NumChannels;
        int SampleRate;
        int ByteRate;
        short BlockAlign;
        short BitsPerSample;
        char Subchunk2ID[4];
        int Subchunk2Size;
    
    };
    
    (...)
    
        printf("%d", header.header.ChunkSize * 8 / header.header.BitsPerSample);
    

    die printf- Ausgabe habe ich auf dem Netz gelesen, aber ich weis nicht ob die Formel stimmt.

    Dein printf gibt keinen sinnvollen Wert aus.

    header.header.ChunkSize ist die Chunk-Size des RIFF Chunks der die ganzen Daten des RIFF WAVE Files enthält (RIFF enthält alle Sub-Chunks, nicht nur den data Chunk).

    Weiters ist header.header.BitsPerSample die Anzahl der Bits pro Sample pro Kanal. Wenn du also die "Länge" des Wave Files wissen willst, dann müsstest du noch den NumChannels Wert berücksichtigen. Alternativ kannst du BlockAlign verwenden - das ist die Anzahl der Bytes pro Sample (alle Kanäle zusammen).

    Und die struct Wav trifft einige Annahmen über den Aufbau des WAV Files die nicht garantiert sind. z.B. muss der data Chunk nicht direkt auf den fmt Chunk folgen. Ich weiss auch nicht ob die Grösse des fmt Chunks immer gleich ist. Usw.



  • This post is deleted!


  • @Berkan046 Jo Berkan hab die selben Aufgaben. Hab das gleiche Problem. Kannst du die Lösungen schicken?
    Danke!



  • Hey Bruder, Schick mir auch!



  • Hi @timo und @MarvinDerBoss,
    so kommt Ihr evtl. durch die Ausbildung, aber später im Arbeitsprozess, falls Ihr den anstrebt, werdet Ihr die Deppen sein.



  • @Helmut-Jakoby
    Als Boss lässt man arbeiten und bittet auch nicht, man verlangt!


Log in to reply