Took a couple of days of coding, and resulted in my biggest commit to KF in quite a while:

28 files changed
1489 insertions
926 deletions

I refactored the reference orbit storage into double precision plus floatexp (double precision with extended exponent) for only the iterations that need it, in preparation for adding scaled perturbation computations as described by Pauldelbrot in:
fractalforums.org/programming/

It seems to work ok, after some false starts with off-by-one in series approximation, but the extra logic involved in fetching reference data in the perturbed calculations probably slows it down a fraction (I didn't benchmark yet).

If I manage to complete the second phase, the calculation efficiency for zooms beyond the range of (long) double precision (1e308 or so for GPU, 1e4900 or so for x87 CPU) should be very significant, because the current floatexp renormalization after every arithmetic operation is super slow.

as seen on mailing list:

--8<--
of whose is approaching (june 1st 2021).

Vortex Music Journal | v.9 n.2, 2021 | Call for Papers
“A quarter of century of Pd: past, present and future”.

Guest editor: Dr. Alexandre Torres Porres.

- Full Call: vortex.unespar.edu.br/call_v9_
--8<--

kf-2.15.2.2 released with some small but important bugfixes
get it from mathr.co.uk/kf/kf.html#kf-2.15

- new: entropy colouring example palette in OpenGL GLSL
- fix: tiling seams with certain colouring algorithms in OpenGL GLSL
- fix: checkbox to disable power 2 Mandelbrot derivative based glitch test (failing location reported by Microfractal)

Experimenting with colouring for : for each pixel, normalize a neighbourhood's smooth iteration count so the minimum is $0$ and the sum is $1$, then compute $E = \frac{ \sum x \log x }{ \sum 1 }$. Substitute $0$ for $0 \log 0$.

Without jitter I got some strange grid artifacts that looked really bad, especially when animated, with jitter the image is so noisy I need tons of samples to smooth it out, which also means I can't use fast-changing palettes in the exterior because the averaging turns them to mud.

This video is with 100 samples for entropy calculations to get each colour sample, and 100 colour samples per pixel.

claude boosted

Do you want to learn to stream? I've made a step by step guide that covers how to set up and use OBS to stream to Twitch. It covers how to route audio from whatever application to OBS. There are sections on Windows, Mac and Linux.

This is aimed at beginners to streaming (specifically students in my classes) and I would *love* it if you tried it out and sent me your questions. Or did I get something wrong? Let me know! Your questions and complaints will make this more useful to everyone.

If you are a windows users, I would also be extremely happy if you replied with screenshots of what the audio configuration looks like.

claude boosted

ArtFutura 2021 London

Festival of Digital Culture and Creativity

Thursday 15 – Sunday 18 April 2021

Presented online at Iklectik, Music Hackspace and Watermans Art Centre
ArtFutura has established itself as one of the most important international events dedicated to Digital Art, Virtual Reality and Computer Networks. Since the 1990s it has been bringing together artists, academics, students and audiences to experience cutting edge New Media Arts.

PROGRAMME
Thursday 15 April Iklectik
iklectikoffsite.org/artfutura-

Saturday 17 April at Watermans
Sunday 18 April at Watermans

Supported using public funding by
Arts Council England

mathr.co.uk/zoomasm/ zoomasm 3.0 released

is a zoom video assembler which works from EXR keyframes in exponential map format, as output by software including Kalle's Fraktaler 2 +.

New in 3.0 is support for KFR/KFP parameter files containing OpenGL GLSL colouring algorithms, so you don't need to do anything fiddly to get your new colourings from KF 2.15.2 or later to work - you can load the files directly in zoomasm's Colour window.

kf-2.15.2.1 released, tested on both my ancient NVIDIA laptop and modern AMD desktop. Some shaders fail on laptop due to being too big/complicated for the hardware, but some do work.

get it from
mathr.co.uk/kf/kf.html#kf-2.15

Bugs have been reported, and indeed shader compilation fails with NVIDIA drivers. Works ok on AMD. Shame on me for not testing on my ancient laptop with NVIDIA GPU before release...

kf-2.15.2 released with colouring support (design your own colouring algorithms to post-process the calculated raw fractal iteration data)

Get it from mathr.co.uk/kf/kf.html#kf-2.15

is () for (and via additional programs like and others)

and builds are provided, it is technically possible to compile for but I couldn't get the resulting binary to work on my device. It's a that runs fine in on (where I do my coding). builds seem to be blocked on what might be a bug in a third party library.

claude boosted

Wurgo (4k fractal zoom music video) (5m15s)

Wurgo - The Making Of with kf and zoomasm (13m43s)

Demo of the GLSL colouring support in kf-2.15.2 + zoomasm-3.0 (still not released yet)

(sorry for youtube, still searching for a better host...)

Nearly finished kf-2.15.2 and zoomasm-3.0. Will probably release next week after final testing.

The main new feature in is being able to define your own colouring algorithms in OpenGL shader language (). The shader fragment can get raw computed data from KF, such as (smooth) iteration count and analytic distance estimates, and return a colour for the pixel.

There is also an emulation of the previous CPU colouring algorithm, which is modularized so you can use parts of it in your custom shaders.

The main new feature in is being able to load palettes from KF that use OpenGL GLSL colouring shader fragments, so you don't have to repeat work. This includes support for the list-of-colours palette and the other variables in KF's colour dialog.

claude boosted

ArtFutura Festival
15-18 April
various venues
online

claude boosted

Sonic Electronics - Williams / Yorke / Allen / Vo Ezn / Netz

IKLECTIK [off-site] presents,
SONIC ELECTRONICS

with Jake Williams / Loula Yorke / Claude Heiland-Allen / Vo Ezn / Laura Netz

Saturday 27 February 2021 | 8.30pm (GMT)

IKLECTIK YT channel: youtu.be/OdNE9WSyA7M

IKLECTIK TWITCH channel: twitch.tv/iklectik

Sonic Electronics is an experimental event which happens 1st Wednesday monthly The Others – Stoke Newington.
Alternatively, Sonic Electronics plays one-off events at IKLECTIK.
We propose an anti-techno-capitalist approach to music genres like ambient, drone, techno, experimental, electronics, acousmatic, live coding, noise, vaporwave, glitch, industrial, post-punk, new wave…..
Sonic Electronics proposes an inclusive event to the LGBT community, female artists, no discrimination on gender, races, MH, disability.

Artists:
Jake Williams
jfbwilliams.com/sonituslive/

Loula Yorke
loulayorke.com/

Claude Heiland-Allen
mathr.co.uk/clive/

Laura Netz
netzzz.net/medial-ages-live/

claude boosted

Streaming starts soon.
transnodal.toplap.org/

claude boosted

Today I announced a new mentoring programme for Black artists in the West Midlands (UK) who want to explore the creative potential of live coding. Details are here: algo-afro-futures.lurk.org/

In short four participants will get mentoring in all things live coding from me and @yaxu over four sessions and will be given a fee of £100 per session attended.

I know my reach on the fediverse is small so if you know anyone who could benefit from this please pass it on to them

works for distance estimates too, here are some nested units:


460 core

"TwoD.frag"

vec3 color(vec2 p, vec2 dx, vec2 dy)
{
Dual1cf c = dual1cf(complexf(p), 0);
Dual1cf z = dual1cf(complexf(0));
c.d[0] = mul(c.d[0], length(vec4(dx, dy)));
float Rr = 1000.0;
float R = 0;
float rr = 0.2117;
float r;
float sr = 0.08;
float s = 0;
for (int i = 0; i < 1000; ++i)
{
if (Rr <= length(z.x) && R == 0.0)
{
R = tanh(clamp(2.0 * length(z.x) * log(length(z.x)) / length(z.d[0]), 0.0, 4.0));
break;
}
else
if (i % 3 == 0 && rr <= length(z.x) && r == 0.0)
{
r = tanh(clamp(2.0 *length(z.x)/rr * log(length(z.x)/rr) / length(z.d[0]), 0.0, 4.0));
}
else
if (i % 6 == 0 && sr <= length(z.x) && s == 0.0)
{
s = tanh(clamp(2.0 * length(z.x)/sr * log(length(z.x)/sr) / length(z.d[0]), 0.0, 4.0));
}
}
if (length(z.x) <= Rr) return vec3(0.0);
if (0.0 < s && s < 0.5 && r < 0.5) return vec3(1.0, 1.0, 0.0);
if (0.0 < r && r < 0.5 && R < 0.5) return vec3(1.0, 0.0, 0.0);
if (0.0 < R && R < 0.5) return vec3(0.0, 0.0, 1.0);
return vec3(1.0);
}


left side, binary decomposition of every 3rd iteration before z->z^2+c (starting from 0) escapes a tiny radius (~0.21) (I think this radius is related to the derivative w.r.t. z of the periodic attractor somehow)

right side, binary decomposition of every 1th iteration before z escapes a larger radius (2) (this radius is the minimal escape radius for the quadratic Mandelbrot set)

the image is of the period 3 island, rotated 90 degrees from the usual view

wondering if this might possibly be useful for computing external angles: going to the cusp on the left is .(0) and on the right is .(011) (where 0 is light and 1 is dark); the other angles of the minibrot are tuned by .(011) and .(100) relative to the top level set... dunno if it's possible to get better than O(n^2) cost though...