mtasXuI kL jTCim bmROhRpAAFt

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)

Fugio Friday – 5th August 2016

Fugio-Friday-2016-08-05

Download Fugio 1.5.1 for Windows, OS X (get the source code)

NEW

  • 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

UPDATED

  • 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

FIXED

  • Lots of work on cut/copy/paste/delete functionality
  • Fixed all colour selections in editor
  • Fixed StringNode not showing loaded value
  • Fixed StringJoinNode

TESTED ON

  • Windows 10 (x86)
  • OS X 10.11 (x64)
  • Ubuntu 16.04 (x64)

Fugio Tutorial 6 – MIDI

This Fugio Friday we have two new plugins that provide MIDI input and output for integrating with musical instruments, MIDI controllers, and the huge range of MIDI enabled software and hardware.

Use the maintenance tool to update your existing installation, or download the updated installers.

NEW

  • PortMidi plugin for cross-platform MIDI support on Windows/OS X/Linux
  • MIDI plugin with a range of creating nodes for MIDI input, output, and processing
  • Example: Core/Envelope
  • Lots of new methods for qt.color()
  • Added connected pin to TCPReceiveRaw
  • Added reset pin to SLIPEncoder
  • Added shift pin to FFT for sliding windows
  • Added clear feature to log window – right-click or control-click to bring up the context menu (suggestion: @braedenf)
  • Added –clear-settings command line argument that will remove all settings
  • Settings colours is now undo-enabled

UPDATED

  • Added more user feedback in TCPReceiveRaw
  • EnvelopeNode uses paired pins
  • NumberMonitorNode updates:
    • Set default range to 0.0 – 1.0
    • Changing the node name updates the dock widget name
    • Added an update trigger rather than just hard-coding 25fps
    • Setting auto rename to input pins

FIXED

  • PortAudio input wasn’t working so well after last week’s update
  • Fixed crash when trying to copy groups (reporter: @braedenf)
  • Fixed many grouping issues!
  • Fixed Number Monitor rendering
  • Smooth fixed
  • SLIPEncoder wasn’t enabled
  • TCPSendRaw wasn’t working
  • Fixed crash on exit due to network manager
  • The recent files menu was displaying placeholder entries

Fugio Friday – 22nd July 2016

 

Fugio 1.4.1 is now available for download (source code)

Join us in the new Fugio Users Group on Facebook!

If you encounter any bugs or want to suggest new features, head over to the issue tracker.

NEW

  • Fugio optionally records some anonymous data as you use it, which will really help me get an idea about how you’re all using it, where it could use some work, and also gives me some active user figures I can tell people about!
  • Added tabs for patches to make switching between them easier (suggestion: @braedenf)
  • LuaPainter::drawPoint()
  • Transforms (rotate, translate, shear, scale) added to LuaPainter
  • Added link to new Fugio Users Group to the Help menu
  • Added Save All to File menu
  • More examples: Lorenz Attractors, Rotating Text

UPDATED

  • Right-click (or ctrl-click) on nodes in the editor to get a link to their online help page
  • Started adding auto pin renaming to a few nodes
  • More changes to the audio system to improve latency handling
  • Open multiple patches at once (suggestion: @braedenf)
  • Text Editor:
    • Updating now takes place in frameStart
    • Removed buttons at bottom
    • Added toolbar with new menu and update button
    • Won’t clear text if connected to empty pin
    • Save implemented
    • Alt + U keyboard shortcut to update
  • Various build updates, mainly for using Homebrew on OS X

FIXED

  • LED node wasn’t firing properly for some types of inputs

Fugio Friday – 15th July 2016

 

No video this week as I’ve been away in Bournemouth University showing my “Shadows of Light” installation (made with Fugio, of course) as part of the HCI 2016 conference.

Despite this, we have a very big update for Fugio today.  No less than *FIVE* new plugins, including the 2D drawing plugin, and also FFT (for converting audio into frequency bands – great for visualisations like the one above), and Image, File, and Colour.

Download version 1.4.0 now for Windows and OS X, or if you have already installed it, you can run the maintenance tool to upgrade the software.

I’ve also brought the Ubuntu version back up to speed, and updated the build instructions.

Finally, please sign up to the Fugio Friday mailing list to get the weekly news delivered straight to your inbox just in time for the weekend:

[mc4wp_form id=”3363″]

Fugio Alpha Release

It’s time to begin the process of getting Fugio out into the world.

If you’ve not been following its progress so far, Fugio is a visual programming system primarily designed for rapid development of digital art projects, with a view to being a highly flexible and educational platform that builds transferrable knowledge while not forcing anyone to write a single line of code (unless they want to!)

Fugio is completely free for anyone to use (and will be fully open source soon).  It has taken me two years of hard work, time, and money to get it to this stage, and I’m very excited to finally share everything that I’ve been making.

As a lone developer, I haven’t had the luxury of a QA department testing all the code, so there’s definitely going to be some rough edges to begin with, hence this alpha release, which is aiming to catch as many common issues as possible before its full launch.

This first release is an extremely cut down version that only includes 42 basic nodes (the full version has around 200 nodes), but there is enough that we will be able to run through a short tutorial (below).

Please let me know if it does or doesn’t work.  Also, all feedback (good and bad) is really important at this stage, so do please tell me!

Download

Click here to download Fugio

Installation for Windows

Double-click on the Fugio-1.x.x-WIN.zip to open the archive, which contains FugioInstaller.exe – run this to install.

Follow each stage of the installer.  At this point you should just be able to accept the defaults.

Once the installer has finished, you can run Fugio by clicking on your Windows start button, going to the new Fugio entry, and clicking on the program icon to start the application.

If the application doesn’t start, try installing the Microsoft runtime that is included in the zip archive called vcredist_msvc2013_x86.exe

Installation for OSX

Double-click on the Fugio-1.x.x-OSX.dmg to open the archive, which contains FugioInstaller – run this to install.

Follow each stage of the installer.  At this point you should just be able to accept the defaults.

Once the installer has finished, you can run Fugio by going to your Applications folder in Finder, going to the new Fugio directory, and clicking on the program icon to start the application.

If OSX complains that the application hasn’t been signed (it hasn’t) then either right-click on the application icon (or Ctrl+Left Click) and select Open from the menu.  You’ll then see the same warning but this time with the option to run the application anyway.

Our First Patch

When you start Fugio you will see a welcome window.  Click the OK button to continue.

You’ll be presented with the main editor window:

Fugio-Alpha-Tutorial-01

To start a new patch, go to the File Menu and click on New (or press Ctrl+N on Windows, or Command+N on OSX)

The new patch will open a window, where we can now add nodes.

There are several ways to do this but for now we’ll just double-click in the middle of the patch window.  A new “Insert Node” window will appear.  The first time you do this it will be completely blank.  Start typing “Audio Output” (without the quotes) and you’ll see the names of nodes that match what you’re typing.  Once you see “Audio Output (PortAudio)” at the top of the list, you can press return to add the node to the patch.

Fugio-Alpha-Tutorial-02

The node will appear in the middle of the patch.  A node is a self-contained piece of code that has inputs and outputs.  The one we have just added is for sending audio to your speakers or headphones.

Fugio-Alpha-Tutorial-03

It has two inputs (the little blocks on the left hand side, which we call pins), one for audio data, and one to set the overall volume of the audio being played.  There is also a dropdown control to select which audio device on your computer to send the audio data to.  This will almost certainly be different from the one in the picture above.  You should be able to leave it as the default but feel free to change it if you need to.

You can move nodes around by dragging them around by their white title bars.

Add another node by double-clicking on the white space in the patch window.  Make sure you don’t double-click on the node you’ve already added as this won’t work.

Fugio-Alpha-Tutorial-04

We’re going to add a slider to control the output volume.  Start typing “Slider” into the window until “Slider (GUI)” appears at the top of the list.  GUI stands for Graphical User Interface and means that it contains some type of thing you can visually control.

Fugio-Alpha-Tutorial-05

The slider has a single output pin (inputs are always on the left, outputs are always on the right), which is a number between 0 (zero) and 1.  Hold the mouse cursor over the gray pin (not its name) and you should see a little popup that tells you some information about the pin, and in the case of numbers, it’s value, which is currently zero (as the slider control is all the way to the left).

Move the slider control to the middle, and hold the mouse cursor over the Number pin again, you’ll see the value has changed.

We’re now going to connect the output pin of the slider to the volume control of the audio output node.

Press the mouse cursor onto the slider’s Number gray pin and, while you keep your button pressed, drag the mouse away from the pin.  If you have done this correctly, you’ll see a new link following the mouse cursor:

Fugio-Alpha-Tutorial-06

Drag the mouse to the Volume input pin of the Audio Output node.  When you’re in the right place the link will turn gray (rather than red) to show that you can make this link.  Release the mouse cursor.

Fugio-Alpha-Tutorial-07

If you’ve done this correctly, you’ll see the new link turn yellow (showing it’s now selected).  Make sure it’s connected to the Volume pin (as above) and not the Audio pin.

As it’s currently selected, if you had made a mistake, you can press the Delete key (or Backspace on OSX) to delete the link.

Slide the slider all the way to the left (as above) to make sure the volume is set to zero (for now).

Double-click in the patch window to create a new node:

Fugio-Alpha-Tutorial-08

We’re going to add an audio signal generator.  Double-click on the “Signal (Audio)” node in the list.  If you add the “Signal (Number)” node by mistake, just press Delete/Backspace to delete it.

Fugio-Alpha-Tutorial-09

The new Signal node is going to generate an audio signal that we will be able to hear via the Audio Output node.  Connect the Signal’s Audio pin to the Audio Output’s input pin, so it looks like this:

Fugio-Alpha-Tutorial-10

If everything is working, you should now be able to slowly move the Slider towards the right, and you should hear a tone playing.  If you don’t, make sure your speakers/headphones are turned on and their volume isn’t set to zero.  Alternatively try a different audio output device using the drop-down in the Audio Output node.

The Signal node can generate several kinds of audio signals.  Let’s experiment with them.  Add a new node (double-click on the path window) and add a “Choice” node:

Fugio-Alpha-Tutorial-11

Connect the Choice pin to the Signal Type pin:

Fugio-Alpha-Tutorial-12

The Choice node now lists the different kinds of signals that you can generate.  Try selecting the different options.  Put it back to Sine when you’re ready to move onto the next step.

We’re now going to play with the Frequency of the generated signal.  Unlike the volume slider, the frequency value doesn’t go between zero and one.  In fact, average human hearing lies between 20Hz and 20,000Hz (20kHz).  Hertz (Hz) is the unit we use to count ‘cycles per second’.

We need to take the output of the slider and map its range to the frequency range we want to cover.  We’ll use a “Number Range Map” node to achieve this.

Fugio-Alpha-Tutorial-13

Here we’re going to use a slightly lower range (20-8,000 Hz), but feel free to experiment.

Fugio-Alpha-Tutorial-14

Number Range Map takes an “Input Value” (which will be our slider value) that it expects to be within the range between “Input Min” and “Input Max”.  By default these are set to zero and one respectively, which perfectly match the range of our slider, so we don’t need to change these values.  What we do need to do is change the output range.

Move the mouse cursor over the input pin called “Output Min” and you’ll see its default value, which is currently zero.  Right-click (or Ctrl+Click on OSX) on the pin’s gray box to bring up its menu, and choose “Edit Default”.  Change the value to 20 and click on OK.

Fugio-Alpha-Tutorial-15

We now do the same with the “Output Max” pin and change the default value to 8000:

Fugio-Alpha-Tutorial-16

To see the effect of what we have just done, let’s add “LCD Number” node and connect it to the Output Value.

Fugio-Alpha-Tutorial-17

Add a new slider and connect it to the “Input Value”:

Fugio-Alpha-Tutorial-18

As you move this new slider, you will see the output number is 20 when the slider is at the far left, and 8000 when the slider is at the far right.  Don’t worry if this is not entirely clear at this point – it’s not the most straightforward node to use but you will find it useful to quickly convert values between nodes.

Fugio-Alpha-Tutorial-19

We can now add a second link from the “Output Value” and connect it to the Signal’s Frequency input.  Move the slider and hear the change in the sound.

The full patch should look like this (click on the image to zoom in):

Fugio-Alpha-Tutorial-20

That’s it for this first tutorial but even at this early stage there are plenty of other nodes to try out if you want to explore further.

In the Nodes window on the left of the editor is a full list of all the currently available nodes.  Click on their names once to get further information and links to documentation.  Double-click on the name to add it to the current patch window, or you can drag and drop it into the window.

If you have any feedback or questions, or were unable to complete the tutorial, please let me know via the comments of this post, or contact me here.

Painting With Light 1.5.1 BETA

I’ve made a new release of Painting With Light for OSX and Windows that fixes a couple of critical bugs in the Sequencer, and adds this rather lovely installer for OSX!

  • Improved HAP playback reliability
  • Fixed crash when loading images into Sequencer
  • Fixed Sequencer drag and drop under OSX
  • New version number scheme (as I’ve switched from Mercurial to Git)
  • Backspace key deletes shapes on OSX

In a recent workshop we experienced some issues with versions of OSX.  After some research into the subject, I may have to recommend a minimum of 10.9 (Mavericks).  PWL definitely won’t run on 10.6 (Snow Leopard), but you might get away with 10.7 (Lion) or 10.8 (Mountain Lion).

Download Painting With Light 1.5.1 for Windows

Download Painting With Light 1.5.1 for OSX

Using code inside Fugio

Screenshot 2016-02-26 09.51.23

An example of using code in Fugio when it makes sense to (trying out the new 2D drawing functionality).

While the node interface is a great way of creating reusable components of code that don’t change much, it isn’t a good fit when you’re trying to define very custom logic. If we stuck to just using nodes, we’d need huge trees of small nodes that would be difficult to build, debug, and maintain, and would have performance overhead implications. Sometimes writing code is just much more efficient in all of these areas, and the design of Fugio recognises this.

Therefore, we can use code, but just when we need to. I feel this offers a good balance between flexibility and simple design.

In other news, there has been a great deal of (boring) work done on refining the editor and hammering out all those little bugs that don’t break things but are just annoying.

The cross-platform installer is under way, with an almost working OSX one done, and a Windows version not far behind. I’m not focussing on Linux right now, as it’s a huge amount of work just supporting two platforms!

I’ve also done some development on the audio side, with the signal generator node receiving quite a bit of focus. I’m using it to build some very basic (at present) synthesisers!

New Fugio Editor Features

Screenshot 2016-02-06 07.39.27

Several new features have been added to Fugio in the past week while enjoying a bit of Californian winter sunshine!

  • Editor zooming – and general trackpad navigation improvements
  • Node grouping – group nodes into nested groups making it much easier to understand the structure of complicated patches
  • Snippets – save a re-usable sub-set of nodes to a ‘snippet’ that can be drag and dropped into new patches
  • Rewrote the audio input node so it’s working well now with FFT analysis, etc
  • Finished off split/join framework where a pin that contains data such as a colour can be right clicked on and a menu of nodes appears to split the colour into RGBA or HSLA etc values

With these additions, I think I’m pretty happy with the level of functionality of the editor so next step is to go through the whole code base and get it ready for its public release.