<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[A5] Repeating audio samples</title>
		<link>http://www.allegro.cc/forums/view/613153</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Tue, 20 Aug 2013 01:58:48 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I finally got around to understanding Allegro&#39;s audio system at least a little bit.  I can get audio to play alright at least with this.</p><p>The problem now is that, in my pacman like game, you can eat a lot of pills rapidly, and each time you do, it plays a sample.  Not a problem normally, but if you speed along too fast, it will skip some sounds.  My understanding is that an instance of that sound is already playing so it doesn&#39;t play it again until that one is finished.</p><p>I am thinking that I am still doing something wrong here, even though it works to a limited degree.  I was up until almost 6am this morning working on this and I really would like to understand how this works, if for nothing else than so I can get a good understanding for future projects.  This current one, while not the best game in history, is basically my test bed for learning about Allegro 5 as I go.  And it&#39;s been nice so far, been really loving Allegro 5.</p><p>Anyhow, here&#39;s my code I use for my sound (all in C, I use the C 2011 standard, not that I have anything specific to that in my code, but just so you know)..</p><p><b>dp2_sound.h</b>
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#ifndef _dp2_sound_h_</span>
<span class="number">  2</span><span class="p">#define _dp2_sound_h_</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  6</span><span class="p">#include &lt;allegro5/allegro_audio.h&gt;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">typedef</span> <span class="k1">struct</span> SFX <span class="k2">{</span>
<span class="number">  9</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>samp<span class="k2">;</span>
<span class="number"> 10</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a> <span class="k3">*</span>inst<span class="k2">;</span>
<span class="number"> 11</span><span class="k2">}</span> SFX<span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">bool</span> init_sound<span class="k2">(</span><span class="k1">int</span> samples<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span><span class="k1">bool</span> load_sound<span class="k2">(</span>SFX <span class="k3">*</span>sfx, <span class="k1">char</span> <span class="k1">const</span> <span class="k3">*</span>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span><span class="k1">void</span> play_sound<span class="k2">(</span>SFX <span class="k3">*</span>sfx, <span class="k1">float</span> volume, <span class="k1">float</span> pan, <span class="k1">float</span> speed, <a href="http://www.allegro.cc/manual/ALLEGRO_PLAYMODE"><span class="a">ALLEGRO_PLAYMODE</span></a> playmode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span><span class="k1">void</span> destroy_sound<span class="k2">(</span>SFX <span class="k3">*</span>sfx<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span><span class="k1">void</span> shutdown_sound<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span><span class="p">#endif</span>
</div></div><p>

