<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Sound troubles</title>
		<link>http://www.allegro.cc/forums/view/589935</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 08 Feb 2007 03:27:14 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi!</p><p>Last month I downloaded and installed Allegro, and it must been said that it&#39;s really cool! However, I&#39;m stuck on how to let my sounds play. Maybe someone here can help me?</p><p>I&#39;m trying to build an audiogame, which is my first project, so I&#39;m not used to work with Allegro and C++. I get the keyboard input in a while-loop. That works great, but in this case the sounds are in the while-loop too. And that cause them to constantly restart on every loop...</p><p>Can anyone please give me some hints or tips how to deal with this?<br />Thanks in advance!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DavyKager)</author>
		<pubDate>Wed, 07 Feb 2007 00:49:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Show some code.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Wed, 07 Feb 2007 01:47:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think you&#39;d want this<br /><a href="http://www.allegro.cc/manual/api/digital-sample-routines/voice-control/voice_get_position">http://www.allegro.cc/manual/api/digital-sample-routines/voice-control/voice_get_position</a><br />in your loop.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Wed, 07 Feb 2007 01:52:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Well, let me give some example code. Assume that I&#39;ve loaded a sample and initialized Allegro before.<br />while (!key[KEY_ESC]) {<br />if (x &gt;= 50) {<br />play_sample(the_sample, 255, 128, 1000, FALSE);<br />}<br />}</p><p>This will start a new sample every loop, which is of course not the thing I wanted to do.</p><p>I know that there are some sounds in the Allegro demo game, but I can&#39;t find out how it all works.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DavyKager)</author>
		<pubDate>Wed, 07 Feb 2007 02:23:29 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
which is of course not the thing I wanted to do.
</p></div></div><p>

A quick look at the manual here at Allegro.cc shows that play_sample is used in exsample.c (which can be found in your allegro examples folder). Here&#39;s a snippet that sould make everything clear:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>   <a href="http://www.allegro.cc/manual/play_sample" target="_blank"><span class="a">play_sample</span></a><span class="k2">(</span>the_sample, <span class="n">255</span>, pan, pitch, TRUE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td>   <span class="k1">do</span> <span class="k2">{</span></td></tr><tr><td class="number">4</td><td>      <a href="http://www.allegro.cc/manual/poll_keyboard" target="_blank"><span class="a">poll_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>      <span class="c">/* alter the pan position? */</span></td></tr><tr><td class="number">7</td><td>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_LEFT<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>pan <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">8</td><td>   pan--<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>      <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_RIGHT<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>pan <span class="k3">&lt;</span> <span class="n">255</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">10</td><td>   pan<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>      <span class="c">/* alter the pitch? */</span></td></tr><tr><td class="number">13</td><td>      <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_UP<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>pitch <span class="k3">&lt;</span> <span class="n">16384</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">14</td><td>   pitch <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>pitch <span class="k3">*</span> <span class="n">513</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">512</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">1</span><span class="k2">;</span> </td></tr><tr><td class="number">15</td><td>      <span class="k1">else</span> <span class="k1">if</span> <span class="k2">(</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_DOWN<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span>pitch <span class="k3">&gt;</span> <span class="n">64</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">16</td><td>   pitch <span class="k3">=</span> <span class="k2">(</span><span class="k2">(</span>pitch <span class="k3">*</span> <span class="n">511</span><span class="k2">)</span> <span class="k3">/</span> <span class="n">512</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</span><span class="k2">;</span> </td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>      <span class="c">/* adjust the sample */</span></td></tr><tr><td class="number">19</td><td>      <a href="http://www.allegro.cc/manual/adjust_sample" target="_blank"><span class="a">adjust_sample</span></a><span class="k2">(</span>the_sample, <span class="n">255</span>, pan, pitch, TRUE<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>      <span class="c">/* delay a bit */</span></td></tr><tr><td class="number">22</td><td>      <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>   <span class="k2">}</span> <span class="k1">while</span> <span class="k2">(</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span> <span class="k3">&amp;</span><span class="k3">&amp;</span> <span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key" target="_blank"><span class="a">key</span></a><span class="k2">[</span>KEY_SPACE<span class="k2">]</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>&#160;</td></tr><tr><td class="number">26</td><td>   <span class="c">/* destroy the sample */</span></td></tr><tr><td class="number">27</td><td>   <a href="http://www.allegro.cc/manual/destroy_sample" target="_blank"><span class="a">destroy_sample</span></a><span class="k2">(</span>the_sample<span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ngiacomelli)</author>
		<pubDate>Wed, 07 Feb 2007 06:58:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>That&#39;s cool, but then I have to start all my samples at volume 0 and adjust them later when they&#39;re needed. And since it&#39;s an audiogame, that would be loads of sounds.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DavyKager)</author>
		<pubDate>Wed, 07 Feb 2007 13:52:31 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>or you have a list/array of your playing sounds, and use adjust_sample on the ones you want to change at any given time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 07 Feb 2007 13:55:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>use FMOD.. it&#39;s free if you&#39;re not gonna make money <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Wed, 07 Feb 2007 13:59:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>How does FMOD help? He&#39;s asking a rather basic question about how to use sounds...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Wed, 07 Feb 2007 14:00:36 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Your problem is not related to sound functions. It is related to program logic. You have a thing you want to do once, not every loop. No matter if it is a sound or drawing a rectangle or whatnot. Set a flag when you play the sound. Check if flag is set before you try to play the sound again. If you don&#39;t get it, try to deal with simpler program logic first.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Johan Halmén)</author>
		<pubDate>Wed, 07 Feb 2007 15:20:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I was already thinking about using a flag, but I didn&#39;t see that in the demos/examples, so I thought there was another way.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (DavyKager)</author>
		<pubDate>Wed, 07 Feb 2007 18:48:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>See Voice control in the <a href="http://www.allegro.cc/manual/api/digital-sample-routines/">manual</a>, this is the API to control more finely the sounds while they are being played.<br />For example: You can reserve one voice for a looping sound, start or stop the sample in this voice anytime, and adjust the volume/pitch/panning depending on game elements.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Audric)</author>
		<pubDate>Wed, 07 Feb 2007 23:20:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>Sounds::loop<span class="k2">(</span><span class="s">"engine sound"</span><span class="k2">)</span><span class="k2">;</span>

Sounds::PlayInfo pi<span class="k2">;</span>

pi.pan <span class="k3">=</span> <span class="n">0</span>.<span class="n">5</span><span class="k2">;</span>
pi.vol <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span><span class="k2">;</span>
pi.frequency <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span><span class="k2">;</span>

Sounds::adjust<span class="k2">(</span><span class="s">"engine sound"</span>, pi<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 08 Feb 2007 03:27:14 +0000</pubDate>
	</item>
</rss>
