mathr / blog / #


Multiverse Poetry

Not to be confused with multi-verse poetry...

Fixing replicateM's space leak

Using difference lists to turn out of memory into tiny constant space.

Counting artificial neural networks

Given the total count of weights, how many shapes can the network have?

Lua on FreeDOS

How to compile Lua 5.4.4 using Borland Turbo C 2.01 on FreeDOS 1.3.

Ten years of Algorave

Algorave is made from "sounds wholly or predominantly characterised by the emission of a succession of repetitive conditionals".

Deep zoom theory and practice (again)

Perturbation with rebasing, and bilinear approximation, for efficient rendering of fractal images.

Reflex reboot

A forward-rendered project from 2009 is remade using ray-tracing of signed distance fields.

Low precision high range numerics

A comparison of floating point implementations.

kf-2.15.5 released

Many new features, bugfixes and speed improvements.

Perturbing Nova

Affine-conjugation to move the critical point to 0 to avoid precision loss.


(!!! STROBE WARNING !!!) Another small techno music video.

Generalized series approximation

Using a computer algebra system to explore patterns.

External ray tracing

In which various initial guesses for Newton's method are tested.

kf-2.15.4 released

Many new features, bugfixes and speed improvements.

Julia morph orbit in the hairs

A fractal music video with both zooming and non-zooming parts.

FaB Co.Lab 2021

Co.Lab Sounds is back again with Fringe Art Bath for their 2021 festival!

Legendary Colour Palette

Embedding a 2D image into a 1D palette that gets wrapped back to 2D by fractal spirals.

Deep zoom theory and practice

Perturbation and rescaling for efficient rendering of fractal images.

Wurgo music video and Making Of

Synchronizing fractal zooms to audio with kf-2.15.2 and zoomasm-3.0.

zoomasm 3.0 released

Supporting custom colouring algorithms direct from KF 2.15.2.

kf 2.15.2 released

Design your own custom colouring algorithms in OpenGL GLSL shader fragments.

hp2pretty-0.10 released

Lazy text allows parsing huge files, provided you read them twice.

Transnodal TOPLAP livecode stream

A long weekend of live coding performances + talks + more, for TOPLAP's birthday.

Ommatidia at CUNA, Mexico

Free registration required, online performance February 6th, MX and online.

zoomasm 2.1 released

Plenty more bug fixes, plus a new feature. Also belated 2.0 release announcement.

Ommatidia at Piksel Festival

The 18th edition of the Piksel Festival for Electronic Art and Free Technologies, November 19-21 2020 in Bergen (NO).

zoomasm 1.1 released

Plenty of bug fixes, plus GUI transparency controls and PPM export without FFmpeg.

kf 2.15 released

OpenCL acceleration, hybrid formula designer, exponential map, and more.

zoomasm 1.0 released

First release of the zoom video assembler.

Ommatidia at STWST48x6 MORE LESS

The 6th edition of the 48-hour showcase extravaganza from Stadtwerkstatt.

IKLECTIK presents OsCiLlaTioNs

Summer solstice music festival marathon fundraiser, streaming online.

Optimizing zoom animations again

Finding the optimal zoom ratio when reusing the center portion.

Music for Empty Venues

Charitable music compilation in aid of independent music venues in London.

FaB Co.Lab

Co.Lab Sound experimental test bed for collaborative live and sound art at Fringe Arts Bath online festival.

KF 2.14.10 released

Lots of new features, lots of bug fixes, lots of speed improvements.

Shut Down As A Service

What if a systemd boot service units were to shut down the computer?

Fast density estimation

Histograms of histograms to blur separably bucket by bucket.

Barry (postfix bytebeat)

Fed up with counting brackets, I adopted postfix-notation. Now I am fed up with counting stack items...

Crisis (deep zoom)

Not a Mandelbrot set deep zoom, but it might resemble one at first glance with its nested period-doubling crises.

Spider algorithm with a path

Pull back a path from iterates of \(\theta\) to find \(c_{\theta}\).

Slow mating of quadratic Julia sets

Gluing two \(z^2+c\) quadratic Julia sets sometimes gives a \(\frac{z^2+a}{z^2+b}\) rational Julia set.

Website updates

Improved mobile experience.

MIDI network between Linux and Amiga

Small tools in C for Linux and Blitz Basic 2 for Amiga to transfer files over serial MIDI link.

