Week 79: Morphagene reel splicer

14 Aug, 2022

This week was going to be a slow side project week due to lots of work and sunny evenings in Copenhagen. But then I saw a Github notification about a project I worked on a while back…

Morphaweb #

One of my hobbies is modular synthesis. One of the modules I use is Morphagene by Make Noise. By their own description:

The Morphagene music synthesizer module is a next generation tape and microsound music module that uses Reels, Splices and Genes to create new sounds from those that already exist. Search between the notes to find the unfound sounds.

It’s one of my favorite modules, but it can be a bit tricky to get sounds outside the modular system onto the Morphagene. It has a slot for an SD-card where you can place reels. The reels have to be a particular format though, and if you want to have configured your splices up front, you have to download paid software.

Morphagene in my eurorack setup

Morphagene in my eurorack setup

To work around this, I have developed a free, open source, web-based app called Morphaweb. It allows you to build reels with splice markers and export them in the correct format. All without uploading anything to a server, to protect your privacy.

My app Morphaweb

My app Morphaweb

To use it, you simply import audio by dragging it into the app, then use the waveform editor and shortcuts to add/remove splice markers. When you’re done, you can download your reel as a Morphagene-compatible wave-file.

If you have a Morphagene or just curious, please try it out at https://knandersen.github.io/morphaweb/

I also added Morphaweb as a project here on the blog. Now I’ll go enjoy the rest of the sunny and hot afternoon outside!

Week 78: RSS, Build, and other small bits

7 Aug, 2022

This week was a bit sporadic because of work taking up a lot of time and headspace, but I did find time to think about newspapers, work a bit more on blender lessons, and read.

RSS Newspaper #

I spent my holidays reflecting a bit about my use of time on social media, and how to stay up to date with “the industry” and people whose work I like.

Twitter has brought me so much joy, allowing me to digest an incredible amount of news and work from a wide range of organizations and people. But the product has devolved into so much suggested content that I didn’t ask for yet hits all the right brain chemicals to keep me scrolling. Same story for instagram.

At the same time, RSS feeds are seeing a resurgence, and I have now switched the same setup as Matt, combining NetNewsWire and Feedbin. Feedbin even allows for twitter integration, so now I can get the tweets I’m interested in without any of the garbage and NetNewsWire has a “star” functionality that functions like a archive, a great replacement for twitter’s bookmarks.

Screenshot of my NetNewsWire

Screenshot of my NetNewsWire

NetNewsWire is efficient, but not exciting. I miss beautiful typography as graphic elements, layout and images from traditional media. Feedbin has an API, so I’m wondering if I should try and sketch an “RSS newspaper”, a more visceral, scrolling that would allow me to consume more news in a visually enticing way.

I’m still experimenting with my setup and building it out. Still check twitter and instagram, but through the web-versions rather than the apps.

Blender lesson progress #

The lessons continue, now on Bruno Simon’s lesson on unwrapping and baking a scene in Blender.

Blender model of a small grove with a portal

Blender model from last week, now with materials

I’m at the stage of doing UV unwrapping of all objects, which is fun and frustrating. Since the whole idea was to create a 3D world including LEGO elements for a portfolio, I’m not looking forward to unwrap those.

Blender UV unwrapping setup

Blender UV unwrapping setup

Reading #

I’m reading Build by Tony Fadell together with colleagues. It’s curious, because it’s the kind of book I would have been ecstatic to read 5 years ago. I have a lot of respect for Tony Fadell and what he has accomplished in his career, but coming into this book I have to admit I thought didn’t need to read it. My manager kept pushing it though, so now I am, and learning a lot from it.

Also a hat tip to Linus’ article on designing with materials. It features work by Tyler who I met while I worked at MIT Media Lab, and it’s the kind of material that makes me happy and hopeful for the future of software. It made me think of a lecture Lucas Ochoa and Gautam Bose gave on A Tinkerer’s Guide to the AI Galaxy. They also talk about technologies as materials. So did BERG when they were around.

Week 77: Blender and back to work

31 Jul, 2022

This week has mostly been about getting to work after three weeks vacation. I’m still pretty hooked on building a fun 3D world with LEGO elements for my website. To do that, as mentioned last week, I need to learn a bit more about Blender. I’m almost done with Bruno Simon’s first lesson on creating a scene in Blender, and when I’m done with that, next lesson is about baking and exporting the scene for use with three.js.

In-progress Blender model of a small grove with a portal

In-progress Blender model of a small grove with a portal

I’ve also spent some time fixing bugs on this site, namely how my RSS feed is rendered.

Week 76: LEGO, physics and portfolios

26 Jul, 2022

This last vacation week, I got around to doing one of the things I love - intersecting different interests. Like every designer, it seems, I’ve been wanting to update my portfolio for a while. Mainly with the work from my time at LEGO.

