<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>How to stop a sample in A5?</title>
		<link>http://www.allegro.cc/forums/view/613718</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 02 Jan 2014 08:34:44 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I remember in A4 all you had to do was call:<br />stop_sample(sampleName); done.</p><p>In A5 its asking for a sample ID?<br />What is that? Why cant it be like A4?<br />Someone help me out.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ISDcaptain)</author>
		<pubDate>Tue, 31 Dec 2013 10:27:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_ID"><span class="a">ALLEGRO_SAMPLE_ID</span></a> my_id<span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>..., <span class="k3">&amp;</span>my_id<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_stop_sample"><span class="a">al_stop_sample</span></a><span class="k2">(</span><span class="k3">&amp;</span>my_id<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

It won&#39;t really make sense until you understand the relationship between an <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a></span> and an <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_INSTANCE"><span class="a">ALLEGRO_SAMPLE_INSTANCE</span></a></span>.</p><p>But in short, think about:</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>my_sample<span class="k2">;</span>

<span class="c">// play sample three times consecutively</span>
<a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>my_sample, ...<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>my_sample, ...<span class="k2">)</span><span class="k2">;</span>
<a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>my_sample, ...<span class="k2">)</span><span class="k2">;</span>

<a href="http://www.allegro.cc/manual/al_stop_sample"><span class="a">al_stop_sample</span></a><span class="k2">(</span>my_sample<span class="k2">)</span><span class="k2">;</span> <span class="c">// Doesn't work. (Which of the above three should it stop?)</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 31 Dec 2013 10:31:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Okay I try that, and when I click a button to call the al_stop_sample(&amp;id);<br />my program crashes
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ISDcaptain)</author>
		<pubDate>Tue, 31 Dec 2013 10:49:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Post relevant code. (Make sure you&#39;ve got <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_ID"><span class="a">ALLEGRO_SAMPLE_ID</span></a> id</span> and not <span class="source-code"><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_ID"><span class="a">ALLEGRO_SAMPLE_ID</span></a> <span class="k3">*</span>id<span class="k2">;</span></span>).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Tue, 31 Dec 2013 10:51:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
</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="number">  2</span>
<span class="number">  3</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number">  7</span>  <span class="k2">{</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/al_show_native_message_box"><span class="a">al_show_native_message_box</span></a><span class="k2">(</span>NULL, NULL, NULL, <span class="s">"Initialization Error"</span>, NULL, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>  <span class="k2">}</span>
<span class="number"> 10</span>
<span class="number"> 11</span>  <span class="c">//Display</span>
<span class="number"> 12</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display<span class="k2">;</span>
<span class="number"> 13</span>  <a href="http://www.allegro.cc/manual/al_set_new_display_flags"><span class="a">al_set_new_display_flags</span></a><span class="k2">(</span>ALLEGRO_WINDOWED <span class="k3">|</span> ALLEGRO_RESIZABLE<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 14</span>  display <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_display"><span class="a">al_create_display</span></a><span class="k2">(</span>WIDTH, HEIGHT<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>  <a href="http://www.allegro.cc/manual/al_set_window_title"><span class="a">al_set_window_title</span></a><span class="k2">(</span>display, <span class="s">"Music Test"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>
<span class="number"> 17</span>  <span class="c">//Initialize the addons</span>
<span class="number"> 18</span>  <a href="http://www.allegro.cc/manual/al_install_keyboard"><span class="a">al_install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</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="number"> 20</span>  <a href="http://www.allegro.cc/manual/al_init_ttf_addon"><span class="a">al_init_ttf_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>  <a href="http://www.allegro.cc/manual/al_init_font_addon"><span class="a">al_init_font_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>  <a href="http://www.allegro.cc/manual/al_init_image_addon"><span class="a">al_init_image_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>  <a href="http://www.allegro.cc/manual/al_init_acodec_addon"><span class="a">al_init_acodec_addon</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_KEYBOARD_STATE"><span class="a">ALLEGRO_KEYBOARD_STATE</span></a> keyState<span class="k2">;</span>
<span class="number"> 25</span>
<span class="number"> 26</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>event_queue <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_event_queue"><span class="a">al_create_event_queue</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 27</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_timer"><span class="a">al_create_timer</span></a><span class="k2">(</span><span class="n">1</span>.<span class="n">0</span><span class="k3">/</span>FPS<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_display_event_source"><span class="a">al_get_display_event_source</span></a><span class="k2">(</span>display<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_timer_event_source"><span class="a">al_get_timer_event_source</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>  <a href="http://www.allegro.cc/manual/al_register_event_source"><span class="a">al_register_event_source</span></a><span class="k2">(</span>event_queue, <a href="http://www.allegro.cc/manual/al_get_keyboard_event_source"><span class="a">al_get_keyboard_event_source</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>
<span class="number"> 32</span>
<span class="number"> 33</span>  <span class="c">//Game Variables</span>
<span class="number"> 34</span>  <span class="k1">bool</span> done <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 35</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_BITMAP"><span class="a">ALLEGRO_BITMAP</span></a> <span class="k3">*</span>background <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_load_bitmap"><span class="a">al_load_bitmap</span></a><span class="k2">(</span><span class="s">"background.png"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>overworld <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><span class="s">"overworld.wav"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 37</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_ID"><span class="a">ALLEGRO_SAMPLE_ID</span></a> id<span class="k2">;</span>
<span class="number"> 38</span>  <a href="http://www.allegro.cc/manual/al_reserve_samples"><span class="a">al_reserve_samples</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 39</span>
<span class="number"> 40</span>  <a href="http://www.allegro.cc/manual/al_start_timer"><span class="a">al_start_timer</span></a><span class="k2">(</span>timer<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>
<span class="number"> 42</span>  <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>done<span class="k2">)</span>
<span class="number"> 43</span>  <span class="k2">{</span>
<span class="number"> 44</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT"><span class="a">ALLEGRO_EVENT</span></a> events<span class="k2">;</span>
<span class="number"> 45</span>    <a href="http://www.allegro.cc/manual/al_wait_for_event"><span class="a">al_wait_for_event</span></a><span class="k2">(</span>event_queue, <span class="k3">&amp;</span>events<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>
<span class="number"> 47</span>    <span class="k1">if</span><span class="k2">(</span>events.type <span class="k3">=</span><span class="k3">=</span> ALLEGRO_EVENT_TIMER<span class="k2">)</span>
<span class="number"> 48</span>    <span class="k2">{</span>
<span class="number"> 49</span>      <a href="http://www.allegro.cc/manual/al_get_keyboard_state"><span class="a">al_get_keyboard_state</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState, ALLEGRO_KEY_UP<span class="k2">)</span><span class="k2">)</span>
<span class="number"> 51</span>      <span class="k2">{</span>
<span class="number"> 52</span>        <a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span>overworld, <span class="n">1</span>.<span class="n">0</span>, <span class="n">0</span>, <span class="n">1</span>, ALLEGRO_PLAYMODE_LOOP, <span class="k3">&amp;</span>id<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 53</span>      <span class="k2">}</span>
<span class="number"> 54</span>      <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_key_down"><span class="a">al_key_down</span></a><span class="k2">(</span><span class="k3">&amp;</span>keyState, ALLEGRO_KEY_DOWN<span class="k2">)</span><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_stop_sample"><span class="a">al_stop_sample</span></a><span class="k2">(</span><span class="k3">&amp;</span>id<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 57</span>      <span class="k2">}</span>
<span class="number"> 58</span>      
<span class="number"> 59</span>    <span class="k2">}</span>
<span class="number"> 60</span>
<span class="number"> 61</span>    <a href="http://www.allegro.cc/manual/al_flip_display"><span class="a">al_flip_display</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 62</span>    
<span class="number"> 63</span>  <span class="k2">}</span>
<span class="number"> 64</span>
<span class="number"> 65</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 66</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ISDcaptain)</author>
		<pubDate>Wed, 01 Jan 2014 06:10:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That shouldn&#39;t crash. (Be sure to check the return codes for all of your loading functions to make sure nothing is returning <span class="source-code">NULL</span>.)</p><p>However, assuming <span class="source-code">FPS</span> is sufficiently high, when you press up, you will trigger multiple calls to <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> by a single key press. Because you set <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="k2">)</span></span> to 1, you won&#39;t notice that ... i.e., you can only play a single sound at a time. But that scenario still modifies the <span class="source-code">id</span> variable and will cause the subsequent call to <span class="source-code"><a href="http://www.allegro.cc/manual/al_stop_sample"><span class="a">al_stop_sample</span></a><span class="k2">(</span><span class="k2">)</span></span> to fail.</p><p>So if you set <span class="source-code">FPS</span> to <span class="source-code"><span class="n">1</span>.<span class="n">0</span></span> and hold the UP key until you hear a sound, that will trigger exactly one call to <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>. Then if you hold the DOWN key, it should eventually stop (within a second).</p><p>If that still crashes, you should upgrade to the latest version of Allegro and then try to step through the code with a debugger to see where it crashes.</p><p>Unrelated: your last parameter to the show dialog method should be an integer, not <span class="source-code">NULL</span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Wed, 01 Jan 2014 06:44:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>My fps is set to 60</p><p> </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="number">  2</span>This is where the compiler sets a breakpoint at:
<span class="number">  3</span> <span class="k1">if</span> <span class="k2">(</span>rterrnum <span class="k3">!</span><span class="k3">=</span> _RT_CRNL <span class="k3">&amp;</span><span class="k3">&amp;</span> rterrnum <span class="k3">!</span><span class="k3">=</span> _RT_BANNER <span class="k3">&amp;</span><span class="k3">&amp;</span> rterrnum <span class="k3">!</span><span class="k3">=</span> _RT_CRT_NOTINIT<span class="k2">)</span>
<span class="number">  4</span>            <span class="k2">{</span>
<span class="number">  5</span>                <span class="k1">switch</span> <span class="k2">(</span>_CrtDbgReportW<span class="k2">(</span>_CRT_ERROR, NULL, <span class="n">0</span>, NULL, error_text<span class="k2">)</span><span class="k2">)</span>
<span class="number">  6</span>                <span class="k2">{</span>
<span class="number">  7</span>                <span class="k1">case</span> <span class="n">1</span><span class="k2">:</span> _CrtDbgBreak<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> msgshown <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number">  8</span>                <span class="k1">case</span> <span class="n">0</span><span class="k2">:</span> msgshown <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span> <span class="k1">break</span><span class="k2">;</span>
<span class="number">  9</span>                <span class="k2">}</span>
<span class="number"> 10</span>            <span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ISDcaptain)</author>
		<pubDate>Wed, 01 Jan 2014 07:58:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Yeah, you&#39;ll want to scan up the backtrace till you find the actual crash point, and not the internal debugger stuff.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 01 Jan 2014 13:52:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>could be wrong here, but it looks like you stop the sound on a key down and start it on a key up...<br />I expect when you press the key for the first time, it tries to stop nothing, the id is null as it hasnt been initilised???</p><p>Read it a bit more, above is wrong, but you are in a loop, how many times does the event keydown pass, stopping a stopped sound is probably not good, also, you may be staring dozens of new sounds???</p><p>try <br />al_play_sample(overworld, 1.0, 0, 1, ALLEGRO_PLAYMODE_LOOP, &amp;id);<br />LastTime=al_get_timer_count(timer);</p><p>wait for 10 secs (using the allegro timer),then stop it.<br />		ThisTime=al_get_timer_count(timer);<br />		if(ThisTime-LastTime&gt;10*60)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (duncan perham)</author>
		<pubDate>Thu, 02 Jan 2014 08:34:44 +0000</pubDate>
	</item>
</rss>