Sounding DIY III: Vitalist Materialism

RDEX in group show at Hop Projects CT20, Folkestone, UK, curated by Laura Netz.

Ultimate Anti-Buddhagram

Two ways of rendering the 4D Mandelbrot/Julia/Buddhabrot hologram.


Group show featuring Dynamo, and Clive workshop, in Zagreb, Croatia.


Extract channels of EXR files.


mathr&netz perform with hardware synthesizers accompanied by psychedelic fly vision projection.

Haar wavelets

Haar wavelets → energy per octave → energy per octave over time → audio fingerprint

Fixed-point numerics

An arbitrary number of limbs before and after the point, for higher precision within a limited range.

Making KF fast again

An extra branch is floated out. Plus SIMD to make it even faster.

rounded 0.2 and 1.0 released

Properly rounded floating point numbers of arbitrary precision via MPFR.

EVA London

Conference paper: At the Helm of the Burning Ship

Harmonic Protocol

Feedback amplifying tones according to the level 7 semitones away.

Algorave Elephant

Algorithms are infecting discos and ruining lives.


An autostereogram is a single-image stereogram, designed to create the visual illusion of a three-dimensional scene from a two-dimensional image.

Sonic Electronics Festival

Open call for talks on sound arts, live audio-visual performances, and live 4.1 music.

Audioblast Festival #7

Festival of sound creation using the internet as a venue for diffusing live experimental, drone, noise, field recordings, sound poetry, electronic, contemporary music, ...

One-Off Moving Image Festival

One second long movies on the theme of humans vs nature.

15 years of TOPLAP, London

Celebrating 15 years of live-coding, part of an international multi-day streaming event.

IFS fractals in Inkscape

A multiple copy reduction machine via linked images.

Implementing a 4-pole hi/lo DJ filter

Morphing a Butterworth filter between low pass and high pass.

Pure-data in the browser using Emscripten

Compile a modified libpd and pure-data to HTML, Javascript, Web Assembly.


Animated Voronoi cells on a sphere.

Newton's method for periodic cycles

Reject lower periods, and iteratively perturb a known cycle along a path.

Newton's method for periodic points

Rejecting lower periods by division, instead of checking later.

ArtFutura 2018 London

Screenings, talks, performances, London, late November 2018.

JACK on top of Pulseaudio

In which the usual heirarchy of audio APIs on Linux is inverted.

Series approximation for the Burning Ship

A small region bouncing around the dynamical plane seldom touches an axis.

Optimizing audio DSP code

Doing less, less accurately, and less often.

Unskewing the Burning Ship

Based on the size estimate for mini-ships, use derivative matrices to calculate optimal viewing transformation.

Global Algorave (Sheffield)

Probably the world's first two-room Algorave, with an international line-up of top notch live coders and algorithmic producers.

Enumeration of Misiurewicz points

How to determine the number of Misiurewicz points of a given (pre)period in the Mandelbrot Set.

Sounding DIY (Split)

My a/v work Puzzle is part of a group show, 6th-22nd August 2018.

Pronunciation edit graphs

All shortest paths between words by adjacency of prounciation.

hp2pretty-0.9 released

Detached key and title options, with example for embedding in PDF.

free_art_-_source (Rijeka)

Jul 6th-13th 2018, opening Friday July 6th, 8 PM, at Filodrammatica Gallery (Korzo 28/I, Rijeka)

LAC Sound Night

Linux Audio Conference Sound Night in Berlin.

Art In Flux

Video screening at the Art In Flux Exhibition this week in London.


Exploring the fertility of errors and questioning our inherited worldview.

Non-uniform sampling

Scattering aliasing across the spectrum as white noise instead of folded frequency peaks.

Perturbation algebra

A collection of rules for deriving perturbed iterations.

Algorave Algosix

104 live streams of algorithmic dance music+friends over 72 hours.

Polar decomposition in 2D

Decomposing a 2x2 matrix into scale rotate and stretch.

Accelerating circle packing using histogram pyramids

A fast way to pick a random unoccupied pixel in an image.

Log-polar graph paper

Fading between levels of detail to avoid huge scale differences and sharp edges.

The Burning Ship

A fractal like the Mandelbrot set but with absolute values thrown in to the mix.

Iterated function systems with cube maps

