changeset 20:e44dc6f7f12e

fixed frequencer. snap doesn't mess up lock x/y.
author Robert Tubb <rt300@eecs.qmul.ac.uk>
date Thu, 17 Jan 2013 21:41:55 +0000
parents 6d72049a480c
children 650589cac373
files frequencer.mm grid.h grid.mm testApp.mm
diffstat 4 files changed, 18 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/frequencer.mm	Thu Jan 17 21:02:22 2013 +0000
+++ b/frequencer.mm	Thu Jan 17 21:41:55 2013 +0000
@@ -64,7 +64,7 @@
     // put into local store,
     for(int i=0;i<indexes.size();i++){
         freqMag[indexes[i]] = values[i];
-        freqMag[N-indexes[i]-1] = freqMag[indexes[i]];
+        if(i!=0)freqMag[N-indexes[i]] = freqMag[indexes[i]];
     }
    
     // calculate transform
@@ -83,9 +83,7 @@
     freqPhase[k] = phase;
     
     // making sure to conjugate
-    
-    freqPhase[N-k-1] = - freqPhase[k];
-    
+    if(k!=0)freqPhase[N-k] = - freqPhase[k];
     // calculate transform
     idft();
     // TODO output time domain
--- a/grid.h	Thu Jan 17 21:02:22 2013 +0000
+++ b/grid.h	Thu Jan 17 21:41:55 2013 +0000
@@ -83,6 +83,7 @@
     bool snapped;
     
     void snapCheck();
+    void shiftCentreToSnapped();
     void draw();    // draw lines
     
     void update(); // change according to zoom
--- a/grid.mm	Thu Jan 17 21:02:22 2013 +0000
+++ b/grid.mm	Thu Jan 17 21:41:55 2013 +0000
@@ -471,6 +471,13 @@
 
 }
 //--------------------------------------------------------------
+void Grid::shiftCentreToSnapped(){
+    // TODO just in case we're freezing something
+    // snapping actually change centre
+    centre = snapCentre;
+    
+}
+//--------------------------------------------------------------
 void Grid::snapCheck(){
     // check environs for presets.
    
@@ -641,6 +648,7 @@
     TwoVector coord = calculateCoordFromParams(params);
     setCoord(coord);
     
+    // snapping?
     viewWasChanged();
 
 }
--- a/testApp.mm	Thu Jan 17 21:02:22 2013 +0000
+++ b/testApp.mm	Thu Jan 17 21:41:55 2013 +0000
@@ -235,17 +235,18 @@
     
     if(e.widget->getName() == "LOCK SEQUENCE (X)")
     {
-    
-    cout << "LOCK SEQUENCE (X)\n";
-    // lock
-    xLocked = !xLocked;
-    //presetManager.clearAll();
-    
+        
+        cout << "LOCK SEQUENCE (X)\n";
+        // lock
+        theGridView.shiftCentreToSnapped();
+        xLocked = !xLocked;
+        
     }else if(e.widget->getName() == "LOCK SYNTH (Y)")
     {
         
         cout << "LOCK SYNTH (Y)\n";
         // lock
+        theGridView.shiftCentreToSnapped();
         if(((ofxUIButton *)e.widget)->getValue()){
             yLocked = true;
         }else{