<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Cooking with Code</title><link>http://blogs.msdn.com/b/ashtat/</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.21163 (Build: 5.6.583.21163)</generator><item><title>What’s “Dynamic” about this SoundEffectInstance? (Part 2)</title><link>http://blogs.msdn.com/b/ashtat/archive/2010/10/02/what-s-dynamic-about-this-soundeffectinstance-part-2.aspx</link><pubDate>Sat, 02 Oct 2010 14:09:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10070648</guid><dc:creator>ashtat</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=10070648</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2010/10/02/what-s-dynamic-about-this-soundeffectinstance-part-2.aspx#comments</comments><description>&lt;p&gt;I just finished writing an &lt;a href="http://create.msdn.com/en-US/education/catalog/article/dynamic_audio"&gt;article&lt;/a&gt; on this topic for the Creators Club….ummm…sorry, I mean the &lt;a href="http://create.msdn.com/en-US"&gt;App Hub&lt;/a&gt;! Check out the article, it has lots of pretty pictures and everything!&amp;#160; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10070648" width="1" height="1"&gt;</description></item><item><title>What’s “Dynamic” about this SoundEffectInstance? (Part 1)</title><link>http://blogs.msdn.com/b/ashtat/archive/2010/09/08/what-s-dynamic-about-this-soundeffectinstance-part-1.aspx</link><pubDate>Wed, 08 Sep 2010 21:57:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10059527</guid><dc:creator>ashtat</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=10059527</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2010/09/08/what-s-dynamic-about-this-soundeffectinstance-part-1.aspx#comments</comments><description>&lt;p&gt;Or in other words, what’s up with the new “DynamicSoundEffectInstance” type in XNA Game Studio 4.0? If you’re familiar with the &lt;a href="http://blogs.msdn.com/b/ashtat/archive/2009/06/15/soundeffect-api-changes-in-game-studio-3-1.aspx"&gt;SoundEffect API in XNA Game Studio 3.1&lt;/a&gt;, you’ll know that to play sound effects you need to -&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add your audio files to the content project in your solution and set SoundEffectProcessor options. &lt;/li&gt;    &lt;li&gt;Build your project which generates all the appropriate XNB files. &lt;/li&gt;    &lt;li&gt;Load these XNB files in your game at runtime to get back SoundEffect objects. &lt;/li&gt;    &lt;li&gt;Use “Fire and Forget” or “Create and Configure” patterns to playback multiple sound instances. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This means that basically all the sounds in your game are “pre-authored” that is your game is essentially limited to using these “static” sounds that cannot be changed at runtime. Of course you can tweak the playback of these sounds at runtime, change the volume or pitch, spatially position them in your 3D world using Apply3D, control the loops . But what if you wanted to procedurally generate some sounds – I mean doesn’t everyone want to write a modular synth? Too bad, can’t do it. Can you do some pre-processing on your content before playing it back? Nope. How about sample accurately synchronizing multiple sound instances? Out of luck.&amp;#160; Not so in Game Studio 4.0 - the “Dynamic Audio” features now remove these limitations.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Dynamic is anti-static!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In a nutshell, dynamic audio allows working with raw audio data that the game can control at runtime. There are couple different ways work with “dynamic” audio -&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/ashtat/archive/2010/06/03/soundeffect-creation-in-xna-game-studio-4.aspx"&gt;Create a SoundEffect from the raw buffer&lt;/a&gt;: Once created this SoundEffect is in no way different from a SoundEffect hydrated from an XNB file (using Content.Load). All the playing SoundEffectInstance objects share the audio buffer owned by this SoundEffect. It’s not possible to change the audio data after creation. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.dynamicsoundeffectinstance.aspx"&gt;DynamicSoundEffectInstance&lt;/a&gt;: This is the shiny new class we introduced in XNA 4.0 that enables streamed playback of audio buffers. It inherits from SoundEffectInstance and provides all the basic semantics (with some caveats) of a SoundEffectInstance with additional ability to dynamically control the audio data being rendered. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Why would you choose one over the other? That depends on what you’re trying to do. In general, DynamicSoundEffectInstance is useful for scenarios where the playback changes over time whereas SoundEffect is useful when you have a sound that is shared by multiple instances that doesn’t fundamentally change with time. For example – if you’re going to procedurally generate an explosion, you’d probably want to use SoundEffect so that all explosions in your game can share the same audio buffer and optimize on memory usage. On the other hand DynamicSoundEffectInstance is probably more appropriate if you’re trying to create a virtual instrument from a synthesized audio source where the player has parametric control over the synthesis. Another example is streaming from a large audio files where DynamicSoundEffectInstance is probably a better choice in terms of&amp;#160; the memory usage. &lt;/p&gt;  &lt;p&gt;Next up – all the juicy details on how to use DynamicSoundEffectInstance…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10059527" width="1" height="1"&gt;</description></item><item><title>SoundEffect Creation in XNA Game Studio 4.0</title><link>http://blogs.msdn.com/b/ashtat/archive/2010/06/03/soundeffect-creation-in-xna-game-studio-4.aspx</link><pubDate>Thu, 03 Jun 2010 02:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10019259</guid><dc:creator>ashtat</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=10019259</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2010/06/03/soundeffect-creation-in-xna-game-studio-4.aspx#comments</comments><description>&lt;p&gt;There are a couple new ways to create a SoundEffect in XNA 4.0 - a new factory method that loads wave files and a couple new constructors that take raw PCM audio data. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.fromstream(XNAGameStudio.40).aspx"&gt;SoundEffect.FromStream&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 42.76%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 30px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 131.12%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 16px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; SoundEffect FromStream(Stream stream)&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This method takes a plain vanilla Stream to a standard .wav file with PCM audio data. Yep, wav files can contain audio in a lot of different format – PCM, ADPCM, MP3, WMA, whatever. Most wav files in the wild are usually already in PCM format but you can always fire up your favorite audio editor to check/convert the format. &lt;a href="http://audacity.sourceforge.net/"&gt;Audacity&lt;/a&gt; or &lt;a href="http://www.wavosaur.com/"&gt;Wavosaur&lt;/a&gt; are both easy to use and free editors. &lt;/p&gt;

