Var not iterating problem • Use all row values to iterate CSV column with for loop to playNote()

this does right counting

(I couldn’t run ToneInstrument)

import ddf.minim.*;
import ddf.minim.ugens.*;

Minim minim;
AudioOutput out;
SeisData seisData;
//float freqValues;

void setup() {
  size(640, 360, P3D);
  background(0);

  seisData = new SeisData();
  seisData.loadData();

  minim = new Minim(this);
  out = minim.getLineOut(Minim.STEREO, 2048);

  println("End of setup() at millis: "
    + millis() );

  seisData.timer = millis();
}

void draw() {
  background(0);

  // ----
  if (seisData.seisCsv==null) 
    return;
  // ----

  stroke(255);
  seisData.iterate();            //Calling iteration/timing method from object(contains i)

  //  println(seisData.i);             //When I run println(i) from here I get crazy timing/ iteration

  //float freqValues = seisData.freqValuesLoaded;
  //  freqValues = freqValuesLoaded;   
  // ToneInstrument myNote = new ToneInstrument(freqValues, 0.5, out); 
  //  println(seisData.i);
  text(seisData.i  
    +" :     "
    +seisData.freqValuesLoaded, 33, 33); 
  // out.playNote(0.5, 2.6, myNote);
}

// ==================================================================================

class SeisData {             
  // Start of class

  Table seisCsv;
  TableRow row;
  // float freqValues;
  float freqValuesLoaded;
  boolean load = true;
  int i = 0;
  float interval = 5000; 
  long timer=0;

  SeisData() {
    //constr
  }

  public void loadData() {
    seisCsv = loadTable("CU.SDDR.1_HOUR_BHZ.ascii_SLIST.csv", "header");
  }

  void iterate() {

    if (millis() - timer > interval ) {
      timer = millis();
      i++;                           //When I run println(i) from here I get correct timing. 
      load=true;
    }
    if (load) {
      row = seisCsv.getRow(i);
      freqValuesLoaded = row.getFloat(0);
      load = false;
    }
  }//method
  //
}//class
//
1 Like