-- Thingee Quicknotes.
-- Amy Alexander, deprogramming.us, Jan 05
-- deprogramming #!at!# deprogramming.us

What is Thingee?

A live coding VJ-tool. A performance quine. Or something.

Thingee is a livecode editor and VJ instrument - both at the same time. You type the code on 
the screen, and it actually executes the code as you type it, but all the visuals are made of 
the onscreen code too. This makes it sort of a quine - a program whose execution displays its 
own source code. It generously abuses the concept of feedback; in this case, the whole 
thing's a feedback loop anyway. This is somehow reassuring because the concept of video 
feedback in digital VJ tools always disturbs me a little - since computers have no optics 
they can't "see" their own output as did the original video feedback with cameras. I lie 
awake nights worrying about that.

Although publicly distributed, Thingee is at the moment primarily for my own somewhat goofy 
livecoding performances with TOPLAP (see http://toplap.org. I've got things worked out now so 
it doesn't crash when I type illegal code in. However, there's still plenty of room for me to 
make a fool of myself in performance, as I occasionally type things by accident that make the 
code-boxes go whizzing around out of my control and then I have to try to "catch" one to make 
it stop. (I am working on a "panic button" implementation - but of course it's much more 
entertaining if I at least *try* to catch them.

Some more details: there are currently six code-boxes (editors) on the screen, plus two 
buffers which can take images of the app or the whole screen for feedback purposes. You can 
type a one line command or a many line snippet in each box, assuming enough space - the box 
will expand, up to a point. Of course, you could type some livecode to make the font smaller, 
and that would give you more room. The idle loop will execute the code in any or all of the 
code-boxes that end with a semicolon at a given moment; the code takes effect as soon as you 
type the semicolon. Thinking of performative speech and performative code - it's kind of neat 
(I think) to see the *semicolon* actually perform what it does! (and also will be a funny 
inside joke to people who know that Lingo doesn't use semicolons like all those "difficult" 
languages. :-) ).

To make it a bit more kinetic for live performance (less longhand typing, and in some cases 
easier for audience to understand the algorithms) there's also a custom ThingeeLanguage - a  
shorthand grammar with commands like bigify, smallify, etc. Though I'm not a fan of most one 
to one audio-visualizer approaches, Thingee also supports the obligatory audio input, so 
you can visualize audio through whatever means you like. (I prefer making it change the 
font size of the code.) Moreover, like Thingee's cousin, CyberSpaceLand, Thingee supports
operation through FIFOSY: FIFOSY Is Foot-Operated Software You Know. 

Why?

Well it's fun, and my goofy contribution to the TOPLAP livecoding performance without a net 
ensemble. But there are serious things to think about too. I'm interested in a) how work 
paradigms have lately overcome popular culture: Game parlors that look like offices, 
nightclub performances that look like database programming. Is it the new Newspeak? If 
we always act like we're at work, will we be able to think like anything but employees? 
Or will we just be boring? b) software literacy - The Algorithm is The Message. Software 
has an ever-increasing influence in culture - and algorithms are the highly subjective, yet 
often invisible, means of achieving this influence. If we can start to reflect on algorithms 
in club music 
and visuals, we're on our way to better critical reflection of algorithms in software used 
for far scarier stuff: political influence, economic influence, etc.


Related links:
http://toplap.org/?node=Read_Me%20Paper
http://toplap.org/?node=ThingeeLanguage
http://toplap.org/?node=LivecodingIsNotSynaesthesia
http://deprogramming.us/perfs/
http://cyberspaceland.org


Thingee command very quick reference. 
-- For more details, please read the source code or just
-- play around with it.

If you don't even want to code, just move the mouse around with the left button down, and/or, 
plug in a gamepad, joystick, or dancepad, and do things.  You can also type random
things in the boxes.

If you do want to code: 
Type Lingo into the boxes, or the following ThingeeLanguage commands. Type a semicolon 
as the last character in the box when you are ready to have it execute. If you type
some code that doesn't parse, Thingee will delete the semicolon so you can try again. 

Sprite numbers can be 10 - 15.

bigify (sprite, quantity)

biggify (sprite, quantity)

smallify (sprite, quantity)

grabstage (whatsprite) 
-- grabs the stage into the sprite for feedback 

grabscreen (whatsprite)
-- same as grabstage

grabdesk 
-- not currently used. for grabbing the desktop

rotify (whatsprite, whatspeed)

skewify (whatsprite, whatspeed)

colorify (whichsprite, r, g, b)

colorall (startsprite, endsprite)

colorbg (startsp, endsp)

colorbgall

colorallbg 
-- same as colorbg

whatsmynumber
-- displays the sprite number of the editor you're typing in. Ranges from 10-15.

fontify (asize, asprite)
-- sets fontsize

letitallhangout
-- does a whole bunch of chaotic stuff

define 
-- allows you to define new commands on the fly. these will stay available
-- until you quit the thingee.


-- these next three are for getting stuff back to normal
panic

resetcodesprites

fillcode


--
If you want to do stuff with the incoming audio level, use the global variable "audio."

For example: 
	sprite(15).member.fontsize = audio;
Would make the code in onscreen editor 15's fontsize grow and shrink along with the music.

Another example:	
	repeat with i = 10 to 15
		sprite(i).member.fontsize = audio
	end repeat;
Would make all the code editors fontsizes dance to the music... 



---
Hotkeys:

~ resetcodesprites
/ panic
[ switch joysticks from #1 to #2
shift key will flash the editors colors a bit.

Gamepad buttons also do things, and it's possible to program some of them
to execute code, but please read the source code if you want to do that (joytake);
it's a bit much to explain here.





