読者です 読者をやめる 読者になる 読者になる

TaillookTech

備忘録

Processingとminimでインタラクティブアート作品を作る

Processing

minimとは

minimはProcessing1.0以降のバージョンで標準のサウンドライブラリ.
短いコードでオーディオのコントロールができる!

Minim | Compartmental

今回作ったもの

画面中の風船をユーザの声で膨らませるもの.
“声を出し続けないと風船がしぼんじゃうよ!”(草)
“膨らませすぎると割れちゃうよ!”(草)
子供向けに何か作れないかなと思って作ったはいいけど唾がキーボードに散るのが嫌なので不採用. f:id:taillook:20170321185217p:plain
f:id:taillook:20170321185127p:plain
f:id:taillook:20170321185122p:plain
画像は"いらすとや"から

動作

  1. マイクから音を拾う
  2. 音量が一定以上で膨らませる
  3. 音量が一定以下でしぼませる
  4. 風船が一定以上の大きさになると破裂する
  5. Shiftキーでリセット

環境

  • MacBookPro 2016
  • macOS Sierra
  • Processing 3.3
  • minim 2.2.2

GitHub

github.com

コード

import ddf.minim.*;

Minim minim;
AudioInput in;
float volumeIn;
float volumeTemp;
float size;

PImage balloon;
PImage explosion;

void setup() {
  //fullScreen();
  size(500,500);
  minim = new Minim(this);
  in = minim.getLineIn(Minim.MONO, 512);
  fill(200,0,0);
  balloon = loadImage("husen.png");
  explosion = loadImage("husen2.png");
  size = 50;
}

void draw() {
  background(0);
  volumeIn = map(in.left.level(), 0, 0.5, 0, 10);
  
  if (size < height*0.95) {
    if (volumeIn>5){
      size = size + 10;
    }else {
      if (size > 20) {
        size = size - 0.5;
      }
    }
    image(balloon, width/2-size/2+random(-5, 5), height/2-size/2+random(-5, 5), size, size);
  }else {
    image(explosion, width/2-size/2+random(-5, 5), height/2-size/2+random(-5, 5), size, size);
  }
}

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

void keyPressed() {
  if (key == CODED) {
    if (keyCode == SHIFT) {
       size = 50;
    }
  }
}