Страница: 1 |
Страница: 1 |
Вопрос: Звук
Добавлено: 04.03.06 23:38
Автор вопроса: EROS
Возможно ли в НЕТ ОДНОВРЕМЕННО воспроизвести несколько звуковых файлов?
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа:
mich
ICQ: 261800349
Вопросов: 19
Ответов: 148
Web-сайт:
Профиль | | #1
Добавлено: 05.03.06 00:23
Ну почти одновремменно. В в vb6 тоже можно.
Номер ответа: 2
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #2
Добавлено: 05.03.06 04:51
DirectSound or DirectMusic
Номер ответа: 3
Автор ответа:
K&M
ICQ: 225442067
Вопросов: 20
Ответов: 170
Профиль | | #3
Добавлено: 05.03.06 15:39
DirectSound:
Dim dev as new Device
dev.SetCooperativeLevel(me.Handle,CooperativeLevel.Normal)
Dim SB as new SecondaryBuffer(FILENAME,dev)
SB.Play(0,BufferPlayFlags.Default)
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 05.03.06 15:41
А подробней??
Номер ответа: 5
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #5
Добавлено: 05.03.06 20:17
sndPlaySound
Номер ответа: 6
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #6
Добавлено: 05.03.06 21:27
Noviks, а разве sndPlaySound позволяет ОДНОВРЕМЕННО воспроизводить несколько звуковых файлов???? Возможно я недостаточно точно выразился, но меня интересует не ассинхронное воспроизведение, а именно возможность сделать так,чтобы звучало одновременно 2 и более звуковых файлов.. Если это возможно,то я бы с радостью взглянул на код, который это делает..
Номер ответа: 7
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #7
Добавлено: 06.03.06 01:17
Для .NET.
VB 2003.
1. В References добавляем DxVBLib.
В модуле глобально.
Imports DxVBLib
Dim m_dx As New DirectX7()
 im m_ds As DirectSound
 im m_dsBuffer(1) As DirectSoundBuffer' два буфера
Dim bufferDesc As DSBUFFERDESC' буферы
Dim waveFormat As WAVEFORMATEX' структура звука
m_ds = m_dx.DirectSoundCreate("" ' создаем DirectSound
m_ds.SetCooperativeLevel(Me.Handle.ToInt32(), 2) ' устанавливаем CooperativeLevel
' инициализация структур и загрузка звука
bufferDesc.lFlags = CONST_DSBCAPSFLAGS.DSBCAPS_CTRLFREQUENCY Or CONST_DSBCAPSFLAGS.DSBCAPS_CTRLPAN Or CONST_DSBCAPSFLAGS.DSBCAPS_CTRLVOLUME Or CONST_DSBCAPSFLAGS.DSBCAPS_STATIC
waveFormat.nFormatTag = 1
waveFormat.nChannels = 2
waveFormat.lSamplesPerSec = 22050
waveFormat.nBitsPerSample = 16
waveFormat.nBlockAlign = waveFormat.nBitsPerSample / 8 * waveFormat.nChannels
waveFormat.lAvgBytesPerSec = waveFormat.lSamplesPerSec * waveFormat.nBlockAlign
Dim sFile As String
sFile = Directory.GetCurrentDirectory + "\squish.wav"
m_dsBuffer(0) = m_ds.CreateSoundBufferFromFile(sFile, bufferDesc, waveFormat)
sFile = Directory.GetCurrentDirectory + "\c_atmos_1.wav"
m_dsBuffer(1) = m_ds.CreateSoundBufferFromFile(sFile, bufferDesc, waveFormat)
'инициализуем структуры и загружаем звук.
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
m_dsBuffer(0).SetCurrentPosition(0)' ставим на начало
'm_dsBuffer(0).SetPan(0) ' правая - левая колонка
'm_dsBuffer(0).SetVolume(0) 'громкость
m_dsBuffer(0).Play(CONST_DSBPLAYFLAGS.DSBPLAY_DEFAULT)' воспроизводим первый буфер
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim flag As Long
flag = 0
m_dsBuffer(1).SetCurrentPosition(1)
m_dsBuffer(1).Play(flag)' воспроизводим второй буфер
End Sub
Номер ответа: 8
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 06.03.06 15:29
Всем спасибо за помощь, но случайно обнаружил более простое решение (VS 2005)
References
-Microsoft.DirectX.dll
-Microsoft.DirectX.AudioVideoPlayback.dll
Далее импортируем пространство имен
И непосредственно само использование:
Класс AudioVideoPlayback позволяет воспроизводить практически все известные форматы аудио и видеофайлов.Также имеет минимальный набор функций для управления: громкость, баланс, позиция воспроизведения и т.д..
Номер ответа: 9
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #9
Добавлено: 06.03.06 17:51
Номер ответа: 10
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #10
Добавлено: 06.03.06 22:44
Noviks, будь добр.. покажи код.
Номер ответа: 11
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #11
Добавлено: 10.03.06 22:47
Noviks, код будет?
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 10.03.06 23:18
через sndPlaySound 2 одновременно? хм... ну создать поток разве что...
Номер ответа: 13
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #13
Добавлено: 12.03.06 21:23
HAKER, в том то и дело, что я пробовал по всякому.. И с потоком в том числе.. Ничего не выходит.. Как только запускаешь на воспроизведение второй файл,первый останавливается.. Единственное решение на данный момент это-DirectX.. Почему и обратился с вопросом на форум.. Но по утверждению Noviks.. на VB6 через sndPlaySound это делается легко.. что-то мне в это верится с трудом.. Прошу показать код,подтверждающий его слова, а в ответ ..... ну ты сам видишь..
Номер ответа: 14
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #14
Добавлено: 12.03.06 22:48
та вижу, забей на него