Comment puis-je jouer immédiatement un son lorsqu'un autre son se termine avec XNA / XACT?

StackOverflow https://stackoverflow.com/questions/113977

  •  02-07-2019
  •  | 
  •  

Question

Cette question est à la frontière entre le monde du concepteur audio et celui du programmeur. Bien que le domaine d’un concepteur audio doive parfois répondre partiellement à cette question, il s’agit assurément d’un problème pour le programmeur. Dans notre projet, nous souhaitons mettre en boucle un son (musique de fond) pendant qu'il reste plus d’une minute au chronomètre. Lorsque ce temps est écoulé, nous souhaitons arrêter la musique en tant qu’auteur, , puis poursuivre immédiatement avec le segment final . Je me suis penché sur XACT et il semble prendre en charge différents événements. Malheureusement, la documentation fait défaut et l'application m'est quelque peu étrangère en tant que programmeur.

Ce que je cherche à faire est quelque chose dans ce sens (approches différentes):

  1. Quand la musique s'arrête, je veux nouer un événement pour jouer un autre son immédiatement
  2. Quand un marqueur est déclenché dans la musique, je veux jouer immédiatement un autre son
  3. J'aimerais aussi savoir dans mon application quand certains de ces événements se produisent

Le problème est que je n’ai trouvé aucun mécanisme pour reproduire automatiquement le son quand un autre son commence et que je ne trouve pas le moyen de relier les événements créés dans le projet XACT en C #.

Si cela ne peut pas être fait (c’est-à-dire que XACT / XNA ne prend pas en charge ces opérations), rassemblez vos idées sur la façon de résoudre ce problème avec un minimum d’erreurs de temps entre sons. De préférence, je serais capable de contrôler autant que possible en C # avec des appels à XNA.

Était-ce utile?

La solution

Je pense l'avoir résolu maintenant

Voici comment je l'ai fait.

  1. Sélectionnez le repère que vous souhaitez modifier, une fois le son arrêté, dans XACT .
  2. Définissez le type de liste de lecture sur Interactif .
  3. Open Cue Transitions .
  4. Sélectionnez Afficher par destination .
  5. Sélectionnez le Cue dans le noeud (arrêt) visible dans l'arborescence.
  6. Dans Propriétés de la transition à droite de l'arborescence, pour Source et destination :
    1. Définissez Source sur Fin de boucle .
    2. Définissez Destiantion sur Début .
  7. Dans Propriétés de la transition à droite de l'arborescence, pour les Transitions :
    1. Définissez Type de transition sur Transition simultanée directe .
    2. Définissez Son de transition sur le son que vous souhaitez lire une fois que le son en boucle est terminé.

Fermez la fenêtre et testez-la en jouant le Cue. Examinez également pour arrêter Comme l'auteur , afin de voir si le comportement répond à vos attentes.

Mise en œuvre

Dans le code, Arrêtez le repère tel que créé pour obtenir ce comportement. Immediate arrête le repérage sans que le son ne soit diffusé. J'espère que cela aidera d'autres personnes qui pourraient rencontrer ce problème à l'avenir. La question et la réponse n'étaient pas aussi orientées code que je le pensais au départ. Cela s'applique également à XNA 2.0. Je ne sais pas s'il y aura d'autres options pour contrôler ce type de comportement dans XNA 3.0 +.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top