Zrobiłem program który co pewien czas (na timer) odgrywa pliki wav z listy, uprzednio ładowane do MemoryStream. Chciałem w przyszłości mieć możliwość rozbudowania programu o wybór urządzenia audio, więc zrobiłem na Bassie. W kodzie OnTimer jest dałem m.in.:
BASS_SampleFree(Sample);
Sample:=BASS_SampleLoad(True,
MemoryStream.Memory,
0,MemoryStream.Size,1,0);
Channel:=BASS_SampleGetChannel(Sample, False);
BASS_ChannelSetAttributes(Channel, 0, 100, 0);
BASS_ChannelPlay(Channel,True);
//jest też kontrola błędów, ale wywaliłem by skrócić na forum
Chodziło w domu ładnie, potem puściłem to na kompie docelowym troszkę powolnym (Celeron 533 640MB i trochę zaśmiecony i powolny XP). Na początku każdego dźwięku pojawiało się pstryknięcie (dźwięki w plikach oczywiście zaczynały się i kończyły na zerze). Zmieniłem drivery z XP'owskich na kX (karta SB Live! VE). Wynik - przestało pstrykać na początku, zaczęło na końcu każdego dźwięku.
W końcu się zdenerwowałem i dałem zamiast tego całego kodu banalne:
PlaySound(MemoryStream.Memory, 0,
SND_MEMORY or SND_NODEFAULT or SND_ASYNC);
I chodzi jak złoto.
Ale wolałbym uzyskać poprawną pracę na Bassie z powodów jak napisałem na początku.
Jakieś porady od doświadczonych bassowców?