Come posso riprodurre immediatamente un suono quando un altro suono termina con XNA / XACT?

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

  •  02-07-2019
  •  | 
  •  

Domanda

Questa domanda è al confine tra il mondo dell'audio designer e il programmatore. Sebbene questa domanda debba essere parzialmente risolta da quel dominio di un progettista audio, è sicuramente un problema per il programmatore. Nel nostro progetto, vogliamo riprodurre un suono in loop (musica di sottofondo) mentre il tempo di gioco è superiore a un minuto. Quando viene raggiunto questo momento, desideriamo interrompere la musica come creata, e quindi continuare immediatamente con il segmento finale . Ho esaminato XACT e sembra avere supporto per diversi eventi. Purtroppo la documentazione è carente e l'applicazione mi è in qualche modo estranea come programmatore.

Quello che sto cercando di fare è qualcosa del genere (approcci diversi):

  1. Quando la musica si ferma, voglio legare un evento per riprodurre un altro suono immediatamente
  2. Quando è un marcatore innescato nella musica, voglio farlo riprodurre immediatamente un altro suono
  3. Vorrei anche sapere nella mia domanda quando si verificano alcuni di questi eventi

Il problema è che non sono stato in grado di trovare alcun meccanismo per riprodurre automaticamente il suono quando inizia un altro suono e che non riesco a trovare un modo per collegarmi agli eventi realizzati nel progetto XACT su C #.

Se ciò non può essere fatto (ovvero XACT / XNA non ha il supporto per queste operazioni), raccogli le tue idee su come risolvere questo problema con errori minimi di tempo incrociato. Preferibilmente sarei in grado di controllare il più possibile di ciò in C # con chiamate a XNA.

È stato utile?

Soluzione

Penso di averlo risolto ora

Ecco come l'ho fatto.

  1. Seleziona il Cue che desideri modificare l'audio dopo che è stato interrotto in XACT .
  2. Imposta Tipo playlist su Interattivo .
  3. Apri Cue Transizioni .
  4. Seleziona Visualizza per destinazione .
  5. Seleziona il Cue nel nodo (interrompi) visibile nella vista ad albero.
  6. In Proprietà transizione sul lato destro della vista ad albero, per Origine e destinazione :
    1. Imposta Sorgente su Fine del ciclo .
    2. Imposta Destiantion su Inizio .
  7. In Proprietà transizione sul lato destro della vista ad albero, per Transizioni :
    1. Imposta Tipo di transizione su Transizione simultanea diretta .
    2. Imposta Suono di transizione su il suono che desideri riprodurre dopo che il suono di loop ha completato il suo loop.

Chiudi la finestra e provala suonando il Cue. Prova anche a fermarlo Come autore per vedere se il comportamento soddisfa le tue aspettative.


Attuazione

Nel codice, Ferma l'indicazione Come autore per ottenere questo comportamento. Immediatamente interrompe il segnale senza riprodurre il suono in uscita. Spero che questo aiuti altre persone che potrebbero incorrere in questo problema in futuro. La domanda e la risposta non erano molto orientate al codice come pensavo inizialmente. Inoltre, questo vale per XNA 2.0. Non so se ci saranno altre opzioni per controllare questo tipo di comportamento in XNA 3.0+.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top