From ce65c30264be9683dd3a59b35730d2f31e02d37f Mon Sep 17 00:00:00 2001
From: John Glover <glover.john@gmail.com>
Date: Thu, 21 Oct 2010 13:39:28 +0100
Subject: Changed from floats to doubles in the C/C++ code, makes Python
 integration a bit easier. Fixed a bug that would cause SndObjSynthesis to
 crash if peak values were floats.

---
 sndobj/SinSyn.cpp | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

(limited to 'sndobj/SinSyn.cpp')

diff --git a/sndobj/SinSyn.cpp b/sndobj/SinSyn.cpp
index 61b39f8..7452b95 100644
--- a/sndobj/SinSyn.cpp
+++ b/sndobj/SinSyn.cpp
@@ -43,7 +43,7 @@ SinSyn::SinSyn(){
 }
 
 SinSyn::SinSyn(SinAnal* input, int maxtracks, Table* table, 
-	       float scale, int vecsize, float sr)	  
+	       double scale, int vecsize, double sr)	  
   :SndObj(input, vecsize, sr){
 
   m_ptable = table;
@@ -56,12 +56,12 @@ SinSyn::SinSyn(SinAnal* input, int maxtracks, Table* table,
   m_tracks = 0;
   m_scale = scale;
   m_input = input;
-  m_freqs = new float[m_maxtracks];
-  m_amps = new float[m_maxtracks];
-  m_phases = new float[m_maxtracks];
+  m_freqs = new double[m_maxtracks];
+  m_amps = new double[m_maxtracks];
+  m_phases = new double[m_maxtracks];
   m_trackID = new int[m_maxtracks];
 
-  memset(m_phases, 0, sizeof(float)*m_maxtracks);
+  memset(m_phases, 0, sizeof(double)*m_maxtracks);
 
   m_incr = 0.f;
   m_ratio = m_size/m_sr;
@@ -109,7 +109,7 @@ SinSyn::Connect(char* mess, void* input){
 
 
 int
-SinSyn::Set(char* mess, float value){
+SinSyn::Set(char* mess, double value){
 
   switch(FindMsg(mess)){
 
@@ -141,9 +141,9 @@ SinSyn::SetMaxTracks(int maxtracks){
   }
 
   m_maxtracks = maxtracks;
-  m_freqs = new float[m_maxtracks];
-  m_amps = new float[m_maxtracks];
-  m_phases = new float[m_maxtracks];
+  m_freqs = new double[m_maxtracks];
+  m_amps = new double[m_maxtracks];
+  m_phases = new double[m_maxtracks];
   m_trackID = new int[m_maxtracks];
 
 }
@@ -153,17 +153,17 @@ SinSyn::DoProcess() {
 	
   if(m_input){
 		
-    float ampnext,amp,freq, freqnext, phase,phasenext;
-    float a2, a3, phasediff, cph;
+    double ampnext,amp,freq, freqnext, phase,phasenext;
+    double a2, a3, phasediff, cph;
     int i3, i, j, ID, track;
     int notcontin = 0;
     bool contin = false;
     int oldtracks = m_tracks;
-    float* tab = m_ptable->GetTable(); 
+    double* tab = m_ptable->GetTable(); 
     if((m_tracks = ((SinAnal *)m_input)->GetTracks()) >
        m_maxtracks) m_tracks = m_maxtracks;
 		
-    memset(m_output, 0, sizeof(float)*m_vecsize);
+    memset(m_output, 0, sizeof(double)*m_vecsize);
    		
     // for each track
     i = j = 0;
@@ -220,7 +220,7 @@ SinSyn::DoProcess() {
       a3 = 1./(3*m_facsqr)  * (freqnext - freq - 2*a2*m_factor);
 
       // interpolation resynthesis loop	
-      float inc1, inc2, a, ph, cnt, frac;
+      double inc1, inc2, a, ph, cnt, frac;
       int ndx;
       a = amp;
       ph = phase;
-- 
cgit v1.2.3