<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Midi temporarly chokes for a moment after playing a bit. How to fix?</title>
		<link>http://www.allegro.cc/forums/view/551198</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 11 Dec 2005 14:40:33 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Been trying to find an answer to this problem all day. I searched all over this forum to see if there was anything that&#39;d help, but now I come and post this topic.</p><p>The problem is, that I can get a midi playing.. but after a while of it playing, it stutters a bit and then chokes(the whole program) for a few seconds, and then it unchokes and then the midi speeds up to catch up to its place.</p><p>Any ideas what could be causeing this?</p><p>It only chokes when its playing the midi.<br />And it doesnt just choke once, it does it multiple times the longer you listen to the midi.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Thu, 08 Dec 2005 14:34:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Can you post some code (playing parts, main loop, etc)? The whole program choking does not necessarily sound like a MIDI-specific problem, there could be something wrong in for ex the frame limiter, if you have one.</p><p>And welcome, awesome pixel art you have there (and on your site). <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Thu, 08 Dec 2005 14:55:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thanks, here&#39;s some code to help find the problem, hopefully..</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>&#160;</td></tr><tr><td class="number">2</td><td><span class="c">//main part of program</span></td></tr><tr><td class="number">3</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <span class="k1">int</span> game_sequence <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>&#160;</td></tr><tr><td class="number">9</td><td>  <span class="k1">bool</span> go<span class="k3">=</span><span class="k1">true</span><span class="k2">;</span>  <span class="c">//used to loop the main section of code</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>  <span class="c">//randomizes the random generator</span></td></tr><tr><td class="number">12</td><td>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_739.html" target="_blank">srand</a><span class="k2">(</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_821.html" target="_blank">time</a><span class="k2">(</span>NULL<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  <span class="c">//declares the bitmaps</span></td></tr><tr><td class="number">15</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>buffer<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bg_buffer<span class="k2">;</span></td></tr><tr><td class="number">17</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bg_buffer2<span class="k2">;</span></td></tr><tr><td class="number">18</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>background01<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>bg_water<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>&#160;</td></tr><tr><td class="number">21</td><td>  <a href="http://www.allegro.cc/manual/MIDI" target="_blank"><span class="a">MIDI</span></a> <span class="k3">*</span>midi_intro<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>  <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>    <span class="c">//initiates allegro</span></td></tr><tr><td class="number">24</td><td>  <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//makes keyboard work</span></td></tr><tr><td class="number">25</td><td>  <a href="http://www.allegro.cc/manual/install_mouse" target="_blank"><span class="a">install_mouse</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>  <span class="c">//makes mouse work</span></td></tr><tr><td class="number">26</td><td>  <a href="http://www.allegro.cc/manual/install_timer" target="_blank"><span class="a">install_timer</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>  <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>  <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>speed_counter<span class="k2">)</span><span class="k2">;</span> <span class="c">//Used to set the timer - which regulates the game's</span></td></tr><tr><td class="number">30</td><td>  <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>increment_speed_counter<span class="k2">)</span><span class="k2">;</span><span class="c">//speed.</span></td></tr><tr><td class="number">31</td><td>  <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>increment_speed_counter, BPS_TO_TIMER<span class="k2">(</span><span class="n">60</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span><span class="c">//Set our BPS</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>  <a href="http://www.allegro.cc/manual/set_mouse_speed" target="_blank"><span class="a">set_mouse_speed</span></a><span class="k2">(</span><span class="n">1</span>, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td>&#160;</td></tr><tr><td class="number">35</td><td>  text_mode<span class="k2">(</span><span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span><span class="c">//sets color depth to 16bit</span></td></tr><tr><td class="number">37</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">512</span>,<span class="n">384</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//sets screen to 256x192</span></td></tr><tr><td class="number">38</td><td>  <a href="http://www.allegro.cc/manual/set_volume" target="_blank"><span class="a">set_volume</span></a><span class="k2">(</span><span class="n">155</span>,<span class="n">155</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>  <span class="c">//loads/creates bitmaps into the variables buffer and image.</span></td></tr><tr><td class="number">41</td><td>  buffer<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">256</span>,<span class="n">192</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>  bg_buffer<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">512</span>,<span class="n">384</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>  bg_buffer2<span class="k3">=</span><a href="http://www.allegro.cc/manual/create_bitmap" target="_blank"><span class="a">create_bitmap</span></a><span class="k2">(</span><span class="n">512</span>,<span class="n">384</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>  background01<span class="k3">=</span><a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"background01.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>  bg_water<span class="k3">=</span><a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"bg_water.bmp"</span>,NULL<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>  midi_intro <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_midi" target="_blank"><span class="a">load_midi</span></a><span class="k2">(</span><span class="s">"intro_temp.mid"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>&#160;</td></tr><tr><td class="number">49</td><td>  clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>  clear<span class="k2">(</span>bg_buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">51</td><td>  clear<span class="k2">(</span>bg_buffer2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">52</td><td>  clear<span class="k2">(</span><a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>&#160;</td></tr><tr><td class="number">54</td><td>&#160;</td></tr><tr><td class="number">55</td><td>  set_grid <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>  anim_frame <span class="k3">=</span> <span class="n">8</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>  anim_frame2 <span class="k3">=</span> <span class="k3">-</span><span class="n">2</span><span class="k2">;</span></td></tr><tr><td class="number">58</td><td>  licky_anim_frame <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>  licky_appear_go <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>  </td></tr><tr><td class="number">61</td><td>&#160;</td></tr><tr><td class="number">62</td><td>  <span class="c">//loops the main code that needs to be repeated</span></td></tr><tr><td class="number">63</td><td>  <span class="k1">while</span><span class="k2">(</span>go<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">64</td><td>  </td></tr><tr><td class="number">65</td><td>    </td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td>    <span class="k1">while</span><span class="k2">(</span>speed_counter <span class="k3">&gt;</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">68</td><td>&#160;</td></tr><tr><td class="number">69</td><td>      <span class="k1">if</span><span class="k2">(</span>game_sequence <span class="k3">=</span><span class="k3">=</span> <span class="n">0</span><span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">70</td><td>        <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/midi_pos" target="_blank"><span class="a">midi_pos</span></a> <span class="k3">&lt;</span> <span class="n">0</span><span class="k2">)</span><a href="http://www.allegro.cc/manual/play_midi" target="_blank"><span class="a">play_midi</span></a><span class="k2">(</span>midi_intro, <span class="n">1</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>        titlescreen_background<span class="k2">(</span>buffer, bg_water, bg_buffer, bg_buffer2, background01<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">72</td><td>        titlescreen_menu01<span class="k2">(</span>buffer, game_sequence<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">73</td><td>      <span class="k2">}</span></td></tr><tr><td class="number">74</td><td>&#160;</td></tr><tr><td class="number">75</td><td>&#160;</td></tr><tr><td class="number">76</td><td>      <span class="c">//menu choice "quit" is chosen</span></td></tr><tr><td class="number">77</td><td>      <span class="k1">if</span><span class="k2">(</span>game_sequence <span class="k3">=</span><span class="k3">=</span> <span class="n">5</span><span class="k2">)</span>go<span class="k3">=</span><span class="k1">false</span><span class="k2">;</span></td></tr><tr><td class="number">78</td><td>&#160;</td></tr><tr><td class="number">79</td><td>    </td></tr><tr><td class="number">80</td><td>    </td></tr><tr><td class="number">81</td><td>    <span class="c">//required for drawing to the screen </span></td></tr><tr><td class="number">82</td><td>    <a href="http://www.allegro.cc/manual/acquire_screen" target="_blank"><span class="a">acquire_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">83</td><td>    <span class="c">//draws the buffer to the screen?</span></td></tr><tr><td class="number">84</td><td>&#160;</td></tr><tr><td class="number">85</td><td>    <a href="http://www.allegro.cc/manual/stretch_blit" target="_blank"><span class="a">stretch_blit</span></a><span class="k2">(</span>buffer,<a href="http://www.allegro.cc/manual/screen" target="_blank"><span class="a">screen</span></a>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">256</span>,<span class="n">192</span>,<span class="n">0</span>,<span class="n">0</span>,<span class="n">512</span>,<span class="n">384</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">86</td><td>    <span class="c">//required for drawing to the screen </span></td></tr><tr><td class="number">87</td><td>    <a href="http://www.allegro.cc/manual/release_screen" target="_blank"><span class="a">release_screen</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">88</td><td>    clear<span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">89</td><td>&#160;</td></tr><tr><td class="number">90</td><td>&#160;</td></tr><tr><td class="number">91</td><td>    speed_counter <span class="k3">-</span><span class="k3">-</span><span class="k2">;</span></td></tr><tr><td class="number">92</td><td>&#160;</td></tr><tr><td class="number">93</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">94</td><td>&#160;</td></tr><tr><td class="number">95</td><td>    </td></tr><tr><td class="number">96</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">97</td><td>&#160;</td></tr><tr><td class="number">98</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">99</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bg_buffer<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">100</td><td>  <a href="http://www.allegro.cc/manual/destroy_bitmap" target="_blank"><span class="a">destroy_bitmap</span></a><span class="k2">(</span>bg_buffer2<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">101</td><td>&#160;</td></tr><tr><td class="number">102</td><td>&#160;</td></tr><tr><td class="number">103</td><td>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">104</td><td><span class="k2">}</span></td></tr><tr><td class="number">105</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">//turns off allegro (important)</span></td></tr></tbody></table></div></div><p>
