フレイミング・リップス・インスパイアード

きょうのスケッチとはいいながらも、書いたのはおとといの珍幹線内なのですが。さいきん珍幹線の8号車前よりの席はじぶんにとってのお習字教室といっても過言でもありません!

で、唐突なのですがフレイミング・リップスの新作がすこぶるよいです。ことしリリースされたアニマル・コレクティブの新作と雰囲気は近いものの、確実に陰と陽の違い。アニマル・コレクティブのアシッド感覚はあくまで後期ビーチボーイズブライアン・ウィルソンのそれなんですけど、フレイミング・リップスのアシッド感覚はシド・バレットがいたころのピンク・フロイドなりダモ感覚全開のCANのそれに近い気がするわけです。



というわけでyomoyomoさんもご紹介していたエロ禁youtubeで全裸女性が登場するというツェッペリンをカバーしてるヴィデオを見てたら、うしろの半円形のスクリーンの演出がなかなかどうしていいかんじだなと思ったので写生しましたよ。


https://dl.getdropbox.com/u/264798/sketch091022.gif

こんなかんじです。ちなみにgroovyで書きましたが、かわったことはしておりません。(追記:はじめハービー・ハンコックのシンセ画像だったんですけど差し替えました)
描写がフレームレート依存なので、クリックとかその他イベントにバインドするにはちょっと工夫が必要になると思います。

import processing.core.*
import javax.swing.JFrame

/*
flaming lipsのライブ映像のうしろで流れてるビデオにインスパイア
http://www.youtube.com/watch?v=9hLNiiFrSM4
*/

class App extends PApplet{
  PImage img
  def speed = 30
  def cnt = 0
  def pie = PI/3
  def transparent = 95
  
  def colors = [
    [255,0,0],
    [255,189,0],
    [148,240,0],
    [0,240,35],
    [0,240,214],
    [0,101,240],
    [72,0,240]
  ]
  
  void setup(){
    size(480,240)
    background(0)
    smooth()
    img = loadImage("bg.jpg")
  }

  void draw(){
    image(img,0,0)
    doing()
  }

  def doing(){
    def(x,y,r,start,end) = [
      width/2 as Float, 
      height, 
      width, 
      PI + (PI/speed)*cnt-pie as Float, 
      PI + (PI/speed)*cnt as Float
    ]
    
    colors.eachWithIndex(){c,i->
      def _r = r-(70*i)
      noStroke()
      fill(c[0],c[1],c[2],transparent)
      arc(x,y,_r,_r,start,end)
    }
    
    cnt = (start==TWO_PI)? 0 : cnt+1
  }
}

app = new App()
app.init()
new JFrame(title:"the flaming lips inspired",resizable:true).with{
  add(app)
  pack()
  defaultCloseOperation = JFrame.EXIT_ON_CLOSE
  resizable = true
  visible = true
}


ちなみに先日書いたようにschemeのlet*みたいなやつが使いたいってのは、↑のコードでいえば

    def(x,y,r,start,end) = [
      width/2 as Float, 
      height, 
      width, 
      PI + (PI/speed)*cnt-pie as Float, 
      PI + (PI/speed)*cnt as Float
    ]

のあたりのようなところ。startとendを決めてあげるにあたって、一気に書けたらいいのになという発想からでした。たとえば定義順をstart,endという順序ではなくて、end,startという順に定義するって方針、すなわちendからオフセット値を引いたstartを決めるというようにしてあげてできないもんなのかなと。

とはいえスケッチで遅延評価なんかとりいれるのは、オーバースペック気味な気もするので再帰する無名クロージャあたりでうまくやるしかないのかなーと思う今日この頃。みなさまいかがお過しでしょうか。

(つかなんでそこまでして一気に書いたいんだコイツはと思われるかもですが、じぶんはそういう生き物なのでしょうがありません)