2009-08-03 6 views
2

DirectSoundのマネージドバージョンで後方に音を読むことは可能ですか? 他のライブラリがあれば簡単に作成できますか?DirectSoundで後方に音を読む

+1

ファイルをストリームとして開き、ヘッダー情報を取得し、ヘッダー情報で新しい一時ファイルを作成し、最後からストリームを書き込んでみます。 tempmファイルを新しいdirectsoundオブジェクトとして開き、それを再生してください – Jim

+0

これは私が現在実装しようとしている解決策です。私は簡単な方法がないかどうか疑問に思いました。 ところで、これを回答として投稿していないのはなぜですか? –

答えて

7

NAudioのWaveFileReaderクラスとWaveFileWriterクラスを使用して、WAVファイルを逆転させることができます。 WaveFormatのBlockAlignプロパティを使用して、単一のサンプル(ステレオ16ビットオーディオの場合は4)のすべてのバイトを読み取る必要があります。

public static void ReverseWaveFile(string inputFile, string outputFile) 
    { 
     using (WaveFileReader reader = new WaveFileReader(inputFile)) 
     { 
      int blockAlign = reader.WaveFormat.BlockAlign; 
      using (WaveFileWriter writer = new WaveFileWriter(outputFile, reader.WaveFormat)) 
      { 
       byte[] buffer = new byte[blockAlign]; 
       long samples = reader.Length/blockAlign; 
       for (long sample = samples - 1; sample >= 0; sample--) 
       { 
        reader.Position = sample * blockAlign; 
        reader.Read(buffer, 0, blockAlign); 
        writer.WriteData(buffer, 0, blockAlign); 
       } 
      } 
     } 
    } 
+0

受け入れましたが、DirectSoundで実装しました。 –