mirror of
				https://github.com/chibicitiberiu/drumkit.git
				synced 2024-02-24 10:53:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1013 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1013 B
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Threading.Tasks;
 | |
| using SharpDX;
 | |
| using SharpDX.XAudio2;
 | |
| using SharpDX.Multimedia;
 | |
| 
 | |
| namespace DrumKit
 | |
| {
 | |
|     class SoundPool
 | |
|     {
 | |
|         List<SourceVoice> voices;
 | |
| 
 | |
|         public SoundPool(XAudio2 device, WaveFormat format)
 | |
|         {
 | |
|             voices = new List<SourceVoice>();
 | |
| 
 | |
|             for (int i = 0; i < 64; i++)
 | |
|                 voices.Add(new SourceVoice(device, format, true));
 | |
|         }
 | |
| 
 | |
| 
 | |
|         public void PlayBuffer(AudioBuffer buffer, uint[] packetinfo)
 | |
|         {
 | |
|             int preferred = -1;
 | |
| 
 | |
|             for (int i = 0; i < voices.Count; i++)
 | |
|                 if (voices[i].State.BuffersQueued == 0)
 | |
|                     preferred = i;
 | |
| 
 | |
|             if (preferred != -1)
 | |
|             {
 | |
|                 // voices[preferred].FlushSourceBuffers();
 | |
|                 voices[preferred].SubmitSourceBuffer(buffer, packetinfo);
 | |
|                 voices[preferred].Start();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |