Fugio Friday: Raspberry Pi release

Happy Fugio Friday!

I’m delighted to announce the first binary release of Fugio for Raspberry Pi (running Raspbian Stretch – as well as updated Windows and macOS builds).

No longer do you need to worry about compiling or cross compiling from source.  You can even install it via apt-get to handle all the dependencies automatically.

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

Installing Fugio on Raspberry Pi

Open a Terminal window.

If you’re installing Fugio for the first time on your Pi, you need to add my public key so you know the files are signed by me.

sudo apt install dirmngr

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BC9654E46D3A81C4

Next, you need to add the Fugio source to your system:

nano /etc/apt/sources.list

At the end of the file, add the following line:

deb https://www.bigfug.com/releases/ stretch main rpi

Save the file (Ctrl+X).  Now you can update your sources:

sudo apt update

And you’re good to go…

sudo install fugio

This is the first time I’ve done a binary release for Raspberry Pi, so please let me know if you run into any problems in the comments below.

Check out the new GPIO node if you want to access the Raspberry Pi’s pins.  I’m doing some work with this at the moment for controlling RGB LED’s and it’s working for simple I/O.

Currently it’s not possible to utilise the accelerated video decoding on the Pi as there are some incompatibilities that I still have to resolve, so don’t expect the video decoding to work at full speed.

What else is new?

Obviously this wasn’t just a case of compiling the source code on a Raspberry Pi.  I had to do a lot of work on the OpenGL side to support OpenGL ES, allowing accelerated graphics.

To simplify using OpenGL shaders on all platforms, I’ve added a new node called “Easy Shader 2D”, which avoids having to add geometry and other OpenGL support nodes.  See the new examples.

You’ll also notice a big change when you start Fugio up – we have a wonderful new logo that was designed by Eleanor Hyland-Stanbrook.

There’s a new plugin: NDI for sending and receiving video over a network (the 1,000th commit on GitHub).

There’s some new nodes for working with arrays of bits like IntToBits, AndBits, XorBits, etc.  If you’re interested in modelling logic systems, these will save you lots of nodes!

There’s a StringSplit, Min and Max, Cosine, JoinPoint, and OpenGL ArrayToTexture…

This release also has the first build of FugioShow which is a small application for running the patches you’ve designed with Fugio without the editor.

Wow, that was a lot of new stuff!  You’ll have noticed that there hasn’t been a Fugio Friday for a while.  This was mainly because I’m super busy working on my art commission for the Francis Crick Institute, and also the large amount of changes needed to be made to the OpenGL side to support the Pi.

Have a great weekend!

NEW

  • New logo!
  • OpenGL ES support
  • NDI plugin added
  • FugioShow
  • OpenGL EasyShader2D, ArrayToTextureBuffer node
  • Point and Line support with pin, Lua class
  • OpenCV Hough Lines and Simple Blob Detector nodes
  • IntToBits, Multiplexor, AndBits, BitsToPins, FlipFlop, NandBits, NorBits, OrBits, XorBits, Min, Max, CosineDegrees nodes added to Math plugin
  • SplitList, StringSplit, JoinPoint nodes
  • GPIO Raspberry Pi node
  • Can run Fugio with –opengl, –gles, or –glsw for OpenGL desktop, ES, and software renderer
  • Added OpenGL Barrel Distortion example
  • Added Geometry plugin with PolygonNode (early stage)

UPDATED

  • Iterations added to OpenCV Erode/Dilate
  • Nodes that take a filename will pop up a file dialog when you ‘Edit Default’ so you don’t need a FilenameNode
  • Math Add, Divide, Multiply, and Subtract nodes work on a wider range of input data types
  • Variant pins show useful data when you hover the mouse over them
  • Added lots of new data types to ArrayPin

FIXED

  • Code is Qt 5.7 compatible
  • Fixes to TextureMonitor

 

Fugio Friday: The Rabbit Hole

You may have noticed a slight break down in the regularity of these posts of late, which is due to too much work rather than a lack of it!

Those of you following Fugio’s progress will know that I’m working hard on supporting the Raspberry Pi as a primary platform.

Recently I got very excited due to the release of Raspbian Stretch, with it’s new experimental OpenGL driver that allows Fugio (and many other applications) to run accelerated graphics within the desktop windowed environment, which is how things work on Windows, Mac, and Linux.  This is what I was showing off at Ars Electronica a few weeks back.

The next stage was to add the code so Fugio could access the Raspberry Pi’s amazing media processing hardware for decoding and encoding H264 HD video, audio, and other tricks.  This is where things started to get tricky…

I’ve spent the past couple of weeks learning about how the new RPi driver, called VC4, plays with the existing systems, specifically the OpenMAX API’s for video decoding.  On the face of it, everything looked like it should play well together.

I won’t bore you by describing the interminable range of combinations I’ve tried, usually resulting in hour long compilations of Qt with different variations of OpenGL, but there were a lot!

Turns out that the new VC4 driver is incompatible with OpenMAX, and to further complicate things, the accelerated EGL/GLES libraries are now renamed to libbrcmEGL.so and libbrcmGLESv2.so, with the standard libEGL/libGLESv2 libraries being Mesa implementations with software rendering, so just disabling the VC4 driver doesn’t wholly fix the problem as Qt seems a bit hard coded to look for libEGL/libGLESv2.

So, now I’m a left a little confused as to what happens with OpenMAX under VC4.  Will it be replaced by something else or will it be made compatible?  If you know, please enlighten me 🙂

The current status for Fugio is that it’s working great under VC4, and is probably the best and easiest entry for users to get it running on a Pi.  While the OpenGL stuff works great, I can’t (yet) support accelerated media processing.  Therefore, I plan to do release Fugio on the Pi like this for now, which I plan to do in the next couple of weeks.

For my own projects where I need the acceleration, I’m planning to drop back to Raspbian Jessie and use the old drivers that are compatible with OpenMAX.

Anyway, that’s where we’re at.  I’m off to Birmingham, Dublin, and Paris next week…

PS: do please consider giving a bit of regular funding to help Fugio along via Patreon.  It really helps keep up the enthusiasm levels for working on open source software when hitting big roadblocks like this one.  Even 1$ a month is really appreciated, thanks!

Fugio Friday: Ars Electronia Report

Happy Fugio Friday!

And for those of you who signed up to the mailing list at Ars Electronica: welcome!

For those who weren’t in Linz, we were showing off the latest Fugio build running various patches, including a native OpenGL ES on a Raspberry Pi 3.  There were also Fugio badges, stickers, and lots of interesting conversations!

 

There was a great deal of interest in the Raspberry Pi build, and several people suggested how it could be an excellent platform for educational programs, and cost effective too!

We also had several conversations on the topic of long term preservation of digital art, which is something I’ve built into the heart of Fugio since day one.

It was great to introduce people to Fugio in person and see their reactions and get their impressions of the software through fresh eyes.  It’s given me some good ideas for how I want to proceed in the future with new tutorials and features.

For now, I’m focussing on native audio and video playback on the Raspberry Pi as my next major task.  Will keep you posted…

As ever, please send me your ideas, feedback, and news of any Fugio projects that you’re working on, and have a great weekend!

Fugio Friday: New Logo and Easy Shader 2D

Happy Fugio Friday!

And I am happy to show off the excellent new Fugio logo that was kindly created by designer Eleanor Hyland-Stanbrook.  Thank you, Eleanor!  As we speak it is being made into laptop stickers and pin badges that will be available at the upcoming Ars Electronica Mini Maker Faire.

If you’re not able to make it to Linz but you still want a sticker/badge, I will be sending them out to all the lovely people who are supporting Fugio on Patreon (don’t forget to enter your shipping address!).

Work has been continuing on the updated OpenGL implementation and I’ve created a new, and much simpler way of using 2D shaders.

While Fugio aims to provide the most flexible access to the underlying technologies, this can sometimes result in having to use a lot of nodes, and this is very obvious when creating an OpenGL shader.  The current wobbly kitten shader example looks like this:

That’s a lot of nodes!  However, with the new Easy Shader 2D node that I’m working on, it now looks like this:

That’s eight less nodes, which means less clutter and the patch being easier to navigate. It also works on both desktop and Raspberry Pi.  Additionally, you can still use the existing shader nodes if you need the extra power and control they give you.

The code for this is in GitHub now if you want to try it out but a binary release is a little while off while I continue work on the Raspberry Pi support.

Have a great weekend!

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: Text Syntax Update

Happy Fugio Friday!

This week work has continued on doing fun things with Raspberry Pi’s!

One key thing I need to be able to do is control patches remotely.  While there are already plenty of options for sending and receiving pin data (see the updated Network plugin documentation), there is no possibility for using a text editor remotely while retaining syntax highlighting and error reporting, which are both very helpful when hacking shaders and scripts.

The dream being that I can have an editor on a laptop and remotely live code a shader on a Raspberry Pi.

So I’ve refactored the syntax highlighting and syntax error reporting system to facilitate sharing this information remotely.  Next up is writing a couple of nodes for sending and receiving this information over a network.

This should even work over the internet, which opens up some interesting remote collaborative options!

You’ll also notice in the image at the top, I’ve updated the Text Editor to show errors by highlighting the line numbers in red, which is a lot clearer.

I also enabled sending keyboard events from one Fugio to another, which should also prove useful in the future.

All the code changes are available in the GitHub repository.

I’ve cleaned up and organised the Core plugin documentation.  Still much to do, though I’m slowly working my way through it.

Finally, I wanted to highlight this new patch by Winfred Nak that he posted up in the Fugio Users Group on Facebook.  It’s a rather cool game show buzzer where the first button pressed will trigger off the music for that team.  It’s a good application of logic nodes, which are really useful!

Gameshow Buzzer by Winfred Nak

If one was so inclined, one could add a Firmata node and use an Arduino and real physical buttons as inputs…

Next week I’ll be setting up our robots as part of a new exhibition called Our Friends Electric at QUAD Derby.  The launch event is on Friday and I’ll be speaking at an event there on Saturday.  Come along and say hello!

Have a great weekend…

Fugio Friday: Raspberry Pi updates

Happy Fugio Friday!

I’ve been getting the Raspberry Pi support in Fugio up to speed.  The wiki build instructions have been updated to support Qt 5.9, which is the latest version.

The main work is on getting the OpenGL support working, which is going quite well but there is some refactoring to do to support OpenGL ES.

There’s also been some work on synchronising Fugio running on multiple computers across a local network.  This is in early stages but is looking very interesting.

In a couple of weeks I’m aiming to have the first Fugio RPi image ready for download so you don’t need to go through the long process of compiling it yourself.

If you’re enjoying the ongoing Fugio developments, it would be great to have your support:

Have a great weekend!

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 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)

NEW

  • 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

UPDATED

  • 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

FIXED

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

TESTED

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