Stopper un son en python
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1887
J'éprouve des difficultés pour stopper un son à un moment précis:

Effet recherché: mon personnage doit détecter une zone qui va activer le bruitage. Tant qu'il est dans cette zone, le son doit fonctionner (pas de problèmes à ce stade).

Dés que mon personnage quitte la zone, le son doit se couper net (je rajouterai une atténuation plus tard).

Je ne comprends pas bien cette histoire de handle, je pense.

def joue_son3(self, path, son, vol):
     factory = aud.Factory(gl.expandPath(path) + son + '.mp3')
     factory.loop(-1)
     factory.fadein(0, 3)
     device = aud.device()
     device.volume = vol
        
     factory_buffered = aud.Factory.buffer(factory)
     handle_buffered = device.play(factory_buffered)
    
def joue_son_stop(self, path, son):
     factory = aud.Factory(gl.expandPath(path) + son + '.mp3')
     device = aud.device()
        
     factory_buffered = aud.Factory.buffer(factory)
     handle_buffered = device.play(factory_buffered).stop()

if self.cont.sensors['col_cote'].positive:
   if self.obj['son2'] and not self.obj['cote']:
       self.joue_son3('//bruitages/', 'cote_mer', 1)
       self.obj['son2'] = False
       self.obj['cote'] = True
else:
  self.obj['son2'] = True
  if self.obj['cote']:
      self.joue_son_stop('//bruitages/', 'cote_mer')
      self.obj['cote'] = False

Contribution le : 13/10/2017 12:59
Créer un fichier PDF de la contribution Imprimer


Re: Stopper un son en python
OverdOzed
Inscrit:
19/01/2008 03:25
De tu voit le nuage sur la carte météo bin j'habite là
Post(s): 2554
tu a un exemple dans la doc

https://pythonapi.upbge.org/aud.html

Contribution le : 13/10/2017 14:32
Créer un fichier PDF de la contribution Imprimer


Re: Stopper un son en python
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1887
Hélas, ça ne suffit pas. Il me manque une info. Je viens de tester plusieurs choses ce matin mais j'ai toujours pas le résultat escompté.

Une chose que je ne comprends pas, c'est que:
handle_buffered = device.play(factory_buffered)

handle_buffered.stop()

Or, si je ne me trompe pas, c'est comme si je faisais:

device.play(factory_buffered).stop()


Je vois bien que ça fonctionne (je vois une micro-coupure, visuellement) mais malgré ça, le son ne se coupe pas. Pourquoi ?

Contribution le : 14/10/2017 13:17
Créer un fichier PDF de la contribution Imprimer


Re: Stopper un son en python
OverdOzed
Inscrit:
19/01/2008 03:25
De tu voit le nuage sur la carte météo bin j'habite là
Post(s): 2554
bin non si tu lit bien la fin:
tu stope le son

handle.stop()

et après tu stop la mémoire

handle_buffered.stop()

sinon comme device.play est enregistrer dans la mémoire ça va relancé la lecture directe et comme il aura coupé le son qu'un 300 éme de seconde toi tu l'entendra pas

Contribution le : 15/10/2017 22:26
Créer un fichier PDF de la contribution Imprimer


Re: Stopper un son en python
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1887
D'accord, je crois que je prends le problème dans le mauvais sens...

Donc, effectivement, l'exemple de l'api fonctionne (sauf que quand tu as un buffer, c'est le buffer que tu dois stopper).

D'après ce que je comprends de mes tests, si tu lances deux fois un fichier audio, tu aura deux fois le son (donc deux instances ou handle, je sais pas le mot exact).

Donc, si je suis cette logique, ce que j'ai écris plus haut est stupide puisque je lance le son une première fois et je stoppe tout de suite le deuxième (alors que je pensais que le premier allait l'être aussi).

Donc, comment je dois faire pour avoir une instance de mon son, en sachant que c'est une fonction et que je la réutiliserai pour d'autres sons ? Parce que, j'ai testé, ça ne fonctionne pas...

Ou alors, dois-je jouer plutôt sur le volume que de stopper le son ? Dans ce cas, n'aurais-je pas trop de mémoires consommées ? Cela dit, le fait que j'ai mis ça en une fonction ne changera rien au problème du nombre d'instances...

