Minim BeatDetect won't work from AudioInput

edited April 2015 in Library Questions
    The code below works from AudioPlayer but I can't get it to
    work from AudioInput instead :


    import ddf.minim.*;
    import ddf.minim.analysis.*;

    Minim minim;
    AudioInput in;
    AudioPlayer song;
    BeatDetect beat;
    BeatListener bl;

    float  kickSize, snareSize, hatSize;

    PShape m;
    PShape n;
    PShape o;
    PShape p;

    void setup()
    {
      size(900, 850);
      colorMode(HSB, 360,100,100);

      minim = new Minim(this);
      //in = minim.getLineIn();

      //song =  minim.getLineIn(); // cannot covert fromAudioInput to AudioPlayer
      song = minim.loadFile("beat1.mp3");
      song.play();

      //beat = new BeatDetect(in.bufferSize(), in.sampleRate());
      beat = new BeatDetect(song.bufferSize(), song.sampleRate());

      beat.setSensitivity(300);
      kickSize = snareSize = hatSize = 16;

      //bl = new BeatListener(beat, in);
      bl = new BeatListener(beat, song);


      m = loadShape("12.svg");
      n = loadShape("2.svg");
      o = loadShape("7.svg");
      p = loadShape("4.svg");
    }


    void draw() {

      background(280,100,20);
      fill(255);

      if ( beat.isKick() ) kickSize = 22; 
      if ( beat.isSnare() ) snareSize = 32;
      if ( beat.isHat() ) hatSize = 42;

      shape(m,kickSize/2, kickSize *2, width, height);
      shape(n,snareSize, snareSize, width, height);
      shape(o,hatSize, snareSize, width, height);
      shape(p,hatSize/2 + 250, hatSize + 400, 500, 350);

      kickSize = constrain(kickSize * 0.95, 16, 32);
      snareSize = constrain(snareSize * 0.95, 16, 32);
      hatSize = constrain(hatSize * 0.95, 16, 32);
    }

    void stop() {

      song.close();

      minim.stop();

      super.stop();
    }
    class BeatListener implements AudioListener
    {
      private BeatDetect beat;
      private AudioPlayer source;

      BeatListener(BeatDetect beat, AudioPlayer source)
      {
        this.source = source;
        this.source.addListener(this);
        this.beat = beat;
      }

      void samples(float[] samps)
      {
        beat.detect(source.mix);
      }

      void samples(float[] sampsL, float[] sampsR)
      {
        beat.detect(source.mix);
      }
    }

Answers

  • Answer ✓
    Think I've fixed it  - shapes move best to dance music...
    
    import ddf.minim.*;
    import ddf.minim.analysis.*;
    
    Minim minim;
    AudioInput in;
    BeatDetect beat;
    BeatListener bl;
    
    float  kickSize, snareSize, hatSize;
    
    PShape m;
    PShape n;
    PShape o;
    PShape p;
    
    class BeatListener implements AudioListener
    {
      private BeatDetect beat;
      private AudioInput source;
    
      BeatListener(BeatDetect beat, AudioInput source)
      {
        this.source = source;
        this.source.addListener(this);
        this.beat = beat;
      }
    
      void samples(float[] samps)
      {
        beat.detect(source.mix);
      }
    
      void samples(float[] sampsL, float[] sampsR)
      {
        beat.detect(source.mix);
      }
    }
    
    void setup()
    {
      size(900, 850, P3D);
      colorMode(HSB, 360, 100, 100);
    
      minim = new Minim(this);
      in = minim.getLineIn();
    
      beat = new BeatDetect(in.bufferSize(), in.sampleRate());
    
     beat.setSensitivity(50);
      kickSize = snareSize = hatSize = 16;
    
      bl = new BeatListener(beat, in);
    
      m = loadShape("12.svg");
      n = loadShape("2.svg");
      o = loadShape("7.svg");
      p = loadShape("4.svg");
    }
    
    void draw() {
    
      background(280, 100, 20);
      fill(255);
    
      if ( beat.isKick() ) kickSize = 52; 
      if ( beat.isSnare() ) snareSize = 32;
      if ( beat.isHat() ) hatSize = 42;
    
      shape(m, kickSize/2, kickSize *2, width, height);
      shape(n, snareSize, snareSize, width, height);
      shape(o, hatSize, snareSize, width, height);
      shape(p, hatSize/2 + 250, hatSize + 400, 500, 350);
    
      kickSize = constrain(kickSize * 0.95, 16, 32);
      snareSize = constrain(snareSize * 0.95, 16, 32);
      hatSize = constrain(hatSize * 0.95, 16, 32);
    }
    
    void stop() {
      in.close();
      minim.stop();
      super.stop();
    }
    
Sign In or Register to comment.