Запись SlimDX (ОК), затем воспроизведение (Проблема!)

В настоящее время я получаю массив float, используя 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 ответ

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

Другие вопросы по тегам