Fugio Friday – 21st October 2016

Happy Fugio Friday!

This last week I went down to Cornwall for a meeting at Eden Project that I am one of several artists and many scientists who are were called on for some advice for a large project they’re working on.

It was also a great opportunity to check on the status of the interactive Fugio powered installation “The Human Super Organism” that I installed as part of their Invisible You permanent exhibition.

The Human Super Organism

Eden Project gets around one million visitors a year, so it’s an amazing opportunity to see how Fugio copes with that level of activity.  I’m happy to report, other than someone managing to steal the Leap Motion sensor (we’ve locked it down now!), the installation has run perfectly since it was installed, so I’m chuffed about that!

As well as giving a talk about my art practise and Fugio as part of Lewes Light last week, it’s been a busy week with no time for programming, so no Fugio updates this week.  I’m off to Cambridge next week and should have some time for something new…

Have a good week!


Fugio 1.9.0 – Leap Motion and XInput

Happy Fugio Friday!

I’m back from California, somewhat jetlagged, with two new Fugio plugins!

Download Fugio 1.9.0 for Windows and macOS (get the source code)

The Leap Motion controller picks up the positions of your hands in space. It’s supported on Windows and macOS. I used it for this Theremin inspired synthesizer patch:

The Leap Motion plugin doesn’t support finger positions yet – this will be added in a later update.

The XInput plugin brings the Microsoft XBox controller into Fugio (on Windows).  It supports four devices simultaneously.

Along with the compiled Kinect plugin from last week (again, Windows only) we have a new range of exciting input devices to play around with.

Obviously two of these plugins are Windows only, which is due to the fact that the hardware is built by Microsoft, but I have Kinect support for macOS coming too via OpenNI.

I’ll be speaking (in part) about Fugio at the Lewes Light festival conference today.

Next week I’m off to Cornwall for a couple of days as I’m on an advisory panel for something exciting at the amazing Eden Project.


  • Leap Motion plugin
  • XInput plugin
  • MatrixInverse and MatrixOrthographic nodes


  • New options in serial port configuration


  • GL_INT_SAMPLER_2D had disappeared from ShaderCompiler
  • Rendering to depth textures
  • OpenGL command line option to open windows full screen


Fugio Friday – 7th October 2016

Happy Fugio Friday!

This week I’ve been in Los Angeles and Irvine.  The opening of the Embodied Encounters exhibition went really well, with Shadows of Light (my interactive, Fugio based installation) having lots of attention.

The exhibition is open until January 21st, 2017 at the Beall Center for Art and Technology.

Alex May with exhibition curators Simon Penny (left) and David Familian (center)
Alex May (right) with exhibition curators Simon Penny (left) and David Familian (center)

I gave a talk about Fugio and my art practise to students at USC Cinematic Arts:

And another talk to students at UCLA:

I’m back in England next week, teaching my new Digital Media Arts MA students at the University of Brighton, and giving another talk at the Lewes Light conference.

Fugio Friday – 30th September 2016

Happy Fugio Friday!

This week I’m in Irvine, California installing of my Fugio based artwork “Shadows of Light” at the Beall Center for Art + Technology.  The exhibition “Embodied Encounters” is open from October 1st 2016 to January 21st 2017 and features work by seven international contemporary artists.

There is an opening reception on Saturday, October 1st, 2-5pm – I’ll be there!

As I’ve been busy doing that, and the V&A show last weekend, there is no binary release this week, but there are some goodies to be had in the source code, if you’re compiling along at home:

  • NEW Kinect plugin (Kinect version 1 for Microsoft Windows only)
  • NEW MatrixInverse and MatrixOrthographic nodes
  • UPDATED Serial Port device configuration with many more options
  • FIXED rendering to OpenGL depth buffers
  • FIXED missing GL_INT_SAMPLER_2D support from ShaderCompiler
  • FIXED OpenGL command line option to make windows full screen

I’m not expecting to do a Fugio Friday next week as I’m taking a sort of holiday after the show opens, but I’ll be around to answer questions and such.

Fugio 1.8.0 – Serial port and Firmata plugins

