おれおれプレゼン用Groovyコード「Orenote」

なんどか同じようなコードを書いているのですが,昨日の珍幹線で書いたやつです.吹き出しバブルは手書きで書いてスキャンしました.

Orenote from nbqx on Vimeo.

今週末から来月にかけてLTしたり客先プレゼンする機会が何度かあるし,ガッツリとスライドつくったりするのも得意ではないのでキーワードになることばを並べていくっていうじぶんのつかい方だとこれぐらいの機能で必要十分なのです.

ちなみにコードを見ていただければわかるのですが,背景の色は音量で変化します.つまりお話が盛りあがれば色がどんどん変わるというしくみです.それからoキーでジョブスが出てきます.なんとなく期待が大きそうな・すごいっぽそうなことをいうときに出しておくと注目されるかもしれないのでつけておきました.

何度かGrocessingのプレゼンコードを書いてるってのは,世にあるプレゼンソフトには絶対に実装されない機能を実装したくて書いちゃ消し書いちゃ消しをくりかえしてるわけです.実装したい機能ってのは,たとえばこんなかんじ.

あ,あとGrocessingコードをフルスクリーン表示するやつをつかっておりますので詳しくは以前の記事をご覧ください.以下今回のコードです.

import processing.core.*
import ddf.minim.*
import org.tritonus.share.sampled.FloatSampleBuffer
import static Fullscreen.*

class Orenote extends PApplet{
  String txt
	def num = 0
	PImage img
	PImage jobs
	def jobs_mode = false
	PFont font
	Minim minim
	def input
	
	def slide = [
		"お世話さまです",
		"nbqxです",
		"Orenoteは",
		"Processing.orgと",
		"Groovyによる",
		"まったく新しい",
		"画期的な",
		"プレゼンアプリです",
		"ウソですが",
		"Yes, Orenote!!",
		"One More Thing...",
		"Jobsモード搭載",
		"oキーでtoggle",
		"Keynoteなんて",
		"知らないよ",
		"おしまいです"
	]

  void setup(){
    size(320,240)
    smooth()

		font = createFont("AxisStd-Medium",100)
		img = loadImage("bubble.png")
		jobs = loadImage("onemorething.png"); //186x241

		minim = new Minim(this)
		input = minim.getLineIn(Minim.MONO,32)
  }

  void draw(){
		noCursor()
		def val = input.mix.level()*1000 as String
		colorMode(HSB, 256)
		background(val as Float, (mouseY/height * 256) as Float, (mouseX/width * 256) as Float)
		image(img,0,0,width,height)
			
		textFont(font)
		txt = slide[num]
		def _tw = textWidth(txt)
		
		smooth()
		fill(0)
		text(txt, width/2 - _tw/2 as Float, height/2 as Float)

		if(jobs_mode){
			image(jobs, 0, height-241 as Float)
		}
  }

  void stop(){
    super.stop()
  }
	
	void keyReleased(){
		//println(keyCode)
		if(keyCode==37 || keyCode==38){
			num = num-1
			if(num<0){
				num = 0}}

		if(keyCode==39 || keyCode==40){
			num = num+1
			if(num==slide.size()){
				num = 0}}
		
		//press 'o' one more thing...(jobs mode)
		if(keyCode==79){
			jobs_mode = (jobs_mode==false)? true : false}
	}
}

app = new Orenote()
app.init()
Fullscreen.view(app)