Jump to content

Recursive Pattern Editor


Recommended Posts

  • 2 weeks later...

I'm still pluggin away at this. I've made rendering into a seperate process and done a few things to the GUI to try to make it easier to use. It was hard work doing the renderer and making it reliable as a process, so I've been grateful to think about "simpler" things like gadgets and worktop controls. But now the editor is close to being good enough and I've got to think about some details of how it renders again.


I'm aware that some videos have clear bands of colour on certain displays. Half my brain is keen to dismiss this as their problem, but that's not very constructive is it? Maybe it's the displays on which the vid looks fine that lack some sensitivity, I don't know. There might be things in my colour generating code that do things im not expecting so I have to take a look.


This is a vid of me using the editor as it is now. I was surprised to find that ffmpeg could capture my desktop quite nicely on my modest laptop if I accepted huge initial filesizes and lossless vids, which is OK for clips like this.  Then, of course, I have to see what YT actually shows and it's seriously worse. I'm not really complaining about this, I love YT really, more just mentioning that I'm aware this looks pretty shod at parts. I'll keep playing with the settings. Also, does YT offer better quality if I pay? I'll find out...




This is the third video I've uploaded recently of me using the app, the others are worse :)


I'll probably be back in another week or two with some more glacial progress.

Link to comment
Share on other sites

  • 3 weeks later...

This is within a couple of days of being finished. Very little will change between here and how it'll be in the end and I'm ready to be done with it :) It's been fun, but there are other little things needing made.




There isn't much to it, when I consider how much lockdown time it's occupied. The last couple of weeks have been spent building functionality I didn't intend at the outset. Once the renderer was external it became slightly easy to use which meant I spent more time playing with it. This had the knock-on effect of making me realise where I spent my actual time and what the editor also had to do.

Which was view the output easily, dump the rendered array as well as the image and allow me to tweak the colouring and pixel-height-scaling options in something closer to real-time. Drawing all the lines into the array takes a long time, painting the height map created takes about a second at most for a 1920*1080 image. Now I can do this, committing to many hours for a single image makes more sense.




Being able to view any number of outputs to compare different settings, or the same settings against different frames is useful. Seeing the change in height distributions before and after scaling also helps me understand what effect my scaling techniques are having. These ones looks quite nice on my displays, I'm still unsure if some people get distinct banding effects.






Using Exponents less than one and Logarithms give useful results when "high" peak pixels need flattened but not made into a plateau. The problem is (being not a maths guy) I don't really have a clear idea what to expect from these things, so graphs help. And look fancy so are fun to make. They could be more informative but...


I don't think I'm gong to take it much further. It's fairly functional as it is and I'm happy enough. There are quite a few things that would improve it. I'll probably use it for playing around or making the occasional wallpaper, if other options are super desirable I might come back to it.


I'm using Monkey2, which is lovely but no longer in development. Certain problems with the app as it stands are a bit stumping because of this. So I have to think about what to do next, moving to C++ being a tempting and daunting prospect.


I'd like to use the Monkey code I have (the GUI and things) to make one more smaller project, though. To keep myself focused on this app, I recorded a lot of work on it as a video diary which meant onscreen doodling. I found using the Windows Paint program a pain and would quite like to make one with the options I want handy. Something very simple.


Ty for reading my self-indulgent lockdown project diary. This sort of thing is a niche corner of a niche pursuit. Soon I might be back to show off about making the most pointless little paint program you ever saw. It's how I always find programming, the simplest things can be satisfying.


PS. I'm embedding images from imgur. If there's a better way I'll do it. Also this post is more pink that I intended.



Link to comment
Share on other sites

  • 9 months later...

Looking at it I was reminded of a problem. I use ffmpeg, free command line video editing software, to compile video files. It's open-source so a clever person could compile an exe including only the fraction of it's functionality that's used. But I'm not so my zip includes the whole GUI-less suite. Also I don't know much about sharing files or good places to put them so here's a dropbox link:




Is there an obvious better way?


This should unzip into a folder with a "Recurser" exe that can be run. Edit - actually should unzipped into a folder, sry.


There's a rambly doc covering some of its use and problems but it's probably still super opaque.


Edit - a doc that's as carelessly made as some of my posts btw. I shake my head when re-reading things I actually wrote, nvm.

Link to comment
Share on other sites

I see a bug has snuck in. For some reason it cycles the anim complete message. The animation is indeed complete - I can see and play the file - but I need to click the Cancel Render button to get rid of the message. Workaroundable then, but ill try to see what's up with it.


Is interesting to look at again after all these months. I'd forgotten I was still using my own grim file selector. Oh lots of things should change, if only there were unlimited hours.




Link to comment
Share on other sites

In fact, I'm reminded of the real problem. Something sucks the perfomance out of it after some time. It goes from occupying what looks like a single thread for the editor - running nicely - to using only a fraction of a thread (In terms of the proportion of my cpu it's using.) I'm reckoning this from looking at the Task Manager. Sometimes the program is able to get the performance back but it never lasts long.


I'm pretty sure it's not a memory leak - again going by the Task Manager report.


This performance dip extends to the renderer when it's running, despite it being a seperate process.


Add to this I can't tell what prompts the dip.


When I considered that the language wasn't in development finding a solution seemed unlikely. So I started looking into moving to C++ and got distracted by other jobs :)


Well it's there to try now anyway. I doubt I can make it work reliably fast using Monkey2 I'm sad to say. If I have a coding stint this year, perhaps taking this to C++ would be a plan.

Link to comment
Share on other sites

Only just seem this, absolutely brilliant. I used to love rendering simple maths but this is really, really clever. A cross platform Python/Qt direction is where I would take it but that means getting into a fair bit of coding (I've not looked at Monkey at all).

Link to comment
Share on other sites

Thankyou! I have to underline that this is the limit of my maths and I barely understand it :)


Moving to another language is a requirement now. It's annoying (but understandable as the developer had to get other work) 'cos Monkey2 will build to Android, iOS or emscripten(?) as well. Also it's compiled so tends to run second only to C++ (far as I'm aware) in speed.


Having said that the editor would almost certainly be fast enough in many other languages and the renderer itself might not be hard to make in C.


I like Monkey and feel grumpy about having to give up my safe space :)


I accidentally got back into playing with this. Now I'm surer that performance drops are part of my system or Win10 or a combination of the two. My code is hardly as parallelised as it could be but it shouldn't be leaking or hitting high-stress slow bits. Not unexpectedly, anyway. Over time, I see it recovers better than it first seemed.


So I've been playing with it more. It's very distracting.





Plus another half dozen I rattled off and put on YouTube...


I don't know if I can really call this creative now. It's just placing points and paths - almost randomly - then letting the process do the rest. Which is one of the attractive things about it.


All of the above are variations on a similar set of points.


Still janky, though. I should at least solve the Anim Render Complete bug and make it use the system File Requester. It's a common problem for me: once something becomes useable and fun, polishing off bearable sharp edges becomes a massive chore. Tellin, nae doot.


I'm going to force myself to stop plootering with it until I'm being more constructive :)

Link to comment
Share on other sites

31 minutes ago, ThriftShopUnderwear said:

I like Monkey and feel grumpy about having to give up my safe space

So this made me lookup Monkey, as I'd never heard of it. Wowzers, it's the successor to Blitz Basic! Blast from the past.


I don't know if this is helpful but people forked (or just copied? Unsure exactly) Monkey and made Cerberus X




It's actively developed, too. Worth a look?

Link to comment
Share on other sites

Yeh, I think that's a fork from the original Monkey (edit, I realise I am vague about the distinction) - which is a little different but also lovely. Monkey2 has a fork as well, though I'm not sure how up to date it is. When I did look into it, I could see that the specific M2 module I was most interested in was in the same position it as at the end of main development.


They are sort-of tempting but I'd be delaying the inevitable to do anything other than get into C++. When I toyed with it last year I was able to compile code using my own small script, which gave me some sense of control, and edit in Vcode, which felt quite familiar. Also, the suite of common libraries in modern C++ make it seem less intimidating (as far as I looked.)


On the other hand, that way I'm much less productive 'cos it's too hard...


Sounds mad, but as days get longer I'll probably be better placed to bridle it. My brain insists coding is a seasonal activity :)


Edited to remove stupidity.

Link to comment
Share on other sites

I solved the Render Finished message loop bug (I think.) I'm going to remove the previous file.




I also made the document less confrontationally uninformative. It's still not great.


And I failed to stop plootering.

My titles are just the first thing that enters my head when I watch a video.

Link to comment
Share on other sites

On 09/01/2022 at 04:20, ThriftShopUnderwear said:

I don't know if I can really call this creative now. It's just placing points and paths - almost randomly - then letting the process do the rest. Which is one of the attractive things about it.


I think Brian Eno's ideas on generative music are just as applicable to this, and if you haven't heard him speak about it you might enjoy it: https://www.electronicbeats.net/the-feed/watch-brian-eno-explain-making-music-like-gardening/


Essentially you are creating the system and watching it grow. That's just as creative as placing every pixel/brush stroke/music note IMO.


I really love these btw, I'm very much into making generative music and I think what you are making is beautiful.

Link to comment
Share on other sites

Thanks! I'm happy to give most of the credit to an algorithm, I think I'm probably the product of one anyway, eh?


I read the transcript on that link and if I haven't heard him speak about it before I'm sure I must have absorbed some of the same ideas from other places. In the pop-science books where I learned about the koch snowflake, for example. I concur with the things he says but less articulately.


Some of the things he speaks about apply to these patterns, like their deterministic but still unpredictable nature. 5 points run through the system may produce a highly defined shape or maybe a nebulous blob that isn't easily recalled. The amount of information and the process is the same but one appears to create structure and the other chaos. It feels like the difference might only be in my head :) And, of course, there's a path between the two.


I'm on the verge of doing what I avoided at the start of this topic and doing a "let me tell you about my dreams" post.


A next step could be to somehow wrangle an AI to identify the most attractive patterns and framing. Then just produce reams distracting videos.


I also reckon it'd be possible to get an AI to create best-attempts at reproducing images from as few points as possible. I can imagine more details of this that'd also be boring to go into. I'd be curious to see the half-successful attempts.


I'll reign myself in, but ty again and thanks for the link. I find it easy to get cynical about art but Brain Eno reminds me not to be such a chump.


Ps. I'm still churnin 'em out. I'll really do proper code soon, there are some simple things I've thought of that can't be avoided.


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Use of this website is subject to our Privacy Policy, Terms of Use, and Guidelines.