Arduino Uno

Happy Fugio Friday!

Today we have two new plugins that enable Fugio to talk to hardware that uses a serial port interface, which includes the Arduino range of open source hardware (like the Arduino Uno above), which means that we can control LED lights, motors, servos, and use sensors for touch, magnetism, temperature, and many more!

The serial plugin handles the raw data communication between the Arduino and Fugio, and can be used to implement any kind of custom protocol between the two, but we can go one further and use the rather nice Firmata plugin to talk directly to the Arduino pins without writing any Arduino code at all.

Download Fugio 1.8.0 for Windows and OS X

Get the source code on GitHub

I haven’t had time to do a tutorial video (yet), but here’s some pointers to get you started:

Setting up a Serial Port

  • In the new Devices menu, choose Serial Ports
  • Add an entry for your Arduino.  Make sure you choose the right port, and set the baud rate (the speed the serial port will work at) to 57600 (bits per second)
  • Remember to press the Enable button for the entry you’ve just added

Arduino Serial Configuration

Reading from the Arduino (without Firmata)

Upload the following code to your Arduino:

void setup()
  Serial.begin( 57600 );
  while( !Serial )
    // wait for serial port to connect.

void loop()
  Serial.println( "Hello, World!" );
  delay(1000);              // wait for a second

Create the following:

Fugio reading from Arduino

And use the following Lua program:

fugio = require "fugio"

PinInputStrings = fugio.input( "Strings" )

function main()
	local Strings = PinInputStrings:get()

	for i = 1,#Strings do
		fugio.log( i .. ": " .. Strings[ i ] )

Setting up Firmata

Instructable for installing Firmata on Arduino

And here’s what you have to do in Fugio:

Quit the Arduino software and load Fugio:

  • Add a Serial Input node, a Firmata node, and a Serial Output node
  • Connect the Serial input and Serial output to the Firmata node
  • Connect a button to the Reset pin

Firmata setup

If everything is connected and configured properly, you should see the pins appearing on the Firmata node.  Check the logger window for additional messages.

Firmata with pins

If this doesn’t happen first time, you may need to close the patch and reload it.

At this point you should be able to read and write to the Arduino pins!

Click the Edit Pins button to configure pins for inputs (digital INPUT (true/false) and ANALOG input (0-1023)), and outputs (digital OUTPUT (true/false), and PWM mode is supported):

Firmata pins

I’m going to be showing a couple of artworks at the prestigious V&A Museum in London for the next few days with the High Altitude Bioprospecting team (and fellow members of the Institute of Unnecessary Research) for the Digital Design Weekend as part of the London Design Festival.

23rd September: 6-8pm
24th and 25th September: 10:30am-5pm

I’ll have Fugio on hand (creating music from genomic data) so come and say hello!

Fugio on Raspberry Pi detailed guide


Happy Fugio Friday!

This week I have written a detailed guide for getting Fugio up and running on a Raspberry Pi using cross compiling:

Cross Compile Fugio to Raspberry Pi (bigfug wiki)

This guide covers installing a virtual Linux machine (if you need one), compiling Qt 5.7 with accelerated OpenGL support, and building Fugio with all the currently supported libraries.

Have fun…

Fugio Tutorial 8 – OpenGL live coding, Spout and Syphon

New Fugio video tutorial covering OpenGL shader live coding, sharing OpenGL textures between many applications in real time using Spout (Windows) and Syphon (OS X), and rendering to texture for complex, multi-stage shader processing. Not expecting to get too much coding done this week as I’m off to Ars Electronica this week in Linz, Austria this week. Have fun with the update!

Download Fugio 1.7.0 for Windows and OS X

Get the source code for compiling on Linux


  • Spout and Syphon plugins
  • Added live coding support to OpenGL shader compiler
  • Added trigger and buffer pins to Text Editor
  • Added Brew install/update script for OS X
  • Added LuaVector3D


  • Progress on building on Raspberry Pi 3, including cross compile


  • Fixed some issues with MIDI Channel Input listening
  • Fixes some update issues in PinPrivate
  • Image Loader wasn’t always showing the thumbnail

