Generative Art with AS3 and Adobe Air

Hi everyone,

First post! It’s great to see people using AS3!

I worked a lot with ActionScript during the Flash decade and recently (last few years) returned to it when looking for a language and ecosystem to work on some generative art projects.

I wound up leaning heavily on Adobe Air which allowed me to leverage my years of ActionScript experience to create tooling on the desktop (Windows 10) and build 64-bit captive runtimes so I could access as much memory as possible allowing me to produce very large (A0+) art works.

This is, of course, not unique to Air (Processing is awesome!) but I have found Air a real pleasure to work with on the whole.

I think probably 95% of all the work I have produced has been done with AS3 and Adobe Air, you can see all the work here:

https://www.tobyskinner.co.uk

I continue to work with Air and AS3 on new Art projects and hope I can share them here in the future.

Thankyou for the community!

Toby

6 Likes

Hey @tobyski
and welcome to the forum

as a first post, all that are pretty cool stuff :slight_smile:

so yeah don’t hesitate to share when new projects come around

personally I would be interested to talks around the setup for those projects
you mentioned “very large (A0+) art works”

do you deal with single screens? multiple screens? special hardware display?
did you hit limit for high resolution size with AIR? or used trick (hardware scaling)?
do you adopted techniques to test on your local machine before deplying to a huge screen or something?

I don’t ask all yoru secret sauce but just good starting advices if dev around here want to do similar projects

I don’t do much of those kind of kiosk/screen app anymore but I did couple of stuff in the past (for ex: https://www.theoneoff.com/projects/sky/)

and out of the blue, not sure in which context you do those projects
have you explored Android TV / tvOS to have those generative arts running on tv?
you know like screen savers

Hi @zwetan thanks for the reply!

My main aim (usually) is to generate a 300dpi PNG suitable for printing, an A0 print (for example) requires an image at least 9933 x 14043. This typically is about 75mb.

Using Air to produce a 64 bit captive runtime allows me to access as much memory as I need and at that point I am limited only by the native Air canvas size limitation (I seem to remember getting up to about 21k x 21k before killing it).

Note: At this point if I really need to go larger then I generally code the algorithm to be deterministic from a seed, I then either run the algorithm multiple times with the same seed and generate each tile in turn or I can run multiple instances of the program in parallel.

When prototyping a piece of work I scale everything down so I can just run and debug direct from Flash Develop, when it’s looking about right I then scale it all up, compile and export as captive runtime and then produce the final render there. Making Graphics calls (i.e. lineStyle etc) that work well at both very low and very high resolutions is always a challenge, this it typically achieved by iterating the scale slowly upwards and tweaking as I go.

A large part of the artistic process is exploring the very large parameter space in which the art exists, as such I tend to wind up with lots of NativeWindows crammed full of controls that let me adjust the algorithm in real time.

BitmapData processing is often also offloaded to a worker to keep the main thread stable, this requires a little forethought into how the algorithms are coded etc to ensure it’s all nicely modular etc.

I make extensive use of the Hurlant AS3 Eval library to allow me to code AS3 directly into the running program (usually for more complex realtime config, changing equations at run-time, number generators etc).

I’ve embarked on a few installations that target screens but nothing fancy beyond leveraging the Screen and NativeWindow objects to span screens etc. To date I’ve not needed to do anything more than that and generally I have to keep the canvas size scaled right down and then scale the bitmap data up to the screen resolution just to get things running at a reasonable frame rate.

Hardware acceleration is on my todo list :smiley: It’s not usually a problem since I don’t often do real-time stuff but I’m interested at least in learning the trade offs.

I’m actually in the middle of working on a screen saver as part of a larger project so funny you should mention it! That will let the end user choose resolution and canvas scale (along with 1 or multiple screens) and it should be quite nice I think.

Anyway, I hope that answered some of your questions!

Cheers

Toby

1 Like

for the records, I’m just making the conversation
eg. my questions are not things I really need like now but just interesting subjects to talk about

so for the sake of the convo here few comments

that’s a great technique, even would be worth a tutorial for dev who never done that
you can do so many things with deterministic algorithm :slight_smile:

here some illustration I saw recently

Shan, Shui: Procedurally generated Chinese landscape painting
(seen and comments on HN)

totally make sense
funny parts are changing some params like “line thickness” related to all that

make sense too

so yeah that Metal Hurlant AS3 Eval (see here for those who don’t know it http://eval.hurlant.com/)

another thing that work great is combining that (a script compiler) with workers
or using as3swf to export shape and other things

and you were talking about processing earlier
so let mention 2 books

7a3dd0988a0cd215b6e30024039bd515-d
Processing: Creative Coding and Computational Art

and

2600a110c399a8646feecc58953d027d-d
The Essential Guide To Processing For Flash Developers

respectively DOI 10.1007/978-1-4302-0310-0 and DOI ``
for those who knows https://sci-hub.st/ :wink:

there were an AS2 port of processing long time ago but can not find it anymore

and I saw some AS3 experiments this and there, for example
Processing “FireCube” example ported to ActionScript 3.0

anyway…

I do think tvOS and Android TV are under exploited and AIR can target those, so could be a nice niche to explore that’s all

so far I had setup to work on tvOS and Android TV as some pet/hobby projects
but lol after 2 years not much progress (yeah time is sparse) I think I can put those in the category “0% done” haha

so I play a bit with that when time allows but not much

1 Like

Hello Toby,
welcome to the resistance!
I am working too on generative art projects with AIR.
I find it more versatile and distributable than other technologies such as processing or Touch Designer.
I can’t share what I am doing right now since it is still top secret but I will soon :slight_smile:
Love u guys

2 Likes