Model the whole complex plane via the Riemann sphere as an OpenGL cube map.

Möbius transformations and the Riemann sphere

Sphere rotations correspond to certain elliptic Möebius transformations, which can be interpolated in a Bézier fashion.

Misiurewicz domain coordinates and size estimates

Do the same for Misiurewicz domains as has recently been done for atom domains.

Atom domain coordinates

Coordinates within an atom domain surrounding a periodic nucleus in the Mandelbrot set.

Inflector Gadget v0.3.2

Keyframe animation and the return of single precision support with OpenGL 3.3 (OpenGL 4 double precision still an option)

Efficent automated Julia morphing

Nucleus finding, Misiurewicz point finding, and a bit of guesswork, combine for successful O(period) automatic Julia morphing.

A more accurate elliptic variation

Improving image quality by avoiding catastrophic cancellations.

Deep zoom rendering cost

Some conclusions about perturbation techniques.

Morphogenesis colouring book

A self-published physical artifact of reaction-diffusion.

Falling Leaves

A live-coded bytebeat music session inspired by approaching autumn.

GULCII at FARM (Oxford, UK)

A code recital performance in untyped lambda calculus.

Approximating hyperbolic tangent

Computing Padé approximants isn't so hard after all.

Noise in the Shed

Four hours of Noise in the Shed! From 4pm till 8, part of Smash it Out.

hp2pretty-0.8 released

New sorting and filtering flags, plus pattern fill for low ink printing.


Based on a SIGGRAPH 2001 paper, with blue noise generated by inverse Fourier transform.

Approximate self-similarity

Approximate self-similarity of baby Mandelbrot sets.

Asymptotic self-similarity

Asymptotic self-similarity about Misiurewicz points in the Mandelbrot set.

Algorave London

Algorave is a combination of "algorithms" and "rave", the opportunity to dance to alien rhythms and freaky visuals, all created from code before your eyes.

Clusters 3D

Endosymbiosis simulation leads to sticky boid-like flocks that behave like super-organisms.

Filtered atom domains

Highlighting previously invisible periodic properties in the Mandelbrot set.

Periodicity scan

Finding periodic points in the Mandelbrot set to make annotated images.

Violations III at Cafe OTO

Performance with 'clive', supporting Dirty Electronics, and modular sets by Eden Grey and Suso Flores + Crowley Engel II.

Divergent Protocol

A feedback process involving speech synthesis and automatic transcription.

Kalles Fraktaler with GMP

Using third-party libraries for acceleration.

Coupled continuous cellular automata

Patterns similar to multi-layer reaction diffusion systems.

Emergent Protocol

Audio feedback process inspired by Deep Dream.

Inflector Gadget v0.2

Double precision using OpenGL 4 to avoid postpone ugly artifacts.

Audioblast Festival #5

Networked diffusion of experimental, drone, noise, field recording, sound poetry, electronics...

Structurally equivalent Latin squares

Canonicalization over symmetries allows them to be counted.

Thoughts on [expr~]

Possible ways to reduce overhead?

Inflector Gadget

Inflection mapping for complex quadratic polynomials.

Oscillator crisis resolved

Velocity Verlet integration beats Runge-Kutta 4/5 for energy conservation.

Coupled oscillator crisis

An experiment that failed with an energetic explosion.

Realtime Monotone

Optimized histogram lookup by reducing excess precision.

Monotone at MADATAC 08

January 12th to February 5th, Centro Conde Duque, Madrid, Spain.

Rollover 2017

Another arbitrary counter rolls over, hooray.

Setting up a Tor gateway

"Snooper's charter" bill becomes law, extending UK state surveillance.

Finding parents in the Farey tree

An application of the extended Euclidean algorithm.

Conditional x Algorave

Live experimental electronic music, 17th November, London.

Monotone at Mozilla Festival

Black-and-white flame fractals synchronized with rich ambient drones.

Edinburgh bark

Thirty trees in the botanical gardens.

Calendar 2015 - Lyapunov FM

Image from 2013 LAC paper, Lyapunov Space of Coupled FM Oscillators.

Calendar 2015 - Hyperbolic Fish

A Euclidean tiling generalized into a hyperbolic one.

Calendar 2015 - Elpis

A computer-aided drawing using conformal mapping and hyperbolic tiling.

Raspbian in QEMU

