Abe's Art+Code Journey

Abe's Art+Code Journey

Archives
Log in
Subscribe
October 4, 2026

1000 iterations

How I created and used a tool to design an album cover

Yesterday For the Luminous Warmth, an album by bee paang, was announced. One song can be played online (so far) and the album is available for pre-order. The actual release is on November 5th. This has been (and continues to be) a huge journey, and I’ll share below some of my involvement on it.

Front side of the album cover. Very organic, possibly resembling a colorful microscope image of cells. The inner sleeve looks golden, with a glow. The actual vinyl is translucent red with a colorful textured sticker. 4 Chinese characters can be seen in the center of the cover (translated: For the Luminous Warmth).
Album cover, inner sleeve, red translucent vinyl.

I had not planned working on the design: Mei-Fang had already paid a Taiwanese painter to create an organic looking work using water colors. You can see it as the animated background at beepaang.space.

Back side of the album cover. Very organic, possibly resembling a colorful microscope image of cells. It contains the titles of the songs in Traditional Chinese and English arranged in a curve. The inner sleeve looks golden and contains several paragraphs of text. The actual vinyl is translucent red with a colorful textured sticker.
Back side of the album cover, inner sleeve and vinyl.

But the label owners did not find the design fitting their usual aesthetic and that’s how I got involved. Instead of my usual approach of writing code to fully generate images out of curves and pixels, I decided to write a program to mix photographs. This is something that I could have done with GIMP or Inkscape: both allow layering images with blend modes. Inkscape might have been better in the sense that edits would not be destructive: I could rotate, translate and scale the layers without affecting the source images. But none of the tools are designed for the fast experimentation and iteration I needed. I could have used them, but the process would have been slow and not very fun.

A screenshot showing a textured image in the background, a GUI with gray background, sliders and drop-down inputs on the left, and 5 image thumbnails on the right.
A screenshot of my program in action

The program I came up with is only ~300 lines of Kotlin. Not bad for a photo layering software. One reason for this lightness is that OPENRNDR and ORX provide a lot of functionality by default. For instance, the GUI state is saved automatically when quitting, so when I open my program everything is in the same state I left it in. By default the state is saved under gui-parameters/name-of-the-program.json, but I can also save named presets when I find designs I like and load them later. What gets saved? The path of the used images, blend modes, RGB values for the alpha mask, an invert flag, and a transformation matrix (translation, rotation and scale).

By default, the program has 3 layers (configurable). All layers except the background have a texture and an alpha mask: an image to control the transparency of the texture. A texture can be selected by clicking. A magenta border indicates it can be moved, scaled and rotated with the mouse.

The way I use this tool is by running the program next to a separate OS window exploring my photos folder. When I see the thumbnail of a photo that might work well, I drag it to one of the 5 slots in my program and it instantly loads. Then I pan, rotate and scale the image, drag another image, adjust that one, drag again, adjust… It’s a very fast photo mixer that allows me to composite photos trying to create interesting high-resolution abstract images.

I see that I created my program folder, called coverGenerator, in February 6th. It is 8 Gb heavy. Half of that weight are images I generated with this program.

A highly textured image that seems to reveal a flower with 5 petals with some  red/yellow at the center and sorrounded by bluish tones.
One of the many images I created featuring a flower.

By looking at results, I believe I came up with the final ones at the end of March. But that’s not the end of the story. Not at all. After finding the right designs we experimented with dozens of fonts, layouts, blending modes, color curves, CMYK conversion. We did test prints in two large-format printers. I paid for a session at a studio with calibrated monitors and adjusted the designs based on the factory’s templates. Then I did it again when switching to a different factory and their slightly different templates.

An abstract design made by layering photos of lights.
This unused image is a mix of photos of light.

Next, I designed a simple card that comes with every vinyl with a download code. And mockup images for Bandcamp. And the simple website. The files in my FINAL folder are dated between early June to early July.

Abstract textured image with yellows, light and dark grays. There seems to be a grid of 5 x 5 rounded elements, and curved shapes with textures of asphalt and cracked cement.
My second favorite. My favorite is this one.

And this brings us back to yesterday’s announcement. Check out the video a good friend made for it!

I’m sooo looking forward to receive a vinyl, unwrap it and listen to it with my eyes closed :-) If you want to do the same visit Bandcamp ;-)

As always, I’ll be happy to read your questions and comments.

🍀

aBe PaZoS SoLaTie

Art & Code

www | mastodon | patreon | ko-fi

Don't miss what's next. Subscribe to Abe's Art+Code Journey:
Older → Five years with OPENRNDR
Ko-fi
Patreon
genart.social
www.hamoid.com
Powered by Buttondown, the easiest way to start and grow your newsletter.