Запись SlimDX (ОК), затем воспроизведение (Проблема!) - PullRequest
0 голосов
/ 31 мая 2011

В настоящее время я получаю массив с плавающей точкой, используя DirectSound для записи звука.

Теперь я хотел бы воспроизвести этот массив с использованием XAudio2 (также SlimDX), но я не уверен, что делать, так какПример примера с SlimDX воспроизводит файл .wav.

Вот как они это делают:

        XAudio2 device = new XAudio2();
        MasteringVoice masteringVoice = new MasteringVoice(device);

        var s = System.IO.File.OpenRead(fileName);
        WaveStream stream = new WaveStream(s);
        s.Close();

        AudioBuffer buffer = new AudioBuffer();
        buffer.AudioData = stream;
        buffer.AudioBytes = (int)stream.Length;
        buffer.Flags = BufferFlags.EndOfStream;

        SourceVoice sourceVoice = new SourceVoice(device, stream.Format);
        sourceVoice.SubmitSourceBuffer(buffer);
        sourceVoice.Start();

        // loop until the sound is done playing
        while (sourceVoice.State.BuffersQueued > 0)
        {
            if (GetAsyncKeyState(VK_ESCAPE) != 0)
                break;

            Thread.Sleep(10);
        }

        // wait until the escape key is released
        while (GetAsyncKeyState(VK_ESCAPE) != 0)
            Thread.Sleep(10);

        // cleanup the voice
        buffer.Dispose();
        sourceVoice.Dispose();
        stream.Dispose();

По сути, я хотел бы знать, как воспроизводить массив с плавающей точкой, используя slimDX?

Заранее спасибо

1 Ответ

0 голосов
/ 15 июня 2011

Я не эксперт по аудио вещам, но я знаю, что вы можете создать WaveFormat IeeeFloat. Заполните всю другую информацию, а затем запишите свои данные в DataStream и передайте их в AudioBuffer. Затем вы можете позвонить Submit как обычно.

...