and here is the frame limit function since you mentioned it..</p><div class="source-code snippet"><div class="inner"><pre>
<span class="k1">volatile</span> <span class="k1">long</span> speed_counter <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span> <span class="c">// A long integer which will store the value of the</span>
                                             <span class="c">// speed counter. </span>
<span class="k1">void</span> increment_speed_counter<span class="k2">(</span><span class="k2">)</span> <span class="c">// A function to increment the speed counter</span>
<span class="k2">{</span>
  speed_counter<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span> <span class="c">// This will just increment the speed counter by one. :)</span>
<span class="k2">}</span>
<a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>increment_speed_counter<span class="k2">)</span><span class="k2">;</span> <span class="c">// Make sure you tell it that it's the end of the</span>
                                                                 <span class="c">// function</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 00:22:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you trying to loop the midi?  Why not use:</p><p><span class="source-code"><a href="http://www.allegro.cc/manual/play_looped_midi" target="_blank"><span class="a">play_looped_midi</span></a><span class="k2">(</span><span class="k2">)</span></span></p><p>Also, have you tried loading a different midi song to see if it &quot;chokes&quot; as well?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Fri, 09 Dec 2005 01:10:11 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>looping is not a problem, it chokes even when it runs the midi once.<br />I&#39;ve also tried multiple different midi files, and it&#39;s the same with each.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 01:14:42 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>There doesn&#39;t seem to be anything wrong with that code (pertaining to this particular problem - you should check whether the bitmap/midi loads were successful though + some other unrelated things <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />). </p><p>Try examples/exmidi and tests/miditest, do they exhibit the same problem? What compiler/OS/midi synth are you using?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Fri, 09 Dec 2005 01:18:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Is speed_counter initialized properly?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Fri, 09 Dec 2005 01:35:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I dont know how to get exmidi.exe to play a midi file, but I downloaded someones allegro game which played midis, and it played fine in their game.</p><p>when i run miditest.exe it says microsoft midi mapper under the driver..<br />my os is winxp, and i use msvc++ 6.0
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 02:41:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>exmidi.exe &lt;filename&gt;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Fri, 09 Dec 2005 02:42:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>oh ok,</p><p>yeah, driver is microsoft midi mapper, and the music plays fine in exmidi.exe</p><p>I notice when I change the bps to like 6000 or some big number, it takes forever for the program to quit while it just keeps playing the music with a black screen(when the program shuts down). dunno if that has any significance..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 02:56:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why not just play_midi before the loop, instead of inside of it?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Fri, 09 Dec 2005 03:06:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>i tried that too, it makes no difference.</p><p>I tried takeing out the timer function stuff, and it had no difference either.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 03:12:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In Windows9x I&#39;ve noticed that any huge disk access will cause any midi player stuff to &quot;choke&quot;, seems that the multitasker is locked out or something.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Fri, 09 Dec 2005 03:52:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The problem is, that I can get a midi playing.. but after a while of it playing, it stutters a bit and then chokes(the whole program) for a few seconds, and then it unchokes and then the midi speeds up to catch up to its place.
</p></div></div><p>

