Я использую DynamicSoundEffectInstance в проекте Xbox 360.
Проблема в том, что количество буфера растет очень быстро, пока оно не достигнет 64, и приложение не потерпит крах.Насколько я понимаю, он вообще не должен расти?
Чтобы проверить, я упростил код, чтобы вернуться к основам.в проекте нетронутый шаблон)
DynamicSoundEffectInstance soundEffect = new DynamicSoundEffectInstance(22500, AudioChannels.Mono);
int bufferCount=0;
byte[] BufferHigh;
byte[] BufferLow;
bool alternate = true;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
this.IsFixedTimeStep = true;
this.TargetElapsedTime = TimeSpan.FromMilliseconds(20);
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
bufferCount = soundEffect.GetSampleSizeInBytes(new TimeSpan(0, 0, 0, 0, 20));
BufferHigh = Enumerable.Repeat<byte>((byte)255, bufferCount).ToArray();
BufferLow = Enumerable.Repeat<byte>((byte)127, bufferCount).ToArray();
soundEffect.Play();
}
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (alternate)
soundEffect.SubmitBuffer(BufferHigh);
else
soundEffect.SubmitBuffer(BufferLow);
alternate = !alternate;
Debug.WriteLine("elapsed: " + gameTime.ElapsedGameTime.TotalMilliseconds);
Debug.WriteLine("buffercount: " +soundEffect.PendingBufferCount);
base.Update(gameTime);
}
Код должен чередоваться между высоким и низким, создавая звук щелчкаКакие-либо предложения?Тот же код отлично работает на Windows Phone