Un clic pour plusieurs sons

Résolu
Larcheo Messages postés 2 Date d'inscription lundi 12 août 2013 Statut Membre Dernière intervention 12 août 2013 - Modifié par jee pee le 13/08/2013 à 15:55
 larcheo - 26 août 2013 à 14:06
Débutant avec VB 2010 express, j'ai commencé un programme devant générer plusieurs sons successifs déclenchés par un bouton de commande (en fait il s'agit d'un générateur de discours politique fantaisiste (à partir de données trouvées sur internet : 8 discours différents découpés chacun en 4 tronçons, le programme choisit 4 tronçons au hasard).
Bien que le code du bouton paraisse correct je n'entends que le dernier tronçon, les 3 autres appelés avant restent silencieux. Je dois donc commettre une erreur avec l'utilisation de SoundPlayer.
Quelqu'un a-t-il rencontré ce type de problème ?

7 réponses

Utilisateur anonyme
12 août 2013 à 13:11
Salut,

Pour lire du texte et plutôt que 'SoundPlayer', il serait préférable d'utiliser les composants inclus dans l'espace de noms 'System.Speech' (à référencer dans les propriétés du projet).

Sinon, sans bout de code, il est impossible de t'aider.
0
Larcheo Messages postés 2 Date d'inscription lundi 12 août 2013 Statut Membre Dernière intervention 12 août 2013
12 août 2013 à 19:01
J'avais choisi SoundPlayer pour avoir toute latitude dans le style d'enregistrement de la voix (micro ou voix synthétique genre ACAPELA).
Le code du bouton de commande est :

Dim Premier1 = New System.Media.SoundPlayer("F:\VISUAL BASIC 2010 dossiers\Discours politique\Premier1.wav")
Dim Premier2... à 8....

prem = Int(Rnd(1) * 8) + 1

If prem = 1 Then
Premier1.Play()
End If
If prem = 2 à 8...

Dim Deuxième1 à 8
deux = Int(Rnd(1) * 8) + 1
If deux = 1 à 8...

Dim Troisième1 à 8....
trois = Int(Rnd(1) * 8) + 1

If trois = 1 à 8...

Dim Quatrième1 à 8
quatr = Int(Rnd(1) * 8) + 1

If quatr = 1 à 8..
Je devrais entendre 4 séquences à suivre : Première(prem) & Deuxième(deux) & Troisième(trois) & Quatrième(quatr). Mais une seule fonctionne - la dernière.
Un grand merci à ceux qui m'aident à solutionner ce bug.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 août 2013 à 21:42
Salut
en net pour obtenir un nombre aléatoire on utilise la class random
dim rn as new random
dim choice as integer
'rend un nombre entre 1 et 8
choice = rn.next(1,9)

pour le reste pas clair ce que tu veux faire
8 discours différents découpés chacun en 4 tronçons, le programme choisit 4 tronçons au hasard).
combien de fichier .wav as tu
0
Merci.Le souci ne vient pas du tirage des nombres aléatoires.

Pour mieux comprendre l'enchainement des sons à obtenir je dois dire que je me suis basé sur "cours de langue de bois.pdf" existant sur internet.
L'intérêt de ce petit programme est simplement de définir une méthode pour générer des sons successifs.
0
Utilisateur anonyme
13 août 2013 à 12:22
A mon avis, tous tes sons sont lus en même temps et l'on entend juste le dernier.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C'est exactement le problème.
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
13 août 2013 à 14:56
Bonjour Larcheo.

Voici qui pourra peut-être vous aider, sachant que Tps est un Timer.

Imports System.Media.SystemSounds
Public Class Accueil
    Private i As Integer = 1

    Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn1.Click
        Asterisk.Play()
        Beep.Play()
        Exclamation.Play()
        Hand.Play()
    End Sub

    Private Sub Btn2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn2.Click
        Tps.Enabled = True
    End Sub

    Private Sub Tps_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tps.Tick
        Select Case i
            Case 1 : Asterisk.Play() : i = 2
            Case 2 : Beep.Play() : i = 3
            Case 3 : Exclamation.Play() : i = 4
            Case 4 : Hand.Play() : Tps.Enabled = False : i = 1
            Case Else
        End Select
    End Sub

End Class


Quand je clique sur le bouton Btn1, je n'entends que le son "Hand". Quand je clique sur le bouton Btn2, j'entends successivement les quatre sons.

Cordialement
0
Merci Zermelo, le timer et le select case représentent sans doute une bonne piste.

Il me reste à adapter la méthode pour des sons ne provenant pas du système (J'essaierai dans quelques jours).
Bien cordialement.
0
Merci encore à Zermelo, sa suggestion a été très utile.

J'ai réussi à coordonner les 32 séquences wav dans mon programme (constituant, en fait un tableau de 8 lignes en 4 colonnes).
J'ai utilisé 4 timers s'ouvrant successivement dans un ordre fixe (Premier, Deuxième, Troisième puis Quatrième).
A l'intérieur de chaque timer, je tire la valeur aléatoire de prem, deux, trois ou quatr pour aller vers une des 8 séquences Wav.

Le problème est donc résolu.
0
Rejoignez-nous