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

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

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


person John    schedule 31.05.2011    source источник


Ответы (1)


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

person MikeP    schedule 15.06.2011