Bonsoir à tous
Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la lecture
d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode asynchrone
est alors très utile
Pour la lecture du wav, j'utilise l'API sndPlaySound
Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech objet
library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub
* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "sonannonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner
* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien mais
le programme se fige durant la lecture du wav
Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??
Merci
Guy
Bonsoir à tous
Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la lecture
d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode asynchrone
est alors très utile
Pour la lecture du wav, j'utilise l'API sndPlaySound
Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech objet
library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub
* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "sonannonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner
* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien mais
le programme se fige durant la lecture du wav
Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??
Merci
Guy
Bonsoir à tous
Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la lecture
d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode asynchrone
est alors très utile
Pour la lecture du wav, j'utilise l'API sndPlaySound
Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech objet
library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub
* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "sonannonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner
* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien mais
le programme se fige durant la lecture du wav
Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??
Merci
Guy
J'ai fait l'essai avec :
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
le .wav et le texte s'enchaîne sans chevauchement, ni blocage ???
Qu'entends tu par le programme se fige ?
J'ai fait l'essai avec :
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
le .wav et le texte s'enchaîne sans chevauchement, ni blocage ???
Qu'entends tu par le programme se fige ?
J'ai fait l'essai avec :
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
le .wav et le texte s'enchaîne sans chevauchement, ni blocage ???
Qu'entends tu par le programme se fige ?
Bonsoir à tous
Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la
lecture d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode
asynchrone est alors très utile
Pour la lecture du wav, j'utilise l'API sndPlaySound
Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech
objet library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub
* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "sonannonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner
* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien
mais le programme se fige durant la lecture du wav
Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??
Bonsoir à tous
Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la
lecture d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode
asynchrone est alors très utile
Pour la lecture du wav, j'utilise l'API sndPlaySound
Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech
objet library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub
* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "sonannonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner
* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien
mais le programme se fige durant la lecture du wav
Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??
Bonsoir à tous
Voilà, je me bagarre avec la lecture d'un fichier *.Wav suivi de la
lecture d'un texte avec l'outil de voix(speechlib).
Tout ceci doit se faire durant l'éxécution du programme : Le mode
asynchrone est alors très utile
Pour la lecture du wav, j'utilise l'API sndPlaySound
Pour la lecture de la voix, j'utilise le librairie sapi.dll (Ms speech
objet library)
Public v As SpeechLib.SpVoice
Sub parle(ByVal Text As String)
On Error GoTo Speak_Error
v.Speak Text, SVSFlagsAsync
Exit Sub
Speak_Error:
End Sub
* Si je lance la lecture des éléments :
FichierSons$ = app.Path + "sonannonce.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
parle "Attention le train rentre en gare"
Les sons se chevauchent mais le programme continu de tourner
* Si je change le mode de lecture du Wav (SND_SYNC ) cela se passe bien
mais le programme se fige durant la lecture du wav
Comment puis-je faire pour avoir la lecture du wav, puis du texte sans que
le programme se fige??
Question subsidiaire : comment crées tu l'instance de v (As
SpeechLib.SpeechLib.SpVoice)
Je ne vois ni :
Public v As New SpeechLib.SpVoice
ni
Public v As SpeechLib.SpVoice
Set v = New SpeechLib.SpVoice
Question subsidiaire : comment crées tu l'instance de v (As
SpeechLib.SpeechLib.SpVoice)
Je ne vois ni :
Public v As New SpeechLib.SpVoice
ni
Public v As SpeechLib.SpVoice
Set v = New SpeechLib.SpVoice
Question subsidiaire : comment crées tu l'instance de v (As
SpeechLib.SpeechLib.SpVoice)
Je ne vois ni :
Public v As New SpeechLib.SpVoice
ni
Public v As SpeechLib.SpVoice
Set v = New SpeechLib.SpVoice
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Salut jean marcJ'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
On est plus à une bidouille près... ;-)- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
J'y avais songer mais le problème c'est la durée... Il faudrait que cela
fonctionne quel que soit la durée du WaV sans que l'on doive la déterminer
au préalable et sans devoir mémoriser (dans un fichier par exemple). J'en
demande beaucoup mais cela simplifierait grandement l'affaire.
Salut jean marc
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
On est plus à une bidouille près... ;-)
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
J'y avais songer mais le problème c'est la durée... Il faudrait que cela
fonctionne quel que soit la durée du WaV sans que l'on doive la déterminer
au préalable et sans devoir mémoriser (dans un fichier par exemple). J'en
demande beaucoup mais cela simplifierait grandement l'affaire.
Salut jean marcJ'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
On est plus à une bidouille près... ;-)- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
J'y avais songer mais le problème c'est la durée... Il faudrait que cela
fonctionne quel que soit la durée du WaV sans que l'on doive la déterminer
au préalable et sans devoir mémoriser (dans un fichier par exemple). J'en
demande beaucoup mais cela simplifierait grandement l'affaire.
> Il est très simple de récupérer la durée d'un fichier .wav:
http://www.codyx.org/snippet_duree-fichier-audio-ou-video_13.aspx
et voila :-)
> Il est très simple de récupérer la durée d'un fichier .wav:
http://www.codyx.org/snippet_duree-fichier-audio-ou-video_13.aspx
et voila :-)
> Il est très simple de récupérer la durée d'un fichier .wav:
http://www.codyx.org/snippet_duree-fichier-audio-ou-video_13.aspx
et voila :-)
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
Bonjour Jean-marc et Touti,
Jean-marc a écrit :
[...]
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
HALTE AUX BIDOUILLES !!! :-D
...
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
Sleep 200
While sndPlaySound("JeSuisPasLa.wav", SND_NOSTOP Or _
SND_ASYNC Or _
SND_NODEFAULT) = 0
DoEvents
Wend
parle "le train corail en provenance de lille rentre en gare"
...
Devrait le faire aussi. Je dirai qu'il est "normal" que l'option
'SND_SYNC', bloquent les événements, notamment du Timer, vu qu'elle
est synchrone. Par curiosité, j'ai essayé avec le Timer de CCRP :
http://ccrp.mvps.org/index.html?controls/ccrptimer6.htm
C'est pareil.
Par contre l'option SND_NOSTOP :
If a sound is currently playing, the function immediately returns FALSE,
without playing the requested sound.
semble faites pour ça ...
Bon, d'accord il faut appeler Sleep avant la boucle, sinon une fois
compilé, ça ne passe pas à tous les coups. Juste une petite ...
bidouille ;-)
Bonjour Jean-marc et Touti,
Jean-marc a écrit :
[...]
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
HALTE AUX BIDOUILLES !!! :-D
...
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
Sleep 200
While sndPlaySound("JeSuisPasLa.wav", SND_NOSTOP Or _
SND_ASYNC Or _
SND_NODEFAULT) = 0
DoEvents
Wend
parle "le train corail en provenance de lille rentre en gare"
...
Devrait le faire aussi. Je dirai qu'il est "normal" que l'option
'SND_SYNC', bloquent les événements, notamment du Timer, vu qu'elle
est synchrone. Par curiosité, j'ai essayé avec le Timer de CCRP :
http://ccrp.mvps.org/index.html?controls/ccrptimer6.htm
C'est pareil.
Par contre l'option SND_NOSTOP :
If a sound is currently playing, the function immediately returns FALSE,
without playing the requested sound.
semble faites pour ça ...
Bon, d'accord il faut appeler Sleep avant la boucle, sinon une fois
compilé, ça ne passe pas à tous les coups. Juste une petite ...
bidouille ;-)
Bonjour Jean-marc et Touti,
Jean-marc a écrit :
[...]
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
HALTE AUX BIDOUILLES !!! :-D
...
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
Sleep 200
While sndPlaySound("JeSuisPasLa.wav", SND_NOSTOP Or _
SND_ASYNC Or _
SND_NODEFAULT) = 0
DoEvents
Wend
parle "le train corail en provenance de lille rentre en gare"
...
Devrait le faire aussi. Je dirai qu'il est "normal" que l'option
'SND_SYNC', bloquent les événements, notamment du Timer, vu qu'elle
est synchrone. Par curiosité, j'ai essayé avec le Timer de CCRP :
http://ccrp.mvps.org/index.html?controls/ccrptimer6.htm
C'est pareil.
Par contre l'option SND_NOSTOP :
If a sound is currently playing, the function immediately returns FALSE,
without playing the requested sound.
semble faites pour ça ...
Bon, d'accord il faut appeler Sleep avant la boucle, sinon une fois
compilé, ça ne passe pas à tous les coups. Juste une petite ...
bidouille ;-)
"Jacques93" a écrit dans le message de news:
%23Trg$Bonjour Jean-marc et Touti,
Jean-marc a écrit :
[...]J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
HALTE AUX BIDOUILLES !!! :-D
...
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
Sleep 200
While sndPlaySound("JeSuisPasLa.wav", SND_NOSTOP Or _
SND_ASYNC Or _
SND_NODEFAULT) = 0
DoEvents
Wend
parle "le train corail en provenance de lille rentre en gare"
...
Devrait le faire aussi. Je dirai qu'il est "normal" que l'option
'SND_SYNC', bloquent les événements, notamment du Timer, vu qu'elle
est synchrone. Par curiosité, j'ai essayé avec le Timer de CCRP :
http://ccrp.mvps.org/index.html?controls/ccrptimer6.htm
C'est pareil.
Par contre l'option SND_NOSTOP :
If a sound is currently playing, the function immediately returns FALSE,
without playing the requested sound.
semble faites pour ça ...
Bon, d'accord il faut appeler Sleep avant la boucle, sinon une fois
compilé, ça ne passe pas à tous les coups. Juste une petite ...
bidouille ;-)
Ca semble très bien :-)
Donc si je comprends, on lance la lecture du "vrai" son en ASYNC
puis on fait un while avec le SND_NOSTOP juste dans le but d'attendre
la fin du "vrai son" (je suppose que le .wav à utiliser dans la boucle
while est juste la pour attendre la fin du "vrai", il doit être vide ?)
Puis on lance le parle "blah blah ..."
C'est bien l'idée?
"Jacques93" <jacques@Nospam> a écrit dans le message de news:
%23Trg$KPIHHA.4992@TK2MSFTNGP04.phx.gbl...
Bonjour Jean-marc et Touti,
Jean-marc a écrit :
[...]
J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
HALTE AUX BIDOUILLES !!! :-D
...
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
Sleep 200
While sndPlaySound("JeSuisPasLa.wav", SND_NOSTOP Or _
SND_ASYNC Or _
SND_NODEFAULT) = 0
DoEvents
Wend
parle "le train corail en provenance de lille rentre en gare"
...
Devrait le faire aussi. Je dirai qu'il est "normal" que l'option
'SND_SYNC', bloquent les événements, notamment du Timer, vu qu'elle
est synchrone. Par curiosité, j'ai essayé avec le Timer de CCRP :
http://ccrp.mvps.org/index.html?controls/ccrptimer6.htm
C'est pareil.
Par contre l'option SND_NOSTOP :
If a sound is currently playing, the function immediately returns FALSE,
without playing the requested sound.
semble faites pour ça ...
Bon, d'accord il faut appeler Sleep avant la boucle, sinon une fois
compilé, ça ne passe pas à tous les coups. Juste une petite ...
bidouille ;-)
Ca semble très bien :-)
Donc si je comprends, on lance la lecture du "vrai" son en ASYNC
puis on fait un while avec le SND_NOSTOP juste dans le but d'attendre
la fin du "vrai son" (je suppose que le .wav à utiliser dans la boucle
while est juste la pour attendre la fin du "vrai", il doit être vide ?)
Puis on lance le parle "blah blah ..."
C'est bien l'idée?
"Jacques93" a écrit dans le message de news:
%23Trg$Bonjour Jean-marc et Touti,
Jean-marc a écrit :
[...]J'ai bien une solution, mais c'est vraiment une bidouille, ceci
dit ça marchera. Voici:
- Tu lances la lecture du wav en Asynchrone
- // ici, je suppose que tu connais la durée de ton .wav, disons pour
l'exemple 2500 ms (2 secondes et demi)
- Tu initialises un timer avec cette durée (2500)
- Tu démarres le timer
- Dans l'évènement du timer, tu joues la lecture du texte
- Puis toujours dans le timer, tu invalides le timer (enabledúlse)
Et voila, le tour est joué.
HALTE AUX BIDOUILLES !!! :-D
...
FichierSons$ = "C:WindowsMediaWindows XP Démarrage.wav"
res% = sndPlaySound(ByVal FichierSons$, SND_ASYNC Or SND_NODEFAULT)
Sleep 200
While sndPlaySound("JeSuisPasLa.wav", SND_NOSTOP Or _
SND_ASYNC Or _
SND_NODEFAULT) = 0
DoEvents
Wend
parle "le train corail en provenance de lille rentre en gare"
...
Devrait le faire aussi. Je dirai qu'il est "normal" que l'option
'SND_SYNC', bloquent les événements, notamment du Timer, vu qu'elle
est synchrone. Par curiosité, j'ai essayé avec le Timer de CCRP :
http://ccrp.mvps.org/index.html?controls/ccrptimer6.htm
C'est pareil.
Par contre l'option SND_NOSTOP :
If a sound is currently playing, the function immediately returns FALSE,
without playing the requested sound.
semble faites pour ça ...
Bon, d'accord il faut appeler Sleep avant la boucle, sinon une fois
compilé, ça ne passe pas à tous les coups. Juste une petite ...
bidouille ;-)
Ca semble très bien :-)
Donc si je comprends, on lance la lecture du "vrai" son en ASYNC
puis on fait un while avec le SND_NOSTOP juste dans le but d'attendre
la fin du "vrai son" (je suppose que le .wav à utiliser dans la boucle
while est juste la pour attendre la fin du "vrai", il doit être vide ?)
Puis on lance le parle "blah blah ..."
C'est bien l'idée?