Booting Raspbian Jessie in QEMU, some notes.

Puzzle on Raspberry Pi

Experimental OpenGL driver used by Pd and Gem with PdLua seems to work mostly fine.


A camping festival for hackers, geeks, scientists, engineers, artists, and crafters.

Approximating cosine (update)

Claims of total superiority were premature.

Shades of Gray

Five-bit Gray code rotary encoder.

Plastic rectangles

The non-trivial partitioning of a square into 3 similar rectangles.

Nebulullaby Launch

Live music at the launch of a vinyl compilation album.

Calendar 2015 - Loxodrome

Exponential spiral on the Riemann sphere.

Vector Buddhabrot

Tracing the boundaries of hyperbolic components.

Collatz fractal

Piecewise integer recurrence translated to complex function.

Complex squaring

Benchmarking three different implementations.


Secure connections with Let's Encrypt


Physics-based ray-tracing in curved space.

Simpler series approximation

When thinking a bit harder beats elaborate computer code.

Julia morphing symmetry

Rotation numbers in angled internal addresses are significant.

Calendar 2015 - Sayagata Loop

Hyperbolic variation of Sayagata tiling pattern.

Annual archives

Because ~300 posts linked from one index is obese.

Floating point with extended exponent range

For when you need really big numbers without high precision.

Adventures with radiosity

Porting rrv to OpenGL 3 for a 30x speed boost.

Modes in a box

Comparing the measured frequency response of a room with algorithmic predictions.

Möbius Infinity

Square cross-section lemniscate of Bernoulli, with a twist.

Calendar 2015 - Gradient

Interleaved overlap-add with five colours.

Two spirals out...

Sculpting patterns in the Mandelbrot set.

Approximating cosine

9th order polynomial is both faster and more accurate than table lookup.

Biquad conversions

pole-zero -vs- direct form 2 -vs- pure-data

Modes on a plate

Solving sparse eigensystems with Octave.

Calendar 2015 - Two Beetles Meet Where Land Meets Sky

Distance estimated Newton fractal for a rational function with zeros at {1, i, -1, -i} and poles at {-2, 2}.

Calendar 2015 - Lozenge

A grid of squares getting smaller at the edges. is closing, hosting myself from now on


Adding noise improves image quality during quantization.

Bandlimited wavetables

Borrowing the multi-resolution technique from OpenGL mipmapping.

Misiurewicz domains

An extension of atom domains to preperiodic points.

mightymandel v16

Sliced rendering, improved glitch correction, reduced video memory usage, and more.

Writing a CV with LaTeX

Custom fonts, colours, hyperlinks, and visible URLs for printing.

Calendar 2015 - Dandelion

A shadow of the Mandelbrot set formed by periodic external rays.

External angles of Misiurewicz points

Numerical investigations, hoping for a combinatorial revelation.

Calendar 2015

A selection of images from the last few years.

mightymandel v15

Big bad bugs been debugged, and nifty features added.

mightymandel updates galore

Automatic glitch correction, zoom sequence rendering, tiled rendering for high resolution or anti-aliasing, ...

Automatically finding external angles

Trace a number of probe points in the atom domain.

Making seasonal cards with Snowglobe

Combining saved flake images using command line tools.

Navigating in the hairs

Around embedded Julia sets in the Mandelbrot set.

Clockpunch Theorems

Do the hands of clockpunch ever form a regular hexagon?

ReCode Project - Topographic Form

Reimplementing computer art from the 1970s, part 2.

Art group

7 weeks of experimentation.

Linear time is so overrated

The future is unwritten (or is it?).

Untitled Poem

Based on a true experience.

Stretching cusps

Conformal mapping using Möbius transformations.

Drip versions

Chaotic rhythms from dripping taps.

Atom domain size estimation

A series of approximations result in a simple formula.


A cube of cubes that can be turned inside out.

Recursive star polygons

Pencil drawing translated into GLSL code and generalized.

Style update

Feeds made more discoverable and colour scheme adjusted.

A roadmap for distributed Mandelbrot set rendering

Some notes on various aspects of design and potential implementation.

Fish variations

Generalizing a tiling into hyperbolic variants.

Stroking curves of constant width

An approximation for relatively narrow widths.

Rectangles on a triangular lattice

always contain a multiple of 4 triangles

Butterfly Variations