Hmmm...reading that again makes me think that something is making the sound driver &quot;think&quot; or the processor or something.  At this point, I would just make a small program and just focus directly on the playing the midi without any stuttering.  Something like:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="k2">{</span>
     <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
     <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
     <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>

     midi_intro <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_midi" target="_blank"><span class="a">load_midi</span></a><span class="k2">(</span><span class="s">"intro_temp.mid"</span><span class="k2">)</span><span class="k2">;</span>
     <a href="http://www.allegro.cc/manual/play_looped_midi" target="_blank"><span class="a">play_looped_midi</span></a><span class="k2">(</span>midi_intro, <span class="n">0</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> 
     <span class="k1">while</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>ESCAPE<span class="k2">]</span><span class="k2">)</span><span class="k2">{</span><span class="k2">}</span>

     <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="k2">}</span>
<a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Fri, 09 Dec 2005 03:57:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hm.. odd.</p><p>I did a small program:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "allegro.h" </span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">4</td><td><span class="k2">{</span> </td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/MIDI" target="_blank"><span class="a">MIDI</span></a> <span class="k3">*</span>midi_intro<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>   <a href="http://www.allegro.cc/manual/allegro_init" target="_blank"><span class="a">allegro_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">8</td><td>     <a href="http://www.allegro.cc/manual/install_keyboard" target="_blank"><span class="a">install_keyboard</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>     <a href="http://www.allegro.cc/manual/install_sound" target="_blank"><span class="a">install_sound</span></a><span class="k2">(</span>DIGI_AUTODETECT, MIDI_AUTODETECT, argv<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>  <a href="http://www.allegro.cc/manual/set_color_depth" target="_blank"><span class="a">set_color_depth</span></a><span class="k2">(</span><span class="n">16</span><span class="k2">)</span><span class="k2">;</span><span class="c">//sets color depth to 16bit</span></td></tr><tr><td class="number">11</td><td>  <a href="http://www.allegro.cc/manual/set_gfx_mode" target="_blank"><span class="a">set_gfx_mode</span></a><span class="k2">(</span>GFX_AUTODETECT_WINDOWED,<span class="n">512</span>,<span class="n">384</span>,<span class="n">0</span>,<span class="n">0</span><span class="k2">)</span><span class="k2">;</span><span class="c">//sets screen to 256x192</span></td></tr><tr><td class="number">12</td><td>  </td></tr><tr><td class="number">13</td><td>     midi_intro <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_midi" target="_blank"><span class="a">load_midi</span></a><span class="k2">(</span><span class="s">"intro_temp.mid"</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>     <a href="http://www.allegro.cc/manual/play_looped_midi" target="_blank"><span class="a">play_looped_midi</span></a><span class="k2">(</span>midi_intro, <span class="n">0</span>, <span class="k3">-</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> </td></tr><tr><td class="number">15</td><td>     <span class="k1">while</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="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td>   <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span> </td></tr><tr><td class="number">19</td><td><span class="k2">}</span> </td></tr><tr><td class="number">20</td><td><a href="http://www.allegro.cc/manual/END_OF_MAIN" target="_blank"><span class="a">END_OF_MAIN</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>

and it still has the choking problem..<br />do you think maybe it&#39;s my compiler?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 04:32:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
do you think maybe it&#39;s my compiler?
</p></div></div><p>
No.  Like you said, without the midi, it runs fine.  I doubt that has anything to do with it.  </p><p>Is it choking in the same parts or is it relatively sporadic?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Onewing)</author>
		<pubDate>Fri, 09 Dec 2005 04:40:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just for the heck of it, try:</p><p><span class="source-code"><span class="k1">while</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="k2">{</span> <a href="http://www.allegro.cc/manual/rest" target="_blank"><span class="a">rest</span></a><span class="k2">(</span><span class="n">1</span><span class="k2">)</span><span class="k2">;</span> <span class="k2">}</span></span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Fri, 09 Dec 2005 04:43:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>its relatively sporadic..<br />plays for a while, then begins choking, then plays for a while, begins choking again and so forth..</p><p>EDIT!:<br />Inphernic, that fixed it! It doesnt seem to choke up anymore.<br />Why is that? o_o<br />Thanks!!</p><p>EDIT2:<br />hm, actually, it doesnt fix it, but it makes it take longer before i encounter the choking..<br />this sux that i cant post consecutive replies..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Fri, 09 Dec 2005 04:47:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>The OS&#39; scheduler may throttle your application in order to give some CPU time for other processes. If another process (perhaps even with a higher priority) wants to do something intensive, your program could be affected by that. If the choking seems to be periodic, that might help you to identify the offending process (if any).</p><p>Rest(1) effectively introduces a delay of 1ms (due to granularity, more like 10ms) to your program, by which it makes sure that it&#39;s not hogging all the CPU time. Considering that adding it had a positive effect, I&#39;d say the problem is indeed related to some sort of throttling. I&#39;m not an expert on scheduling though, so take this with a grain of salt.</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
