2011-08-24 2 views
2

développeurs Bonjour amis,BASS « Play » un flux

J'ai une question, je suis en train de faire un jeu de tir, mais je ne suis pas sûr de savoir comment mettre en œuvre quand une explosion se produit, parce que l'explosion est toujours le même sonner et peut se produire en peu de temps, c'est-à-dire que le son ne se termine même pas et qu'une autre explosion se produit. Ma question est, comment "jouer" plus d'une fois dans le même flux?

Merci!

Répondre

0

En supposant que nous parlons de la même Bass Audio API, accédez à la documentation en ligne pour BASS\Channels\Bass_ChannelPlay(). Appelez Bass_ChannelPlay() en passant votre poignée existante pour l'explosion et en réglant restart sur true - voir la documentation pour plus d'informations.

1

Voici un exemple très simple:

int device = -1; // Default Sounddevice 
int freq = 44100; // Sample rate (Hz) 
HSTREAM streamHandle; // Handle for open stream 


/* Initialize output device */ 
BASS_Init(device, freq, 0, 0, NULL); 


/* Load your soundfile and play it */ 
streamHandle = BASS_StreamCreateFile(FALSE, "your_file.mp3", 0, 0, 0); 
BASS_ChannelPlay(streamHandle, FALSE); 


/* As very last, close Bass */ 
BASS_Free(); 

Bien que cet exemple joue qu'une seule fois votre fichier son, vous pouvez créer une nouvelle poignée à chaque fois que vous avez besoin du son. Mais BASS_Init() et BASS_Free() ne doivent s'exécuter qu'une seule fois.

Une autre solution consiste à jouer le son comme un échantillon:

HSAMPLE streamHandle; // Handle for sample 
HCHANNEL channel; // Handle for open channel of the sample 


/* Initialize output device */ 
BASS_Init(device, freq, 0, 0, NULL); 


/* Load sample and play it */ 
streamHandle = BASS_SampleLoad(FALSE, "your_file.mp3", 0, 0, 0); 
channel = BASS_SampleGetChannel(streamHandle, FALSE); 


/* Once you are done with your sample you should free it */ 
BASS_SampleFree(streamHandle); 

/* As very last, close Bass */ 
BASS_Free();