triangular vertex symmetry using p²+q²+pq colours

Escher's Butterflies

reverse-engineering a tesselation

More Hospital Drawings

using old media when new is unavailable

Hospital Drawings

treat it as an artist residency


C audio livecoding skeleton

OpenLab London OpenNight #13

performance with mutually-modulating FM oscillators

hp2pretty-0.5 released

Significant speed improvements thanks to 'floatshow' and 'attoparsec'.

buildtorrent needs a new maintainer

Are you the one to take the project forward?

Major CMCMS feature enhancements

Context-aware navigation and hyperlinking.

Video encoding tips

I think I found that a better way.

buildtorrent update

Miscellaneous news about the .torrent file creation tool.

Kiblix Maribor

Free software art festival: workshop, installation, performance...

noise=noise presents The Basement Series

Wednesdays in August, 7pm @ The Foundry, 86 Gt Eastern St, Old St Tube, London, UK

pdlua-0.5 released

Now supports Pd's [value] and [table], and Lua's require().

pdlua-0.4 released

Bug fix release with incompatible API changes.

/etc/fstab line for less sucky vfat USB pen drive

udev provides a /dev/disk/by-id/ unique to each drive.

buildtorrent-0.6 released

New autoconf build system and manual page.

pdlua-0.3 released

New features: sends, receives, clocks, static build.

pdlua-0.2 released

Incompatible changes but upgrading recommended.

buildtorrent-0.5 released

Large file support and progress bar.

unmed: recovering tracker music

Extracts useful data from OctaMED MMD0 format files.

buildtorrent-0.4 released

Bug fixes and useability enhancements.


Extending PureData with Haskell.

buildtorrent-0.3 released

Feature-complete metainfo file structure.

buildtorrent: a createtorrent replacement

A simple command line torrent file making program.

Dorkbot London presentation

Tone mapping for high dynamic range imaging.


4th-11th November 2006 / London UK


DVD production using a Free Software toolchain.

Kernel Oops: kswapd0 exited

Journalling filesystems (hopefully) to the rescue.


Constraint-based music programming.

Back home after Make Art 2006

Fun with Free Software, art, and snow.

Dual-head and TV-out on an ASUS W3H00N

Xorg configuration on GNU/Linux/Gentoo with ATI hardware.

Openlab Openday 2005-12-11

Interesting presentations and performances.

Dice Photos

Q: What happens when you have a pair of dice, a digital camera, some left-over black card, and are bored?

Dice Music

Another day, another Album-A-Day.

Fun With Sed

Pure-data's readanysf~ isn't perfect, so decode to WAV using Sed to preserve directory and filename information.

Ruby On Rails has_and_belongs_to_many id gotcha

Remove 'id', no primary key in association table works ok.

Beyond Satire

The 9th blade cuts your face right off.

Placard London 2005-09-10

My set went wrong but you can listen back.

Placard London (this Saturday!)

Many many hours of live music from noon to the early hours, bring you own headphones style.

Pharmacy Cock-up (again)

    It's all just a little bit of history repeating.

    Podcasting Is Go! (beta)

    A simple PHP script for indexing as RSS with enclosures.

    Joining GOTO10!

    I feel like I've come home from a long journey.

    ISO C99 const qualifier madness

    "Phenomenally stupid" quotes one observer.

    Busy Busy Busy

    Cellular Automata in Javascript

    My First Visual Art Commission

    Responded to a poster calling for works.

    I'm out of CaB Photoshop Tennis 2005

    Ggetting as far as I got is pretty good going, I think!

    Audio-Visual Bonanza

    Phase3, Scanned, Robin Lustig, Moonlight Lens Flare, Sierpinski Circles, Photoshop Tennis, Flickr,

    No! to Software Patents

    It's OK to grant a time-limited monopoly on some things, and it's out of the question for others

    Moving is laborious

    Plumbing problems and heavy lifting.

    I'm installing Gentoo

    4 Linux installs on 1 computer, why that sounds like a fine idea!

    xargs is handy

    More flexible than wildcards.

    Lua + SLab = SLuaB

    A tiny-but-powerful high-level language ideal for the reimplementation of SLab


    Inside Outside album released, and Swings And Roundabouts at Openlab#1


    A textual dataflow language for audio processing.


    Apprehension regarding self-sufficiency.