Happy New Year 2019

It is with grave embarrassment that I start the new year with a blogging cliche: sorry I haven’t posted in a while but I’ve been rather busy.

Not that this isn’t true, of course. The latter half of 2018 was a whirlwind of projects that started in July with the delivery of Flow State, a major commission for the Francis Crick Institute in London that has 28 video monitors playing synchronised video art using Raspberry Pi’s and Fugio’s network time engine.

Flow State at The Francis Crick Institute by Alex May
Photo by Fiona Hanson

Flow State took 18 months to make. After the launch in July, I had one day off and then things got really busy. I spent August doing a EMAP residency at LABoral in Spain with Anna Dumitriu creating an underwater robot called ArchaeaBot. It contains a Raspberry Pi Zero and a PiBorg motor shield, and has an evolving machine learning system running on it to control the motors.

As soon as we had a working prototype, we took it to Linz in Austria to be part of the main exhibition at Ars Electonica, the biggest media arts festival in the world that was celebrating it’s 40th anniversary.

ArchaeaBot at Ars Electronica 2018
Photo by Vanessa Graf

A week later we were back in Spain, exhibiting it at LABoral.

Trips to Hull, Athens, Philadelphia, and Amsterdam followed, then driving to Bourges in France to exhibit at Bandits-Marge, then driving up to Utrecht in The Netherlands to exhibit at IMPAKT in their “A World Without Us” exhibition, which is on until 3rd February.

Finally, just to top the year off, I went to Guangzhou in China for a week just before Christmas.

This has all been a rather excellent opportunity to work on my Algorithmic Photography project that uses Fugio to process 5 minute videos into stunning digital timelapses. You can find the latest images on my Instagram, and buy prints at algorithmicphotography.com.

Murmaration of Starlings over Brighton Marina – Algorithmic Photograph by Alex May

But this isn’t to say that there hasn’t been software developments going on in between.

Fugio has received some periodic updates including a new Italian translation by MassiminoilTrace, which are available in the weekly builds on the download page.

It’s been useful to take a step back and look at how it has evolved. There are areas where it’s very strong – it’s great at quickly piecing together new ideas, and other areas where some work needs to be done. It’s tempting to create nodes for everything, but some areas of programming are far better suited to being scripted, which has led to an unsteady balance of functionality between nodes and Lua scripting support. For instance, if you wanted to draw a range of different dynamic items that are changing over time, scripting is going to be far more suitable than the more rigid structure of nodes. Where nodes come into their own is for rapidly putting structure into place and enforcing separation of components, which is generally a good thing for reuse and understanding. With this in mind, I’ll be shifting things around, retiring some nodes and adding more Lua libraries.

I’m also in the process of adding some new features that should make editing, sharing, and organising patches a lot faster and easier. I also want to bring back the timeline feature that disappeared a while back as I wasn’t happy enough with the interface.

Painting With Light is getting an upgrade to v2.0 with a rewritten rendering engine and support for Linux – even Raspberry Pi.

Freeframe support is currently on hold as there are changes coming that will be incompatible with the existing standard. Please note that if you choose to purchase the 64-bit FFGL plugins, they won’t work with future Resolume 6 updates.

And that’s about it for this catch-up. I’m off to Utrecht this month and Tashkent in Uzbekistan in February, and will endeavour to keep the updates rolling,

Fugio Friday: Happy New Year 2018!

Hey, happy new year!

So I’ve been taking a little break from the Fugio Friday as I’m flat out working on the final run up to a new permanent art installation in London that is using… Fugio, of course!

I’m also working on some big changes for the first release of 2018:

For the first time in Fugio’s history, I’m doing some changes that will almost certainly break a few patches.  The main issue I’ve had is how Fugio deals differently with pins that have a single value (say a 2D Point), and a pin that has multiple values (like an array).  I want to simplify this interface, which will enable more succinct patches, faster processing, and easier Lua code.  The example screenshot here shows the Lua script processing an array of 2D points using the new interface.

As Fugio is able to work on more platforms, I’ve finally ventured into the world of automated builds.  I’m now running Jenkins to build Win32, Win64, macOS, Raspberry Pi, and now a Linux binary distribution:

