Глюки с DirectSound

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Глюки с DirectSound

Сообщение Oxygen » 13.08.2003 (Ср) 13:09

Добрый день. Пытаюсь юзать DirectSound, был пример и учебник. Вот, если следовать тому, что там написано, вот текст, но он не работает. Вернее, заместо своего звука я слышу какую-то фигню (как-будто кто-то кашлянул в микрофон). И потом глючит звуковуха - какие-то левые звуки появляются. Никто не подскажет в чем тут дело?
Код: Выделить всё
Dim m_dx As New DirectX7
Dim m_ds As DirectSound
Set m_ds = m_dx.DirectSoundCreate("")
Dim m_dsBuffer(5) As DirectSoundBuffer
m_ds.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
Dim bufferDesc As DSBUFFERDESC
bufferDesc.lFlags = DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLPAN Or DSBCAPS_CTRLVOLUME Or DSBCAPS_STATIC
Dim waveFormat As WAVEFORMATEX
waveFormat.nFormatTag = WAVE_FORMAT_PCM
waveFormat.nChannels = 2
waveFormat.lSamplesPerSec = 22050
waveFormat.nBitsPerSample = 16
waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels
waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign
Set m_dsBuffer(1) = m_ds.CreateSoundBufferFromFile("c:\8.wav", bufferDesc, waveFormat)
m_dsBuffer(1).Play DSBPLAY_LOOPING

Извиняюсь, что без коментариев, просто при копировании заместо русских букв получились иероглифы - пришлось вырезать :(

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4158
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 13.08.2003 (Ср) 15:25

А есть уверенность, что "c:\8.wav" - это PSM WAV? А параметры

waveFormat.nChannels = 2
waveFormat.lSamplesPerSec = 22050
waveFormat.nBitsPerSample = 16

соответствуют файлу?

кстати, не зная, как в DX7, а в DX8 при создании буффера из файла ничего такого не надо указывать, DX8 сам все берет из файла.

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 13.08.2003 (Ср) 19:47

Формат точный. А насчет формата, не знаю, в справке так написано.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 3

    TopList