<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>







<body style="background-color: #fff;">
<span style="display:none"> </span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
  <div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text" >
      
      
      <p>It's fixed!  I've posted a patch with all my fixes here:<br>
<br>
<a href="http://pastebin.com/8Tw0DNyy">http://pastebin.com/8Tw0DNyy</a><br>
<br>
Audio output is sounding very good now.<br>
<br>
- Clayton<br>
<br>
--- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "argilo314" <argilo@...> wrote:<br>
><br>
> I believe I found the source of the remaining warble.  The unvoiced synthesizer seems to be filtering the same noise in each 20ms frame, rather than starting with fresh white noise each time, resulting in a 50 Hz hum.  I'll try fixing it to match the spec over the few days.<br>
> <br>
> - Clayton<br>
> <br>
> --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "argilo314" <argilo@> wrote:<br>
> ><br>
> > I found the correct fix for the phase issue in the fine transition code.  There was pi^2 in a couple places where it should have been 2*pi.  Here's a patch that includes all my fixes so far:<br>
> > <br>
> > Index: blocks/src/lib/software_imbe_decoder.cc<br>
> > ===================================================================<br>
> > --- blocks/src/lib/software_imbe_decoder.cc   (revision 301)<br>
> > +++ blocks/src/lib/software_imbe_decoder.cc       (working copy)<br>
> > @@ -757,6 +757,7 @@<br>
> >  {<br>
> >     int i,j;<br>
> >       //initialize<br>
> > +   OldL = 0;<br>
> >     Old = 1; New = 0;<br>
> >     psi1 = 0.0;<br>
> >     for(i=0; i < 58; i++) {<br>
> > @@ -931,7 +932,7 @@<br>
> >  //         if(abs((int)sample) > 32767) {<br>
> >  //            sample = 32767 * (sample < 0) ? -1 : 1; // * sgn(sample)<br>
> >  //         }<br>
> > -         sample /= 16384.0; /* 32768.0 - but audio amplitude is not full range of int16  */<br>
> > +         sample /= 65536.0;<br>
> >           samples->push_back(sample);<br>
> >        }<br>
> >     }<br>
> > @@ -1394,10 +1395,8 @@<br>
> >        if(vee[ell][ New]) {<br>
> >           if ( vee[ell][ Old]) {<br>
> >              if(ell < 8 && fabsf(w0 - Oldw0) < .1 * w0) { // (fine transition)<br>
> > -               const double PI_SQUARED = M_PI * M_PI;<br>
> > -               const double INV_PI_SQUARED = 1.0 / PI_SQUARED;<br>
> >                 Dpl = phi[ell][ New] - phi[ell][ Old] -(Oldw0 + w0) * ell * 80;<br>
> > -               Dwl = .00625 * (Dpl - PI_SQUARED * floorf((Dpl + M_PI) * INV_PI_SQUARED));<br>
> > +               Dwl = .00625 * (Dpl - 2 * M_PI * floorf((Dpl + M_PI) / (2 * M_PI)));<br>
> >                 THa = (Oldw0 * (float)ell + Dwl);<br>
> >                 THb = (w0 - Oldw0) * ell * .003125;<br>
> >                 Mb = .00625 *(MNew - MOld);<br>
> > <br>
> > --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "rrgsti" <bobrich@> wrote:<br>
> > ><br>
> > > I admire your tenacity Clayton!<br>
> > > <br>
> > > The change to software_imbe_decoder does improve audio quality at this end as well.  I added a small amount of logging and noted that the code is going back and forth between the fine and coarse transition operations, so it doesn't seem like something is just 'pegged' at a wrong value.  This is all magic to me, however, so I have no intuition about what is or is not correct.<br>
> > > <br>
> > > This is running on 11.10 with itpp 4.07 built from source, latest copies of op25 and fairly recent gnuradio and gr-baz.<br>
> > > <br>
> > > Thanks!<br>
> > > <br>
> > > --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "argilo314" <argilo@> wrote:<br>
> > > ><br>
> > > > I've made a bit of progress.  It appears that the phase calculation in  software_imbe_decoder::synth_voiced is not correct in the "fine transition" case, resulting in abrupt phase shifts between the 20ms frames.  I'm not sure yet how to correct it, but by commenting out the "fine transition" case completely so that the "coarse transition" case always runs instead, I've eliminated most of the warble.<br>
> > > > <br>
> > > > Another problem I noticed is that the audio output is sometimes greater than 1.0, resulting in clipping if connected directly to an audio sink.  I corrected this by changing the "sample /= 16384.0;" line at the end of software_imbe_decoder::decode_audio back to "sample /= 32768.0;".<br>
> > > > <br>
> > > > - Clayton<br>
> > > > <br>
> > > > --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "argilo314" <argilo@> wrote:<br>
> > > > ><br>
> > > > > I'm getting the same issue with the sound: speech is intelligible but with a strong warble that makes it sound like talking through a fan.  I had a quick look at the waveform and spectrum of the output but didn't spot any obvious problems there.  Not knowing IMBE, I couldn't get far with the code.  Any ideas?<br>
> > > > > <br>
> > > > > - Clayton<br>
> > > > > <br>
> > > > > --- In <a href="mailto:op25-dev%40yahoogroups.com">op25-dev@yahoogroups.com</a>, "rrgsti" <bobrich@> wrote:<br>
> > > > > ><br>
> > > > > > Basically looking at bit 113 (only) seems to indicate whether or not it's a voice frame of some sort.  The audio still sounds like everyone is talking through a fan, but there are no dropouts, no clicks, no stutters, etc.  <br>
> > > > > > <br>
> > > > > > I could not find anything resembling a DUID or NAC in the headers.  If anyone has a suggestion to de-warble the audio, I would greatly appreciate it.<br>
> > > > ><br>
> > > ><br>
> > ><br>
> ><br>
><br>
<br>
</p>

    </div>
     

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style="color: #fff; height: 0;">__._,_.___</div>

        
  
   
    <div id="ygrp-actbar" style="clear: both; margin-bottom: 10px; white-space: nowrap; color: #666; padding-top: 15px;">
      <div>
        <a href="mailto:argilo@gmail.com?subject=Re%3A%20OP25%20GRC%20-%20Almost%20but%20not%20quite%20working" style="margin-right: 0; padding-right: 0;">
          Reply to <span style="font-weight: 700;">sender</span></a> |
        <a href="mailto:op25-dev@yahoogroups.com?subject=Re%3A%20OP25%20GRC%20-%20Almost%20but%20not%20quite%20working">
          Reply to <span style="font-weight: 700;">group</span></a> |
                  <a href="http://groups.yahoo.com/group/op25-dev/post;_ylc=X3oDMTJwOW9sc2txBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRtc2dJZAM3MzEEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzM5NTQyODMy?act=reply&messageNum=731">Reply <span style="font-weight: 700;">via web post</span></a> |
                <a href="http://groups.yahoo.com/group/op25-dev/post;_ylc=X3oDMTJmaG1jam52BF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDZnRyBHNsawNudHBjBHN0aW1lAzEzMzk1NDI4MzI-" style="font-weight: 700;">Start a New Topic</a>
      </div>

                <a href="http://groups.yahoo.com/group/op25-dev/message/665;_ylc=X3oDMTMzZ2tmNTgzBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRtc2dJZAM3MzEEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzM5NTQyODMyBHRwY0lkAzY2NQ--">Messages in this topic</a>
          (<span style="font-weight: 700;">37</span>)
          </div> 
<!------- Start Nav Bar ------>
<!-- |**|begin egp html banner|**| -->
<!-- |**|end egp html banner|**| -->

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #e0ecee; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
      <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span>

    <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
            <li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
      <span class="cat"><a href="http://groups.yahoo.com/group/op25-dev/members;_ylc=X3oDMTJncmdhYm5kBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDdnRsBHNsawN2bWJycwRzdGltZQMxMzM5NTQyODMy?o=6" style="text-decoration: none;">New Members</a></span>
      <span class="ct" style="color: #ff7900;">1</span>
    </li>
                                              </ul>
    
  <div style="clear: both; padding-top: 2px; color: #1e66ae;">
    <a href="http://groups.yahoo.com/group/op25-dev;_ylc=X3oDMTJmN3QwbnVnBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDdnRsBHNsawN2Z2hwBHN0aW1lAzEzMzk1NDI4MzI-" style="text-decoration: none;">Visit Your Group</a>
  </div>
</div>

  
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="http://groups.yahoo.com/;_ylc=X3oDMTJlajVuY3UxBF9TAzk3MzU5NzE0BGdycElkAzIyMDg0NTgyBGdycHNwSWQDMTcwNTY0NDA4OQRzZWMDZnRyBHNsawNnZnAEc3RpbWUDMTMzOTU0MjgzMg--" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;">Switch to: <a href="mailto:op25-dev-traditional@yahoogroups.com?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:op25-dev-digest@yahoogroups.com?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> • <a href="mailto:op25-dev-unsubscribe@yahoogroups.com?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> • <a href="http://docs.yahoo.com/info/terms/" style="text-decoration: none;">Terms of Use</a></div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=22084582/grpspId=1705644089/msgId=731/stime=1339542832/nc1=4025373/nc2=3848641/nc3=4507179" width="1" height="1"> <br>

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type="text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  a {
    color: #1e66ae;
  }

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
  
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }

  #ygrp-mlmsg a {
    color: #1E66AE;
  }

  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  } 

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important; 
  } 
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->