<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>how to use play_audio_stream?</title>
		<link>http://www.allegro.cc/forums/view/607123</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 05 May 2011 15:13:01 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want an example where load a wav file and play it, and when it finished sound start again and again and again...</p><p>I want to use the function play_audio_stream, but I dont know how.</p><p>I try these, but not soud anything:</p><p>int main()<br />{   <br />    allegro_init();<br />    install_keyboard();<br />    install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);</p><p>    //create the audio stream<br />    AUDIOSTREAM *stream = play_audio_stream(1024, 8, FALSE, 22050, 255, 128);</p><p>    //Them create the sample &quot;archivo&quot; loading a wav<br />    SAMPLE *archivo=load_wav(&quot;wav.wav&quot;);<br />    while(!key[KEY_ESC]){<br />        void *mem_chunk;<br />        mem_chunk = get_audio_stream_buffer(stream);</p><p>        //when the sound buffer is void:<br />        if (mem_chunk != NULL){</p><p>            //Put into the buffer the sample &quot;archivo&quot;<br />            mem_chunk=&amp;archivo;</p><p>            //Indicate that the buffer is ready<br />            free_audio_stream_buffer(stream);<br />        }<br />    }<br />}</p><p>I am from uruguay and my english is basic, please write correctly
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aesteves)</author>
		<pubDate>Wed, 27 Apr 2011 00:16:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This may or may not help you but I wrote a basic class that loads, plays and stops audio using ALLEGRO_SAMPLE.</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 __AUDIO_HPP_INCLUDED</span>
