Hades II // Generative Art // New Album Soon

Man it’s been awhile since I’ve updated here. Hard to believe my last update was almost two years ago. I’ve got so many thoughts and things to update that it’s hard to know where to start, which I suppose has been compounding the problem of not updating. But it seems the stars have aligned in terms of circumstances and motivations to dust off this old blog, so let’s see if I can form some kind of a coherent post here.

Let’s start with my primary focus of these last two years, Hades II. Somehow I neglected to even update here both at the initial announcement and the Early Access release. But 1.0 has been out for a couple months now on Steam and Switch/Switch 2, and I’ve been grateful to see such a positive reception of it overall. Having contributed meaningfully to a game that now sits within Metacritic’s top 20 PC games of all time feels like some kind of lifetime achievement to me, beyond what I’d ever imagined.

As a kid who was awed by visual effects in games, I remember thinking that some day I wanted to work on games that gave me that same indescribable feeling where the orchestration of all of its disciplines meld into a unified and memorable, bordering on spiritual experience, becoming much more than the sum of its parts; that if I could work on something that was as inspiring to others as I felt, it would be a meaningful career. Seeing so much positive feedback around this release has felt like a resounding confirmation of that dream.

At the same time, the fulfillment of that dream has come at some cost. While I generally stick to a 40-hour work week, in hindsight I also put a lot of pressure on myself and have been hyper-focused during those hours, which isn’t easy to simply switch on and off (especially when working from home.) Since I really have the flexibility to set my own goals I’ve tended to default to prioritizing my own high ambitions, especially considering the degree to which work ethic and drive are generally valued in our (western, silicon valley) culture.

Part of what I’ve learned from this project is that self-discipline is more than just prioritizing work and doing the hard things first, it’s also finding balance and knowing when to let go of ambition. And I don’t think the two are incompatible – “working smarter not harder” for example by trusting the player’s imagination rather than spelling everything out visually has been something on my mind during this project as well, and perhaps something to carry into the next.

I may have more to write specifically about my VFX work on the game at a later point, maybe even some animation breakdowns or other insights, but for now I’ll move on to some more personal work.

I found a little time to do some more generative art experiments in the last six months or so. This one started as a desire to make a laptop wallpaper for myself and is pretty self-explanatory and also not quite done yet – I wanted to make something that lived between retro techy vector art and a PCB or city layout. I think it still needs more variety in design elements, a more robust random color generator and a better way of creating negative space (currently hard-coded) but it’s getting there. I did setup everything resolution-independent so it’s easy to scale.

Another Processing experiment that’s all about multiple levels of distortion and transformation – the basis of it is randomly placed concentric fading rings drawn with additive sub-pixel size rectangles, but with layers upon layers of modulation. In addition I wanted to add some more hard geometric shapes to contrast with the organic softness of the simplex noise, so some areas get modulated with a sort of random brick-style grid, the edges of which get blurred, brightened and spread for emphasis.

The end result feels kind of alien to me. I like the noisiness of drawing with lots of tiny rectangles but at the same time it’s atrociously slow to render. Some day maybe I’ll look into optimization but my lack of interest in that aspect is I think indicative of the fact that I’m much more artist than programmer.

While I haven’t posted any new music lately, I do have a new album nearing completion. In many ways I feel it’s kind of a counterpoint to my previous 2024 album Interlinked. While I feel the latter expressed a clear sense of love, openness, hope, peace and contentment, this one has a bit darker tone overall. There are still a few quiet moments but I generally felt more like expressing a sense of challenge, defiance, and disenchantment through faster tempos, distortion, more harmonic minors and diminished chords.

Much of it is an ongoing reaction to my perception of the zeitgeist; the way that this digital space I once considered a refuge from the banality of the real world has slowly deteriorated into a space to amplify the worst qualities of it, then reify those amplifications into feedback loops that tear at the fabric of our society and democracy.

It’s possible that this bleak decay of what I once valued so highly has also contributed to my lack of updates here. My purposeful self-exile from social media may be yet another factor – I don’t feel much of a sense of community to contribute to. Even something as specific as SoundCloud feels very commercialized, like everyone is trying to hustle and clamber up to some sort of monetary, or at least numeric, success.

Which tangentially leads me to the inevitable topic of generative AI. Early on I felt an uneasy neutrality toward it, having always been excited by the application of technology to creative art but dissuaded by the almost frictionless potentials for abuse.

But over the past couple of years it’s become quite clear to me just how negative of an effect it has in the hands of megacorporations. While it’s still far from a state where I feel my livelihood as a creative professional is threatened, it already has a subtle but clear effect of further devaluing the skilled work of artists of all types.

I’m still holding out hope that the public sentiment toward AI generated content remains negative. From what I’ve seen people really do value human effort, real stories, genuine emotion, feelings and thoughts – the things that make art and culture worthwhile and not something to be automated. Even my kids have had visceral negative reactions to AI-generated content without even knowing – “Ugh, why does it look so weird?”

I think there’s still potential for creative use of it somewhere – not just in the broad application of Machine Learning, which is full of creative potential (at the very least for tooling), but in a postmodern, self-aware way – someone will do something legitimately creative with it. But I think that will be a niche exception rather than the disrupting/revolutionizing technology that is trying to be sold to us.

On an annoying tangential note – some AI slop songs, probably Suno generated, started showing up on my even-less-frequently-updated YouTube page, under my artist name. YouTube doesn’t make it easy to take them down – they’re still all “Under Review”. And then some time within the last couple weeks another batch showed up, with even more banal titles like “Unicorns and U-Turns” and “6-7”. If I didn’t know any better I would think someone was trying to fuck with me directly, but I think the more likely answer is that it’s just dead internet creep expanding into my little corner. I contacted DistroKid directly as they’re responsible for distributing the slop but they were no help whatsoever. On one hand it feels a little discouraging, but on the other it’s fuel for me to keep fighting with real creative output.

I guess that’s it for now, I feel like I’m running out of writing steam and my eyes are getting blurry. Whenever I have free time and a choice between doing something creative or updating this blog I’ve chosen the former because I think my content speaks better than my words, but perhaps I’ve balanced that too far to one side. Feels good to get an update here now, and there should be another soon when I get this album wrapped up.

LightShapes

A series of generative art experiments I’ve been iterating on over the last few weeks. These are all direct outputs from Processing, rendered at ultrawide/21:9 5120×2160. Initially I was working on some supplemental imagery to support my album release and refresh some of my music site profiles, but I ended up having a lot of fun playing with these algorithms and developing them further. They’re quite dark overall as I tend to work on them at night in fullscreen mode and don’t like blowing out my eyeballs with bright values when rendering; also the subtlety of darker tones works better as backdrops for light text on various profiles.

These are all based on a system of line segments that randomly emit tiny dots from their “normal” (which is just offset 90 degrees from the angle between their vertices). The brightness is based on the inverse square distance to a center point in the series of segments, which isn’t necessarily contiguous. Helpful to maintain the illusion if it is, but also fun to break the rule for more glitchy effects as I experimented with later on. Anyway that “brightness” value is also used to drive other parameters like hue shift, angle spread, and distance from the segment.

I was happy with this effect but also wanted to create the illusion of some areas being blurred, out of focus, or in shadow, so I also created a series of “invisible” polygons. When a dot’s position ends up within one of these polygons, some of the properties change, mainly angle, value and distance from the segment, but I experimented with many other effects in this area like hue shifts, applying perlin noise to the angle and distance, or gaussian blurring.

From here I wanted to break out of the initial grid and started experimenting with other shapes. My rough guiding principle was the idea of finding beauty at the intersection of order and chaos, so to that end I tried to include some mixture of controlled shapes and randomness, hard edges and curves, grids and noise.

Also experimented with adding a little chromatic aberration to the rendering based on distance to the center of the screen.

A vague question that kept arising for me here was where to make the division between planned composition and randomness. In my previous generative efforts I felt a stronger compulsion to aim for randomness, but pure randomness doesn’t make for great compositions without a ton of work. And even then, doesn’t that large amount of work ultimately amount to just a wider variety of planned compositions in a different way? So this time around I tried to feel less “constrained” by the idea of requiring the overall composition to result from randomness in generative techniques and just go with what I felt would look cool.

I also tried to embrace happy accidents as much as possible – for example here I did not intend for a central symmetry, but it came out that way because I’m working with (0, 0) at the center of the screen and forgot to offset the Perlin noise (which in Processing is symmetrical at the origin) to account for that.

I recently learned about OKlab color space and tried out using this implementation for these experiments. I think it does indeed provide some very nice color transitions compared to the default HSV.

Gallery of full resolution images (please zoom in for full effect!):

Sonic Sanctuary 01 // Live AV Set

Earlier this year my friend LayerZero, who runs local monthly IDM listening sessions through Bay Area Braindance, invited me to play a live set at a party he was hosting for us fellow electronic music enthusiasts. My perfectionist nature had me hesitant at first, but eventually I entertained the idea and started browsing sketches on my Digitakt to see if anything would work as a suitable starting point.

Initially I was thinking of putting together a relatively short set – maybe 20 minutes or so – but had so much fun exploring the possibilities of live performance on the Elektron boxes that it ended up closer to 50 minutes. I also found the process to be an effective way of bringing together half-baked tracks or ideas that I felt had potential but was struggling with arrangement on. The need to have each track flow together combined with the limitations of a dawless setup and a fixed performance date provided just enough constraints to keep myself moving forward with it at a steady pace.

My initial anxieties about performing live (what if I screw up noticeably? what if they think it’s lame, or even worse, boring?) had me concerned that more controls would mean more potential for error and confusion in a realtime setting, so I thought I’d just stick to the Digitakt for maximum flexibility in sound palette. But my starting track – the first sketch I thought would be suitable for a generally braindance-themed party – was an experiment in loading all 72 factory single-cycle waveforms and randomizing them per step, leaving me with just 56 sample slots for the remainder of my set. So eventually I brought in the Syntakt for more variation, figuring that for each track I’d favor one or the other as the primary sound source. But by the time I got to the end I found myself utilizing both of them fully, sacrificing precise memorization of which sound was on which track for more sonic variation.

Additionally, I thought it would be nice to incorporate my Korg minilogue here and there as way to break out some longer lead sequences from the limitations of the Digitakt and Syntakt’s 64-step patterns. In practice though I found it difficult to work patches into the “sweet spot,” and had some other technical issues with midi program changes. That was enough motivation for me to spring for an Arturia Minifreak, which became an essential part of the set and has thus far proven very enjoyable both to play with and program patches for.

Despite the number of times I practiced the whole thing, including a couple of dry runs, there were some unanticipated hiccups on the day of. We had some gain/clipping issues at the beginning so the first track loops much longer than intended while we sorted that out. I also didn’t account for people hanging around and talking in the room where I was performing, which was lovely for the party vibe but also resulted in me tweaking volume levels I’d carefully balanced before in order to even hear the changes and tweaks I’d planned as part of the set. And while I wasn’t too nervous at the time, I still think it wasn’t my best take overall. I’ve been mulling over the idea of doing a “studio” recording of it with all of the inputs separated and doing a proper mix with additional risers, impacts and effects, but that’s also a lot of work for something that’s essentially already there, and perhaps would detract from the spirit of a live set, mistakes and all.

So for now I’m just considering this a prototype for a new method of producing; as I mentioned the limitations were just enough to keep me motivated and moving forward at a steady pace, circumventing so many of the mental blocks that I seem to unavoidably blockade my creative process with time and time again. I think it could work well as basis for some initial constraints and framework which I’d follow up with recording everything into Live for the additional polish I generally aim for.

Also, as much fun as I had with it, I do think it also lacks cohesion, jumping sort of randomly between IDM, techno, breaks and drum&bass. Despite most of my albums being similarly stylistically diverse, I’d like for my next attempt to start with a broader idea, motif or overall arc and stick with it.

Visuals

Beyond hosting the party and contributing a mind-melting DJ set of his own, LayerZero brought the experience to the next level setting up projectors with live, interactive, synced visuals via Resolume, (not to mention recording the whole thing on multiple cameras and putting together the final video!) When I was pretty much done writing the set, we collaborated on layering some VJ loops from his library to accompany each section of it, which he tweaked in realtime while I played.

At some point I was struck by this project’s similarity to my inspirational roots, the PC demoscene, and was inspired to created some visual loops of my own that would sync tightly to elements of my set. These were all of course animated in After Effects and not generated algorithmically like a proper demo. Nevertheless an audiovisual project like this has long been a goal of mine and I’m grateful to have an encouraging friend provide me not only with motivation and encouragement but the technical means to glue it all together and make it happen.

I’m going to take a moment here to lament the fact that in 2023 there’s no straightforward way to put a series of 60fps video loops on WordPress, though I’m sure if it helped sell crap from Alibaba it’d be integrated into the next Chromium nightly build. But I digress. Here’s a series of clips in 30fps dithered GIF using decades old compression technology.

Some of these are simpler than others as they’re intended to be layered with the existing library loops that we’d selected. Overall I really enjoyed coming up with fairly abstract ideas to visualize aspects of the music I created, and if you watch the YouTube video you’ll probably see where he mixed them in. Ideally (maybe next time?) they’d be 100% original loops, but that is indeed an intimidating chunk of work.

On the fourth clip from the top, I’d be remiss not to mention that I generated those cyberpunk-headphone-girl faces using Stable Diffusion. While I certainly wouldn’t consider myself a proponent of “AI art,” I do find myself conflicted about this controversial topic. On one hand, as professional artist, the ability to effortlessly create beautiful pictures just by typing out what one wants is unnerving, especially in the hands of our consistently inhumane corporate overlords. On the other, the application of technology to art has been an inspiration for my career and something I’ve always enjoyed exploring. So in this middle position I’ve been contemplating how and if I might ever utilize this unprecedented and powerful new technology in a way that seems ethically sound. This particular application seemed fine to me – small audience, non-commercial, a supporting piece of the whole and not the end result itself, and not something I could reasonably create on my own without committing significant portions of time and money.

Anyway, all-in-all I’d say this project ended up fulfilling some creative goals I’ve had for many years, and even though it didn’t come out perfectly it was full of invaluable learning experiences. And once again I want to express gratitude to LayerZero for providing the means, venue, impetus and encouragement to explore some new creative territory.

Internal Reflection (Preview)

It’s been a while since my last post! I’ve been busy with music and second-guessing myself (more on that later,) but I’m happy to announce the upcoming release of a new album, “Internal Reflection.”

In some ways I feel like it’s an iteration or refinement of many of the themes I began on “Metamorph,” trying to keep things fresh, unique and loose by intentionally choosing different techniques in the ideation process. Overall, it’s been an effective method for me. But I also found it leads to new decisions about where to draw the line in letting the natural strengths of the tools guide the music itself; at what point does my voice get lost in the endeavor to keep things creatively fresh? When it comes to creativity, I’m generally of the opinion that the artist should guide the tools, not the other way around. So in that regard I did try to find a balance, and I hope it comes across for my long-time listeners.

Despite my confidence in technique, I ran into a lot of hesitation and second-guessing myself with this album. Listening to tracks over and over, looking for improvements to make or trying with futility to reevaluate them with an objective ear, which ultimately only serves to entrench them further into my mind as immutable blocks.

For some time, I considered releasing two separate albums to deal with the disparity between the frustration-fueled high energy noise of tracks like “Crystallovore” and “Disinformation Filter,” and the calmer, equanimous tracks like “Decoherence” or “Chromatic Dispersion,” inspired both by the geometric and physical interactions of light and my explorations in mindfulness meditation. In between those extremes are tracks like “Five Constellations” or “Faceted Multidimensional,” which I feel ride the line between the two and are clear candidates for inclusion, but perhaps not enough on their own, or would come off as tiresome and homogenous with a similar energy level for an hour+ listening experience.

When I finished “Metamorph” I had a loose goal of forming a tighter sound for my next release – something more conceptual and unified, centered around a predefined theme. While “Internal Reflection” eventually coalesced into something vaguely representing that, it still feels more like a collage of thoughts, ideas, dreams and emotions I’ve made attempts to express musically over the last couple of years. While in a sense my personal metric for evaluating my own work is centered upon my enjoyment of it, I sincerely hope there are aspects that are effectively communicated through such an ephemeral medium and resonate with you as well.