this sux that i cant post consecutive replies..
</p></div></div><p>

You can use the &quot;Send to top&quot; button after a period of inactivity to send this thread right back to the top without making a reply (useful if you just edit your last message). Don&#39;t abuse it, though. <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Fri, 09 Dec 2005 18:38:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You will notice that if you play a MIDI in Windows Media Player or WinAmp (just to name a couple), you will not get these problems. That is because those programs fully delegate the MIDI functionality to Windows, which in turn uses its own real-time services to ensure stuttering doesn&#39;t occur (except under extreme load). Allegro programs on the other hand take full control of the MIDI sequence and send MIDI events to the OS&#39;s MIDI mapper (or its own if that&#39;s what you choose) and are therefore at the mercy of the operating system&#39;s multitasking. There are other related problems of course, such as the Allegro MIDI routines stripping out XG and GS events, and even some GM events. MIDI is bad enough without it being clobbered by Allegro.</p><p>The only solution is <b>don&#39;t use Allegro MIDI. Ever.</b>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Fri, 09 Dec 2005 22:41:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And by relying on plain MIDI altogether, your songs can end up sounding totally different on different setups. What goes for alternatives: go for XM/IT if file size is a priority, MP3/OGG if quality is a priority (this is a bit of a simplified statement, but anyway).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Inphernic)</author>
		<pubDate>Fri, 09 Dec 2005 23:17:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>MIDI is also very bad when it comes to Linux compatibility. In the most cases the only way to play them is using Timidity, which gives very crappy sound at the cost of very much CPU time.</p><p>My personal advice: Go for IT! Use <a href="http://rigelseven.com/schism/">Schism Tracker</a> for creating the music (<a href="http://nimh.org/schism/">Win32 builds here</a>) and <a href="http://dumb.sourceforge.net/">DUMB</a> for playing it in your Allegro program.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Sat, 10 Dec 2005 16:41:32 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /><img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /><img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /><img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /><img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /><img src="http://www.allegro.cc/forums/smileys/shocked.gif" alt=":o" /> @ Schism Tracker
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sat, 10 Dec 2005 17:15:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>hm, i see..</p><p>Well, before all of this, i did try to use dumb, but I was unable to make it work, because the instructions to get it incorporated into a project were confuseing for me.</p><p>If someone could help me with that, maybe I can try it again..
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Alex Hanson-White)</author>
		<pubDate>Sun, 11 Dec 2005 02:51:26 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Schism Tracker
</p></div></div><p>Woah! Looks just like Scream Tracker 3. That was a sweet piece of software back in the day.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Corelian)</author>
		<pubDate>Sun, 11 Dec 2005 05:29:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
If someone could help me with that, maybe I can try it again..
</p></div></div><p>
Start a new thread on it and see what happens.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Sun, 11 Dec 2005 08:55:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Looks just like Scream Tracker 3
</p></div></div><p>
Uhm, no. It looks exactly 100% like Impulse Tracker. Which looks a bit like Scream Tracker.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (miran)</author>
		<pubDate>Sun, 11 Dec 2005 14:40:33 +0000</pubDate>
	</item>
</rss>