These are all being build off the feature/cmake branch, which will become the default build method in 2018.

I’ve still got a little way to go before these releases will be ready for you to download, but I’m working on it!  Don’t forget you can support the ongoing work by signing up for my Fugio Patreon page!

That’s the news so far for 2018.  Hope it’s treating you well.

Have a great weekend.

bigfug flattr

In light of the recent attacks on net neutrality in the states, it’s vitally important to explore and participate in new technologies for supporting diversity and revenue generation on the internet to sustain its open architecture without relying on big corporations for access and ad revenue.

Flattr is a service where you pay a small amount (I pay $5 a month), install a web browser extension, and it automatically gets distributed to websites that you visit (that have signed up to Flattr) – sign up through https://flattr.com/@bigfug and I get $3 referral!

I’ve added Flattr support to bigfug.com, alexmayarts.co.uk, my YouTube account, and everywhere else.  Help support independent software and art!

Fugio Friday: August 2017 WIP

Happy Fugio Friday!

For the past couple of weeks I’ve been working on refactoring the whole OpenGL plugin to better support Raspberry Pi.

The new release of the Raspberry Pi operating system called Raspbian Stretch has Qt 5.7 built in and comes with FFMPEG instead of libav.  This is great news for Fugio as it’s much more in line with the libraries we’ve been using.

I’m busy building Fugio on my Raspberry Pi 3 (not cross compiling) as I type, although I wouldn’t recommend trying this yourself just yet as it needs some work to get it compiling.

With this latest update, I should be able to create a binary repository for installing Fugio onto Pi’s without compiling.

As ever, this is loads of work that will be available to everyone for free, so if you can, please consider supporting the project by donating just $1 a month via Patreon.

Also, check out the first look at my new projector blending tool that Fugio will support for multi-screen projections.

Have a great weekend!

Fugio Friday: v2.12.0

Happy Fugio Friday!

This week we have a new release, the twelfth this year: v2.12.0

This release features several new nodes, and some needed bug fixes to the media playback plugin, and many more updates and features.

One key feature is the ability to save a JPG or PNG screenshot of your patches, which you can then upload to the new website I’ve been building called The Fugio Zone that allows users of Fugio to share and discuss the patches they make.

If you want early access to the site, you can get the login details by becoming a Fugio sponsor on Patreon!  Just a little donation helps with all the costs of running an open source project, such as hosting, domain names, etc.

Download Fugio v2.12.0 for Windows and macOS (source code)

Have a great weekend!

NEW

  • Added ability to save an image of the currently open patch from the file menu
  • New Nodes:
    • Core/BitsToBool
    • Core/BoolToBits
    • Math/Modulus
    • Network/PacketDecoder
    • Network/PacketEncoder
    • Serial/SerialDecode
    • Serial/SerialEncode
    • Text/TextEditorRemote
    • Time/UniverseTime
  • New Pins
    • Core/BitArray
    • Text/SyntaxError
  • Added Bias pin to SignalNumber
  • Saving patches creates (backwards compatible) human readable header
  • Started adding the concept of a Universal Time between Fugio instances running over a network (not quite ready for use yet!)

UPDATED

  • Compiled with Qt 5.9
  • Fugio now processes patches on a separate thread (currently locked to 100fps)
  • Updated SyntaxHighlighter system
  • Updated Lua Matrix4x4 and Vector3d classes
  • FugioLib is now compiled and linked as a static library
  • OutputRange accepts index
  • Lua now has a trigger pin
  • Adjusted latency handling in DevicePortAudio
  • Added performance counter in SpoutReceiver
  • Rewrote OpenGL/Context to use QOffscreenSurface (a good thing!)

FIXED

  • Fixed a whole heap of issues in FFMPEG media playback
  • Magnitude wasn’t using sample count
  • Caught invalid input to ScaleImage

Fugio Friday: Entering the Zone

Happy Fugio Friday!

It’s been a hot and busy past couple of weeks.  Last week I didn’t even have time to do Fugio Friday as I was busy installing robots in a new art exhibition in QUAD Derby.

Since then I have started work on a new website for users of Fugio to upload and share their patches.

It’s called The Fugio Zone

As you can tell, it’s not quite ready for public use yet, and not being a web designer it’s going for a heavy minimal look!  I will be inviting a few people to test it over the coming weeks, so if you’re interested in doing that then let me know.

Have a good weekend!

Fugio Friday: CMake build progress

Happy Fugio Friday!

This week I’ve been focussing on creating a fully working CMake build system in place for Fugio.

As Fugio currently builds using Qt’s qmake, why do we need an alternative?

  • In a recent Qt blog post it was made clear that qmake is going to be deprecated in Qt6 in favour of a new tool called Qbs (pronounced cubes).
  • As CMake can be used to build all sorts of projects, and not just Qt ones, it enjoys a much larger user base.
  • The CMake file for a Fugio plugin seems to be a lot simpler than for the equivalent qmake file, especially when specifying cross platform options.
  • It seems easier to setup clean, automated builds that I seem to be needing more to simplify and make more reliable the process of Fugio binary releases, specifically for Raspberry Pi builds, too.
  • If someone wants to work on the Fugio code base, CMake allows the user to use their IDE of choice and be less tied to Qt Creator.

[amazon_link asins=’1930934319′ template=’ProductAd’ store=’bigfug-21′ marketplace=’UK’ link_id=’6f007693-4d16-11e7-8b09-37d691c606a3′]

So I’ve been struggling through creating the first set of CMake files, getting my head around how best to bring in all the required libraries.

I’ve invested in this book (associate link) so I can get my CMake skills up to scratch.

You can follow my progress on this GitHub branch and I hope to have a release ready for next week.

Until then, have a good weekend!

Fugio Friday: Video Shader Recorder

Happy Fugio Friday!

This week sees the first release of the Media Recorder node that allows recording video and audio files from inside Fugio.

To demonstrate its abilities, I have created a new example patch called Video Shader Recorder (find it in the FFMPEG examples, in the file menu) that allows you to load a video file, apply a custom OpenGL shader to it, and save it out to an MP4 video that’s ready to upload to YouTube.

Download Fugio 2.2.0 for Windows (7, 8, 8.1, 10)

Download Fugio 2.2.0 for macOS (OS X) (Mavericks 10.9+)

NEW

  • Added MediaRecorderNode to FFMPEG plugin
  • Added Video Shader Record.fug example
  • Added help link to pins (right/ctrl click to find it in the context menu)
  • Added PlayheadFramesNode to Time plugin

CHANGED

  • Added Time pin to MediaNode

FIXED

  • FFMPEG Image Convert didn’t let you change the format
  • ImageToTextureNode was aligning to 32 bytes (not 32 bits!)

Fugio Friday – 28th October 2016

Happy Fugio Friday!

This week I’ve been hanging around the Wellcome Genome Campus near Cambridge, where my partner Anna has been doing a week residency with the scientists here. I’ve been exploring the nearby nature reserve, watching the squirrels and geese, and catching up with emails and threads of projects.

I’ve been looking at the way that Fugio is installed on OS X (now macOS), and I’m not entirely satisfied with the process that one has to go through, especially for the initial installation.  I’m experimenting with Homebrew casks, that facilitate installing applications such as Fugio through the same simple command line interface that Homebrew uses to install the libraries that we already use.

Packaging Fugio as a cask would mean installation would comprise of installing Homebrew, then typing “brew cask install fugio” into a Terminal to install the application and all its dependencies.  Much cleaner!  What do you think?

If I do go down this route, it will make releasing some new plugins somewhat easier…

On November 15th I’ll be giving a LASER talk (Leonardo Art Science Evening Rendevous) at Westminster University in Harrow about my art practice and Fugio.  There’s no link for it yet but I’ll post it up when there is, if you fancy coming along and saying hello!

Have a good week, and as ever, let me know any questions and suggestions you may have.

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.

2016-08-19

NEW

  • 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

UPDATED

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

FIXED

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