This release fixes one critical bug, and includes some important work done on the core video loading and playback code, as well as a minor improvement to the finding of brushes and textures when loading a painting.
Once of the previous releases re-enabled loading of pwl files by file association under Windows. On some computers this resulted in a crash if the output window hadn’t actually opened yet.
Better Video Support
Many people use many different formats of video with Painting With Light depending on what operating system they have, what kind of hardware and software they use, what kind of workflow they want. Painting With Light aims to support as wide a range of video formats as possible to fit in with your existing processes but it has previously worked better with certain formats over others.
In this release lot of work has gone into retuning the video playback code with the aim of improving compatibility with a much wider range of video formats, and fixing issues when the videos loop back to the beginning.
New Asset Handling
When saving a painting as a PWL file, Painting With Light saves the full path to all of the brushes and textures that are used in the painting. This is fine when you’re just working on a single computer, but if you want to copy the files to a different computer, or share them over Dropbox or such like, these full paths will probably become invalid for the receiving computer.
In this release Painting With Light will first look for the brushes and textures in their original location, then it will look for them in the brushes and textures windows, and finally (and this is the new bit) it will look for the files in the same directory as the PWL file.
So, to copy a PWL file, just include all the brushes and textures in the same directory, and Painting With Light should now find them without you having to do anything.
As ever, please let me know if you are experiencing (new or old) issues with this latest release. Also, it would be nice to know if the new video playback code is working better for you all.
My video mapping software Painting With Light has been living on it’s own website since it launched. I’ve been planning to incorporate it onto the main bigfug.com website for a while now, and you may have noticed that this process is now underway.
By having all my software on one site I have less web admin to do and it provides a more consistent interface.
I’ve also been working on a new Painting With Light manual to replace the wiki and this is now available here. I’m still working on it but it contains all the information from the wiki (and more) and can even be downloaded in a PDF for offline reference.
Additionally, there is a new Painting With Light tutorial that uses Winamp, Spout, and Milkdrop to feed live audio visualisation graphics into PWL for video mapping.
I’ve been somewhat busy installingnew work, doing a video mapping performance in France, and doing talks, but development has continued apace on Fugio. Most recently I’ve just added Oculus Rift virtual reality support, which means its very easy to update an existing patch into an Oculus enabled one by the addition of one extra node.
I used Fugio to animate this exploding Stanford Bunny as a test for the 3D model loading and OpenGL shader code:
I’ve been adding some basic audio analysis nodes, so now there’s a FFT (Fast Fourier Transform) and an initial power spectrum node (works, but needs cleaning up):
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?
Fugio is almost out of alpha development, which means that I’ve completed all the features I have planned for the first release, and tested it until I’m confident about it’s general stability and performance.
Now it’s time for you to try it!
I’ve done a call out for beta testers who will be the first people to get their hands on the software and will be instrumental in the next stage of its development.
If you are interested in applying, please see the online form.
For the past two weeks I’ve been chasing down bugs and writing documentation for Fugio, neither of which are my favourite pastimes.
I’ve done 152 code commits, added a great deal of helper features like a menu of examples that show what each node does in a nice, friendly way, and am generally trying to standardise what things are called and how they operate as much as possible to make it as easy as it can be to get past the initial hurdle of approaching a new piece of software.
It’s amazing how much time that side of things takes. While I’m most excited about the timeline system (and the upcoming audio, video, and OpenGL plugins), I’ve spent almost as long working on making sure you can undo and redo things, that copy and paste works, and that MIDI synchronisation is good and tight.
I’m having to temper my enthusiasm for wanting to show it to the world with the knowledge that if it’s not documented and tested as best that I can, people just aren’t going to bother with it.
Have still got about half the documentation to write, which I want to have done over the next week.
Fugio (and Painting With Light) are both written in C++ and built using the Qt Project, mainly because it offers a (mostly) consistent API across multiple platforms. It offers a wide range of low and high level functionality, which are often great fun to play with.
Take the Qt Multimedia module, for example. It’s so high level that I couldn’t resist adding in a couple of nodes that interface with it, so above we have the new SoundEffect node that can load and quickly play WAV audio files when triggered.
You can also see the new Filename Node, which is another small helper: click the button and a file open dialog appears.
And here we have the Multimedia Player Node that can playback more complex media formats such as mp3’s and also video!
While I’ve been putting a lot of development time into a ffmpeg based timeline controlled media playback node, sometimes you just need a simple way to play media, and these new nodes fit the bill nicely.
As I’m working on streamlining the MIDI control workflow, I hooked Fugio up to Resolume to see how easy it was to get them talking.
Here I’m using a colour timeline, breaking it into RGB components and passing them through one of the new MIDI Helper nodes, which takes floating point values from 0.0 to 1.0 and converts it to MIDI values of 0-127, and outputs these values to Resolume to control its RGB controls.
Everything works, but the process of mapping controls was more fiddly than it should be due to not being able to send a single CC value at a time and thus not being able to take full advantage over Resolume’s MIDI mapping listen functionality. I’m thinking how to add a way of doing that…
MIDI listen is a nice, fast way to map controls so I added it into Fugio’s MIDI Input node to automatically add pins on receipt of MIDI messages.