Více zvuů zároveň   otázka

VB6/VBA

Ahoj. Delší dobu se potýkám s problémem jak přehrávat dva a více zvuků současně. Aby se překryli. Vždy se mi stane, že se ten pprvní vypne a začne se přehrávat druhý. Dík

Radek

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zahoďte VB6 a v .NET verzi pomocí DirectX to nebude problém.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

To bych rád, ale už několik let pracuji na velkém projektu, který je bohužel v šestce. Až bude dejme tomu nová verze, prosím, ale už se blížím ke konci, a jen toto je nepřekonatelný problém.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pak použijte DirectSound pomocí jeho COM rozhraní.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

VB.NET má lepší ... všechno. Od správy chyb, přes práci s daty až třeba po možnost pracovat elegantně se zvuky, jak potřebujete. Chápu sice, že třeba nemůžete parametry vývoje ovlivnit, ale dnes to ve VB6 bude programování jen pomocí samých obezliček. Přejděte na VB.NET, pokud budete jen trochu moci.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Toto je demo pro přehrávání 3 wavek najednou. Jedno pomocí api sndplaysound a ostatní pomocí mci

Option Explicit

Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" ( _

ByVal lpstrCommand As String, _

ByVal lpstrReturnString As String, _

ByVal uReturnLength As Long, _

ByVal hwndCallback As Long) As Long

Private Declare Function sndPlaySound Lib "winmm" Alias "sndPlaySoundA" ( _

ByVal jmeno_souboru As String, _

ByVal rezim As Long) As Long

Private Declare Function sndPlayStop Lib "winmm" Alias "sndPlaySoundA" ( _

ByVal jmeno As Long, _

ByVal rezim As Long) As Long

Dim r As Long

Dim Soubor1 As String, Soubor2 As String, Soubor3 As String

Private Sub cmdClose_Click()

'uzavře soubor1

r = mciSendString("CLOSE wav1", "", 0, 0)

'uzavře soubor2

r = mciSendString("CLOSE wav2", "", 0, 0)

'uzavře soubor3

r = sndPlayStop(0, 2)

End Sub

Sub CloseAllmci()

'uzavře všechny zařízení mci

r = mciSendString("CLOSE ALL", "", 0, 0)

End Sub

Private Sub cmdPlay_Click()

CloseAllmci

'otevře soubor1 a soubor2

r = mciSendString("OPEN " & Soubor1 & _

" ALIAS wav1 TYPE MPEGVideo", "", 0, 0)

r = mciSendString("OPEN " & Soubor2 & _

" ALIAS wav2 TYPE Waveaudio", "", 0, 0)

'spustí soubor1 a soubor2

r = mciSendString("PLAY wav1 REPEAT", "", 0, 0)

r = mciSendString("PLAY wav2", "", 0, 0)

' spustí soubor3 v režimu repeat

r = sndPlaySound(Soubor3, 9)

End Sub

Private Sub Form_Load()

' nastavení jména souboru a cesty

Soubor1 = Chr(34) & App.Path & "\" & "test1.wav" & Chr(34)

Soubor2 = Chr(34) & App.Path & "\" & "test2.wav" & Chr(34)

Soubor3 = App.Path & "\" & "test3.wav"

End Sub

Private Sub Form_Unload(Cancel As Integer)

'uzavře všechna zařízení mci

CloseAllmci

'uzavře sndPlaySound

r = sndPlayStop(0, 2)

End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback