Fugio Friday: 23rd February 2018

Happy Fugio Friday!

I’m currently in Belfast having just given a talk for the Northern Ireland Science Festival.

Check out this cool patch that uses your webcam to create two areas on the screen that act like buttons, which you can use to trigger off whatever you like!  Yes, I know my hand is blue – I’m working on that…  It’s available under the Video Capture examples in the File menu.

The latest development builds are available for download with new command line options for controlling the loading of plugins.

You can install the snap build using the following:

snap install --edge fugio --devmode

  • NEW: Command Line Options (see below for examples)
  • NEW: Experimental Linux snap builds for i386, x64, and armhf
  • NEW: Core/ProcessClick node
  • NEW: Two Video Buttons and Multiple AND examples
  • UPDATE: OpenCV/CountNonZero accepts a Region Of Interest (ROI)
  • FIXED: Kinect wasn’t working properly after image changes

Command Line Options

The new command line options for Fugio allow you to enable or disable plugin loading, set the OpenGL backed, set the language, and define variables for plugins.

The path to the Fugio or FugioShow executable is different on each platform:

Windows:

C:\Program Files\Fugio\bin\Fugio.exe

macOS:

/Applications/Fugio/Fugio.app/Contents/MacOS/Fugio

Linux:

which fugio

Replace [fugio] in the examples below with the path to the Fugio or FugioShow application on your platform.

Show the command line options:

[fugio] -h

Only load the core and math plugins:

[fugio] --enable-plugin fugio-core --enable-plugin fugio-math

Don’t load the PortAudio plugin:

[fugio] --disable-plugin fugio-portaudio

Run Fugio in German:

[fugio] --locale de

Run Fugio in Spanish:

[fugio] -l es

Load a patch:

[fugio] path/to/your/patch.fug

You can load more than one patch by listing them all on the command line.

Have a good weekend!

Fugio Friday: 16th February 2018

Happy Fugio Friday!

I made the mysterious image at the top of this post using Fugio to process some footage I shot when recently in Venice.  I’m currently working on a series of these “algorithmic photographs” for an upcoming exhibition (plus talks and workshops!) at Texas A&M university in a few weeks.  You can see the latest images on my Instagram feed.

This week we have an updated 3.0.0 development release for all platforms that has a few key changes:

  • NEW: Hovering your mouse cursor over nodes in the insert node dialog will show you their description (if they have one)
  • NEW: EasyShader2D supports multiple texture render targets
  • UPDATE: VariantPin now has tooltips for QPoint and QSize
  • UPDATE: OpenGL examples use EasyShader2D where possible
  • UPDATE: Implemented more portable OpenGL VAO support
  • FIXED: FilenamePin wasn’t saving default value paths correctly
  • FIXED: GetSize wasn’t setting its variant count properly
  • FIXED: Stepping through media using Media Processor, or streaming media should work much better now
  • FIXED: There were missing dependencies on the Raspberry Pi build (thanks Winfred!)

Have a good weekend!

Fugio Friday: 9th February 2018

Happy Fugio Friday!

Despite having been away in Venice for most of the week for a rare holiday, we have a new Fugio development update for you to download.

There is still some work to do before a final release of 3.0.0 but we’re getting closer…

NEW

  • New nodes for chopping up strings: Left, Right, Mid, Chop
  • New node for finding text in a string: Contains
  • New boolean logic node: Boolean Latch
  • New control node: Block Updates
  • New options on initial patch prompt

FIXED

  • All translations now working again
  • Fixed wrong libswresample-ffmpeg2 dependency
  • Examples and snippets weren’t being found
  • WebSocket was disabled

Have a good weekend!

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 Electronica

Happy Fugio Friday!

It’s great to be back in Linz for Ars Electronica 2017.  Have already caught up with many friends from around the world and seen some lovely works, though the event is so huge that there is still so much to be seen.

In preparation for the Mini Maker Faire in POSTCITY on Sunday I have got Fugio badges and stickers ready to give away, so if you’re at Ars Electronica, do stop by and see Fugio in action.

My laptop is now 500% better with a shiny new Fugio sticker on it…

Will post up pictures from the event next week.

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: ISF Render To Texture

Happy Fugio Friday!

This week we have a new release: v2.13.0

It was noted in the Fugio Users Group that there was no (easy) way to render an Interactive Shader Node (ISF) to a texture, which would be very handy for passing to Syphon and Spout.

This release has a new Render To Texture node and several fixes in the OpenGL and ISF plugins that make this possible.

There has also been a lot of work done on the new time synchronisation system but that’s not quite ready for release yet (the code is on GitHub if you want to check it out early).

As there is a new binary release, I’m pushing the launch of The Fugio Zone to next Friday, but if you want to get early access, you can get the login details right now 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.13.0 for Windows and macOS (source code)

Have a great weekend!

PS: Near Derby?  Go see my robot artworks in the Our Friends Electric exhibition!

NEW

  • New Examples:
    • ISF/Render To Texture
  • New Nodes:
    • OpenGL/Render To Texture
    • Time/Universe Receive
    • Time/Universe Send
  • Time synchronisation is working and almost ready for release

UPDATED

  • ISF and Texture Monitor use the correct texture coords

FIXED

  • ISF wasn’t restoring the current framebuffer
  • Saving broke some file paths
  • Cleaned up some incorrect OpenGL calls
  • Image format could get confused in OpenCV/Flip

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