GAmuza | Hybrid Live OF Sketching IDE

https://github.com/d3cod3/GAmuza
http://www.gamuza.cc/

I’m happy to announce the last release (0432) of GAmuza, now a complete “Processing like” OF sketching IDE.

The original idea was to make creative coding easier; then, usually jumping from Processing to OF, always trying new libraries/addons, the desire was, having OF with a Processing like IDE, + a bunch of GUI modules to avoid the technical programming stuff like Computer Vision, Audio Analysis, Arduino communication, etc…

So, this is it, this is GAmuza, made with OF, inspired by Processing, binding the (almost) entire OF language v.0.7.4 with his official addons included, the entire OpenGL 1.1 language, a bunch of other addons (list here), and the small GAmuza framework of functions and GUI modules to make creative coding a lot more easier, all of it embedded into a slight modified Lua scripting environment.

MAIN FUTURES

  • Line Numbering

  • Syntax Coloring

  • Code Completion

  • Multi Tab sketch editor (Processing like)

  • Live Coding

  • Various GUI Modules (Audio Analysis, Computer Vision, Arduino, Timeline)

  • Various tools (RGB/HSV Color selector, Custom Console)

  • AU Audio Unit plugins (FX only) host

  • libPD integrated (ofxPd addon)

  • Auto Updating system using Sparkle Framework (http://sparkle.andymatuschak.org/)

LANGUAGE

An example code:

  
  
/*   
  
 GAmuza 0432 examples  
  
 Draw a flicking circle over mouse position.  
  
 created by n3m3da | www.d3cod3.org  
  
*/  
  
function setup()  
    ofSetCircleResolution(50)  
end  
  
function update()  
  
end  
  
function draw()  
    gaBackground(0.0,1.0)  
  
    ofSetColor(255)  
    ofCircle(gaMouseX(),gaMouseY(),ofRandom(20,200))  
end  
  

GAmuza scripting language is based on LUA, integrated in OF with a modified version of ofxLua addon; a patched version of LUA 5.1 is compiled as a static library, and the entire binding of OF 0.7.4 with all the ofxAddons is made through LUABIND, while the binding of OpenGL 1.1 is coded directly from LUA using luaglut.

These are the most important LUA 5.1 patches

  • C/C++ style comments

  • Compound Assignment Operators

  • Accepts both ~= and != for comparison

  • Lua Bit Operation Module http://bitop.luajit.org/

BINDINGS

LUA language

LUA 5.1 programming environment reference here: http://www.lua.org/manual/5.1/manual.html

OF 0.7.4 language EXCLUDING:

  • ofArduino --> managed from Arduino GUI module + GAmuza framework related functions

  • ofSoundStream – managed from AudioAnalysis GUI module + GAmuza framework related functions

  • ofLog, ofLogFatalError, ofLogError, ofLogVerbose, ofLogWarning, ofLogNotice --> covered by GAmuza console panel

  • ofPoint --> use ofVec3f instead

  • ofRendererCollection

  • ofEvents

  • ofPtr

OF 0.7.4 official addons

others OFXADDONS, a list here: https://github.com/d3cod3/GAmuza/blob/master/bindedAddons

GAmuza framework, details here: https://github.com/d3cod3/GAmuza/blob/master/gaFunctionsList

OPENGL 1.1, language reference here: http://www.talisman.org/opengl-1.1/Reference.html

MODULES

ARDUINO

AUDIO ANALYSIS

COMPUTER VISION from cameras (wrapped within a class and available from code)

COMPUTER VISION from Kinect (wrapped within a class and available from code)

TIMELINE

REFERENCE AND CODE EXAMPLES

GAmuza comes with more than 200 examples included in the software (the same structure as Processing, in file->examples you’ll find examples ordered by topic)

Reference is available in the project page www.gamuza.cc, i’m on the process of updating all the new reference from the older release
For a detailed information about the entire binding available inside Lua scripting system you can take a look here: https://github.com/d3cod3/GAmuza/blob/master/src/GAmuza/gamuzaWrapper.h

COMPATIBILITY

This last release of GAmuza is available only for OSX, starting from 10.7

THANKS TO

The Entire OF community, the forum, the ofxAddons creators and all the people on internet that use to share their ideas & their code, thanks everyone.

4 Likes

well - this redefined the word “epic” for me :slight_smile:

Amazing work!

wow

omfg

wow

is this real?? Amazing work!

This is a dektop recording video using GAmuza:

http://vimeo.com/73931222

enjoy!

wow, that is insane, great work! :slight_smile:
one thing though, considering OF goes to great pains to be cross-platform, this being macos-only makes me a sad panda…

Hi bilderbuchi, thanks to comment it, this is actually a really important issue i’ve always considered during the developing, right now this is the simplified situation for GAmuza, regarding the cross-platform:

The software structure is divided into three main parts:

  • Script Editor (the Processing like IDE).
  • OF 0.7.4 with a small patch (available from the GAmuza github page) + a bunch of ofxAddons, and all his binding for the scripting language, all glued together.
  • the GAmuza Frameworks and all the custom code for all the rest of the stuff available in the software (modules, integration, etc…).

An important point is that to obtain his multi window environment, GAmuza is designed over a slight modified ofxNSWindower addon version: https://github.com/d3cod3/GAmuza/tree/master/src/experimentalAddons/ofxNSWindower

Point 2 and 3 are really easy to port to windows and linux just because are written in OF so, apart from some addons that are not available for WIN or LINUX, the port will not be hard (actually i’ve the 70% of this parts ported to LINUX).

Point 1, and the multi windows environment, is the real issue because is developed in Cocoa, so the point here is make a copy of the editor in VisualStudio for WIN and another one in GTK for LINUX, + develop a multiwindows addon for WIN and for LINUX to have the same capabilities available in the ofxNSWindower addon for OSX

So i’m open to collaborations, just to speed up the process and if someone is interested in help with the software, i’m looking for help for the point 1, the redeveloping of the script editor for WIN and for LINUX and the multi windows environment.

Just to comment it, for GAmuza my goal was the the best performance and stability as possible (right now GAmuza with no script running is less %CPU then processing IDE without script in play), because of this the integration of OF with COCOA in OSX and the idea of integrating OF with GTK in LINUX, and with VS in WINDOWS.

I see, this makes sense.
Regarding the small patch to OF, is this something that would be useful for us to integrate upstream (i.e. a bugfix or useful featur), or is this something really specific to Gamuza?

regarding the multiwindow environment, you’ll probably be glad to hear that cross-platform glfw multiwindow is actually either in OF already (0.8 or current master), or on the way in. arturo or underdoeg will know better the current status of it.

Regarding the of patch, is just a few modification:

  • Added separated setInDeviceID and setOutDeviceID in ofSoundStream and ofBaseSoundStream
  • the ofxNSWindower patch --> here in the readme: https://github.com/whg/ofxNSWindower
  • Added setFromCvColorImage for ofxCvGrayscaleImage in ofxOpenCv addon (in ofxCvGrayscaleImage class)
  • Modified dilate() and erode() to apply them N times in ofxOpenCv addon
  • Added ofBuffer position access (get/set) (in ofFileUtils)

the patch here: https://github.com/d3cod3/GAmuza/blob/master/GA-ofPatch.patch

I’ll take a look at the glfw multiwindow, but anyway, someone with experience in GTK or VS will be really helpful for the editor part, i’ll post the news about the topic.

Amazing project! I’m having a lot of fun with it, one little thing I’ve missed so far is an auto compilation feature. Why not ?

Edit: also, I don’t seem to get code completion on OS X 10.9

With auto compilation you mean automatically export and compile the sketch code into an executable app?

or just auto refreshing the execution of code while typing?

have you tried the code completion with ‘esc’ or F5? or both?

i’m glad you’re having fun with it

[quote=“n3m3da, post:10, topic:13204”]
With auto compilation you mean automatically export and compile the sketch code into an executable app?

or just auto refreshing the execution of code while typing?[/quote]

Oh, I just mean automatically refreshing the execution, aka Cmd+K. Wouldn’t it be cool to have it going on automatically, like in GLSL sandbox?.. It’s really handy this way when you tweak your constants.

Yeah, it works this way. Was a bit of a surprise for me after Xcode/Eclipse where it appears without any hotkey. In fact, I’d like to see an option to make it appear every time you type something.

Anyways, this project totally rocks. Well done!

BTW, what do you think of tweaking the text editor module? I imagine how cool it would be if in the future it’ll look a little bit more like Sublime Text…

This looks dope!

Amazing project, well done !

It’s really a powerfull tool to learn code and a good way to start OF with a native IDE.

Hey this is awesome! i’d like to see this one day on linux or at least on windows OS, because i’haven’t a mac…

but i discovered this ,does anyone tried it ?

i tried a month ago in linux 64 bit, i opened a issue but i don’t yet received an answer, maybe someone else has tried or had more luck with it…

Hey, all-

Loving GAmuza! Is anyone here using it on a regular basis? It seems like such a useful tool- I’m just wondering if anyone has battle-tested it yet. I’m also wondering a few things:
• has anyone tried using an external editor with it yet? the autocompletion doesn’t seem to work when you’re calling a function of an object, and error-checking would be nice.
• How do you get the timeline to save? ofxTimeline has save() and loadFile() methods…
• Would it be possible to selectively run chunks of code, or have it update functions without re-running setup()? I think yeswecan was talking about this sort of feature, too…

Thanks- would love to know your experiences!

: j

hello all~
I’m use Ubuntu-12.04.4-amd64 but have problem
of_0071_GAmuza64/libs/openFrameworksCompiled/project/linux64/Makefile
of_0071_GAmuza64/scripts/projectGenerator/config.make
of_0071_GAmuza64/apps/n3m3da/Gamuza0399/config.make
all need Remove -march=native -mtune=native
do up there can run compile!
and
/of_0071_GAmuza64/apps/n3m3da/Gamuza0399/GAmuza.workspace
workspace inside title"opencv"??? need fixed “GAmuza”
and GCC ++ need more memory to make Release (less 2G)
now i have new problem…
ext._ZN15ofAbstractImageD2Ev’ referenced in section .text._ZN15ofAbstractImageD1Ev[non-virtual thunk to ofAbstractImage::~ofAbstractImage()]' of ../../../libs/openFrameworksCompiled/lib/linux64/libopenFrameworks.a(ofImage.o): defined in discarded section.text._ZN15ofAbstractImageD2Ev[_ZN15ofAbstractImageD5Ev]’ of …/…/…/libs/openFrameworksCompiled/lib/linux64/libopenFrameworks.a(ofImage.o)
collect2: ld returned 1 exit status
make: *** [bin/Gamuza0399] Error 1