<b>dp2_sound.c</b>
</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include "dp2_sound.h"</span>
<span class="number">  2</span>
<span class="number">  3</span>
<span class="number">  4</span><a href="http://www.allegro.cc/manual/ALLEGRO_VOICE"><span class="a">ALLEGRO_VOICE</span></a> <span class="k3">*</span>voice <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  5</span><a href="http://www.allegro.cc/manual/ALLEGRO_MIXER"><span class="a">ALLEGRO_MIXER</span></a> <span class="k3">*</span>mixer <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">bool</span> init_sound<span class="k2">(</span><span class="k1">int</span> samples<span class="k2">)</span>
<span class="number">  8</span><span class="k2">{</span>
<span class="number">  9</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_install_audio"><span class="a">al_install_audio</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 10</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"al_install_audio() failed.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 12</span>   <span class="k2">}</span>
<span class="number"> 13</span>
<span class="number"> 14</span>   voice <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_voice"><span class="a">al_create_voice</span></a><span class="k2">(</span><span class="n">44100</span>, ALLEGRO_AUDIO_DEPTH_INT16, ALLEGRO_CHANNEL_CONF_2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>   <span class="k1">if</span><span class="k2">(</span>voice <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Error creating voice\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 18</span>   <span class="k2">}</span>
<span class="number"> 19</span>
<span class="number"> 20</span>   mixer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_mixer"><span class="a">al_create_mixer</span></a><span class="k2">(</span><span class="n">44100</span>, ALLEGRO_AUDIO_DEPTH_FLOAT32, ALLEGRO_CHANNEL_CONF_2<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>   <span class="k1">if</span><span class="k2">(</span>mixer <span class="k3">=</span><span class="k3">=</span> NULL<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 22</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Error creating mixer.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 24</span>   <span class="k2">}</span>
<span class="number"> 25</span>
<span class="number"> 26</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_attach_mixer_to_voice"><span class="a">al_attach_mixer_to_voice</span></a><span class="k2">(</span>mixer, voice<span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 27</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Error attaching mixer to voice.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 29</span>   <span class="k2">}</span>
<span class="number"> 30</span>
<span class="number"> 31</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span>samples<span class="k2">)</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 32</span>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Error reserving samples.\n"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 33</span>      <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 34</span>   <span class="k2">}</span>
<span class="number"> 35</span>
<span class="number"> 36</span>   <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 37</span><span class="k2">}</span>
<span class="number"> 38</span>
<span class="number"> 39</span>
<span class="number"> 40</span><span class="k1">bool</span> load_sound<span class="k2">(</span>SFX <span class="k3">*</span>sfx, <span class="k1">char</span> <span class="k1">const</span> <span class="k3">*</span>file<span class="k2">)</span>
<span class="number"> 41</span><span class="k2">{</span>
<span class="number"> 42</span>   sfx-&gt;samp <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_sample"><span class="a">al_load_sample</span></a><span class="k2">(</span>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 43</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>sfx-&gt;samp<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 44</span>
<span class="number"> 45</span>   sfx-&gt;inst <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sample_instance"><span class="a">al_create_sample_instance</span></a><span class="k2">(</span>sfx-&gt;samp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>sfx-&gt;inst<span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 47</span>
<span class="number"> 48</span>   <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_attach_sample_instance_to_mixer"><span class="a">al_attach_sample_instance_to_mixer</span></a><span class="k2">(</span>sfx-&gt;inst, mixer<span class="k2">)</span><span class="k2">)</span> <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 49</span>
<span class="number"> 50</span>   <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 51</span><span class="k2">}</span>
<span class="number"> 52</span>
<span class="number"> 53</span>
<span class="number"> 54</span><span class="k1">void</span> play_sound<span class="k2">(</span>SFX <span class="k3">*</span>sfx, <span class="k1">float</span> volume, <span class="k1">float</span> pan, <span class="k1">float</span> speed, <a href="http://www.allegro.cc/manual/ALLEGRO_PLAYMODE"><span class="a">ALLEGRO_PLAYMODE</span></a> playmode<span class="k2">)</span>
<span class="number"> 55</span><span class="k2">{</span>
<span class="number"> 56</span>   <a href="http://www.allegro.cc/manual/al_set_sample_instance_gain"><span class="a">al_set_sample_instance_gain</span></a><span class="k2">(</span>sfx-&gt;inst, volume<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>   <a href="http://www.allegro.cc/manual/al_set_sample_instance_pan"><span class="a">al_set_sample_instance_pan</span></a><span class="k2">(</span>sfx-&gt;inst, pan<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 58</span>   <a href="http://www.allegro.cc/manual/al_set_sample_instance_speed"><span class="a">al_set_sample_instance_speed</span></a><span class="k2">(</span>sfx-&gt;inst, speed<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 59</span>   <a href="http://www.allegro.cc/manual/al_set_sample_instance_playmode"><span class="a">al_set_sample_instance_playmode</span></a><span class="k2">(</span>sfx-&gt;inst, playmode<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 60</span>   <a href="http://www.allegro.cc/manual/al_play_sample_instance"><span class="a">al_play_sample_instance</span></a><span class="k2">(</span>sfx-&gt;inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 61</span><span class="k2">}</span>
<span class="number"> 62</span>
<span class="number"> 63</span>
<span class="number"> 64</span><span class="k1">void</span> destroy_sound<span class="k2">(</span>SFX <span class="k3">*</span>sfx<span class="k2">)</span>
<span class="number"> 65</span><span class="k2">{</span>
<span class="number"> 66</span>   <span class="k1">if</span><span class="k2">(</span>sfx-&gt;inst<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_detach_sample_instance"><span class="a">al_detach_sample_instance</span></a><span class="k2">(</span>sfx-&gt;inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 67</span>
<span class="number"> 68</span>   <span class="k1">if</span><span class="k2">(</span>sfx-&gt;inst<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 69</span>      <a href="http://www.allegro.cc/manual/al_destroy_sample_instance"><span class="a">al_destroy_sample_instance</span></a><span class="k2">(</span>sfx-&gt;inst<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 70</span>      sfx-&gt;inst <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 71</span>   <span class="k2">}</span>
<span class="number"> 72</span>
<span class="number"> 73</span>   <span class="k1">if</span><span class="k2">(</span>sfx-&gt;samp<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 74</span>      <a href="http://www.allegro.cc/manual/al_destroy_sample"><span class="a">al_destroy_sample</span></a><span class="k2">(</span>sfx-&gt;samp<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 75</span>      sfx-&gt;samp <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 76</span>   <span class="k2">}</span>
<span class="number"> 77</span><span class="k2">}</span>
<span class="number"> 78</span>
<span class="number"> 79</span><span class="k1">void</span> shutdown_sound<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 80</span>   <span class="k1">if</span><span class="k2">(</span>mixer<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_destroy_mixer"><span class="a">al_destroy_mixer</span></a><span class="k2">(</span>mixer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 81</span>   <span class="k1">if</span><span class="k2">(</span>voice<span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_destroy_voice"><span class="a">al_destroy_voice</span></a><span class="k2">(</span>voice<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 82</span>   <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_is_audio_installed"><span class="a">al_is_audio_installed</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span> <a href="http://www.allegro.cc/manual/al_uninstall_audio"><span class="a">al_uninstall_audio</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 83</span><span class="k2">}</span>
</div></div><p>

The functions are fairly self explanatory.   I use <span class="source-code">init_sound<span class="k2">(</span><span class="k2">)</span></span> to initialize everything, <span class="source-code">load_sound<span class="k2">(</span><span class="k2">)</span></span> to load in sound samples and set them up, <span class="source-code">play_sound<span class="k2">(</span><span class="k2">)</span></span> plays the sounds with similar perimeters as the <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span><span class="k2">)</span></span> (except the last one).  <span class="source-code">destroy_sound<span class="k2">(</span><span class="k2">)</span></span>  frees up allocated memory for each sound sample and finally <span class="source-code">shutdown_sound<span class="k2">(</span><span class="k2">)</span></span> is called before the game exits.</p><p>I also have a problem when I go to use <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_sample_instance_speed"><span class="a">al_set_sample_instance_speed</span></a><span class="k2">(</span><span class="k2">)</span></span> on a sample that is currently playing, the speed of the sample isn&#39;t changed at all, which was part of the reason why I set up all this in the first place.</p><p>Any help would be appreciated.  Sorry if these questions seem stupid, but I did spend a LOT of time last night and today and I am missing something, just what I don&#39;t know. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Tue, 20 Aug 2013 01:13:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There are two levels of sample playing functions. You can mix and match them, but it&#39;s important to understand the differences.</p><ol><li><p>Higher Level: <span class="source-code"><a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="k1">int</span> n<span class="k2">)</span></span> is paired with <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span><span class="k2">)</span></span>. <span class="source-code">n</span> how many times you can simultaneously call that latter function, regardless if it&#39;s the same underlying raw data or not.</p><p>  It creates its own voice/mixer combination if you don&#39;t tell it about a default one via <span class="source-code"><a href="http://www.allegro.cc/manual/al_set_default_mixer"><span class="a">al_set_default_mixer</span></a><span class="k2">(</span><span class="k2">)</span></span>. So in your example, you should set the default mixer before calling the reserve sample function.</p><br /></li><li><p>Lower Level: create voice / create mixer / attach x to y / <span class="source-code"><a href="http://www.allegro.cc/manual/al_create_sample_instance"><span class="a">al_create_sample_instance</span></a><span class="k2">(</span><span class="k2">)</span></span> / <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample_instance"><span class="a">al_play_sample_instance</span></a><span class="k2">(</span><span class="k2">)</span></span> If you want to play the same sample N simultaneous times, then you need to create 1 <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k1">and</span></span> n <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a></span> variables.</p></li></ol><p>The two structures:</p><ul><li><p><span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a></span>: the raw, uncompressed data.</p><br /></li><li><p><span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a></span>: a playing instance of that data; multiple of these can exist per <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a></span>. When using <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span><span class="k2">)</span></span>, you don&#39;t have access to the <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a></span>, because Allegro manages that for you. </p></li></ul><p>So in your case, you may want to move toward this (with the lower level API):</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> SFX <span class="k2">{</span>
   <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>samp<span class="k2">;</span>
   <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a> <span class="k3">*</span><span class="k3">*</span>inst<span class="k2">;</span>
   <span class="k1">int</span> max_simultaneous_count<span class="k2">;</span>
<span class="k2">}</span> SFX<span class="k2">;</span>
</pre></div></div><p>

When loading the sample, set <span class="source-code">max_simultaneous_count</span> and create an array of that many <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a></span>. Then when playing your <span class="source-code">SFX</span>, loop through that array and play the sample instance if it is not currently playing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 20 Aug 2013 01:24:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;d be fabulous if an explanation like that was in the docs.... <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Tue, 20 Aug 2013 01:38:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay, that clarifies things.  I still can&#39;t adjust the sound&#39;s speed while it is playing.</p><p>Anyhow, I removed this code from my game for now and went back to using <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span><span class="k2">)</span></span> (thank God for backups).  All this headache just isn&#39;t worth it for one small sound effect.</p><p>I&#39;ll have to figure t his out another day, I may take a peek at the <span class="source-code"><a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span><span class="k2">)</span></span> code sometime and see what it does if I can understand it, but if I spend much more time trying to figure this out I will never get this game done, and I just want to finish this thing sometime this century. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /></p><p>It does look like, if I ever plan to use this that I will have to write lots of code to track multiple instances in some sort of array, and I somehow track when they&#39;re done playing yada yada yada... I am starting to miss Allegro 4, at least for audio anyhow.</p><p>I love Allegro 5, but not the audio system, seems overly complicated compared to Allegro 4.</p><p>Edit: Thanks for the additional ideas.  I will still work on this on the side, in a separate project so I can continue to try and get something working that I can use in all my future projects.  It&#39;s just this particular project has dragged on too long now and I tire of working on it (but refuse to stop until it is done! <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" /> ).</p><p>Edit2: 
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/613153/989001#target">Matthew Leverton</a> said:</div><div class="quote"><p>
When loading the sample, set max_simultaneous_count and create an array of that many ALLEGRO_SAMPLE_INSTANCE. Then when playing your SFX, loop through that array and play the sample instance if it is not currently playing.
</p></div></div><p>

Good idea, but I am wondering.  Do you have to check if that instance of a sample is still playing?  When it ends playing, do you destroy that instance?  I&#39;m just uncertain about the management of all of this.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Neil Roy)</author>
		<pubDate>Tue, 20 Aug 2013 01:58:48 +0000</pubDate>
	</item>
</rss>