Prenons un cas concret (sur lequel je suis actuellement d'ailleurs):

Sur mon terrain, j'ai une zone de plage. Quand mon personnage vient dans cette zone, il faut entendre la mer. Je me suis dit que le mieux à faire, c'était d'intégrer le son en 2D sur le personnage au lieu de mettre ça sur l'objet "mer" (puisque le son part depuis le point d'origine et pas selon l'enveloppe de l'objet).

Contribution le : 16/10/2017 11:28
Créer un fichier PDF de la contribution Imprimer


Re: Stopper un son en python
OverdOzed
Inscrit:
19/01/2008 03:25
De tu voit le nuage sur la carte météo bin j'habite là
Post(s): 2554
franchement c'est rare que je dise cela mais malheureusement dès que tu stocke plusieurs son en mémoire
c'est le bordel et comme personne a touché au code de cette partie de blender depuis plusieurs années je doute que le problème soit réglé demain

donc maintenant je m'embête plus je pilote des actuators avec un script et plus de soucis

Contribution le : 16/10/2017 18:05
Créer un fichier PDF de la contribution Imprimer


Re: Stopper un son en python
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1887
D'accord. C'est dommage.

Même dans l'upBGE, ça na pas été revu ? Encore une chose que je vais devoir vérifier, tien

Bon, dans le cas présent, je vais faire autrement, merci.

Contribution le : 17/10/2017 12:23
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS Unity - Version alpha disponible + discord    [1][2][3]...[68] 673 152240 Aujourd'hui 00:26:07
Hook 
Questions & Réponses [résolu] Découper un objet selon un autre 4 111 Hier 18:51:31
mamain83 
Questions & Réponses X-Ray uniquement en mode Solid 2 51 Hier 12:15:45
Horemheb 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[24] 239 24889 27/11 21:57:38
moonboots 
Questions & Réponses Solution rendu saccade    [1][2] 14 226 27/11 20:41:12
Elise1002 
Questions & Réponses Texture baké devient noir    [1][2] 14 127 27/11 07:58:33
moonboots 
Questions & Réponses Raccourcis clavier qui ne marchent plus v 2.93.4 0 52 26/11 19:16:31
GFC 
The Blender Clan 'tchat Conseil pour débutante 4 368 25/11 16:24:59
Ksuhma 
Questions & Réponses Récupérer la couleur en sortie de shader 8 179 25/11 09:33:29
bibi 
Questions & Réponses Peut-on entrer les coordonnées du point visé de la caméra ? 4 144 24/11 19:16:16
CBY 
Questions & Réponses [résolu] snap fixe sur les cm ou mm 2 113 24/11 17:47:40
mamain83 
Questions & Réponses debutant- engrenage en pointe 8 259 24/11 17:30:55
CBY 
The Blender Clan 'tchat ANNONCE IMPORTANTE : LE BLENDER CLAN REOUVRE !! Etat des lieux sur le présent et le futur :)    [1][2][3] 20 48342 24/11 01:55:17
jor760 
Questions & Réponses [non résolu] Fusion 360 - recherche d'un connaisseur 0 106 22/11 18:24:48
Redstar 
The Blender Clan 'tchat [abandonné] Clavier Corsair K55 RGB Pro / Raccourcis clavier    [1][2] 14 461 21/11 19:46:01
CBY 
Questions & Réponses Paramétrage des Particle System 0 118 21/11 10:05:15
Horemheb 
Questions & Réponses Gestion des Hook 4 179 21/11 09:26:17
Horemheb 
Questions & Réponses Tissu élastique    [1][2] 14 490 21/11 09:21:27
Horemheb 
Questions & Réponses csv>python>blender 8 1253 18/11 18:46:06
Cdric 
Questions & Réponses Editer un nom avec la police 'DroidSans.ttf' en hindi 0 128 18/11 09:55:16
Melodicpinpon 

Qui est en ligne
108 utilisateur(s) en ligne (dont 41 sur Forums)

Membre(s): 8
Invité(s): 100


AudreaTuns, QuintonOdo, LoriMuecke, DennisDema, SZKEzekiel, TeresitaTr, JuliannSae, YettaFfb71, plus...
Nouveaux membres
ConnorLava 29/11/2021
MelisaMcKe 29/11/2021
AntonettaG 29/11/2021
EugeneMeal 29/11/2021
BonnyScutt 29/11/2021
ShantellGr 29/11/2021
ElizaPetha 29/11/2021
MadisonHou 29/11/2021
RefugioMac 29/11/2021
Catalina08 29/11/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Dec 29
Anniversaire d'ebrain
Jan 8
BUG de Lyon
Fev 15
Anniversaire de Dany
plus 246 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445