For one test input, code that makes silence gets a score of 46.9 (lower is better), and after about 6000 generations the score is around half that, but it gets stuck in a local optimum and doesn't improve after that. Trying to fix that.
My code is non-deterministic at the moment because it uses `rand()` in multiple threads. Need to fix that for reproducibility too.
Lanczos3 scaling kernel is much sharper than Gaussian, so I'll use that unless someone has any better ideas. The list of available kernels is here: https://cgit.freedesktop.org/pixman/tree/pixman/pixman.h?id=85bfa8b4f966edbe56340b526a4cacac20988d21#n854
Using the `pixman` library to downscale images in KF gives much nicer-looking results than the previous code which simply used the Windows GDI `StretchBlt()` function, apparently it does no proper filtering even in HALFTONE mode so looks terrible.
Both screenshots have a 6400x3600 image behind the scenes, downscaled for display.
`pixman` is 80% slower overall in this test location, though the downscaling is performed twice per second so perhaps that's not surprising...
The workflow I'm going for is
0. explore in low resolution in the GUI
1. render high resolution from command line, saving the raw iteration data
2. load the raw iteration data in the GUI
3. enable best quality downscaling so that you can see what it will look like without eyes bleeding from aliasing
Previous workflow involved saving TIFF files and reloading them in an image viewer with a better downscaler. Which was a hassle...
Sonic Electronics Digital Release with Bioni Samp Isn'tses Medial Dark Ages mathr.co.uk raxil4 Richard Crow Slow Slow Loris Tony James Morton
Sonic Electronics Festival programme with Concerts, Talks and Workshops sonicelectronicsfestival.org @iklectikartlab
End of May - Early June
http://cshandley.co.uk/portable/PortablE.html#11_2 Was thinking about recompiling with #PortablE but that doesn't support #AmigaE 's floating point syntax, which SLab uses heavily.
AmigaE uses LONG for both integer and floating point (32bit) values, and the expression (left to right, no precedence) is toggled/converted between them with the ! character. At the start of each expression (including within parentheses) the mode is integer. A pain to write and even more of a pain to read.
https://mathr.co.uk/graphgrow/gallery/ screenshots from the interactive installation
20-year-old #bug :
0.0 should be 1.0
I guess I never tested this part...
Something has broken archive.org audio playlist auto advance when the tab is not selected. I used to enjoy listening to albums while surfing other tabs, but now I have to open the player in a new window instead of a tab, otherwise playback only advances to the next track when the tab is selected.
I instinctively blame some Google-inspired policy change in recent Firefox, though I've absolutely no evidence for that.
A small inconvenience I suppose...
Output from some code originally written June 2015, updated September 2016, updated a bit today.
The algorithm is inspired by Google's Deep Dream neural network stuff ("amplify what you recognize") but is much simpler, doing image convolution to detect a seed image at each pixel, then amplifying the region by another convolution pass.
On my machine it runs at about 10fps at 1920x1080 with a 16x16 seed image.
https://mathr.co.uk/slab/#dynamically-controlled-effects this example doesn't seem to work in the program binary, but I recreated its intent (as far as I can make out) in #puredata and it doesn't sound all that interesting...
Video of booting an emulated Amiga 500+ image in FS-UAE, launching OctaMED Soundstudio, slicing a breakbeat with Stanley and then syncing the generated notes to the original sample.
The first take was abandoned when I accidentally hit the button labelled Reset underneath the Add button, thus losing all my markers instantly with no confirmation. Bad GUI design :(
Found my program Stanley, which uses the NSM plugin hack to control #OctaMED (as well as removing the copy protection that required the original CD to be inserted into the drive at program launch). It's a tool to help chop up #samples into slices.
One Adds markers in the Stanley window at the bottom, which copies the location of the start of the selected range from the sample editor window. When happy with the markers, the Stanley button copy/pastes each section between markers to a new sample instrument. Finally, selecting a track in the block editor and pressing the Notify button puts notes into the #tracker editor, such that the timing of the slices approximately matches the timing of the original complete sample, using the 1Fxy command for sub-line resolution.
I think I uploaded it to #aminet almost 20 years ago.
https://code.mathr.co.uk/slab source code in Amiga E
Repository includes the program executable binary and project report.
making art with maths and algorithms