Fugio Friday – 19th August 2016

This is the most significant release for Fugio since its initial launch. Finally, after more than a year, I can share the OpenGL plugin, which brings the raw power of the graphics card to Fugio for high resolution, real-time graphics.

Download Fugio for Windows and OS X (build the source code on Linux, including Raspberry Pi)

I’ve also recorded an hour long video tutorial that will get you started working with OpenGL shaders.

This has been a massive amount of work.  Please share the word, and if you’re feeling very generous, you can always make a donation towards the project here.



  • OpenGL plugin – 24 new nodes with several shader examples
  • Mouse node and input events support for windows
  • Mouse Painter example
  • Nodes: Time, Date, JoinVector4Node, SplitVector4Node


  • LuaPainter::drawLine can take two points
  • Added $ORIGIN to path on Linux to fix launching (reported by Luca)
  • Text Editor now highlights Lua errors


  • Image Save had a hard coded path
  • Fixed mouse zooming
  • Fixed Network deployment (reported by Артем)

Fugio Friday – 12th August 2016

Happy Fugio Friday!

It’s been a long term goal for me to get Fugio running on Raspberry Pi.

If you’ve not come across them before, they are cheap, credit-card size computers than can run a full desktop experience with mouse and keyboard support, networking, HD video playback, and even a GPU for 3D graphics.

I use them a lot for installations where I need seamlessly looping video playback, but I really want to develop artworks on them, so I can use them instead of leaving bulky and expensive computers in a gallery for months.

So, this week I’ve updated the source code to allow it to compile and run on a Raspberry Pi 2 (and 3).  Everything works apart from PortAudio, which I’ll get to in due course.

Download Fugio for Windows and OS X

Get the source code for Linux (including Raspberry Pi)


  • Compiles and runs on Raspberry Pi
  • New Dial GUI node with example
  • National Grid example for getting real-time data from the Internet
  • Zoom in and out of patches with your trackpad
  • Websocket server (still testing)
  • Settings dialog with ‘My Snippets’ location (I set mine to my Dropbox)
  • qt.matrix4x4 with ortho, perspective, rotate, scale, translate methods
  • Fast JSON parser in Lua – examples to follow
  • Added COBS encode/decode nodes to Network
  • Get Size node for getting the size of data (deprecating Image Size)
  • Added Line Buffer node


  • LED now has a new, smarter look
  • PortMidi supports setting the default input and output devices
  • Snippets window has two views, and supports drag/drop/rename on ‘My Snippets’
  • Text Editor remembers visibility when you save and load


  • Passing strings with zeros in them from Lua to Fugio now works
  • Context wasn’t always calling frameFinalise()


  • Windows 10
  • OS X 10.11
  • Ubuntu 16.04
  • Raspberry Pi 2 (Jessie)

Fugio Friday – 5th August 2016


Download Fugio 1.5.1 for Windows, OS X (get the source code)


  • Lots of new examples including network stock checker and audio processing nodes
  • Added group breadcrumb widget to the bottom of the editor window
  • fillRect() method to qt.painter
  • PortAudio input and output now have default device options
  • Added LuaMatrix4x4
  • Save images from NumberMonitorForm by right-clicking on its window
  • Added FileLoadNode
  • Added AutoRangeNode
  • Added MinMaxNode
  • Added RingModulatorNode
  • Added ArrayListPin, VariantListPin
  • Added extra include paths for Lua


  • NetworkRequestNode saves data to a temporary file, rather than always into memory
  • Renamed NetworkRequestNode to GetNode
  • Added RegExp pin to RegExpNode
  • ScaleImageNode can scale to width/height/size
  • Cut/copy/paste now works between patches
  • You can also paste as plain text in any text editor or window


  • Lots of work on cut/copy/paste/delete functionality
  • Fixed all colour selections in editor
  • Fixed StringNode not showing loaded value
  • Fixed StringJoinNode


  • Windows 10 (x86)
  • OS X 10.11 (x64)
  • Ubuntu 16.04 (x64)