Some useful high level documentation lives here, this won't make much sense if you are reading this in a different place from the help system in the fluxus scratchpad app, but it might be useful anyway...




 Fluxus documentation
 "act of a flowing; a continuous moving on or passing by, as of a
 flowing stream; a continuous succession of changes"

 Fluxus is a realtime rendering engine for livecoding in Scheme.
 For more detailed docs, see: fluxus/docs/fluxus-documentation.txt

 The fluxus scratchpad has two modes of operation, the console
 (you are using this now) which allows you to enter commands and
 see the results immediately. The other mode is the editor which
 is more like a normal text editor - there are 9 workspaces,
 (which allow you to edit more than one script at once) switch to
 them using ctrl-1 to ctrl-9 and switch back to the console with

 To copy/paste examples, hit the right cursor until you move behind
 the prompt, navigate to the example, use shift to select it,
 press ctrl-c to copy, then ctrl-0 and ctrl-v to paste into a
 text buffer.

 More help topics:
 (help "keys") for keyboard commands for controlling fluxus
 (help "console") for more help on the console
 (help "editor") for more help on the livecoding editor
 (help "camera") for help on the camera controls
 (help "language") for more info on the fluxus commands
 (help "misc") for miscellaneous fluxus info
 (help "toplap") for the toplap manefesto
 (help "authors") who made this?




 Fluxus keys

 ctrl-f : Fullscreen mode.
 ctrl-w : Windowed mode.
 ctrl-h : Hide/show the text.
 ctrl-l : Load a new script (navigate with cursors and return).
 ctrl-s : Save current script.
 ctrl-d : Save as - current script (opens a filename dialog).
 ctrl-p : Auto format the whitespace in your scheme script to be more pretty
 ctrl-b : Show where cursor is.
 ctrl-1 to 9 : Switch to selected workspace.
 ctrl-0 : Switch to the REPL. F3 : Resets the camera if you get lost.
 F5 : (or ctrl-e) Executethe selected text, or all if none is selected.
 F6 : Completely resets the interpreter, then executes the selected text,
      or all if none is selected.
 F9 : Toggles scratchpad effects.
 F10 : Decreases the text opacity
 F11 : Increases the text opacity
 F12 : Pauses keypress file playback.




 Fluxus console (or REPL) ------------------------

 If you press ctrl and 0, instead of getting another script
 workspace, you will be presented with a Read EvaluatePrint
 Loop interpreter, or repl for short. This is really just an
 interactive interpreter similar to the commandline, where
 you can enter scheme code for immediate evaluation. This code
 is evaluated in the same interpreter as the other scripts, so
 you can use the repl to debug or inspect global variables and
 functions they define. This window is also where error
 reporting is printed, along with the terminal window you
 started fluxus from.




 Fluxus editor

 When using the fluxus scratchpad, the idea is that you only
 need the one window to build scripts, or play live. f5 is the
 key that runs the script when you are ready.  Selecting some
 text (using shift) and pressing f5 will execute the selected
 text only. This is handy for reevaluating functions without
 running the whole script each time.


 The script editor allows you to edit 9 scripts simultaneously
 by using workspaces. To switch workspaces, use ctrl+number
 key. Only one can be run at once though, hitting f5 will
 execute the currently active workspace script.

 Auto focus

 The editor includes an auto scaling/centering feature which is
 enabled by default. To disable it - add the line:
 (set! fluxus-scratchpad-do-autofocus 0)
 to your .fluxus.scm file - or create a new file called that in
 your home directory, containing that line.




 Fluxus camera control

 The camera is controlled by moving the mouse and pressing
 mouse buttons.

 Left mouse button: Rotate
 Middle mouse button: Move
 Right mouse button: Zoom




 Fluxus init script
 Fluxus looks for a script in your home directory called
 .fluxus.scm which it will run if it is found. This is useful
 for putting init commands (like connecting to jack or setting
 the help text language etc)

 Frame rate throttling
 By default fluxus throttles the framerate to around 40fps.
 to disable this (and run at 100% cpu), use desiredfps with
 some arbitrary large number:
 (desiredfps 100000000)
 To display the fps use (show-fps 1)

 Command line options
 The easiest way to load a script into fluxus is to specify it on
 the command line, eg:
 $ fluxus myscript.scm
 Will launch fluxus and load the script into the editor.
 $ fluxus -x myscript.scm
 Will launch fluxus, load, hide and execute the script.
 Use -h to print all commandline options.

 Fluxus also contains a keypress and mouse event recorder for
 recording livecoding sessions:
 $ fluxus -r filename : record to keypresses file
 $ fluxus -p filename : playback from file
 $ fluxus -p filename -d time : seconds per frame time override for
                                playback (for use with frame-dump)




 Glauber Alex Dias Prado
 Artem Baguinski
 Dan Bethell
 Nik Gaffney
 Dave Griffiths
 Claude Heiland-Allen
 Alex Norman
 Gabor Papp
 Fabien Pelisson
 Jeff Rose
 James Tittle
 Scott Watson

 "Computers are useless. They can only give you answers".
     Pablo Picasso (1881 - 1973).




 Language Docs

 Fluxus is comprised of a set of functions which
 extend Scheme for use in realtime computer graphics.

 Scheme itself is out of the scope of this documentation,
 but fluxus is a good way of learning it. I reccommend
 "The Little Schemer" by by Daniel P. Friedman and Matthias

 The functions are grouped into sections to make things
 a bit easier to find.

 (help "sections") for a list of all sections
 (help "sectionname") to find out more about a section
 (help "functionname") to find out more about a function

 The idea is that you can find a function you are interested
 in by doing something like this:

 (help "sections")
    ... list of sections ...
 (help "maths")
    ... description and list of maths functions ...
 (help "vmul")
    ... details about the function with example ...




  * Give us access to the performer's mind, to the whole human
  * Obscurantism is dangerous. Show us your screens.
  * Programs are instruments that can change themselves
  * The program is to be transcended - Artificial language is the way.
  * Code should be seen as well as heard, underlying algorithms viewed
    as well as their visual outcome.
  * Live coding is not about tools. Algorithms are thoughts.
    Chainsaws are tools. That's why algorithms are sometimes
    harder to notice than chainsaws.

 We recognise continuums of interaction and profundity, but prefer:
  * Insight into algorithms
  * The skillful extemporisation of algorithm as an
    expressive/impressive display of mental dexterity
  * No backup (minidisc, DVD, safety net computer)

 We acknowledge that:
  * It is not necessary for a lay audience to understand the
    code to appreciate it, much as it is not necessary to know
    how to play guitar in order to appreciate watching a guitar
  * Live coding may be accompanied by an impressive display of
    manual dexterity and the glorification of the typing interface.
  * Performance involves continuums of interaction, covering
    perhaps the scope of controls with respect to the parameter
    space of the artwork, or gestural content, particularly
    directness of expressive detail. Whilst the traditional
    haptic rate timing deviations of expressivity in
    instrumental music are not approximated in code, why repeat
    the past? No doubt the writing of code and expression of
    thought will develop its own nuances and customs.

 Performances and events closely meeting these manifesto
 conditions may apply for TOPLAP approval and seal.