Live Coding for Processing
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
internal_assets
lib
src
.classpath
.project
README
build.xml

README

Per4Ming- A performance-oriented live-coding environment built with the Processing
framework and the Java/Groovy language.

Author- Chris Kairalla (www.chris3000.com)

Compatibility: Per4Ming has been tested on exactly one machine, a recent MacBook Pro
with Mac OSX 1.6 (Snow Leopard), Java 1.6 , Groovy 1.8, and Processing 1.5.
It may run on Linux, and will probably not run on Windows at the moment.  Per4Ming is
in development mode. It has lots of known bugs and is highly unoptimized.  It's also not
feature complete.  For all I know it will destroy your hard drive, crash the electrical
grid, and run away with your spouse.  If you really want to try Per4Ming, by all means, be
my guest.  Just know that it is not ready for Prime-Time yet, and I accept no responsibility
for any unknown weirdness.

Compiling: Per4ming was coded in Eclipse with the Groovy 1.8 plugin.  Your best bet is to 
check out the code into Eclipse and run from there.  There's no ANT scripts or any other
automated builders at the moment.  There's a pre-compiled OSX app under "Downloads" that 
should run on most modern Mac machines, but I can't guarantee that it will behave properly.
CAVEAT EMPTOR.  

Preferences.
	There isn't much to change right now.  In fact, I'd pretty much leave
	the defaults alone.  You can set the rendering screen to full screen, and you can turn
	on / off the audio parsing.  Anything else may or may not work as expected.

Code editor.
	Main Text Area:
	Write your code here.  the code in the draw method will run at the set frame rate.
		Option-Enter will send the current text area to the compiler.
		Command-i will auto-indent the current text area
	
	"Run Once" text area:
	Run-Once is for running a block of code once, and not in a loop.  It's useful for
	constructing and initializing classes and properties.
		Option-Enter will send the current text area to the compiler.
		Option-Left will go back to the previously run text block
		Option-Right will go to forward to the next text block.
	
	Properties text fields:
	You can create or modify a property in these text fields.  Hitting enter or leaving
	the field will send the line to the compiler.
	
	Class list:
	Hit the New Class button to create a new class.
		Option-Enter will send the current text area to the compiler.
		Changed code will not update in currently running instances of the class.
		You will have to reconstruct the class to see the updates.
		Class constructors do not have a space between "new" and the class name.
		For example if you had a class called Ball that took 2 ints as args,
		you would not type ball = new Ball(10,20).
		You would type ball = newBall(10,20)
		This is because Per4ming doesn't currently add your new class to the classpath,
		so a new method is created called new<Your Class Name>().  That method will
		return an instance of that class.
		
Built-In properties.
	showText=true/false - you can change this on the properties field to toggle the
	text.
	audioLevel=<current audio level> - This value represents the "loudness" of the
	audio.  This is the same as calling aud.getMix.levels(), and is set on every frame.
	
Coding:
	You should be able to use any of the core API from the processing library.
	http://processing.org/reference/
	Groovy shortcuts like closures, .times, .each, and so on, should work.  You can
	always fall back on to straight up Java.
	
gotchas:
	x and y cannot be defined as global properties using the Properties text fields,
	but they can be used as local variables inside a method.
	
	You MUST have a draw1 method in the main class.
	
	You may encounter some processing methods that throw an error because it thinks
	you're trying to pass in a Double instead of an int or float.  This is because of
	Groovy's desire to do all calculations as Double.  You can work around this by adding
	"as float" at the end of your calculation, like "(0.25/4) as float".  I've made
	convenience methods that smooth over this incompatibility for some of Processing's
	most used methods like ellipse, rect, random, and some others, but many other
	methods will throw an error if you're doing any calculations to float values.

Acknowledgements:
	Per4ming is influenced by the Fluxus Live Coding environment (http://www.pawfal.org/fluxus/).
	Per4ming uses the Processing graphics library for its visual rendering (http://processing.org)

LICENSE:	
	Per4Ming by Chris Kairalla is licensed under a Creative Commons
	Attribution-NonCommercial-ShareAlike 3.0 Unported License.
	You may use this software, and you may modify this software, but you must
	allow others to modify your work and you must attribute original authorship to
	Chris Kairalla.  This license only covers code in the com.chris3000.* packages,
	and does not apply to any code used by Processing, Apache, or Groovy.