“Internal Reflection” will release on Bandcamp, Spotify, Soundcloud and other streaming services on 6/7/22.


In the meantime, I’ll also share some other iterations of the album art I put together before arriving at the final. These were created using 3ds max, Arnold Render, TyFlow, Photoshop and Processing. I tried to find a balance between busy detailed chaos and negative space, emphasizing colorful reflections in synthetic structures, while also being mindful of the overall composition and the fact that most listeners will only see it as a tiny, compressed thumbnail.

Generative Art Dump

Sometime late last spring I got completely hooked on Factorio and ended up pouring some hundreds of hours into it across several playthroughs. After launching my first rocket (i.e., beating the game,) I found myself left with a lingering desire to create complex systems that work harmoniously with one another. I ended up channeling that desire into getting reacquainted with Processing and diving back into generative art for the first time since a certain controversial entrepreneur single-handedly marked the death knell for Flash on the web.

As I continued experimenting I found a manifesto for this series loosely forming in my subconscious mind, and ultimately crystallized those thoughts into a series of guidelines:

  • Harness the power of the medium to automate that which would be tedious to create by hand or using traditional techniques
  • Celebrate the beauty of geometry
  • Strike a balance between sterile accuracy and natural chaos
  • Strike a balance between pleasant minimalism and fractal complexity
  • Take inspiration from nature
  • Playfully balance composition and repetition
  • Avoid simply recreating well-established looks and techniques typical of the medium

So here is a sizable dump of images from this journey:

And, as I used to do so many years ago, I ended up creating a series of desktop wallpapers as well. These are in 4k (3840×2160) and are intentionally dark and low contrast so as to be easy on the eyes during night hours.

Recently I’ve lost some steam on this project as I’ve been working on some new music, but I’m sure I’ll return to it someday.

Gatts & Schierke

berserk

Decided to learn ZBrush after learning about some fancy features it’s got over mudbox like dynamesh and insert multi mesh. I’d been reading the berserk manga so thought it’d be a good first test project to make Gatts’ berserker armor. I liked the scene where Schierke’s trying to get him back under control so thought it’d be fun to sort of recreate. I actually had it in mind to do some effects animation to go with it, so here’s a little gif of it (and by little i mean like 3mb) .

I spent a little too much time trying to make a perfect loop and ended up getting lazy about some of the particles so it’s kind of the worst of both worlds; oh well. Guess I’ll count it in as a little scene for my next demo reel update where I won’t need to worry about it looping.

Rei

rei2

So I had this head I sculpted in mudbox some months back. The project I’d planned for it never reached fruition but I still wanted to use it and somehow got it in my head to do an evangelion fanart, even though I last watched it many years ago. Guess I figured it’d be easy – short hairstyle, form fitting outfit, no cloth, glossy, etc… well, I learned some lessons the hard way about topology and UV layout while trying to get my mudbox mojo on and it ended up taking me maybe a week longer than I’d planned. Basically ended up sculpting and texturing the plug suit twice. But overall it was a good experience, learned a lot of new things and tried a bunch of new techniques out. Initially I was thinking of playing more with lighting and adding more background stuff but Diablo III is out in three days so I figured I’d better wrap it up before it gathers dust in my project folder for another half a year.

Forest, Legion

Testing out some leaf materials again here. I read Yokohama Kaidashi Kikou over the past few weeks, which I thought was a beautifully done manga. It took me a few volumes to get into it, but eventually I realized how much of it is about negative space, both in the dialogue and story as well as the art. I guess I was a little inspired by Ashinano’s sparse and effortless landscape drawings, through which much of the emotion of the story is conveyed. At the same time I’m also testing out plant and tree stuff for a bigger rendering I’m gearing up for (ie, recharging spent creative juice by gaming, relaxing, doing other things besides commercial work)


And now for something completely different. A few years ago I had it in my mind to do a fan-art of the creepy “legion” monster from Castlevania. Though in most of the games it’s a boss, in Circle of the Moon it was a normal, albeit tough and scary, enemy. If I recall correctly, when it touches you you’re cursed and can’t attack until you have something uncurse yourself. I thought Circle of the Moon was one of the harder games in the series, at least among the ones I’ve played.

legion2

Here’s the original art for reference: