Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Звук Добавлено: 04.03.06 23:38  

Автор вопроса:  EROS
Возможно ли в НЕТ ОДНОВРЕМЕННО воспроизвести несколько звуковых файлов?

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 mich



ICQ: 261800349 

Вопросов: 19
Ответов: 148
 Web-сайт: belkyokushin.net
 Профиль | | #1
Добавлено: 05.03.06 00:23
Ну почти одновремменно. В в vb6 тоже можно.

Ответить

Номер ответа: 2
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #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-сайт: softvito.narod2.ru
 Профиль | | #7
Добавлено: 06.03.06 01:17
Для .NET.

 VB 2003.
1. В References добавляем DxVBLib.

В модуле глобально.

Imports DxVBLib

Dim m_dx As New DirectX7()
    ;Dim m_ds As DirectSound
    ;Dim m_dsBuffer(1) As DirectSoundBuffer' два буфера

Процедура Form1_Load

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

Далее импортируем пространство имен

Imports Microsoft.DirectX.AudioVideoPlayback


И непосредственно само использование:

Dim MyAudio As New Audio(FilePath, True)


Класс AudioVideoPlayback позволяет воспроизводить практически все известные форматы аудио и видеофайлов.Также имеет минимальный набор функций для управления: громкость, баланс, позиция воспроизведения и т.д..

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 06.03.06 17:51
Noviks, а разве sndPlaySound позволяет ОДНОВРЕМЕННО воспроизводить несколько звуковых файлов????
Конечно можно. Покрайней мере в VB6.

Ответить

Номер ответа: 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
та вижу, забей на него :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам