Воспроизведение нескольких звуков одновременно с Bass.net - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь создать аудиоплеер, который может воспроизводить несколько файлов MP3 одновременно. Я думал, что мне нужно дополнение BASSMIX для этого. Я использую пример кода с un4seen сайта.

Это выглядит так:

Imports System
Imports Un4seen.Bass
Imports Un4seen.Bass.AddOn.Mix

SNIP

    Shared Sub MixMeNow()
        Try


            Dim mixerStream As Integer = BassMix.BASS_Mixer_StreamCreate(44100, 2, BASSFlag.BASS_SAMPLE_FLOAT)
            Debug.Print("MIXER STREAM: {0}", Bass.BASS_ErrorGetCode())

            ' now we need some source channels (must be decoding)
            Dim streamA As Integer = Bass.BASS_StreamCreateFile("KOUD-HE.mp3", 0, 0,
                                                BASSFlag.BASS_STREAM_DECODE Or BASSFlag.BASS_SAMPLE_FLOAT)
            Debug.Print("STREAM A: {0}", Bass.BASS_ErrorGetCode())
            Dim streamB As Integer = Bass.BASS_StreamCreateFile("Jij bent Zo.mp3", 0, 0,
                                               BASSFlag.BASS_STREAM_DECODE Or BASSFlag.BASS_SAMPLE_FLOAT)
            Debug.Print("STREAM B: {0}", Bass.BASS_ErrorGetCode())

            ' finally we plug them into the mixer
            BassMix.BASS_Mixer_StreamAddChannel(mixerStream, streamA,
                               BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_MIXER_DOWNMIX)
            Debug.Print("STREAM A TO MIX: {0}", Bass.BASS_ErrorGetCode())


            BassMix.BASS_Mixer_StreamAddChannel(mixerStream, streamB,
                                BASSFlag.BASS_STREAM_AUTOFREE Or BASSFlag.BASS_MIXER_DOWNMIX)
            Debug.Print("STREAM B TO MIX: {0}", Bass.BASS_ErrorGetCode())

            ' and play the mixer channel
            Bass.BASS_ChannelPlay(mixerStream, False)
            Debug.Print("PLAY: {0}", Bass.BASS_ErrorGetCode())

        Catch ex As Exception
            Debug.Print("Anything else....")
        End Try
    End Sub

А потом:

Единственное, что я изменил по сравнению с исходным образцом, - это то, что я добавил try / catch, и я возвращаю коды ошибок обратно на консоль:

Debug.Print("STREAM A: {0}", Bass.BASS_ErrorGetCode())

Я думал, что это было довольно просто, но ... Вывод:

MIXER STREAM: BASS_OK
STREAM A: BASS_ERROR_INIT
STREAM B: BASS_ERROR_INIT
STREAM A TO MIX: BASS_ERROR_HANDLE
STREAM B TO MIX: BASS_ERROR_HANDLE
PLAY: BASS_ERROR_HANDLE

Я убедился, что приложение может найти файлы, необходимые для воспроизведения. Так, что я продолжаю получать ошибку INIT?

...