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.
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!
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+)
- 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
- Added Time pin to MediaNode
- FFMPEG Image Convert didn’t let you change the format
- ImageToTextureNode was aligning to 32 bytes (not 32 bits!)
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.
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 Артем)
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)
Alex presenting Fugio at HCI 2016 at Bournemouth University
“Shadows of Light” interactive installation by Alex May, made with Fugio, on show in the HCI Interactive Gallery.
While bigfug.com has always accepted credit and debit card payments, we’re aware that using PayPal isn’t always a great solution for all our international friends.
Today we’re happy to announce that we have integrated a new payment gateway that processes Visa, Mastercard, and American Express cards directly.
As a beneficial side effect of this improvement, the shop also now supports SSL encryption, which will automatically be used at checkout.
And finally, to take advantage of the new gateway, we’ve moved Painting With Light into the shop, too.
I think we’re in the end game. I think that Learning to Code is a last ditch cry to wrestle control and we’re too late. I think that the cost of major software is spiralling to zero and, just like the music industry, the focus is now on mass adoption with revenues generated around the product, not from it. It happened on the web and it happened on your phone and in your home. They’re coming for open-source, they’re coming for us lone developers, they’re controlling the formation of culture, and they have a leash for us all. If you’re going to code then code to distrupt, code to disseminate, code with fire and bile and fury. No one may thank you but stand against the wave in the best way you can and hold fast. Coding is a manifestation of imagination and will; whose do you choose?
I’ve been away for a couple of days running a Painting With Light video mapping workshop at Bournemouth University so today I managed to do a little Fugio coding and added a keyboard node to catch any keyboard sequence such as simply pressing R or combinations like CTRL+7 and generate a trigger.
In this patch pressing R generates a new random number.
I used this Christmas as an excuse to get a few things relating to the various software tools I’m writing at the moment.
The C++ Programming Language 4th Edition by Bjarne Stroustrup replaces my well loved, dog-eared 2nd Edition that I’ve had for many years. I haven’t felt like I’ve fully got my head around the new language features of C++ 11 and I enjoy Bjarne’s non-nonsense description of them. He did create C++ after all… It’s probably not a book for the absolute beginner but it’s one that I refer to often, always picking up new tricks or refreshing some of the less used techniques.
I’ve been working on my new software called Fugio (pictured above) for over a year now and I want to make it support a variety of hardware, so I got a couple of new things to try it with:
The last game controller I had was an ancient Logitech one that was quite nice until batteries kept leaking inside of it. I upgraded to the Xbox 360 controller for Windows and wrote a node for Fugio to read all the various parameters from it. It’s very simple to do with the Microsoft XInput API, although obviously Windows only.
While I love my original Korg nanoKontrol for MIDI control, I felt like I needed something a bit more ‘hitty’ so I plumbed for the Akai MPD18 Compact Pad Controller so I can experiment with triggering off events within Fugio. I’ve got most of the controls mapped in using PortMidi and am just sorting out a small bug in the MIDI clock code so I’ll be able to use the note repeat controls on the MPD18 in sync with the Fugio playback.
And while not related to software development and much more related to the process of creating visuals and art, I’m very much enjoying reading Sculpting in Time: Reflections on the Cinema by the late, great film director Andrei Tarkovsky. It’s a no-holds-barred personal rant about his views and experiences on making films and is full of inciteful comments that are giving me much food for thought.
And with that Amazon Affiliate link laiden post done, I will wish you all a very happy New Year and am looking forward to bringing you some new exciting tools in 2015.