<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>al_create_sample create double lengthen sample</title>
		<link>http://www.allegro.cc/forums/view/616105</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Fri, 18 Mar 2016 13:24:50 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I may be wrong but I&#39;m currently playing with ex_record and ex_record_name to make myself a little recorder.</p><p>When just copy pasting the pasta and expanding the examples max_seconds, I ended with file that are the double of the file I currently save.</p><p>I digged up in the A5 sources and found that it isn&#39;t using the ALLEGRO_AUDIO_DEPTH (INT16 or whatever) in the sample size allocation.</p><p>My application or the example or the al_create_sample is wrong, but I had to divide samples by two to have the right amount of bytes saved.</p><p>Does anyone have a light for me ?</p><p>Code: 
</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="c">/* Recorder is created like that: */</span>
<span class="number">   2</span>
<span class="number">   3</span>   internals <span class="k3">-</span><span class="k3">&gt;</span> recorder <span class="k3">=</span> al_create_audio_recorder<span class="k2">(</span>
<span class="number">   4</span>         internals <span class="k3">-</span><span class="k3">&gt;</span> fragment <span class="k3">/</span> internals <span class="k3">-</span><span class="k3">&gt;</span> latency ,                         <span class="c">/* 10 seconds buffer space */</span>
<span class="number">   5</span>         internals <span class="k3">-</span><span class="k3">&gt;</span> frequency <span class="k3">*</span> internals <span class="k3">-</span><span class="k3">&gt;</span> latency ,  <span class="c">/* configure the fragment size to give us the given</span>
<span class="number">   6</span><span class="c">                                                            latency in seconds */</span>
<span class="number">   7</span>         internals <span class="k3">-</span><span class="k3">&gt;</span> frequency,   <span class="c">/* samples per second (higher =&gt; better quality) */</span>
<span class="number">   8</span>         ALLEGRO_AUDIO_DEPTH_INT16,   <span class="c">/* 2-byte sample size */</span>
<span class="number">   9</span>         ALLEGRO_CHANNEL_CONF_2    <span class="c">/* stereo */</span>
<span class="number">  10</span>         <span class="k2">)</span><span class="k2">;</span>
<span class="number">  11</span>
<span class="number">  12</span><span class="c">/* running values:</span>
<span class="number">  13</span><span class="c">refresh_rate: 60.000000</span>
<span class="number">  14</span><span class="c">frequency: 44100</span>
<span class="number">  15</span><span class="c">max_seconds: 300</span>
<span class="number">  16</span><span class="c">fragment: 10</span>
<span class="number">  17</span><span class="c">latency: 0.100000</span>
<span class="number">  18</span><span class="c">*/</span>
<span class="number">  19</span>
<span class="number">  20</span><span class="c">/* I save the sample like in the examples */</span>
<span class="number">  21</span>
<span class="number">  22</span>nstrprintf<span class="k2">(</span> date_str , <span class="s">"./output/%d/%s/%s"</span> , local_time <span class="k3">-</span><span class="k3">&gt;</span> tm_year <span class="k3">+</span> <span class="n">1900</span>  , time_split<span class="k2">[</span> <span class="n">4</span> <span class="k2">]</span> , time_split<span class="k2">[</span> <span class="n">3</span> <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  23</span>nstrprintf<span class="k2">(</span> command , <span class="s">"mkdir -p %s"</span> , date_str <span class="k3">-</span><span class="k3">&gt;</span> data <span class="k2">)</span><span class="k2">;</span>
<span class="number">  24</span><a href="http://www.delorie.com/djgpp/doc/libc/libc_802.html" target="_blank">system</a><span class="k2">(</span> _nstr<span class="k2">(</span> command <span class="k2">)</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  25</span>nstrcat_bytes<span class="k2">(</span> date_str , <span class="s">"/"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  26</span>nstrcat_bytes<span class="k2">(</span> date_str , qvstudio <span class="k3">-</span><span class="k3">&gt;</span> titles<span class="k2">[</span> selected_title <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  27</span>nstrcat_bytes<span class="k2">(</span> date_str , <span class="s">"_"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  28</span>nstrcat_bytes<span class="k2">(</span> date_str , time_split<span class="k2">[</span> <span class="n">2</span> <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  29</span>nstrcat_bytes<span class="k2">(</span> date_str , <span class="s">"H"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  30</span>nstrcat_bytes<span class="k2">(</span> date_str , time_split<span class="k2">[</span> <span class="n">1</span> <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  31</span>nstrcat_bytes<span class="k2">(</span> date_str , <span class="s">"M"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  32</span>nstrcat_bytes<span class="k2">(</span> date_str , time_split<span class="k2">[</span> <span class="n">0</span> <span class="k2">]</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  33</span>nstrcat_bytes<span class="k2">(</span> date_str , <span class="s">"S"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  34</span>nstrcat_bytes<span class="k2">(</span> date_str , <span class="s">".wav"</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  35</span><span class="c">/* finished recording, but haven't created the sample yet */</span>
<span class="number">  36</span><a href="http://www.allegro.cc/manual/ALLEGRO_SAMPLE"><span class="a">ALLEGRO_SAMPLE</span></a> <span class="k3">*</span>spl <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_create_sample"><span class="a">al_create_sample</span></a><span class="k2">(</span> qvstudio <span class="k3">-</span><span class="k3">&gt;</span> record_buffer , 
<span class="number">  37</span>      <span class="k2">(</span> qvstudio <span class="k3">-</span><span class="k3">&gt;</span> record_buffer_pos <span class="k3">-</span> qvstudio <span class="k3">-</span><span class="k3">&gt;</span> record_buffer <span class="k2">)</span> <span class="k3">/</span> <span class="n">2</span> ,   <span class="c">/* HERE NOTICE THE /2. WITHOUT IT I GOT 2x LENGTH ! */</span>
<span class="number">  38</span>      qvstudio <span class="k3">-</span><span class="k3">&gt;</span> frequency , 
<span class="number">  39</span>      ALLEGRO_AUDIO_DEPTH_INT16 , ALLEGRO_CHANNEL_CONF_2 , <span class="k1">false</span> <span class="k2">)</span><span class="k2">;</span>
<span class="number">  40</span><a href="http://www.allegro.cc/manual/al_save_sample"><span class="a">al_save_sample</span></a><span class="k2">(</span> _nstr<span class="k2">(</span> date_str <span class="k2">)</span> , spl <span class="k2">)</span><span class="k2">;</span>
<span class="number">  41</span><a href="http://www.allegro.cc/manual/al_destroy_sample"><span class="a">al_destroy_sample</span></a><span class="k2">(</span> spl <span class="k2">)</span><span class="k2">;</span>
<span class="number">  42</span>qvstudio <span class="k3">-</span><span class="k3">&gt;</span> record_buffer_pos <span class="k3">=</span> qvstudio <span class="k3">-</span><span class="k3">&gt;</span> record_buffer <span class="k2">;</span>  
<span class="number">  43</span>
<span class="number">  44</span>
<span class="number">  45</span><span class="c">/* qvstudio variable struct for type reference */</span>
<span class="number">  46</span>
<span class="number">  47</span><span class="p">#define MIN_SAMPLE_VAL 0x8000</span>
<span class="number">  48</span><span class="p">#define MAX_SAMPLE_VAL 0x7fff</span>
<span class="number">  49</span>
<span class="number">  50</span><span class="c">/*! Quiniou Studio Config structure */</span>
<span class="number">  51</span><span class="k1">typedef</span> <span class="k1">struct</span> QS_INTERNALS
<span class="number">  52</span><span class="k2">{</span>
<span class="number">  53</span>   <span class="c">/* DISPLAY */</span>
<span class="number">  54</span>   <span class="c">/*! path to ttf font file */</span>
<span class="number">  55</span>   <span class="k1">const</span> <span class="k1">char</span> <span class="k3">*</span>font_file_small ,
<span class="number">  56</span>         <span class="c">/*! path to ttf font file */</span>
<span class="number">  57</span>         <span class="k3">*</span>font_file_regular ,
<span class="number">  58</span>         <span class="c">/*! path to ttf font file */</span>
<span class="number">  59</span>         <span class="k3">*</span>font_file_huge ,
<span class="number">  60</span>         <span class="c">/*! path to background picture */</span>  
<span class="number">  61</span>         <span class="k3">*</span>background_file <span class="k2">;</span>
<span class="number">  62</span>
<span class="number">  63</span>   <span class="c">/*! size for little text output */</span>
<span class="number">  64</span>   <span class="k1">int</span> font_size_small ,
<span class="number">  65</span>       <span class="c">/*! size for normal text output */</span>
<span class="number">  66</span>       font_size_regular ,
<span class="number">  67</span>       <span class="c">/*! size for huge text output */</span>
<span class="number">  68</span>       font_size_huge ,
<span class="number">  69</span>       <span class="c">/*! Screen W size */</span>
<span class="number">  70</span>       w ,
<span class="number">  71</span>       <span class="c">/*! Screen H size */</span>
<span class="number">  72</span>       h <span class="k2">;</span>
<span class="number">  73</span>   <span class="c">/*! Internal loop freq */</span>
<span class="number">  74</span>   <span class="k1">float</span> refresh_rate <span class="k2">;</span>
<span class="number">  75</span>
<span class="number">  76</span>   <span class="c">/*! The 3 loaded fonts with their respective sizes */</span>
<span class="number">  77</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_FONT"><span class="a">ALLEGRO_FONT</span></a> <span class="k3">*</span><a href="http://www.allegro.cc/manual/font"><span class="a">font</span></a><span class="k2">[</span> <span class="n">3</span> <span class="k2">]</span><span class="k2">;</span>
<span class="number">  78</span>   <span class="c">/*! Acutal display */</span>
<span class="number">  79</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_DISPLAY"><span class="a">ALLEGRO_DISPLAY</span></a> <span class="k3">*</span>display <span class="k2">;</span>
<span class="number">  80</span>   <span class="c">/*! Event queue */</span>   
<span class="number">  81</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_EVENT_QUEUE"><span class="a">ALLEGRO_EVENT_QUEUE</span></a> <span class="k3">*</span>queue <span class="k2">;</span>
<span class="number">  82</span>   <span class="c">/*! Timer */</span>
<span class="number">  83</span>   <a href="http://www.allegro.cc/manual/ALLEGRO_TIMER"><span class="a">ALLEGRO_TIMER</span></a> <span class="k3">*</span>timer <span class="k2">;</span>
<span class="number">  84</span>
<span class="number">  85</span>   <span class="c">/*! RECORDER */</span>
<span class="number">  86</span>   ALLEGRO_AUDIO_RECORDER <span class="k3">*</span>recorder <span class="k2">;</span>
<span class="number">  87</span>   <span class="c">/*! fragment from recorder */</span>
<span class="number">  88</span>   ALLEGRO_AUDIO_RECORDER_EVENT <span class="k3">*</span>record_event <span class="k2">;</span> 
<span class="number">  89</span>   <span class="c">/*! recording buffer , stores up to max_seconds of audio */</span>
<span class="number">  90</span>   <span class="k1">int16_t</span> <span class="k3">*</span>record_buffer,
<span class="number">  91</span>           <span class="c">/*! points to the current recorded position */</span>
<span class="number">  92</span>           <span class="k3">*</span>record_buffer_pos,
<span class="number">  93</span>           <span class="c">/*! points to the end of the buffer */</span>
<span class="number">  94</span>           <span class="k3">*</span>record_buffer_end<span class="k2">;</span>  
<span class="number">  95</span>   <span class="c">/*! recording flag */</span>
<span class="number">  96</span>   <span class="k1">int</span> is_recording <span class="k2">;</span>
<span class="number">  97</span>   <span class="c">/*! Recording frequancy (44100,48000,96000) */</span>
<span class="number">  98</span>   <span class="k1">int</span> frequency <span class="k2">;</span>
<span class="number">  99</span>   <span class="c">/*! Maximum size of sample */</span>
<span class="number"> 100</span>   <span class="k1">int</span> max_seconds <span class="k2">;</span>
<span class="number"> 101</span>   <span class="c">/*! recorder internal buffer */</span>
<span class="number"> 102</span>   <span class="k1">int</span> fragment <span class="k2">;</span> 
<span class="number"> 103</span>   <span class="c">/*! Latency */</span>
<span class="number"> 104</span>   <span class="k1">float</span> latency ,
<span class="number"> 105</span>         <span class="c">/*! Computed volume for current input */</span>
<span class="number"> 106</span>         gain <span class="k2">;</span>
<span class="number"> 107</span>
<span class="number"> 108</span>   <span class="c">/*! Loaded title list */</span>
<span class="number"> 109</span>   <span class="k1">char</span> <span class="k3">*</span>titles<span class="k2">[</span> NB_MAX_TITLES <span class="k3">+</span> <span class="n">1</span> <span class="k2">]</span><span class="k2">;</span>
<span class="number"> 110</span>   <span class="c">/*! number of loaded titles */</span>
<span class="number"> 111</span>   <span class="k1">int</span> nb_titles <span class="k2">;</span>
<span class="number"> 112</span>
<span class="number"> 113</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Mon, 07 Mar 2016 03:30:35 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What is the type of <span class="source-code">qvstudio-&gt;record_buffer</span>?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (SiegeLord)</author>
		<pubDate>Wed, 09 Mar 2016 09:19:34 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s an int16_t *. The structure of qvstudio is described in the latter part of the source.</p><p>EDIT:<br />I polished it a bit. It now uses float32 depth, but I still have to divide by two at the end if I don&#39;t wan&#39;t an add on of white of the same length .
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Wed, 09 Mar 2016 21:25:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Not sure if this is the problem here, but are you accounting for stereo vs mono recording? If you&#39;re expecting mono and you&#39;re using a stereo buffer for recording that might explain your sample being twice as long as you expect it to be.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Thu, 10 Mar 2016 23:41:03 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m recording in stereo. I think the error may be in my own code. I&#39;ll post the recording parts here later in the day, I&#39;m currently at work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 11 Mar 2016 16:25:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Bump for reply.</p><p>Thou shalt not lock open threads!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Edgar Reynaldo)</author>
		<pubDate>Fri, 18 Mar 2016 09:16:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;ll post what I got today. I have some cosmetics to do before posting something.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GullRaDriel)</author>
		<pubDate>Fri, 18 Mar 2016 13:24:50 +0000</pubDate>
	</item>
</rss>
