bandpass text 2

bandpass textを使いやすくしたもの。
blurは負荷が大きいのでVJソフト(Mad Mapper)側でエフェクトをつけてProcessingスケッチでは外した。

/*
指定文字をランダムに飛ばす
*/

import ddf.minim.*;
import codeanticode.syphon.*;// [lib]Syphon

Minim minim;
AudioInput audioInput;

// 設定
float boostLevel = 7000; // 環境による受取音量調整
float textS = 10;
float textM = 30;
float textL = 70;
String[] strings = {
  "Lorem ipsum dolor sit amet,",
  "consectetuer adipiscing elit.",
  "Aenean commodo ligula",
  "eget dolor. Aenean massa.",
  "artists. Making something out of",
  "Cum sociis natoque",
  "Donec sodales sagittis",
  "Cras dapibus"
};
int stringTotal = strings.length;
int stringsIndex;
float soundLevel;
SyphonServer server; // [lib]Syphon

PFont font;

void settings(){
  size(600, 600, P3D);
  PJOGL.profile=1; // [lib]Syphon
  font = loadFont("HiraMinPro-W3-100.vlw");
}

void setup(){
  frameRate(30);
  minim = new Minim(this);
  audioInput = minim.getLineIn(Minim.MONO, 512);
  server = new SyphonServer(this, "Processing Syphon"); // [lib]Syphon
  textFont(font, 100);
  background(0);
}

void draw(){
  server.sendScreen(); // [lib]Syphon
  //filter(BLUR, 1.5);
  fill(0, 0, 0, 20);
  rect(0, 0, width, height);
  fill(255);
  soundLevel = audioInput.mix.level() * boostLevel;// 現場環境によってブースト
  stringsIndex = int(random(0, stringTotal)); // 文字をランダム
  if(soundLevel < 20){
    soundLevel = 0;
    textSize(random(textS-10, textS));
    text(strings[stringsIndex], random(-200, width -100), random(height));
  } else if(soundLevel < 20 && soundLevel >30) {
    textSize(random(textM-10, textM));
    text(strings[stringsIndex], random(-200, width - 100), random(height));
  } else if(soundLevel > 80){
    textSize(random(textL-30, textL));
    text(strings[stringsIndex], random(-200, width - 100), random(height));
  }
  fill(soundLevel);
}

void stop(){
  audioInput.close();
  minim.stop();
  super.stop();
}

void mousePressed() {
  background(0);
}

bandpass text

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください