In the years that I've been creating things in Pure Information I have amassed quite a collection of unfinished and messy patches. Over the concluding few days I take been releasing a few of these patches and techniques that I implement when programming in Pure Data.

Alive Coding

The last tutorial isn't that much about actually programming with Pure Data and is more than about performing with it. More specifically, alive coding. Alive coding takes programming to a performative level. At that place's been a lot of writing recently about Live Coding and so take a expect around. I've been programming alive visuals for Pure Data since 2014 (a lot happened that year). It's non without it's problems, some of which I written nearly in the past.

One problem I've plant is displaying your patch alongside your visuals. For live coding musicians this isn't much of a trouble as the output of the alive patching is sent to the sound card, non necessarily the screen. For people live coding visuals in Pure Data the output (projector) would be needed for both the visuals output and the patch. If only at that place was a mode to overlay the patches onto visuals (like in Fluxus, Cyril and Livecodelab)!

The near reliable cross-platform method to do this is to use Open Broadcaster Software (OBS). OBS is a keen piece of software used by many gamers for livestreaming. A neat feature of it is to be able to combine multiple media sources into one to and then stream or send to a projector or video file.

To overlay your patch onto your visuals first create a Precious stone window with some graphics in it. In OBS, under Source click the + push button and choose Window Capture. Give the new source a proper noun. And and then, nether Window choose your GEM output window.

Next, create a new Window Capture source and give it a name (perhaps Pure Data patch). You may have noticed that your patch completely covers your Precious stone source. No worries! Right-click on your Pure Data patch source and click on Filters. In the adjacent window click on the + button and cull Chroma Primal. Give the new key a name (White).