<span class="number">  2</span><span class="p">#define __AUDIO_HPP_INCLUDED</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro_audio.h&gt;</span>
<span class="number">  5</span><span class="p">#include &lt;allegro5/allegro_acodec.h&gt;</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">struct</span> SAMPLE_DATA
<span class="number">  8</span><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> sample<span class="k2">;</span>
<span class="number"> 10</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE_ID"><span class="a">ALLEGRO_SAMPLE_ID</span></a> sample_id<span class="k2">;</span>
<span class="number"> 11</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 12</span>
<span class="number"> 13</span><span class="k1">class</span> Audio
<span class="number"> 14</span><span class="k2">{</span>
<span class="number"> 15</span>    public:
<span class="number"> 16</span>        Audio<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>        ~Audio<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>        <span class="k1">int</span> load_from_file<span class="k2">(</span> std::string filename <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>        <span class="k1">void</span> play<span class="k2">(</span> <span class="k1">int</span> id, <a href="http://www.allegro.cc/manual/ALLEGRO_PLAYMODE"><span class="a">ALLEGRO_PLAYMODE</span></a> loop <span class="k3">=</span> ALLEGRO_PLAYMODE_ONCE, <span class="k1">float</span> gain <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span>, <span class="k1">float</span> pan <span class="k3">=</span> <span class="n">0</span>.<span class="n">0</span>, <span class="k1">float</span> speed <span class="k3">=</span> <span class="n">1</span>.<span class="n">0</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>        <span class="k1">void</span> stop<span class="k2">(</span> <span class="k1">int</span> id <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 22</span>
<span class="number"> 23</span>    private:
<span class="number"> 24</span>        std::vector<span class="k3">&lt;</span>SAMPLE_DATA&gt; sample<span class="k2">;</span>
<span class="number"> 25</span>        <span class="k1">bool</span> is_valid_id<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">int</span> id <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span><span class="k2">}</span><span class="k2">;</span>
<span class="number"> 27</span>
<span class="number"> 28</span><span class="p">#endif // __AUDIO_HPP_INCLUDED</span>
</div></div><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="p">#include "audio.hpp"</span>
<span class="number">  2</span>
<span class="number">  3</span>Audio::Audio<span class="k2">(</span><span class="k2">)</span>
<span class="number">  4</span><span class="k2">{</span>
<span class="number">  5</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="number">  6</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span>    <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</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">  9</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</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> <span class="n">32</span> <span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 12</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span><span class="k2">}</span>
<span class="number"> 14</span>
<span class="number"> 15</span>Audio::~Audio<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 16</span><span class="k2">{</span>
<span class="number"> 17</span>    <a href="http://www.allegro.cc/manual/al_stop_samples"><span class="a">al_stop_samples</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>    <span class="k1">for</span> <span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span> i<span class="k3">&lt;</span>this-&gt;sample.size<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> i<span class="k3">+</span><span class="k3">+</span> <span class="k2">)</span>
<span class="number"> 20</span>    <span class="k2">{</span>
<span class="number"> 21</span>        <span class="k1">if</span> <span class="k2">(</span> this-&gt;sample<span class="k2">[</span>i<span class="k2">]</span>.sample <span class="k2">)</span>
<span class="number"> 22</span>            <a href="http://www.allegro.cc/manual/al_destroy_sample"><span class="a">al_destroy_sample</span></a><span class="k2">(</span> this-&gt;sample<span class="k2">[</span>i<span class="k2">]</span>.sample <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 23</span>    <span class="k2">}</span>
<span class="number"> 24</span>
<span class="number"> 25</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"> 26</span><span class="k2">}</span>
<span class="number"> 27</span>
<span class="number"> 28</span><span class="k1">int</span> Audio::load_from_file<span class="k2">(</span> std::string filename <span class="k2">)</span>
<span class="number"> 29</span><span class="k2">{</span>
<span class="number"> 30</span>    <a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a><span class="k3">*</span> temp_sample <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> filename.c_str<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>    <span class="k1">if</span> <span class="k2">(</span> temp_sample <span class="k2">)</span>
<span class="number"> 32</span>    <span class="k2">{</span>
<span class="number"> 33</span>        SAMPLE_DATA sd<span class="k2">;</span>
<span class="number"> 34</span>        sd.sample <span class="k3">=</span> temp_sample<span class="k2">;</span>
<span class="number"> 35</span>        this-&gt;sample.push_back<span class="k2">(</span> sd <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>        <span class="k1">return</span> this-&gt;sample.size<span class="k2">(</span><span class="k2">)</span> <span class="k3">-</span> <span class="n">1</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="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 40</span><span class="k2">}</span>
<span class="number"> 41</span>
<span class="number"> 42</span><span class="k1">void</span> Audio::play<span class="k2">(</span> <span class="k1">int</span> id, <a href="http://www.allegro.cc/manual/ALLEGRO_PLAYMODE"><span class="a">ALLEGRO_PLAYMODE</span></a> loop, <span class="k1">float</span> gain, <span class="k1">float</span> pan, <span class="k1">float</span> speed <span class="k2">)</span>
<span class="number"> 43</span><span class="k2">{</span>
<span class="number"> 44</span>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;is_valid_id<span class="k2">(</span> id <span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 45</span>    <span class="k2">{</span>
<span class="number"> 46</span>        <a href="http://www.allegro.cc/manual/al_play_sample"><span class="a">al_play_sample</span></a><span class="k2">(</span> this-&gt;sample<span class="k2">[</span>id<span class="k2">]</span>.sample, gain, pan, speed, loop, <span class="k3">&amp;</span>this-&gt;sample<span class="k2">[</span>id<span class="k2">]</span>.sample_id <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 47</span>    <span class="k2">}</span>
<span class="number"> 48</span><span class="k2">}</span>
<span class="number"> 49</span>
<span class="number"> 50</span><span class="k1">void</span> Audio::stop<span class="k2">(</span> <span class="k1">int</span> id <span class="k2">)</span>
<span class="number"> 51</span><span class="k2">{</span>
<span class="number"> 52</span>    <span class="k1">if</span> <span class="k2">(</span> this-&gt;is_valid_id<span class="k2">(</span> id <span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 53</span>    <span class="k2">{</span>
<span class="number"> 54</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>this-&gt;sample<span class="k2">[</span>id<span class="k2">]</span>.sample_id <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 55</span>    <span class="k2">}</span>
<span class="number"> 56</span><span class="k2">}</span>
<span class="number"> 57</span>
<span class="number"> 58</span><span class="k1">bool</span> Audio::is_valid_id<span class="k2">(</span> <span class="k1">unsigned</span> <span class="k1">int</span> id <span class="k2">)</span>
<span class="number"> 59</span><span class="k2">{</span>
<span class="number"> 60</span>    <span class="k1">if</span> <span class="k2">(</span> id <span class="k3">&lt;</span> <span class="n">0</span> <span class="k3">|</span><span class="k3">|</span> id <span class="k3">&gt;</span><span class="k3">=</span> this-&gt;sample.size<span class="k2">(</span><span class="k2">)</span> <span class="k2">)</span>
<span class="number"> 61</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 62</span>
<span class="number"> 63</span>    <span class="k1">if</span> <span class="k2">(</span> <span class="k3">!</span>this-&gt;sample<span class="k2">[</span>id<span class="k2">]</span>.sample <span class="k2">)</span>
<span class="number"> 64</span>        <span class="k1">return</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number"> 65</span>
<span class="number"> 66</span>    <span class="k1">return</span> <span class="k1">true</span><span class="k2">;</span>
<span class="number"> 67</span><span class="k2">}</span>
</div></div><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="p">#include &lt;allegro5/allegro.h&gt;</span>
<span class="number">  2</span>
<span class="number">  3</span><span class="c">// Include the audio header.</span>
<span class="number">  4</span><span class="p">#include "audio.hpp"</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="k1">int</span> main<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_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="c">// Create an audio pointer. This also initializes allegro audio addons.</span>
<span class="number"> 11</span>    <span class="c">// Must be called after al_init().</span>
<span class="number"> 12</span>    Audio<span class="k3">*</span> audio <span class="k3">=</span> <span class="k1">new</span> Audio<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>    <span class="c">// Load the audio file.</span>
<span class="number"> 15</span>    <span class="k1">int</span> sound_id <span class="k3">=</span> audio-&gt;load_from_file<span class="k2">(</span> <span class="s">"music.wav"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>    <span class="k1">if</span> <span class="k2">(</span> sound_id <span class="k3">=</span><span class="k3">=</span> <span class="k3">-</span><span class="n">1</span> <span class="k2">)</span> <span class="c">// Returns -1 on failure.</span>
<span class="number"> 17</span>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_298.html" target="_blank">exit</a><span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>
<span class="number"> 19</span>    <span class="c">// Play the sound using the returned sound_id.</span>
<span class="number"> 20</span>    audio-&gt;play<span class="k2">(</span> sound_id, ALLEGRO_PLAYMODE_LOOP <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 21</span>
<span class="number"> 22</span>    <span class="c">// You need to add something here to stop the program ending else you shall not hear anything.</span>
<span class="number"> 23</span>    <a href="http://www.allegro.cc/manual/al_rest"><span class="a">al_rest</span></a><span class="k2">(</span> <span class="n">10000</span> <span class="k2">)</span><span class="k2">;</span> <span class="c">// Rest for 10 seconds for now :)</span>
<span class="number"> 24</span>
<span class="number"> 25</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 26</span><span class="k2">}</span>
</div></div><p>

Hope this helps getting sound to work.</p><p>Append: I haven&#39;t tested this code myself since I am now going to bed. Must be up for the kids in the morning.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Wed, 27 Apr 2011 01:08:41 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I want do it want do it with  play_audio_stream</p><p>my reason:<br />&quot;The audio stream functions are for playing digital sounds that are too big to fit in a regular SAMPLE structure, either because they are huge files that you want to load in pieces as the data is required, or because you are doing something clever like generating the waveform on the fly.&quot;<br /><a href="http://alleg.sourceforge.net/latestdocs/en/alleg028.html">http://alleg.sourceforge.net/latestdocs/en/alleg028.html</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aesteves)</author>
		<pubDate>Wed, 27 Apr 2011 03:53:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I never read that <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /> I shall have to add it to my class at some point for music files <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Desmond Taylor)</author>
		<pubDate>Wed, 27 Apr 2011 13:20:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607123/914660#target">aesteves</a> said:</div><div class="quote"><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="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  2</span><span class="k2">{</span>   
<span class="number">  3</span>    <a href="http://www.allegro.cc/manual/allegro_init"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  4</span>    <a href="http://www.allegro.cc/manual/install_keyboard"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  5</span>    <a href="http://www.allegro.cc/manual/install_sound"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>    <span class="c">//create the audio stream</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/AUDIOSTREAM"><span class="a">AUDIOSTREAM</span></a> <span class="k3">*</span>stream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/play_audio_stream"><span class="a">play_audio_stream</span></a><span class="k2">(</span><span class="n">1024</span>, <span class="n">8</span>, FALSE, <span class="n">22050</span>, <span class="n">255</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span>    <span class="c">//Them create the sample "archivo" loading a wav</span>
<span class="number"> 11</span>    <a href="http://www.allegro.cc/manual/SAMPLE"><span class="a">SAMPLE</span></a> <span class="k3">*</span>archivo<span class="k3">=</span><a href="http://www.allegro.cc/manual/load_wav"><span class="a">load_wav</span></a><span class="k2">(</span><span class="s">"wav.wav"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 13</span>        <span class="k1">void</span> <span class="k3">*</span>mem_chunk<span class="k2">;</span>
<span class="number"> 14</span>        mem_chunk <span class="k3">=</span> <a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>        <span class="c">//when the sound buffer is void:</span>
<span class="number"> 17</span>        <span class="k1">if</span> <span class="k2">(</span>mem_chunk <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 18</span>
<span class="number"> 19</span>            <span class="c">//Put into the buffer the sample "archivo"</span>
<div class="highlight"><span class="number"> 20</span>            mem_chunk<span class="k3">=</span><span class="k3">&amp;</span>archivo<span class="k2">;</span></div><span class="number"> 21</span>
<span class="number"> 22</span>            <span class="c">//Indicate that the buffer is ready</span>
<span class="number"> 23</span>            <a href="http://www.allegro.cc/manual/free_audio_stream_buffer"><span class="a">free_audio_stream_buffer</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 24</span>        <span class="k2">}</span>
<span class="number"> 25</span>    <span class="k2">}</span>
<span class="number"> 26</span><span class="k2">}</span>
</div></div><p>
</p></div></div><p>

The line &#39;<span class="source-code">mem_chunk <span class="k3">=</span> <span class="k3">&amp;</span>archivo<span class="k2">;</span></span>&#39; does nothing. You have to fill the buffer using the pointer provided to you by <span class="source-code"><a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a></span>.</p><p>Example :
</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="k1">int</span> length <span class="k3">=</span> <span class="n">1024</span><span class="k2">;</span><span class="c">// 1024 frames of data</span>
<span class="number">  2</span>   <span class="k1">int</span> bits <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span><span class="c">// 8 bit data</span>
<span class="number">  3</span>   <span class="k1">int</span> stereo <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span><span class="c">// mono data</span>
<span class="number">  4</span>   <span class="k1">int</span> freq <span class="k3">=</span> <span class="n">22050</span><span class="k2">;</span><span class="c">// 22050 samples per second</span>
<span class="number">  5</span>   <span class="k1">int</span> vol <span class="k3">=</span> <span class="n">255</span><span class="k2">;</span>
<span class="number">  6</span>   <span class="k1">int</span> pan <span class="k3">=</span> <span class="n">127</span><span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="c">// AUDIOSTREAM *play_audio_stream(int len, int bits, int stereo, int freq, int vol, int pan);</span>
<span class="number">  9</span>   <a href="http://www.allegro.cc/manual/AUDIOSTREAM"><span class="a">AUDIOSTREAM</span></a> <span class="k3">*</span>stream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/play_audio_stream"><span class="a">play_audio_stream</span></a><span class="k2">(</span><span class="n">1024</span>, <span class="n">8</span>, FALSE, <span class="n">22050</span>, <span class="n">255</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>
<span class="number"> 11</span>   <span class="k1">void</span><span class="k3">*</span> mem_chunk<span class="k2">;</span>
<span class="number"> 12</span>   mem_chunk <span class="k3">=</span> <a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>   <span class="k1">int</span> bytes <span class="k3">=</span> length <span class="k3">*</span> <span class="k2">(</span>bits <span class="k3">/</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">*</span> <span class="k2">(</span>stereo ? <span class="n">2</span> <span class="k2">:</span> <span class="n">1</span><span class="k2">)</span>
<span class="number"> 14</span>   <span class="k1">if</span> <span class="k2">(</span>mem_chunk<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 15</span>      <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> i <span class="k3">&lt;</span> bytes <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
<span class="number"> 16</span>         mem_chunk<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> SoundData<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span><span class="c">// However you generate your data</span>
<span class="number"> 17</span>      <span class="k2">}</span>
<span class="number"> 18</span>   <span class="k2">}</span>
</div></div><p>

If you&#39;re going to use SAMPLE*s, then use the routines for playing samples - <span class="source-code"><a href="http://www.allegro.cc/manual/play_sample"><span class="a">play_sample</span></a></span>.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Wed, 27 Apr 2011 13:32:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>it give me an error: <br />`void*&#39; is not a pointer-to-object type </p><p>I put 3 lines to your example to generate my data:</p><p>#include &lt;allegro.h&gt;<br />#include &lt;math.h&gt;</p><p>int main()<br />{   <br />    allegro_init();<br />    install_keyboard();<br />    install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL);</p><p>    int length = 1024;<br />    int bits = 8;<br />    int stereo = 0;<br />    int freq = 22050;<br />    int vol = 255;<br />    int pan = 127;<br />   <br />   <br />    //I generate my data<br />    float PI=3.14159;<br />    char data[1024];<br />    for(int i=0;i&lt;1024;i++) data[i]=sin(i*2*PI/10)*127;//I create the wave, 1 cycle per 10 sampes<br />    <br />    <br />    AUDIOSTREAM *stream = play_audio_stream(1024, 8, FALSE, 22050, 255, 128);</p><p>    void* mem_chunk;<br />    mem_chunk = get_audio_stream_buffer(stream);<br />    int bytes = length * (bits / 8) * (stereo ? 2 : 1);<br />    if (mem_chunk) {<br />       for (int i = 0 ; i &lt; bytes ; ++i) {<br />           mem_chunk[i] = data[i];<br />       }<br />   }<br />}</p><p>thank you for the reply
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aesteves)</author>
		<pubDate>Wed, 27 Apr 2011 20:50:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607123/914744#target">aesteves</a> said:</div><div class="quote"><p>
`void*&#39; is not a pointer-to-object type<br />...
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span><span class="k3">*</span> mem_chunk<span class="k2">;</span>
    mem_chunk <span class="k3">=</span> <a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
    <span class="k1">int</span> bytes <span class="k3">=</span> length <span class="k3">*</span> <span class="k2">(</span>bits <span class="k3">/</span> <span class="n">8</span><span class="k2">)</span> <span class="k3">*</span> <span class="k2">(</span>stereo ? <span class="n">2</span> <span class="k2">:</span> <span class="n">1</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">if</span> <span class="k2">(</span>mem_chunk<span class="k2">)</span> <span class="k2">{</span>
       <span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> i <span class="k3">&lt;</span> bytes <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
           mem_chunk<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> data<span class="k2">[</span>i<span class="k2">]</span><span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>
Sorry, I mislead you. Before you can assign values to the array returned by <span class="source-code"><a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a></span>, you must cast it to a specific type. Since you are using a 8 bit mono stream, then you want to cast it to an unsigned char*.</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/manual/4/api/structures-and-types-defined-by-allegro/sample">The manual</a> said:</div><div class="quote"><p>
The sample data are always in unsigned format.
</p></div></div><p>

This means that you need to convert your data from signed format into unsigned format.</p><p>So, before you had this :
</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607123/914790#target">aesteves</a> said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">char</span> data<span class="k2">[</span><span class="n">1024</span><span class="k2">]</span><span class="k2">;</span>
<span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> i<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>i<span class="k3">&lt;</span><span class="n">1024</span><span class="k2">;</span>i<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> data<span class="k2">[</span>i<span class="k2">]</span><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>i<span class="k3">*</span><span class="n">2</span><span class="k3">*</span>PI<span class="k3">/</span><span class="n">10</span><span class="k2">)</span><span class="k3">*</span><span class="n">127</span><span class="k2">;</span><span class="c">//I create the wave, 1 cycle per 10 sampes</span>
</pre></div></div><p>
</p></div></div><p>

But now you should have this :
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">unsigned</span> <span class="k1">char</span> data<span class="k2">[</span><span class="n">1024</span><span class="k2">]</span><span class="k2">;</span>
<span class="k1">for</span> <span class="k2">(</span><span class="k1">int</span> i <span class="k3">=</span> <span class="n">0</span> <span class="k2">;</span> i <span class="k3">&lt;</span> <span class="n">1024</span> <span class="k2">;</span> <span class="k3">+</span><span class="k3">+</span>i<span class="k2">)</span> <span class="k2">{</span>
   <span class="k1">float</span> raw <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span><span class="k2">(</span><span class="k1">float</span><span class="k2">)</span>i<span class="k3">*</span><span class="n">2</span>.<span class="n">0f</span><span class="k3">*</span>M_PI<span class="k3">/</span><span class="n">10</span>.<span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k1">unsigned</span> <span class="k1">char</span> d <span class="k3">=</span> <span class="k2">(</span><span class="k1">unsigned</span> <span class="k1">char</span><span class="k2">)</span><span class="k2">(</span><span class="k2">(</span>raw<span class="k3">*</span><span class="n">127</span>.<span class="n">5f</span><span class="k2">)</span> <span class="k3">+</span> <span class="n">127</span>.<span class="n">5f</span><span class="k2">)</span><span class="k2">;</span>
   data<span class="k2">[</span>i<span class="k2">]</span> <span class="k3">=</span> d<span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

<b>Edit</b><br />Please use &lt;code&gt;code goes here...&lt;/code&gt; tags when posting code. It makes it much easier to read.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 28 Apr 2011 04:04:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>ok thank</p><p>I want to know if allegro in the code use 1 or 2 buffers for the sound???
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aesteves)</author>
		<pubDate>Fri, 29 Apr 2011 23:09:28 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There are two buffers for the AUDIOSTREAM :
</p><div class="quote_container"><div class="title">The manual said:</div><div class="quote"><p>
You can think of an AUDIOSTREAM structure as a wrapper around two audio buffers. The first thing you do is fill both buffers with sound data and let Allegro play them. Once the first buffer has been played, the second starts, and Allegro lets you know you have to fill the other one (i.e. graphics double buffering applied to sounds too big to fit into memory). 
</p></div></div><p>

So fill both when you start the stream, and then only fill the other buffer when <span class="source-code"><a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a></span> returns non-null.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sat, 30 Apr 2011 04:40:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can I use more than 2 buffers?</p><p>I want to make a piano, and I am thinking use 1 buffer per musical note, beacause of these way I should not to refill the buffers and is would be more efficient and fast. I only would need to indicate what buffer play.</p><p>Beacuse I made a litle program that play a sound with AUDIOSTREAM, and when I order to change the sound, the program takes too long (you know that the speed is very important in a piano)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aesteves)</author>
		<pubDate>Sun, 01 May 2011 00:32:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607123/915469#target">aesteves</a> said:</div><div class="quote"><p>
Can I use more than 2 buffers?
</p></div></div><p>
Not with an AUDIOSTREAM, no. You can make your own &#39;buffers&#39; and then copy them into your AUDIOSTREAM buffer though.</p><div class="quote_container"><div class="title">aesteves said:</div><div class="quote"><p>
I want to make a piano, and I am thinking use 1 buffer per musical note, beacause of these way I should not to refill the buffers and is would be more efficient and fast. I only would need to indicate what buffer play.
</p></div></div><p>
You could make your own SAMPLE&#39;s, modifying the SAMPLE::data array after making a new sample with <span class="source-code"><a href="http://www.allegro.cc/manual/create_sample"><span class="a">create_sample</span></a></span>. Then you could just use <span class="source-code"><a href="http://www.allegro.cc/manual/play_sample"><span class="a">play_sample</span></a></span>.</p><div class="quote_container"><div class="title">aesteves said:</div><div class="quote"><p>
Beacuse I made a litle program that play a sound with AUDIOSTREAM, and when I order to change the sound, the program takes too long (you know that the speed is very important in a piano)
</p></div></div><p>

</p><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/607123/914660#target">aesteves</a> said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//AUDIOSTREAM *play_audio_stream(int len, int bits, int stereo, int freq, int vol, int pan);</span>
<a href="http://www.allegro.cc/manual/AUDIOSTREAM"><span class="a">AUDIOSTREAM</span></a> <span class="k3">*</span>stream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/play_audio_stream"><span class="a">play_audio_stream</span></a><span class="k2">(</span><span class="n">1024</span>, <span class="n">8</span>, FALSE, <span class="n">22050</span>, <span class="n">255</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div></div><p>
The reason it takes so long to hear the sound again is because you are not filling the buffer fast enough. With only 1024 frames in the buffer at 22050 frames per second, you need to refill the buffer (22050/1024 ~= 21) 21 times every second. You can either use a larger number of frames (len) and refill it less often (which will make the sound take longer to change), or you can continue to use a small number of frames and update the sound more often.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Sun, 01 May 2011 10:25:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I taste what you said, but it doesn&#39;t change.</p><p>Look at these example, I can set the variable whit values bigers or smollers than 1024, but there arent change.</p><p>The example has to play the note1 or note2 if the key z is presed or not
</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 &lt;allegro.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;string.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;math.h&gt;</span>
<span class="number">  4</span>
<span class="number">  5</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number">  6</span><span class="k2">{</span>  
<span class="number">  7</span>    <a href="http://www.allegro.cc/manual/allegro_init"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  8</span>    <a href="http://www.allegro.cc/manual/install_keyboard"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  9</span>    <a href="http://www.allegro.cc/manual/set_gfx_mode"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED, <span class="n">300</span>, <span class="n">200</span>, <span class="n">0</span>, <span class="n">0</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 10</span>    <a href="http://www.allegro.cc/manual/install_sound"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, NULL<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 11</span>    
<span class="number"> 12</span>    <span class="k1">int</span> TAMANIODELBUFFER<span class="k3">=</span><span class="n">1024</span><span class="k2">;</span><span class="c">//Set the buffer's size</span>
<span class="number"> 13</span>    
<span class="number"> 14</span>    <a href="http://www.allegro.cc/manual/AUDIOSTREAM"><span class="a">AUDIOSTREAM</span></a> <span class="k3">*</span>stream <span class="k3">=</span> <a href="http://www.allegro.cc/manual/play_audio_stream"><span class="a">play_audio_stream</span></a><span class="k2">(</span>TAMANIODELBUFFER, <span class="n">8</span>, FALSE, <span class="n">22050</span>,<span class="n">255</span>, <span class="n">128</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>    <span class="k1">unsigned</span> <span class="k1">char</span> nota1<span class="k2">[</span><span class="n">16</span><span class="k2">]</span><span class="k2">;</span><span class="c">//Declare the notes</span>
<span class="number"> 16</span>    <span class="k1">unsigned</span> <span class="k1">char</span> nota2<span class="k2">[</span><span class="n">16</span><span class="k2">]</span><span class="k2">;</span>
<span class="number"> 17</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span><span class="n">16</span><span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> nota1<span class="k2">[</span>j<span class="k2">]</span><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>j<span class="k3">*</span><span class="n">2</span><span class="k3">*</span><span class="n">3</span>.<span class="n">14159</span><span class="k3">/</span><span class="n">8</span><span class="k2">)</span><span class="k3">*</span><span class="n">127</span><span class="k3">+</span><span class="n">127</span><span class="k2">;</span><span class="c">//Create the notes</span>
<span class="number"> 18</span>    <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span><span class="n">16</span><span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> nota2<span class="k2">[</span>j<span class="k2">]</span><span class="k3">=</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_728.html" target="_blank">sin</a><span class="k2">(</span>j<span class="k3">*</span><span class="n">2</span><span class="k3">*</span><span class="n">3</span>.<span class="n">14159</span><span class="k3">/</span><span class="n">16</span><span class="k2">)</span><span class="k3">*</span><span class="n">127</span><span class="k3">+</span><span class="n">127</span><span class="k2">;</span>
<span class="number"> 19</span>    <span class="k1">unsigned</span> <span class="k1">char</span> buf<span class="k2">[</span>TAMANIODELBUFFER<span class="k2">]</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k1">void</span> <span class="k3">*</span>mem_chunk<span class="k2">;</span>
<span class="number"> 21</span>    <span class="k1">int</span> pos<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 22</span>    <span class="k1">int</span> tecla<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>
<span class="number"> 23</span>    <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_ESC<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 24</span>        mem_chunk <span class="k3">=</span> <a href="http://www.allegro.cc/manual/get_audio_stream_buffer"><span class="a">get_audio_stream_buffer</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 25</span>        <span class="k1">if</span><span class="k2">(</span>mem_chunk <span class="k3">!</span><span class="k3">=</span> NULL<span class="k2">)</span><span class="k2">{</span>
<span class="number"> 26</span>            <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/key"><span class="a">key</span></a><span class="k2">[</span>KEY_Z<span class="k2">]</span><span class="k2">)</span> <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span>TAMANIODELBUFFER<span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>buf<span class="k2">[</span>j<span class="k2">]</span><span class="k3">=</span>nota2<span class="k2">[</span><span class="k2">(</span>j<span class="k3">+</span>pos<span class="k2">)</span>%<span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">]</span><span class="k2">;</span> <span class="k1">if</span><span class="k2">(</span>j<span class="k3">=</span><span class="k3">=</span>TAMANIODELBUFFER-1<span class="k2">)</span> pos<span class="k3">=</span><span class="k2">(</span>j<span class="k3">+</span>pos<span class="k3">+</span><span class="n">1</span><span class="k2">)</span>%<span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 27</span>            <span class="k1">else</span>           <span class="k1">for</span><span class="k2">(</span><span class="k1">int</span> j<span class="k3">=</span><span class="n">0</span><span class="k2">;</span>j<span class="k3">&lt;</span>TAMANIODELBUFFER<span class="k2">;</span>j<span class="k3">+</span><span class="k3">+</span><span class="k2">)</span> <span class="k2">{</span>buf<span class="k2">[</span>j<span class="k2">]</span><span class="k3">=</span>nota1<span class="k2">[</span><span class="k2">(</span>j<span class="k3">+</span>pos<span class="k2">)</span>%<span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">]</span><span class="k2">;</span> <span class="k1">if</span><span class="k2">(</span>j<span class="k3">=</span><span class="k3">=</span>TAMANIODELBUFFER-1<span class="k2">)</span> pos<span class="k3">=</span><span class="k2">(</span>j<span class="k3">+</span>pos<span class="k3">+</span><span class="n">1</span><span class="k2">)</span>%<span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span><span class="k2">}</span>
<span class="number"> 28</span>            <a href="http://www.delorie.com/djgpp/doc/libc/libc_566.html" target="_blank">memcpy</a><span class="k2">(</span>mem_chunk, buf, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span><span class="k3">*</span>TAMANIODELBUFFER <span class="k2">)</span><span class="k2">;</span>
<span class="number"> 29</span>            <a href="http://www.allegro.cc/manual/free_audio_stream_buffer"><span class="a">free_audio_stream_buffer</span></a><span class="k2">(</span>stream<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 30</span>        <span class="k2">}</span>
<span class="number"> 31</span>    <span class="k2">}</span>
<span class="number"> 32</span><span class="k2">}</span>
<span class="number"> 33</span><a href="http://www.allegro.cc/manual/END_OF_MAIN"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</div></div><p>

what is the better way to get a fast reply of the sound about the keyboard?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aesteves)</author>
		<pubDate>Thu, 05 May 2011 03:58:30 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I compiled your program and ran it, and there is a noticeable delay when changing sounds.</p><p>I think this has to do with Allegro&#39;s internal mixer buffer size, and I don&#39;t believe that can be changed by the user. Sorry.</p><p><span class="source-code"><a href="http://www.allegro.cc/manual/play_sample"><span class="a">play_sample</span></a></span> is much faster for me, and plays pretty much immediately after a key press for me.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 05 May 2011 15:13:01 +0000</pubDate>
	</item>
</rss>
