Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Live Coding for Processing
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Type||Name||Latest commit message||Commit time|
|Failed to load latest commit information.|
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.