0

これは私にはかなり複雑な問題のように思えますが、c++ は初めてです。複数の wave ファイルを読み込んで処理し、その結果を新しいファイルに書き込もうとしています。私がそれらに行うことには、それらを混ぜ合わせたり、さまざまな方法で個別に処理して、1 つまたは複数の新しい wav ファイルを作成することが含まれます。これまでのところ、次のクラスを使用してそれらを管理しようとしています:

class wavObj {
public:
    char                    RIFF_ID[4];                 // 4 bytes, RIFF Header      Magic header
    uint32_t                RIFF_Size;                  // 4 bytes, RIFF Chunk Size
    char                    RIFF_WAVE[4];               // 4 bytes, WAVE Header
    char                    fmt_ID[4];                  // 4 bytes, FMT header
    uint32_t                fmt_Size;                   // 4 bytes, Size of the fmt chunk
    uint16_t                fmt_AudioFormat;            // 2 bytes, Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM 
    uint16_t                fmt_NumOfChan;              // 2 bytes, Number of channels 1=Mono 2=Sterio
    uint32_t                fmt_SamplesPerSec;          // 4 bytes, Sampling Frequency in Hz
    uint32_t                fmt_bytesPerSec;            // 4 bytes, bytes per second
    uint16_t                fmt_blockAlign;             // 2 bytes, 2=16-bit mono, 4=16-bit stereo
    uint16_t                fmt_bitsPerSample;          // 2 bytes, Number of bits per sample
    uint16_t                fmt_cbSize;                 // 2 bytes, Extension size for high bit depth stuff
    uint16_t                fmt_wValidBitsPerSample;    // 2 bytes, wav may not use all fmt_bitsPerSample. this tells how many are actually used.
    uint32_t                fmt_dwChannelMask;          // 4 bytes, 
    char                    fmt_SubFormat[16];          // 16 bytes, 
    char                    data_ID[4];                 // 4 bytes, "data"  string   
    uint32_t                data_Size;                  // 4 bytes, Sampled data length
    vector<unsigned char>   dataBuffer;                 // the data (of all sorts of fun sizes)

    int loadFile( const char *filePath );
    void displayHeader();

};

ファイルからこのクラスへのデータの読み取りは非常に簡単ですが、ファイルへのバイナリの書き込みはベクターによって複雑になります。私の質問は、ベクトルをシリアル化するか、コンストラクターとデストラクタを記述して wave ファイルのデータの新規/削除状況を管理するプロセスを実行する方が簡単/安全/効率的であるかということです。それとも、多くの wav ファイルを完全に管理および操作するためのより良い方法はありますか? 私は私を助けるための図書館には興味がありません。私はこれを主に学習経験として行っています。

4

0 に答える 0