Another thing I’ve wanted to do for a while was to play with three.js and it’s ability to load LDraw files (LDraw is an open, community-driven standard and repository for LEGO CAD models).

So the idea formed in my head that I could build my portfolio in a more playful and interactive way, using actual CAD models of LEGO models and elements I worked on.

Loading LDraw models #

Last time I tried loading LDraw models, I struggled to get custom LEGO models “packed” into a single file that would contain all its “parts” and “subparts”. As usual, that was because I didn’t read the documentation properly. Using the unofficial LDraw parts (thanks Philippe Hurbain, for submitting the little dude), I was finally able to pack LEGO Mario and get him onto the scene:

Unofficial LEGO Mario model loaded into three.js

Unofficial LEGO Mario model loaded into three.js

Physics! #

This made me think, it could be fun if Mario was bouncing around on the scene, accompanied by some Goompas and lightly swaying trees. First idea that came to mind was using a physics engine and define the behavior in code. Using cannon.js, I’ve made a little, buggy, prototype of LEGO elements bouncing around in a confined space:

LEGO elements flying around inside a box

LEGO elements bouncing around using a physics engine

But I also realized there might be a different way. I’ve been following Bruno Simon’s fantastic course on three.js, and in the later lessons he teaches how to create animated scenes with beautiful lighting. So I’m planning to try and import LDraw models into Blender and see if that workflow is easier, better and afford more creativity.

What I should have been working on this week #

Before I forget, I actually also updated my main site this week! New, slightly fresher design, dark/light mode, and backend based on hugo just like this site.

My original idea for this week, rather than the title of this post, was to write out some of the future ideas on the site. Maybe I’ll get around to it next week 🤷🏼‍♂️, but also I’m going back to work, and pace my side project energy as projects winds up again.

Week 75: Web3 and thinking in bits

17 Jul, 2022

Web 3 #

I’ve been trying to ignore Web3, and NFTs in particular, for a while. I think apes and black PNGs selling for tens or hundreds of thousands of dollars is dumb. But I’m excited to see computer artists who’ve barely been making a living for years finally achieve financial success.

A few weeks ago, I started studying web3. First by listening to the NFTs, Blockchain, Social Tokens with Sean Bonner episode on Julian Bleecker’s podcast. Then I read Sean’s onboarding document, and the more I learn, the more excited I get. I haven’t felt so uninformed and lost in a technical space before, with all the new technologies and terminologies emerging, but on the other hand I find the prospects really exciting.

I can’t spill all the beans here since some of my investigations are work-related, but I’m keeping Sean’s words in mind, that the best way to get involved in web3 is to be part of the conversation rather than just reading. Shared on twitter earlier this week:

web3 is really making my wheels spin, hard to take my mind off of it. I’m sure someone has already done this, but thinking a lot about digital patina or “programmed patina”. The idea that an asset changes over time, either as a function of time or being traded.

I’m curious about the mental model. Like, should it be “patina”, like how copper turns green when oxidised. Or could it be thought about as a “fermentation”? or “aging”, like in fine wine?

Thinking about how when snapchat the short-lived snap, or when twitter launched with a 140 character limit. Both artificial, “unnecessary” limitations, that ended up defining the product. Curious what kind of meaningful limitations web3 could inspire.

Like, could you design limitations that encourage sustainable practices?

These days, I’m still doing sample code projects and watching hours of youtube videos on the subject. Based on my thoughts above, I’d like to try and write a “patinator” that can alter an NFT based on how it lives or is traded. Currently no idea how to do it, but hoping youtube will enlighten me.

Thinking in bits #

I stumbled upon this tweet by @fiveoutofnine:

Basically, it’s a very computationally cheap way of calculating a valid chess move. What’s exciting though is that they bothered. Computers have become more capable and cheaper for decades now. Although the web has always aspired to good performance using low bandwidth, it’s nowhere near the kind of efficiency or sensitivity to device constraints that embedded software programming has been practicing all these years.

I started my journey in tech coding in HTML/CSS/JS for the web back in the 90s and later transitioned to Flash. I didn’t get into embedded systems until programming assembler at university, and I didn’t go deep until I started writing firmware and prototyping with STM 8/32-bit microcontrollers with few kilobytes of flash during my time at LEGO. My time at LEGO taught me to be smart about every bit and byte that I used, to a degree I had never had to in the 20 years of programming I had done before that.

Bringing it back to @fiveoutofnine’s tweet. The reason I’m excited is because I think web3 and it’s decentralised nature, which inherently seems more wasteful than centralised systems, could incentivise computationally cheaper algorithms and there by more sustainable computing practices. If you develop a “greener” algorithm and claim a small royalty from it’s use, the world would be better for it. Maybe I’m being naivë, but I think there’s something there.