&lt;p&gt;Here are some useful details -&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Format constraints - PCM, 8 or 16-bit, 8KHz to 48KHz, mono or stereo. &lt;/li&gt;

  &lt;li&gt;Reads the loop region from the file. If there isn’t one the whole file will loop – only if you play it looped of course. &lt;/li&gt;

  &lt;li&gt;We don’t mess with the seek position of the stream so make sure it’s set to the right place when you pass it in (and reset it when this method returns if you’re going to use it elsewhere in your code). &lt;/li&gt;

  &lt;li&gt;If you’re adding wave files to your content project make sure you set “Build Action” to “Content” and “Copy to Output Directory” to “Copy if Newer”. This will ensure that it doesn’t get compiled to an xnb file and that the file gets deployed with your project. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.soundeffect(v=XNAGameStudio.40).aspx"&gt;&lt;strong&gt;SoundEffect Constructors&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 108.02%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 46px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; SoundEffect(&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] buffer, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; sampleRate, AudioChannels channels)&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 78.95%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 16px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; SoundEffect (&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] buffer, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; offset, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; count, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; sampleRate, AudioChannels channels, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; loopStart, &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; loopLength)&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;These constructors are handy for things like creating procedural sound effects, reading from your custom wave bank etc. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Format for the audio data is restricted to PCM, 16-bit, 8KHz, 48KHz, mono or stereo. &lt;/li&gt;

  &lt;li&gt;Offset and count are in bytes – offset is where the audio data starts within the buffer and count is the length of audio data. &lt;/li&gt;

  &lt;li&gt;The length of the audio data for playback must be block aligned for the format. This means that - 
    &lt;ul&gt;
      &lt;li&gt;For the first simpler constructor the size of the entire buffer must be block aligned. &lt;/li&gt;

      &lt;li&gt;For the second meatier overload the offset and count values must be block aligned.&amp;#160; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;

  &lt;li&gt;Loop start and length are in samples. If you don’t specify any (that is pass in 0 for both) we’ll loop the entire buffer. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most common questions we get at this point are -&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1. If the format is restricted to 16-bit, why do these methods take byte[] and not short[]?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When we first designed this API our first instinct was to do exactly that – any method that took raw audio buffers took short[] and not byte[]. When we looked a little deeper though we realized that this really wouldn’t address some important scenarios. For example, things got really clumsy whenever we wanted these APIs to play nicely with streams. Also when we thought about extensibility especially around formats that we may want to support in the future the special implicit meaning given to the short[] (“array of 16-bit samples”) seemed odd and anti .Net. So after considering all the options we settled on byte[] – for one it plays nice with existing .Net APIs that take raw buffers. It also follows an established and familiar pattern. It also gives us better flexibility for supporting other formats in the future. Within the audio rendering stack everything eventually turns into arrays of bytes anyway. Yeah, there are scenarios where this forces you to do some extra work to do conversions to byte[] (especially true when writing any DSP code) but this is something we could easily optimize in a future release. And taking short[] would not have really solved this anyway.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;em&gt;2. What exactly is block alignment and how do I calculate it?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In a single sentence, block alignment value is the number of bytes in an atomic unit (aka block) of audio for a particular format. For PCM formats the formula is extremely simple: “Block Alignment = Bytes per Sample * Number of Channels”. For example, block alignment value for mono 16-bit PCM format is 2 and for stereo 16-bit PCM format it’s 4. We have a couple handy helpers that can help calculate the block aligned values – &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.getsamplesizeinbytes(v=XNAGameStudio.40).aspx"&gt;GetSampleSizeInBytes&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.getsampleduration(v=XNAGameStudio.40).aspx"&gt;GetSampleDuration&lt;/a&gt; convert from time units to block aligned byte value and back.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;3. Why are the loop arguments expressed in samples? Why not in bytes like the offset and count?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most (all?) audio editors that allow setting loops in audio files do so in samples. In most cases when someone wants to loop a sub-region within a sound they use an audio editor to define it in the content itself. Even compressed formats like XMA on Xbox read the loop values in samples. Ultimately these formats that support sample accurate looping (i.e. smooth loops that play back exactly as authored and don’t pop or glitch) decode to PCM and use these loop sample values during playback (the loop values for non-PCM formats can have their own alignment restrictions but that’s a discussion for a different post). In any case for PCM formats converting from byte value to sample value is incredibly trivial - “Sample Offset = Byte Offset / Block Alignment”. So we optimized for the most common case and loop arguments ended up being in sample units.&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pseudocode is worth a thousand words&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Example 1 – Playback a wave file from the content folder. In this case “Sample.wav” is a sound file that’s included in the content project as “content”. &lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 86.22%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 46px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;SoundEffect soundFromFile = SoundEffect.FromStream(TitleContainer.OpenStream(&lt;span style="color: #006080"&gt;@&amp;quot;Content\Sample.wav&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 64.27%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 16px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;soundFromFile.Play();&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Example 2 –&amp;#160; Create and playback a second long 48KHz stereo sound.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 105.58%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 142px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Allocate a buffer to hold 1 second worth of stereo data&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[SoundEffect.GetSampleSizeInBytes(TimeSpan.FromSeconds(1), 48000, AudioChannels.Stereo)];&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Method fills the passed buffer with audio data – left as an exercise to the reader (I’ve always wanted to write that!) :)&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;FillBuffer(buffer);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Create the SoundEffect from the buffer&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;SoundEffect sound = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SoundEffect(buffer, 48000, AudioChannels.Stereo);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #008000"&gt;// Play a &amp;quot;fire and forget&amp;quot; instance.&lt;/span&gt;&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;sound.Play();&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Example 3 – Plays back 500ms from 200ms offset within the buffer.&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 90.78%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 128px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; height: 18px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; bufferLength = SoundEffect.GetSampleSizeInBytes(TimeSpan.FromSeconds(1), 48000, AudioChannels.Stereo);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; offset = SoundEffect.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(200), 48000, AudioChannels.Stereo);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; count = SoundEffect.GetSampleSizeInBytes(TimeSpan.FromMilliseconds(500), 48000, AudioChannels.Stereo);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[] buffer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;byte&lt;/span&gt;[bufferLength];&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;FillBuffer(buffer);&lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;SoundEffect sound = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; SoundEffect(buffer, offset, count, 48000, AudioChannels.Stereo, 0, 0); &lt;/pre&gt;
&lt;!--crlf--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;sound.Play();&lt;/pre&gt;
&lt;!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/!--crlf--&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10019259" width="1" height="1"&gt;</description></item><item><title>Ahemm…is this thing on?</title><link>http://blogs.msdn.com/b/ashtat/archive/2010/05/05/ahemm-is-this-thing-on.aspx</link><pubDate>Wed, 05 May 2010 22:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10008100</guid><dc:creator>ashtat</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=10008100</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2010/05/05/ahemm-is-this-thing-on.aspx#comments</comments><description>&lt;P&gt;As the great James Anchower once said, “it’s been a long time since I rapped at ya, but there’s been all sorts of mess going on in my life”. For instance I got super-ultra-Windows Phone 7-series++ busy with XNA GameStudio 4.0. And then my wife and I shipped our “Baby 1.0” this year (thanks!). So here I am, a proud father of beautiful girl and a proud dev of some shiny new XNA framework features.&lt;/P&gt;
&lt;P&gt;So what have I got to show for all this time? A bunch of cool stuff. &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.dynamicsoundeffectinstance(XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.dynamicsoundeffectinstance(XNAGameStudio.40).aspx"&gt;Dynamic Audio&lt;/A&gt; - &lt;/STRONG&gt;Ask long enough and ye shall receive! You can now playback raw audio buffers so go forth and build your modular synthesizer, sequencer, procedural sound effects and whatever else that floats your proverbial boat. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.microphone(v=XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.microphone(v=XNAGameStudio.40).aspx"&gt;Microphone Support&lt;/A&gt; – &lt;/STRONG&gt;Find all the connected microphones and use them in your game.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Imaging support&lt;/STRONG&gt; – Create and save textures &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.fromstream(v=XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.fromstream(v=XNAGameStudio.40).aspx"&gt;from&lt;/A&gt;/&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.saveaspng(v=XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.saveaspng(v=XNAGameStudio.40).aspx"&gt;to JPEG&lt;/A&gt;/&lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.saveaspng(v=XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.texture2d.saveaspng(v=XNAGameStudio.40).aspx"&gt;PNG&lt;/A&gt; streams. A small update to media API on the phone lets you even save the picture to the media library. &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="http://creators.xna.com/en-US/article/whichproductforWindowsPhone" mce_href="http://creators.xna.com/en-US/article/whichproductforWindowsPhone"&gt;Silverlight support&lt;/A&gt;&lt;/STRONG&gt; – We refactored our assemblies so a lot of the XNA framework features (like audio and media) can be used in Silverlight applications. We also added a couple new ways to create &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.fromstream(v=XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.fromstream(v=XNAGameStudio.40).aspx"&gt;SoundEffect&lt;/A&gt; and &lt;A href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.media.song(v=XNAGameStudio.40).aspx" mce_href="http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.media.song(v=XNAGameStudio.40).aspx"&gt;Song&lt;/A&gt; types that don’t depend on the ContentManager.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Get your XNA GameStudio 4.0 CTP &lt;A href="http://creators.xna.com/en-US/downloads" mce_href="http://creators.xna.com/en-US/downloads"&gt;here&lt;/A&gt;. As always the devil’s in the details…so stay tuned! &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10008100" width="1" height="1"&gt;</description></item><item><title>Video Playback in XNA Game Studio 3.1</title><link>http://blogs.msdn.com/b/ashtat/archive/2009/06/20/video-playback-in-xna-game-studio-3-1.aspx</link><pubDate>Sat, 20 Jun 2009 02:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9792322</guid><dc:creator>ashtat</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=9792322</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2009/06/20/video-playback-in-xna-game-studio-3-1.aspx#comments</comments><description>&lt;P&gt;&lt;A href="http://klucher.com/blog/video-support-in-xna-game-studio-3-1/" mce_href="http://klucher.com/blog/video-support-in-xna-game-studio-3-1/"&gt;Michael did a post&lt;/A&gt; some time back to give an overview of the new video playback feature. Here’re some additional tips that might help - &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Adding video to your project&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;In a nutshell - make sure your videos are encoded with Windows Media Video v9 codecs, are using the CBR format and that they have an audio track (also encoded with CBR). If you’re using &lt;A href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx" mce_href="http://www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx"&gt;Windows Media Encoder&lt;/A&gt;, select “File download (computer playback)” for your encoding destination format. This will give you the options to select CBR encoding for both video and audio streams. &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/ashtat/WindowsLiveWriter/VideoPlaybackinXNAGameStudio3.1_D25D/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/ashtat/WindowsLiveWriter/VideoPlaybackinXNAGameStudio3.1_D25D/image_6.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=366 alt=image src="http://blogs.msdn.com/blogfiles/ashtat/WindowsLiveWriter/VideoPlaybackinXNAGameStudio3.1_D25D/image_thumb_2.png" width=359 border=0 mce_src="http://blogs.msdn.com/blogfiles/ashtat/WindowsLiveWriter/VideoPlaybackinXNAGameStudio3.1_D25D/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;The video clip must have an audio track otherwise the build will fail with - &lt;EM&gt;“&lt;U&gt;Please make sure that the video is not DRM protected and is a valid single-pass CBR encoded video file&lt;/U&gt;”&lt;/EM&gt; (yeah, I know, we could done better and added some info about the missing audio track here). This is an unfortunate limitation of&amp;nbsp; the native technology we depend on for playback but you can always mute the playback – “&lt;FONT face=consol size=2&gt;VideoPlayer.IsMuted = true”.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;I’ve discovered that attempting to add a “silent” or “blank” audio track in Windows Media Encoder can be troublesome (sometimes the video will get “stuck” on the first frame on Windows). I’ve successfully used the encoder to do screen captures and format conversions (e.g AVI to WMV). If my source content didn’t have an audio track I used Windows Movie Maker to add one there.&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;UL&gt;
&lt;LI&gt;Adding an audio track to your movie in Windows Movie Maker takes little more skill than knowing how to drag and drop.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;When publishing the movie from Windows Movie Maker, select “DVD Quality” encoding which should give you the encoded video in CBR format. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Video playback&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You shouldn’t have to call Video.GetTexture more than once per frame. The video stream decoder runs on a separate thread and handles synchronization with the audio track. Calling GetTexture always returns the last fully decoded frame. If a new frame is not quite ready it returns without doing anything but you still incur that managed to native call penalty. &lt;/LI&gt;
&lt;LI&gt;If you want to show the same video on multiple screens in your game, just get the current video frame once and use it multiple times in your drawing code. This will ensure that all the screens show perfectly synchronized playback. If you call GetTexture multiple times there’s a chance that the frame can update in between two calls and the screens will look out of sync. &lt;/LI&gt;
&lt;LI&gt;Playback of multiple videos is supported but playing back multiple high-res videos may not be such a great idea. Decoding video streams is expensive and the cost goes up quickly with the resolution of the source content. &lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9792322" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/XNA/">XNA</category><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/Video/">Video</category><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/XNA+Framework/">XNA Framework</category><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/Game+Studio+3-1/">Game Studio 3.1</category></item><item><title>SoundEffect API Changes in Game Studio 3.1</title><link>http://blogs.msdn.com/b/ashtat/archive/2009/06/15/soundeffect-api-changes-in-game-studio-3-1.aspx</link><pubDate>Mon, 15 Jun 2009 20:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9754003</guid><dc:creator>ashtat</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=9754003</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2009/06/15/soundeffect-api-changes-in-game-studio-3-1.aspx#comments</comments><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/shawnhar" mce_href="http://blogs.msdn.com/shawnhar"&gt;Shawn&lt;/A&gt; beat me to the punch and did this &lt;A href="http://blogs.msdn.com/shawnhar/archive/2009/06/12/soundeffect-changes-in-xna-game-studio-3-1.aspx" mce_href="http://blogs.msdn.com/shawnhar/archive/2009/06/12/soundeffect-changes-in-xna-game-studio-3-1.aspx"&gt;great post&lt;/A&gt; on the changes to the SoundEffect API in XNA GS 3.1.&amp;nbsp; Here’re some tips if you’re trying to migrate your 3.0 code to the new release. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;“Fire and Forget” Playback&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SoundEffect.Play methods are now exclusively for “Fire and Forget” sounds. Instead of returning a SoundEffectInstance they’ll return a bool – “true” for successful playback and “false” instead of throwing the InstancePlayLimitException. XNA Framework will dispose these sounds as soon as they’re done playing.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// this will play a 2D fire and forget sound effect with default&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// volume, pitch and pan&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt;SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt; effectPlayed = effect.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// This will play a 2D fire and forget sound effect with specified volume, pitch and pan&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt; effectPlayed = effect.Play(0.8f, 1.0f, 0.0f);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;You can only playback 2D, non-looping sounds using this “fire and forget” mechanism. For everything else – there’s “Create, Configure and Play”. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;“Create, Configure and Play”&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The SoundEffect.CreateInstance method returns a SoundEffectInstance object. The lifetime of this instance is completely controlled by the game. In other words you need to call Dispose on the instance returned by this method when you’re done with it. The usage pattern is - 
&lt;OL&gt;
&lt;LI&gt;Create a SoundEffectInstance by calling SoundEffect.CreateInstance. &lt;/LI&gt;
&lt;LI&gt;Configure the SoundEffectInstance by setting all the properties. As you’ll notice, some of these properties are locked into place once you call Play. &lt;/LI&gt;
&lt;LI&gt;Call SoundEffectInstance.Play. &lt;/LI&gt;
&lt;LI&gt;When you’re done with the sound, call SoundEffectInstance.Dispose. &lt;/LI&gt;&lt;/OL&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// game controls the lifetime of the sound effect instance &lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt; SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;…&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Dispose();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;All SoundEffect.Play3D methods have been deprecated. Instead, game can now configure the SoundEffectInstance object returned by the SoundEffect.CreateInstance method for 2D/3D positioning and looping &lt;U&gt;before&lt;/U&gt; playback. This configuration is locked into place on the first Play call made on the instance. 
&lt;UL&gt;
&lt;LI&gt;By default all instances are created as 2D non-looping sound effects. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// this will play a 2D non-looping sound effect&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt;SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Play(); &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;Calling Apply3D on a SoundEffectInstance &lt;U&gt;before&lt;/U&gt; calling Play configures it as a 3D positioned sound. &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// this will play a 3D positioned non-looping sound effect&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt;SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Apply3D(listener, emitter);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;Setting the “IsLooped” property &lt;U&gt;before&lt;/U&gt; calling Play configures the instance as a looping sound. &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 176px; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// this will play a 2D looping sound effect&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt;SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.IsLooped = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;true&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// this will play a 3D positioned looping sound effect&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt;SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.IsLooped = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;true&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Apply3D(listener, emitter);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;UL&gt;
&lt;LI&gt;If you call both Pan and Apply3D (why would you do that?) the last call wins and determines if the sound is configured as a 2D or 3D positioned. &lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 129px; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// this will play a 2D positioned looping sound effect.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,128,0)"&gt;// setting the Pan in this case overrides Apply3D.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffect effect = Content.Load&amp;lt;SoundEffect&amp;gt;(“GameSoundEffect”);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.IsLooped = &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;true&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Apply3D(listener, emitter);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Pan = 1.0f;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;Helper Extension Class&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Here’s a helper class that may ease the pain of moving your code to the new world order.&amp;nbsp; Remember though, this is a helper for “Create and Configure” playback so you still need to explicitly dispose the instance when you’re done.&lt;/P&gt;
&lt;DIV id=codeSnippetWrapper&gt;
&lt;DIV id=codeSnippet style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;class&lt;/SPAN&gt; SoundEffectExtensions&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;{&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; SoundEffectInstance Play3D(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; SoundEffect effect, AudioListener listener, AudioEmitter emitter)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;return&lt;/SPAN&gt; Play3D(effect, listener, emitter, 1f, 0f, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;false&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; SoundEffectInstance Play3D(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; SoundEffect effect, AudioListener listener, AudioEmitter emitter, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; volume, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; pitch, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt; loop)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;return&lt;/SPAN&gt; Play3D(effect, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;new&lt;/SPAN&gt; AudioListener[] { listener }, emitter, volume, pitch, loop);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; SoundEffectInstance Play3D(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; SoundEffect effect, AudioListener [] listeners, AudioEmitter emitter, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; volume, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; pitch, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt; loop)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Volume = volume;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Pitch = pitch;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.IsLooped = loop;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Apply3D(listeners, emitter);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;return&lt;/SPAN&gt; instance;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; SoundEffectInstance Play2D(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; SoundEffect effect)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;return&lt;/SPAN&gt; Play2D(effect, 1f, 0f, 0f, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;false&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; SoundEffectInstance Play2D(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; SoundEffect effect, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; volume)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;return&lt;/SPAN&gt; Play2D(effect, volume, 0f, 0f, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;false&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;&amp;nbsp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;static&lt;/SPAN&gt; SoundEffectInstance Play2D(&lt;SPAN style="COLOR: rgb(0,0,255)"&gt;this&lt;/SPAN&gt; SoundEffect effect, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; volume, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; pitch, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;float&lt;/SPAN&gt; pan, &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;bool&lt;/SPAN&gt; loop)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        SoundEffectInstance instance = effect.CreateInstance();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Volume = volume;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Pitch = pitch;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Pan = pan;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.IsLooped = loop;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        instance.Play();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;        &lt;SPAN style="COLOR: rgb(0,0,255)"&gt;return&lt;/SPAN&gt; instance;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;    }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; DIRECTION: ltr; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: 'Courier New',courier,monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: rgb(244,244,244); TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none"&gt;}&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9754003" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/XNA/">XNA</category><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/Audio/">Audio</category><category domain="http://blogs.msdn.com/b/ashtat/archive/tags/SoundEffect/">SoundEffect</category></item><item><title>Greetings Fellow Humans</title><link>http://blogs.msdn.com/b/ashtat/archive/2009/06/12/greetings-fellow-humans.aspx</link><pubDate>Sat, 13 Jun 2009 00:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9739102</guid><dc:creator>ashtat</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/ashtat/rsscomments.aspx?WeblogPostID=9739102</wfw:commentRss><comments>http://blogs.msdn.com/b/ashtat/archive/2009/06/12/greetings-fellow-humans.aspx#comments</comments><description>&lt;p&gt;Here I am, a little late to the MSDN blog party. But then again, my timing might not be so bad after all. Yesterday we announced the release of &lt;a href="http://creators.xna.com/en-us/news/xnagamestudio3.1" mce_href="http://creators.xna.com/en-us/news/xnagamestudio3.1"&gt;XNA Game Studio 3.1&lt;/a&gt;. Having spent a great deal of 2009 working on this baby it’s absolutely awesome to see it being set free to roam the big wide world. And it’s even more exciting to see what games you, the ultra-talented &lt;a href="http://kotaku.com/5287078/xbox-live-community-games-renamed" mce_href="http://kotaku.com/5287078/xbox-live-community-games-renamed"&gt;Indie&lt;/a&gt; developer lot, will build to entertain us!&lt;/p&gt;  &lt;p&gt;Here’re some factoids about me – &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I work on the XNA team constantly humbled by the sheer awesomeness of my coworkers. &lt;/li&gt;    &lt;li&gt;I mainly work on the Audio and Media APIs – but then I also get to work on whatever it is that needs me working on it. &lt;/li&gt;    &lt;li&gt;I grew up in India, the land of curry and other mythical things (oh yeah…now there’s a future post!). &lt;/li&gt;    &lt;li&gt;I live in Seattle with my wife and our feline love-child Navin R. Johnson. &lt;/li&gt;    &lt;li&gt;In my spare time I enjoy – playing music (guitar, piano, kazoo…), cooking and eating delicious food, brewing and drinking delicious beer etc. etc. You get the drift. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And now it’s time for me to think of posting something useful… :) &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9739102" width="1" height="1"&gt;</description></item></channel></rss>