In the next window, nether Key Color Blazon choose Custom and and then select the colour. You should choose white (#FFFFFF). You may need to change the settings under Similarity and Smoothness to get the right await.

If you've but tried this in Pure Data vanilla you'll detect that your objects are also transparent. I'm using Purr Data (which you should likewise). In this version of Pure Data all of the boxes are slightly grey, resulting in them not being transparent when you apply the Chroma Key.

Imagine a scenario where y'all're collaborating on an Algorave set with a musician and there's merely i projector. Both will desire to projection their lawmaking just there'southward just ane projector. What to do?! Luckily a combination of OBS and desktop sharing has you covered.

TidalCycles code from yaxu

If the musician can share their desktop over a network then you can add that in every bit a source in OBS and do the usual thing of applying a blush key filter. However, this requires you both be on the aforementioned network, which isn't always possible or efficient. However, if one of you has a recent Android telephone you tin get over this hurdle and take loftier quality desktop sharing quality.

On your phone create a wireless hotspot. You lot don't need to employ mobile data for this so feel free to plow it off.

Connect both machines to this newly created network.

On the remote (musicians) laptop, open Desktop Sharing options and enable the option "Permit other users to view your desktop". You tin choose to require a password and accept a user confirm on each new access request.

On the host (visuals) machine open up Remmina Remote Desktop Client.

In this new window click New. In the next window modify the Protocol to VNC – Virtual Network Calculating. In the Basic tap below click on the … button.

You should see the name of the remote calculator listed. Click on one of them.

Finally, press Connect. When you try to connect to the remote machine you lot may become a prompt asking the user to confirm that the connection request is permitted.

One time the connection is approved you should come across the remote machine on your computer!!! 🙂 And now you can go back to OBS and add together that window as a source, utilize a Blush Primal result and then overlay it onto your visuals.

Sadly yous can't and then use this source to apply equally a texture to your objects in Pure Data, just it'due south a dandy start to merging visuals and music live lawmaking. I first tried out combining my own code and visuals at the Chemic Algorave in Newcastle and it went actually well. I as well fabricated apply of OBS'south "Employ LUT" filter to change the colour of my whole video output.

MVI_3763

Chemical Algorave

I and so tried incorporating a musicians lawmaking at the Algroave at Crash-land in Kortrijk.

I'yard hoping that this will aid lead to more collaborations between Algorave musicians and visual artists 🙂

In the years that I've been creating things in Pure Data I have amassed quite a drove of unfinished and messy patches. Over the next few days I'll exist releasing a few of these patches and techniques that I implement when programming in Pure Data.

Stop Motion

It was at the Co-Position coming together of the Libre Graphics Research Unit in 2012 that I first encountered Toonloop. It's creator, Alexandre Quessy, gave a live performance using lights, Lego pieces and other objects. I was really quite in awe of how stop-motion was used to create quite an enjoyable functioning.

Of grade my first instinct was to try and recreate this but in Pure Data. I wasn't the first to effort, and I in fact have some memory of seeing Toonloop's creator himself trying to write something similar in Pure Data although I can't find any sources…

My first instinct to recreate Toonloop was to use [pix_write] to write a series of images and then play those back using [pix_image]. The problem there is that there's no easy manner to read an arbitrary prepare of images from a directory.

In the end I learnt nigh [pix_buffer_write] which allowed me to story an paradigm frame into a buffer which I tin so recollect using [pix_buffer_read]. So that'south the basic functionality sorted! When I went to Databit.me in 2013 Axel Debeul helped to improve the patch a lot. The improvements immune me to save a video from each animation. You can observe the nigh contempo version of the patch below

That'due south where the problems commencement to ascend, some of which I oasis't solved nevertheless. The videos are created via [pix_record]. When a frame is captured it is sent to [pix_record] and then recording is paused. Withal, when you look at the saved video it has a really weird frame charge per unit and doesn't play smoothly. Even when the frame rate is set explicitly it somehow doesn't piece of work.

Don't ask me nearly the cat ears

Perhaps making a video out of the animations is something to exist washed in post processing rather than in Pure Data. [pix_record] has e'er been a very complicated object to work with so peradventure I demand to investigate further and effort to observe the right configuration of all of its many options.

In the years that I've been creating things in Pure Information I take amassed quite a collection of unfinished and messy patches. Over the adjacent few days I'll be releasing a few of these patches and techniques that I implement when programming in Pure Information.

Infinite Scrolling

For a performance at ChipFest 10 in 2014 I wanted to recreate the look of a scrolling video game only within Pure Data. Certain, I could have just used a panel emulator or recorded a clip and used that just doing it all inside Pure Information allows me to have some more flexibility with how I perform. Here'southward what I made:

I somewhen didn't use it all only I did use the a few techniques I learnt for time to come performances.

They key to those visuals and for things like 2D side-scrolling computer games is to have infinite scrolling background. That is, to take a single image which tiles and repeats seamlessly as it moves across the screen. Not sure what I mean? check out these examples from Tv history:

Borrowing a bit from this answer on the Game Development Stackexchange, first you create a single tile of size, say, 512×512. You scroll information technology across the screeen horizontally, and once information technology's position gets to 512px (or -521px) it jumps back to it'due south original position.

If the original tile is repeated a few times and then offset so that the borders of the tile tin't be seen and so suddenly yous have an space scrolling groundwork! To repeat an object in Pure Data we employ the [repeat] object. This object repeats whatever object and its translations. And so, if a [cube] has a translation of i on the X axis and is [repeat]ed 4 times, and so the first [cube] is offset by 1, the second [cube] is start by 1 in relation to the start [cube] (or offset by 2 in total). The third cube is offset by 1 in relation to the second cube (or 3 in total), and and then on.

In action this looks like this:

Success!

Yous can also do the same with the Y and Z axis. For the Z axis you just need to decide where the vanishing point is. Or you could e'er use fog 😉

The patch for this is really quite unproblematic but I've made it available for download below:

In the years that I've been creating things in Pure Data I have clustered quite a drove of unfinished and messy patches. Over the next few days I'll exist releasing a few of these patches and techniques that I implement when programming in Pure Data.

Randomise Text

In the early 2010s I had quite an interest in zines. I had co-organised the Birmingham Zine Festival and was quite regularly reading this. As a result of this in 2011 I started collaborating with a friend, Rebecca Evans, on a collaborative zine. The concept is that we would translate each others' way of working using our regularly used tools. Rebecca specialises in textiles and has quite a skill at crocheting, amid other things. I, on the other mitt, can barely operate a sewing car and feel much more at home using a soldering iron or computer.

For Rebecca this meant trying to create some sense of noise and randomness only using sewing. The results, even if only tests, looked quite awesome!

For my own take on this I wanted to go on the text based piece of work that I was creating at the time. Rebecca two poems to work with, Lovesong by Ted Hughes and Lady Lazarus by Sylvia Plath.

I wanted to remix the works by jumbling the words and/or sentences. Looking at recent(ish) work you can see that this would go a bit of a theme in my piece of work and references. spɛl ænd spik, Silverish Screen Child-bearing, and my reinterpretation of Variations on a Themeby Casey & Finch by Erik Bünger each await at cutting up and rearranging words.

Cut upwards words and rearranging them can exist achieved in many languages using merely a few lines of code. One method is to put each word or judgement into an array and and then impress those indexes in the array randomly. In Pure Data it isn't every bit piece of cake.

For nearly cases Pure Information has the [tabread] and [tabwrite] objects. To use [tabwrite] you specify the index and then write data to information technology. You then motion onto the side by side index number and write more data to it. To read the data back you do the inverse but with [tabread]. This works nifty with numbers but non with text.

Y'run into, Pure Data has several information types. Merely similar php, python and others have strings, numbers, text, etc, Pure Information has symbols, floats, integers etc. The grapheme "6", for example could exist a number (default) or a symbol – using a combination of a number box, [floattosymbol] and and so a symbol box. As a number it can be used in arithmetic operations, as a symbol information technology's practiced for when yous don't desire it to be treated as a number. The unfortunate affair for me/us is that [tabread/write] doesn't accept symbols, merely numbers. Damn! Enter [m_symbolarray] from rjlib.

Using this abstractions y'all tin put symbols into an assortment in the same way as numbers. With that problem solved I now could decide whether I wanted to jumble words or sentences. In the quondam example it would be unlikely to return anything that makes sense, which is ok. In the latter case information technology could still produce interesting results that could fool some people into thinking it was every bit it should appear. So, information technology was important to have the option to do both.

Using [textfile] you can specify what a delimiter is. A delimiter specifies where ane list item stops. Past default [textfile] uses a infinite as a delimiter. Past sending the message [read textfile.txt cr( to [textfile] I tin tell it to use a wagon render (Enter central) equally a delimiter. Unfortunately there isn't great documentation on what the others are!

Using the [until] object and a carefully crafted series of operations I crafted a patch to do the following: Determine on delimiter, read the text file, output each list particular to the m_symbolarray object, wheel through text file and exercise this until we reach the end of a text file.

With the table now populated hither's where the interactive part comes in. A user could decide to either dump the contents of the array into a text file or spit out each item to, say, a object for displaying on a screen.

You tin download the finished patch below:

Below are my remixes of the two poems for you lot to download:

  • Lady Lazarus by Sylvia Plath
  • Lovesong by Ted Hughes

it's a shame that the zine was never finished but it was nonetheless a great learning experience.

I'chiliad sure that by at present the relatively new object can solve many of the problems I had using [textfile] to read the file, so perhaps at some point in the future there will be an update.

In the years that I've been creating things in Pure Data I have amassed quite a collection of unfinished and messy patches. Over the next few days I'll be releasing a few of these patches and techniques that I implement when programming in Pure Data.

Image to Indicate

If you're into experimental ways of creating visuals and happened to be on the internet around 2013 you lot have take been sent information near software chosen PixiVisor. The software, adult by Alexander Zoloto, allows one to transmit an image via an audio bespeak to another device which decodes information technology and displays it as an epitome. In this way you can then apply audio furnishings to the signal and make some pretty cool visuals. I never tried it myself merely was quite impressed by what I saw.

Being the open source kinda guy that I am, and a devout use of Linux I was interested in knowing if there was a manner of reproducing this using open up source software.

sloev got in bear upon with me some time later in 2013 to demonstrate a Pure Data patch he made that quite faithfully reproduced PixiVisor in Pure Information!

Similar PixieVisor this worked past having two devices, one to transmit and another to receive. I quite quickly and roughly rewrote the patches and then that this procedure was washed all in one patch. Its first outing was the 2013 Pecha Kucha result in Coventry where I provided visuals for Ashley James Brown/Arctic Sunrise.

The patch works past using the [pix2sig] and [sig2pix] objects. As their names suggests they convert sound signals to pixels and vice versa. The primal to how the Pixievisor remix patch works is setting the block size. This tells your computer how many sound signals to process per frame and therefor how many pixels.

By default on Pure Information this is prepare to 64, which would allow us to piece of work with an image eight x 8px which is tiny.By increasing the cake size to 4096 we tin can begin to piece of work with images of size 64×64 (because 64 x 64 is 4096).

Yous might now be thinking that you lot can increase the cake size and work with higher resolution images. Well, that'south non actually possible unless y'all desire to cede frame rate. If we take a commonly used video resolution, 640 x 480, you would need a cake size of 307200. Attempt doing this and come back when your computer has washed crashing 😉

With sloev's blessing I am now releasing this modified patch.

The patch is prepare to apply the webcam equally an input but it can have whatsoever media input that Pure Data can handle. If y'all don't want to have to resize everything earlier bringing it into Pure Data you can always use [pix_resize] to, um, resize your input live. This has the added benefit downside of putting extra strain on your computer.

Perhaps it'due south a dream that volition never come truthful, simply it would be good to one solar day be able to have a completely open up source, multiplatform solution for video synthesis. I like the look of Lumen but unfortunately it's Mac simply 🙁 Until then, hope you lot savour the patch!

On 10th September I'll be delivering a Pure Data for Beginners workshop every bit part of #ArtistsCompute2016 in Coventry.

Pure Data Patching Circle

Having recognised that computers have changed society beyond mensurate #ArtistsCompute2016 is dedicated to mapping, presenting, probing and escalating this impact.

The festival, which is built effectually a large group exhibition of the same name, features many educational, participatory and enjoyable events including workshops, talks, screenings, performances and parties.

A full, detailed timetable is available here.

The workshop will exist a short intense workshop focusing on the basics of using Pure Information and GEM. The workshop will accept place from xi:00 – 12:30 at Fab Lab Coventry. They will already have computers there simply if you have a laptop please ensure information technology has Pure Information install and that Gem is working. For details on booking and for information about all the other events delight check in with Role for Art, Design and Applied science.

One more than thing…/h2>
Last Day is surprisingly still installed and is included equally part of the festivities. Cheque it out if you haven't seen information technology already before it'south gone!

On various dates in March and April 2015 I'll exist running a Pure Data Patch Circle every bit function of Birmingham Open up Media'southward Creative Code series.

pdpatchingcircle

A new 'Patching Circle' on creative code designed and run by artists, for artists. A Patching Circle is an breezy gathering of anyone who is interested in patching languages such as Pure Data, Max/MSP, vvvv, and Quartz Composer.

Besides as covering the basics of Pure Data, we'll besides offer peer-to-peer support for more experienced users and help with specific projects.

Artist Antonio Roberts leads the Artistic Code #1 series on Pure Data. Absolute beginners and experienced patchers are welcome. The event is free and open up to anybody – work on personal or professional projects, school work, or just patch quietly to yourself in a room full of other people patching patches and helping other people patch.

The patching circle is free and runs from 18:00-21:00 on the following dates:

  • Monday 16 March 2015
  • Thursday 02 April 2015
  • Thursday 16 April 2015
  • Monday 27 Apr 2015

There might also be pizza!

I'm happy to announce the release of NeonPlastic, a generative Pure Data artware piece by myself (visuals) and Joe Newlin (audio), inspired past Neoplasticism and all things indigestible.

The higher up video acts only equally a preview. To experience this piece in all its hdmegaawesomeness take hold of the code, open up Pure Data, get yourself a loving cup of tea and press the big red button!

NeonPlastic

NeonPlastic

NeonPlastic

NeonPlastic

On one of my frequent journeys on the information motorway I stumbled across Little-Scale's Mass JPG Killer. This handy little patch allows a user to load any binary file and "glitch" it by overwriting some of the original data with a repeating pattern of user-divers data.

Mass JPG Killer by Little-Scale

The only problem (for me and people like me) is that I don't have Max/MSP and can't install it on Linux, meaning I've never actually used it!

Little-Calibration very kindly provided the internet at large with screenshots of the inner workings of the patch. I was able to to utilise a whole lot of science and maths to rewrite and reinterpret this patch of mass destruction in Pure Data, which is more than easily available.

Pure Data File Killer

Click to download

Click to download

Usage

Usage of the patch is very simple and can yield some quite interesting results!

  • Click open to load a binary file. Pure Data may freeze for a moment if yous're loading in a large file. I don't recommend loading in a file over 100MB
  • Set the byte commencement. This number represents the starting point at which the patch volition start "corrupting" the file. If you're a glitchspert (glitch + expert) you'll remember that you should avoid modifying the header. To avert modifying the header set the offset to the 1000s.
  • Set the period value. This can be difficult to empathize, and then here's an example: If the period is prepare 1378 then at intervals of 1378 bytes from the offset it will modify the information.
  • Set the information value. This works in conjunction with the period value. Using the previous example, if the data is ready to 102 then at intervals of 1378 bytes information technology volition supervene upon the current byte value with 102.
  • Press either random period or random byte information to populate these values with random values.
  • Press glitch it!. Guess what that does.
  • Write the files to save them to the same directory equally the source file. The original file will not exist overwritten.
  • To start again printing the reset button. It will load the original byte data.

This patch is very like to Footling-Scale'south with a couple of exceptions:

  • The offset cannot be set for each example. This is by design as I felt it was a bit redundant.
  • You no longer need to copy the hex information to a new file in order to view the results
  • It'll piece of work on whatsoever platform that can run a full version Pure Data Extended. This should include the Raspberry Pi version as Jewel is not required.

Output

Although it was originally inspired past the JPG Killer yous can go some very interesting results if you lot utilise other file formats and gear up the menses data to a number less than 20.

Pure Data File Killer - Bliss (sgi)

Pure Data File Killer - Bliss (jpg)

Pure Data File Killer - Bliss (pix)

Pure Data File Killer - Bliss (pix)

Thank you to everyone that attended the Pure Data Play workshop on 2d November as part of Flip Festival. In the space of two hours the participants went from knowing cypher about Pure Data to manipulating 3D objects on screen, playing videos and webcam streams and controlling their videos using user-defined keyboard shortcuts. Some images of the patches:

Pure Data Play - Alex Jolliffe

Patch past Alex Jolliffe


To those of united states who know more than well-nigh programming and using Pure Data these patches may seem unproblematic, just hopefully from this tutorial the participants take gained an insight into what is possible using Pure Data.

What I like virtually about Pure Data is that it is very extensible. Information technology tin can accept data from a broad range of sources – including Arduino boards, game controllers (including Wii remotes and Kinect controllers), microphones, lists of data and even raw binary data – manipulate it and give sound or visual feedback. All-time of all it does it in a way that is very logical. Some people may prefer to write lines of information, but with Pure Data (and other dataflow languages) yous can visually run into how data flows and is manipulated.

If y'all're interested in attending or booking me for a Pure Data tutorial become in bear upon!