<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
Thanks, so I am trying to add a Do method in SpectralEnvelopeExtract that takes a spectrum an not an array of peaks.<div>I have something working but I seem to be able to only call my Do function function once. It crashes on the second time I call it. I don't see what it is I am doing wrong or not doing.</div><div>Here is my code so far:</div><div><br></div><div><br></div><div>in spectralEnvelopeExtract.cxx (based on the original Do function that takes a peak array as input):</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">bool</font><font face="Monaco" size="2" style="font: 10.0px Monaco">  SpectralEnvelopeExtract::Do(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">const</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> Spectrum& input, Spectrum& output)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  {</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">    <span class="Apple-tab-span" style="white-space:pre">       </span>output.SetScale(input.GetScale());</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">        TSize nBins=input.GetSize();</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">        </font><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> (nBins<</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">4</font><font face="Monaco" size="2" style="font: 10.0px Monaco">) </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">return</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">false</font><font face="Monaco" size="2" style="font: 10.0px Monaco">; </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//cannot extract an envelope out of only 3 peaks!</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">        CheckOutputType(output);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span> DataArray& magBuffer=input.GetMagBuffer();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span> DataArray& phaseBuffer=input.GetPhaseBuffer();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">               </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">// DataArray& freqBuffer=input.GetFreqBuffer();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>Array<Point>& magPointArray=output.GetMagBPF().GetPointArray();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>Array<Point>& phasePointArray=output.GetPhaseBPF().GetPointArray();</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//Max number of points allowed: should be a config param</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray.Resize(mConfig.GetMaxPeaks());</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray.SetSize(mConfig.GetMaxPeaks());</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray.Resize(mConfig.GetMaxPeaks());</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray.SetSize(mConfig.GetMaxPeaks());</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData curBinFreq = </font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">for</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">int</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> i=</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;i<nBins;i++)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>{</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">                       curBinFreq = input.GetSpectralRange()*i/(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">float</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)nBins;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[i</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">+1</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetX(curBinFreq);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[i</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">+1</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetY(magBuffer[i]);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[i</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">+1</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetX(curBinFreq);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[i</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">+1</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetY(phaseBuffer[i]);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>}</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//todo: a lot of duplicated code, should extract in different functions</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(input.GetScale()==EScale::eLog)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>{</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//we now set first point (maybe we should do the same as with last point?)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetX(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetY(magBuffer[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">]</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-3</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetX(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetY(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>nBins++;</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">/* we keep adding points to bpf until magnitude is insignificant </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>(note that we add points outside the spectral range) */</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">                        curBinFreq = (nBins</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-2</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)*input.GetSpectralRange()/(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">float</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)nBins; /*note: I compute the current bin's frequency instead of the peakArray'sfreqBuffer */</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData lastFreq = curBinFreq; </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//freqBuffer[nBins-2];</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">                        curBinFreq = (nBins</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-3</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)*input.GetSpectralRange()/(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">float</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)nBins;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData freqGap = lastFreq-curBinFreq; </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//freqBuffer[nBins-3];</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData currentFreq=lastFreq+freqGap;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData currentMag=magBuffer[nBins</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-2</font><font face="Monaco" size="2" style="font: 10.0px Monaco">];</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">while</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(currentMag></font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-200</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>{</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>currentMag-=(currentFreq/lastFreq</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-1</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)*</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">12</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[nBins].SetY(currentMag);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[nBins].SetX(currentFreq);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[nBins].SetY(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[nBins].SetX(currentFreq);</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>currentFreq+=freqGap;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>nBins++;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(nBins==mConfig.GetMaxPeaks()) </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">break</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>}</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//we resize arrays to final size</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray.Resize(nBins);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray.SetSize(nBins);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray.Resize(nBins);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray.SetSize(nBins);</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>}</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">else</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>{</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//we now set first point (maybe we should do the same as with last point?)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetX(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetY(magBuffer[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">]*</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0.5</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetX(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">].SetY(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>nBins++;</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">/* we keep adding points to bpf until magnitude is insignificant </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>(note that we add points outside the spectral range) */</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">                        curBinFreq = (nBins</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-2</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)*input.GetSpectralRange()/(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">float</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)nBins;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData lastFreq = curBinFreq;</font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//freqBuffer[nBins-2];</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">                        curBinFreq = (nBins</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-3</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)*input.GetSpectralRange()/(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">float</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)nBins;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData freqGap=lastFreq-curBinFreq;</font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//freqBuffer[nBins-3];</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData currentFreq=lastFreq+freqGap;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>TData currentMag=magBuffer[nBins</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-2</font><font face="Monaco" size="2" style="font: 10.0px Monaco">];</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">while</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(currentMag<</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0.0000000001</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>{</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>currentMag*=CLAM_pow(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0.06</font><font face="Monaco" size="2" style="font: 10.0px Monaco">,(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">double</font><font face="Monaco" size="2" style="font: 10.0px Monaco">)(currentFreq/lastFreq</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">-1.0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">));</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[nBins].SetY(currentMag);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray[nBins].SetX(currentFreq);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[nBins].SetY(</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray[nBins].SetX(currentFreq);</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>currentFreq+=freqGap;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>nBins++;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(nBins==mConfig.GetMaxPeaks()) </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">break</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>}</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//we resize arrays to final size</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray.Resize(nBins);<span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-style-span" style="color: rgb(35, 110, 37); ">//!!! (note 1) This is where the crash seem to happen on the second time I call this Do method (see error messsage below)</span></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>magPointArray.SetSize(nBins);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray.Resize(nBins);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>phasePointArray.SetSize(nBins);</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>}</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span></font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>output.SetSize(nBins);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span><span class="Apple-tab-span" style="white-space:pre">    </span>output.GetMagBPF().UpdateSplineTable();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>       </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">        </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">return</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">true</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  }</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div><div>and this is how I try to use it in my program:</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">void</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> SMSStdio::PrintSpectrum(std::string inputXMLFileName)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">{</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  TIndex i,j;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  TData  m1, m2; </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">int</font><font face="Monaco" size="2" style="font: 10.0px Monaco"> nbOfFrames = </font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  LoadConfig(inputXMLFileName);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  LoadAnalysis(mGlobalConfig.GetInputAnalysisFile());</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"> </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">    </span></font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco">(!GetState().GetHasTransformation())</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span>{</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>CopySegmentExceptAudio(mOriginalSegment,mTransformedSegment);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span><span class="Apple-tab-span" style="white-space:pre">    </span>GetState().SetHasTransformation(</font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">true</font><font face="Monaco" size="2" style="font: 10.0px Monaco">);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">  </span>}</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"> </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  mTransformedSegment.mCurrentFrameIndex=</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  nbOfFrames =  mTransformedSegment.GetnFrames();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  SpectralEnvelopeExtract spectralEnvelopeExtract;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  Spectrum outputEnvSpec;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  Spectrum inputSpec;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  SpecTypeFlags f; </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  Frame inputFrame;</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"> </font><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco"> </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">for</font><font face="Monaco" size="2" style="font: 10.0px Monaco">( i=</font><font face="Monaco" size="2" color="#0000ff" style="font: 10.0px Monaco; color: #0000ff">0</font><font face="Monaco" size="2" style="font: 10.0px Monaco">; i < nbOfFrames; i++)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">    {</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      inputFrame =  mTransformedSegment.GetFrame(  mTransformedSegment.mCurrentFrameIndex++ );      </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      inputSpec = inputFrame.GetResidualSpec();</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//Change inputSpec's type from Complex to MagPhase</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      inputSpec.GetType(f);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco">( !f.bMagPhase )</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      { </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">          f.bMagPhase = </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">true</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">          inputSpec.SetTypeSynchronize(f);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      }</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//Set outputSpectrum's type To BPF</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      outputEnvSpec.GetType(f);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">if</font><font face="Monaco" size="2" style="font: 10.0px Monaco">( !f.bMagPhaseBPF )</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      { </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">          f.bMagPhaseBPF = </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">true</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">          outputEnvSpec.SetType(f); </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//set spectrum to be a BPF</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      }</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">      spectralEnvelopeExtract.Do( inputSpec, outputEnvSpec ); </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">// !!!!!this is where I always get the crash on the second time i hit this line see error message below and note 1 above </font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">      </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">   }</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><br class="khtml-block-placeholder"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//     outputEnvSpec.BPF2MagPhase();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">//     outputEnvSpec.MagPhase2Complex();</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">/*    </font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">      for ( j = 0; j < 10; j++ )</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">  {</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">          m1 =  inputSpec.GetMag( j );//myFrame.GetResMag(j);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">          m2 =  outputEnvSpec.GetMag( j );</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">          </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">          fprintf( stderr, "m1 = %f m2 = %f", m1 , m2);</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">  }</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">  fprintf( stderr, "\n");</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" color="#236e25" style="font: 10.0px Monaco; color: #236e25">  */</font></div><p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><br class="khtml-block-placeholder"></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">  </font><font face="Monaco" size="2" color="#760f50" style="font: 10.0px Monaco; color: #760f50">return</font><font face="Monaco" size="2" style="font: 10.0px Monaco">;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Monaco" size="2" style="font: 10.0px Monaco">}</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div></div><div>This is the error I get:</div><div><br></div><div><div>SMSConsole(18690,0xa000ed88) malloc: *** error for object 0xd98d600: incorrect checksum for freed object - object was probably modified after being freed, break at szone_error to debug</div><div>SMSConsole(18690,0xa000ed88) malloc: *** set a breakpoint in szone_error to debug</div><div><br></div><div>Program received signal EXC_BAD_ACCESS, Could not access memory.</div><div>Reason: KERN_INVALID_ADDRESS at address: 0x3fe7984a</div><div>0x900074d8 in szone_free ()</div><div><br></div><div><br></div><div>Any idea of what I am doing wrong?</div><div><br></div><div>Thanks.</div><div><br></div><div><br></div></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font class="Apple-style-span" color="#760F50" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;"><br></span></font></div></div></div><div><br><div><div>On 27 mai 08, at 14:25, Xavier Amatriain wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi Roumbaba,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">In the paper you cite it says "you can", which does not mean "you have to" :-) Doing an approximation of the residual model is indeed</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">an interesting thing to do, especially if you want to reduce the amount of data in your transformed signal, however it is not a must.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Note that there are many other ways to model the residual apart from the one mentioned in that paper.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">So far, in CLAM we are using the residual as is, with no modeling or approximation. The "only" downside is that the transformed</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">signal (SMS Data) is in fact larger than the original audio when it could be much smaller with not much loss in quality. If for</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">whatever reason you do need to do the residual modeling you can look at the SpectralEnvelopeExtract processing. This processing</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">generates a spectral approximation (spectrum in bpf format) but from an array of peaks, it would not be hard to modify it to work</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">with an input spectrum.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">X</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">roumbaba wrote:</div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Hi all,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I am trying to understand how the residual spectrum gets modeled in clam/SMS. I have read the Serra/Smith 1990 CMJ paper and as I understand it<span class="Apple-converted-space">  </span>it describes two steps:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">1- substract the harmonic spectrum from the original spectrum</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">2- perform a line-segment approximation of the residual spectrum obtained in 1</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I have stepped through clam and SMS code and I think I can see where step 1 gets performed:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">SMSAnalysisCore::Do()</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">mSinSpectralAnalysis.Do();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">mResSpectralAnalysis.Do();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">mSynthSineSpectrum.Do();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">mSpecSubstracter.Do(); /* step 1 gets performed here I think*/</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">but I cannot find where step 2 (line approximation) gets performed. Where should I look in the code?</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Thank you very much,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Cheers,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Roumbaba</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">ps:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Here is a quote from the paper I mentionned above:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">"Approximation of the Spectral Residual</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Assuming the the residual signal is quasi-stochastic, each magnitude-spectrum residual can be approximated by its envelope since only its shape contributes to the sound characteristics. [...] The particular line-segment approximation performed here is done by stepping through the magnitude spectrum and finding local maxima in every section, ..."</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Clam-devel mailing list</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:Clam-devel@llistes.projectes.lafarga.org">Clam-devel@llistes.projectes.lafarga.org</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel">https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel</a></div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Clam-devel mailing list</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:Clam-devel@llistes.projectes.lafarga.org">Clam-devel@llistes.projectes.lafarga.org</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel">https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel</a></div> </blockquote></div><br></div></div></body></html>