Generated by All in One SEO v4.9.7.2, this is an llms.txt file, used by LLMs to index the site. # cerkit.com Music and Technology ## Sitemaps - [XML Sitemap](https://cerkit.com/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Blog](https://cerkit.com/blog/) - [Three Decades, One Domain: Celebrating 30 Years of cerkit.com](https://cerkit.com/three-decades-one-domain-celebrating-30-years-of-cerkit-com/) - Good and bad, cerkit.com has been a great personal outlet. - [Security at the Speed of Process: Pi-Calculus UIs](https://cerkit.com/security-at-the-speed-of-process-applying-the-pi-calculus-to-dynamic-capability-based-uis/) - Discover how the π π-calculus (pi-calculus)—a formal mathematical framework for concurrent systems—can be applied to web development. Explore a detailed walk-through of the "pi-ui" Blazor prototype using C# reflection, SignalR, and capability-based security to deliver real-time, dynamically reduced user interfaces. - [From Codes to Creativity: Why I Refactored My Generative Music System](https://cerkit.com/from-codes-to-creativity-why-i-refactored-my-generative-music-system/) - Discover why I transitioned my generative music system from rigid Camelot numbers to a flexible, theme-based naming convention. Learn how this refactor improved my game development workflow, allowing for unlimited scalability and seamless integration with Bitwig Studio for a more creative and sustainable interactive music engine. - [Dynamic Generative Music: Bringing the Camelot Wheel to Godot](https://cerkit.com/dynamic-generative-music-bringing-the-camelot-wheel-to-godot/) - Discover how to use the DJ's Camelot Wheel for generative game music. Explore our implementation of a synchronized 4-stem audio engine in Godot that delivers infinite musical variety with a tiny memory footprint. - [Star Wars: Outer Rim on Mac - Tabletop Simulator Guide](https://cerkit.com/star-wars-outer-rim-on-mac-tabletop-simulator-guide/) - I love being a galactic scoundrel in Star Wars: Outer Rim, but I've always dreaded the massive table setup and cleanup. Here’s how I moved my smuggling career to my Mac using Tabletop Simulator—and why I’m never going back to physical bags of tokens again. - [Aliens in the Studio: Prepping for Magic City Art Connection](https://cerkit.com/aliens-in-the-studio-prepping-for-magic-city-art-connection/) - Get a sneak peek into the practice session for the upcoming performance at Magic City Art Connection in Birmingham, AL. - [Building a Left-Handed Piano MIDI "Man-in-the-Middle" Device](https://cerkit.com/building-a-left-handed-piano-midi-man-in-the-middle-device/) - Learn how to build a custom Arduino MEGA MIDI Man-in-the-Middle (MITM) device that inverts incoming notes, letting you play any standard keyboard as a perfectly mirrored "left-handed" piano. - [Reimagining the Keys: The Left-Handed Keyboard Inversion VST](https://cerkit.com/reimagining-the-keys-the-left-handed-keyboard-inversion-vst/) - Discover how mirroring the piano keyboard around the axis of D can transform the playing experience for left-handed musicians. Learn the music theory and technical implementation behind this MIDI inversion VST designed for better ergonomics and creative flow. - [The Three Me's - A Strategy for Making Good Decisions](https://cerkit.com/the-three-mes-a-strategy-for-making-good-decisions/) - The Three Me's" is a proven strategy for making good decisions. Explore this mental framework to navigate dilemmas, balance priorities, and build a better future. (163 characters) - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED – Part 7: Persisting the Pi Calculus Session State with a Minimal API and PostgreSQL](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red-part-7-persisting-the-pi-calculus-session-state-with-a-minimal-api-and-postgresql/) - Discover how to add durable state persistence to a real-time Pi Calculus architecture. Learn to capture dynamic MQTT session data from Node-RED using a lightning-fast .NET 10 Minimal API and store complex JSON UI payloads natively in PostgreSQL using Entity Framework Core. - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED – Part 6: Securing the Pi Calculus Ecosystem with MQTT Authentication](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red-part-6-securing-the-pi-calculus-ecosystem-with-mqtt-authentication/) - Secure your Pi Calculus ecosystem! Learn how to lock down a Mosquitto broker and implement authenticated MQTT connections using secrets.json for a .NET 10 console UI and appsettings.json for a Blazor WebAssembly client. - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED – Part 5: Blazor WebAssembly, Shared Libraries, and Targeted Handshakes](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red-part-5-blazor-webassembly-shared-libraries-and-targeted-handshakes/) - Expand your .NET 10 dynamic console UI to the web! Learn to build a Blazor WebAssembly client, use MQTT WebSockets, and route targeted Node-RED handshakes. - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED – Part 4: Dynamic Menu Actions and Thread-Safe UI Updates](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red-part-4-dynamic-menu-actions-and-thread-safe-ui-updates/) - Discover how to use Pi Calculus over MQTT to trigger UI actions and dynamically update Spectre.Console panels in your .NET app using Node-RED orchestrations. - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED – Part 3: Dynamic UI Configuration and Session Initialization](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red-part-3-dynamic-ui-configuration-and-session-initialization/) - Discover how to apply Pi Calculus over MQTT to dynamically orchestrate a .NET console UI. Learn to negotiate private channels using Node-RED and Spectre.Console. - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red/) - Dynamic UI system using .NET 10, Spectre.Console library, and MQTT messages to drive a Console UI. - [Building a Dynamic Console UI with .NET 10, MQTT, and Node-RED – Part 2: The Pi Calculus Menu System](https://cerkit.com/building-a-dynamic-console-ui-with-net-10-mqtt-and-node-red-part-2-the-pi-calculus-menu-system/) - In computer science, the π-calculus (pi calculus) is a process calculus used to describe concurrent systems whose configurations change dynamically. - [Shader Studio - An AI Powered Metal Shader Language editor](https://cerkit.com/shader-studio-an-ai-powered-metal-shader-language-editor/) - View full size Get the Code Code available on GitHub Under the Hood: How Shader Studio Brings Code to Life Welcome to cerkit blog. Today, we are taking a deep dive into the architecture of Shader Studio, a native macOS application designed to help users write, visualize, and export procedural animations using the Metal Shading - [The "Digital Voice" Robot: My Custom Character Animator Workflow](https://cerkit.com/the-digital-voice-robot-my-custom-character-animator-workflow/) - Lately, I’ve been looking for ways to blend my background as a software engineer with my creative projects. I recently built a custom robot puppet for Adobe Character Animator, and the process involved a unique "AI-assisted texturing" technique, a waveform-based mouth design, and a custom-coded speech engine. Step 1: Base Design and the "Green Screen" Trick - [Project Skyverb (Intro): Chasing the "Cloud" Sound with a Homemade Computer Chip](https://cerkit.com/project-skyverb-intro-chasing-the-cloud-sound-with-a-homemade-computer-chip/) - The Dream: A Studio Effect from Scratch If you produce music, play an instrument, or just love listening to ambient tracks, you’ve probably heard that sound. It’s a huge, washing reverb that sounds less like a room and more like a choir of angels singing in a canyon. There is a very famous, very blue, and expensive - [Project Skyverb Part 2: Implementing the Basic Echo](https://cerkit.com/project-skyverb-part-2-implementing-the-basic-echo/) - Implementing a digital delay on an FPGA using Verilog - [Project Skyverb Part 1: Building the Digital Wire](https://cerkit.com/project-skyverb-part-1-building-the-digital-wire/) - Exploring the use of FPGAs as audio processors (reverb, delay, etc.) - [The Hardware Hub: A Tour of My Dawless Studio](https://cerkit.com/the-hardware-hub-a-tour-of-my-dawless-studio/) - Step inside my dawless music studio where the AKAI MPC Live II reigns supreme. Discover the unique signal flow connecting Moog, Waldorf, and Roland synths through Mackie and Zoom mixers for a truly tactile, hardware-driven workflow. From custom 3D-printed mods to analog summing, see how I produce music without a mouse. - [33 Years Later, My Artwork Comes to Life](https://cerkit.com/33-years-later-my-artwork-comes-to-life/) - Back in the early 90's, during my more "experimental" years, I drew a lot of pictures. I was inspired by Salvador Dali and other surrealist artists. I've kept one of those drawings all these years, even though I never got to finish it. It stayed in my possession as a kind of albatross, because it - [CW Companion: Engineering High-Fidelity Morse Code Analysis](https://cerkit.com/cw-companion-engineering-high-fidelity-morse-code-analysis/) - See full-size image View Windows Infographic Get the code on GitHub cw-companion for macOS cw-companion for Windows For amateur radio operators and CW (Continuous Wave) enthusiasts, the bridge between modern software-defined radio (SDR) and traditional Morse code analysis has often been clumsy. Traditional decoders frequently rely on microphone input, introducing room reverb and background noise - [Retro Z80/Z180 Emulator - Part II](https://cerkit.com/retro-z80-z180-emulator-part-ii/) - Dive into the architecture of the Retro180Emulator v2.0. This case study explores the SC126 Z180 motherboard, MMU banking logic, and how modern design patterns like state persistence and 'Smart Injection' bridge the gap for legacy systems. - [Retro Z80/Z180 Emulator for macOS](https://cerkit.com/retro-z80-z180-emulator-for-macos/) - To understand how hardware and software commingle to create a functional computer, we will analyze the Retro180Emulator, a project designed to emulate the Zilog Z180 microprocessor architecture on macOS. - [Surface and Shadow - Ripples over Deep Waters](https://cerkit.com/surface-and-shadow-ripples-over-deep-waters/) - It is cold here, standing naked and alone. I watch the skimming stone fly over deep and dark waters, Seeing the same ripples over and over again. They reach the shore, but do not penetrate the deeper realms, While the depths continue to rush in the dark places. Moments. Moments. More Moments. I have memorized - [3d Printing and Painting Miniatures](https://cerkit.com/3d-printing-and-painting-miniatures/) - I've been spending a lot of time lately 3d printing some models and painting them. It's a very rewarding and relaxing hobby. I like to design miniature models (or download them from the Internet) that I can print and paint. I dedicated about a month to printing out pieces for the 3d-printable spaceship skirmish game - [New WordPress Blog Engine](https://cerkit.com/new-wordpress-blog-engine/) - I've converted my Astro Static Text blog engine over to a hosted WordPress site. - [Playing Midi Music on Arduino](https://cerkit.com/playing-midi-music-on-arduino/) - Turning a MIDI File into Arduino Music with PlatformIO 🎵 Project Overview In this project, we created a simple workflow to convert a standard .mid MIDI file into binary note data suitable for playback on an Arduino Mega 2560 using PlatformIO. The Arduino reads the notes from memory and plays them using the tone() function - [Visualize APDS-9960 Color Sensor Data with CircuitPython and SwiftUI](https://cerkit.com/visualize-apds-9960-color-sensor-data-with-circuitpython-and-swiftui/) - Introduction In this tutorial, we'll build a real-time color monitoring system: Hardware: APDS-9960 color sensor connected to a CircuitPython-capable board. CircuitPython: Script to connect to Wi-Fi, read RGB values, and publish JSON payloads to the sensors/color MQTT topic. macOS SwiftUI App: Subscribe to sensors/color, decode incoming data, and render a live updating chart. All source - [3D Printable Tabletop Starship Combat: Battlefront Valkyrie](https://cerkit.com/3d-printable-tabletop-starship-combat-battlefront-valkyrie/) - Fully FDM 3D Printable Game Battlefront Valkyrie is a fully 3D printable tabletop starship game created by Tom Tullis over at Fat Dragon Games. Finally! I've been looking for a 3D-printable game that I could print the models on my Bambu Labs A1 FDM printer. I bought Full Spectrum Dominance, but my resin printer kept - [Hookpad → SystemVerilog: Programming Music on the Nexys A7](https://cerkit.com/hookpad-→-systemverilog-programming-music-on-the-nexys-a7/) - Programming music directly into an FPGA can feel like a grind—especially if you’re hand-coding note tables and timing values. When working with the Digilent Nexys A7 (100 MHz), I wanted a more direct way to take melodies I’d written and make the board “sing” without endless trial and error. That’s where Hookpad comes in. Hookpad - [Implementing the SAP-1 Computer on FPGA](https://cerkit.com/implementing-the-sap-1-computer-on-fpga/) - Over the last few weeks I’ve been implementing a minimalist 8-bit SAP-1 (Simple As Possible) computer on an FPGA. This post captures the architecture, the SystemVerilog snippets that make it tick, the VGA output I just added, and the little browser-based assembler I wrote to generate the ROM image (.mem) for the design. It’s written - [FPGA Sprite with VGA, Thruster Sound, and Flame](https://cerkit.com/fpga-sprite-with-vga-thruster-sound-and-flame/) - Over the past few days I’ve been working on a fun FPGA project: getting a sprite (my little ship) to move around the screen on a Nexys A7 board, complete with a starfield background, rotation, and even thruster sounds when you press the up or down buttons. This post walks through the design and shares - [New Intentional Music engine](https://cerkit.com/new-intentional-music-engine/) - Nocturne of Shadows by cerkit Engine Overview MUSE loads song descriptions from JSON and turns them into MIDI compositions. The core flow looks like this: Load configuration – SongLoader deserializes JSON into a Song object (name, duration, tempo, scales, chord progressions, tracks, seed, etc.). Initialize generator – Program builds a GenerativeEngine, passing the song and - [Building a Weather Display on the PyPortal Titano](https://cerkit.com/building-a-weather-display-on-the-pyportal-titano/) - I recently built a weather display for my Adafruit PyPortal Titano using CircuitPython. This project fetches live weather data from OpenWeatherMap and displays the current temperature, condition, and details like “feels like” temperature and wind. In this blog entry, I'll walk through the CircuitPython code, how I structured the display, and how I added a - [How I accidentally learned something unexpected from a simple binary counter](https://cerkit.com/how-i-accidentally-learned-something-unexpected-from-a-simple-binary-counter/) - In my previous post, I talked about how I implemented a binary counter with my Mojo FPGA board. I am working on a follow-up post on implementing a reverse binary counter with a switch that lets you change between the incrementing ( UP ) counter and the decrementing ( DOWN ) counter. I accidentally discovered - [Moon Phase Calculator for the Pebble Watch (C Source)](https://cerkit.com/moon-phase-calculator-for-the-pebble-watch-c-source/) - A few years ago, I bought a Pebble smartwatch. Mostly I bought it because it was cheap, but I also wanted to write my own apps for it. I wrote a few apps. Recently, Pebble was bought by FitBit and ceased production of the Pebble smartwatch. However, they are making great progress to ensuring that - [Driving the Max 7219 7-Segment Display Module from ASP.NET Core on the Raspberry Pi](https://cerkit.com/driving-the-max-7219-7-segment-display-module-from-asp-net-core-on-the-raspberry-pi/) - In a [previous blog post](/posts/running-a-net-core-2-0-webapi-app-on-the-raspberry-pi-raspbian/), I discussed how to create a dotnet core 2.0 WebApi application to run on the Raspberry Pi and trigger an LED. This post will build upon that by outlining the steps I took to connect a [Max 7219 7-Segment Display Module](http://pdf1.alldatasheet.com/datasheet-pdf/view/73745/MAXIM/MAX7219.html) to the Pi and extend my WebApi to display - [Play your Favorite Daw from Within Virtual Reality](https://cerkit.com/play-your-favorite-daw-from-within-virtual-reality/) - I have been learning how to use my VR headset to be more creative. I spent the first big weekend that I had with it learning the basics of drawing in VR. In addition to drawing, I have also been learning how to compose music in VR using a program called Virtuoso. Virtuoso has a - [Getting Started with Retro Computers - Writing Code for the SC131](https://cerkit.com/getting-started-with-retro-computers-writing-code-for-the-sc131/) - About a year ago, I built a SC131 Pocket Sized Computer designed and developed by Stephen C Cousins on Tindie. I soldered the kit and got it up and running, but left it alone for a long time. I bought it because I'm interested in learning how computers work at the fundamental level. Part of - [New acquisition - MPC One](https://cerkit.com/new-acquisition-mpc-one/) - Up until this weekend, I had never learned how to use a groovebox. My computerrecently died, so I decided that instead of spending money on a new computer,I'd spend it on an MPC One. I'm glad I did. I havenot put it away since it arrived. I've already made multiple sound sketches with it. I'm - [VGA on an FPGA](https://cerkit.com/vga-on-an-fpga/) - I have been working with my FPGA boards to attempt to display a test pattern on a VGA monitor. For my experiments, I bought a small VGA monitor*. It has a VGA input, as well as a HDMI input, so I can use it with all of my FPGAs, since the Zybo only has HDMI - [Using Xmodem to Transfer Files to Retro Computer](https://cerkit.com/using-xmodem-to-transfer-files-to-retro-computer/) - My retro computer is an SC126 designed by Stephen C. Cousins. It has two serial ports. I am using 1 serial port to interface with my retro amber monitor. That leaves the second one open to use as a way to transfer programs and data from my laptop to the retro computer. The port circled - [How I Created Custom USB Music Drives with a Built-In Music Player](https://cerkit.com/how-i-created-custom-usb-music-drives-with-a-built-in-music-player/) - Creating a physical music product in the digital age can be a rewarding way to connect with listeners. Here's how I built a series of custom USB thumb drives containing my music, a self-contained HTML player, and visual artwork—perfect for promotional giveaways or unique fan experiences. 🎧 What You’ll Need USB thumb drives (I used - [Building a Curated USB Music Playlist Web App](https://cerkit.com/building-a-curated-usb-music-playlist-web-app/) - Welcome to this step-by-step walkthrough of how we created a beautiful, responsive USB music playlist viewer using only web technologies. We’ll highlight each transformation stage and show the exact prompts that guided us to the final product. 🎬 Intro We began with a basic idea: display a curated set of MP3s from a USB drive - [The Hand-MIDI Interface Project - Adafruit Feather 32u4 with Magnetometer](https://cerkit.com/the-hand-midi-interface-project-adafruit-feather-32u4-with-magnetometer/) - A few months ago, I had an idea to create a new musical instrument that mounted on a glove. I used a cycling glove that I had from that time that I bought the Trek bike and rode it twice (long story). I bought the following parts from Adafruit: Stainless conductive thread FLORA 9-DOF Accelerometer/Gyroscope/Magnetometer - [The Christmas when I peeked at the presents](https://cerkit.com/the-christmas-when-i-peeked-at-the-presents/) - I remember one Christmas when I decided to look in the "secret place". I saw my presents. There, in the collection, was the one thing I had wanted for half the prior year: Rodan, the Pterodactyl. He was one of the monsters that fought Godzilla in the classic movies. When my parents caught me looking, - [The Adventure Begins](https://cerkit.com/the-adventure-begins/) - We just had our second gathering to play Pathfinder (Pathfinder is based on the D&D; 3.5 Edition Rules). We started playing the [Curse of the Crimson Throne](http://paizo.com/products/btpy9nme?Pathfinder- Adventure-Path-Curse-of-the-Crimson-Throne) adventure path last weekend. I'm the gamemaster (Dungeon Master) and I've had a blast. It takes a lot of preparation to get ready for a game. Lots - [Speech in C](https://cerkit.com/speech-in-c/) - Writing C programs for speech on the SC126 (RC2014 Compatible) with a SPO256-AL2 Speech Synthesis Chip I spent some time yesterday working with ChatGPT to assist me in writing a moderately complex (based on my personal experience) C program. The program needed to be a port of the following BASIC program: 10 DATA 27,7,45,15,53,3,46,51,45,1,21,3 20 - [Sculpting in Virtual Reality](https://cerkit.com/sculpting-in-virtual-reality/) - I recently purchased a virtual reality headset. I remember dreaming about a future when this technology would be possible. When I was a kid (back in the 1980's), I used to follow the scientific advancements on head and hand tracking. Bluetooth wasn't even a thing, so there was no way to understand how the hands - [Running a .NET Core 2.0 WebApi app on the Raspberry Pi (Raspbian)](https://cerkit.com/running-a-net-core-2-0-webapi-app-on-the-raspberry-pi-raspbian/) - I wanted to create a web api app that answered calls on my Raspberry Pi. The first step I learned was how to install and configure .NET core 2.0 on the Raspberry Pi. Note - .NET Core only runs on the Raspberry Pi 2 or 3. It will not run on the Raspberry Pi Zero - [Out of body experiences and death. Are they related?](https://cerkit.com/out-of-body-experiences-and-death-are-they-related/) - When we lived in Arizona, we used to go on adventures in our car at night (when it cooled off). We would drive out of the city and turn down small roads that led into the deeper desert. It was an amazing way to explore. We saw wild beasts and lots of snakes. One night, - [My Obsession with Feedback Continues](https://cerkit.com/my-obsession-with-feedback-continues/) - I recently spent some time with my digital audio workstation (DAW) putting together a heavily delayed feedback loop on the audio channels. I split the audio and sent it to the input of the effect, then took the output of the effect and put it into the input of the audio channel. Sometimes, an effect - [My first 3D printer - the Geeetech i3 Pro B (Prusa Clone)](https://cerkit.com/my-first-3d-printer-the-geeetech-i3-pro-b-prusa-clone/) - Back in the day… When I was a kid (back in the 80's), I used to come home from school and watch a great TV show about future technologies. I don't remember the name of the show, but it had some interesting ideas. One of those ideas was this notion of having your own miniature - [My First Electronics Kit Build - the DSO138 Oscilloscope](https://cerkit.com/my-first-electronics-kit-build-the-dso138-oscilloscope/) - I recently ordered the brilliant Open-source DSO138 oscilloscope kit by JYE Tech. It costs about $20 and is eligible for Amazon Prime shipping, so I thought I'd give it a try. It sat in a pile of other electronic parts for the past few weeks while I waited on a new soldering iron kit and - [Lunetta 1](https://cerkit.com/lunetta-1/) - About seven or eight years ago, I started down a path to create my own synthesizer using discrete electronic parts like CMOS chips, resistors, capacitors, and the like. Early on, I discovered the "Lunetta" synthesizer, made from 40106 CMOS chips. By hooking them up a certain way, you can achieve a square wave. This was - [Is the feedback loop the key to a learning computer?](https://cerkit.com/is-the-feedback-loop-the-key-to-a-learning-computer/) - When I was in my early 20's, I setup my Korg Poly-Six synthesizer so that the audio output fed into a Radio Shack (Realistic) Reverb Machine with the output of that going back into the synthesizer input (a modification that someone had added to the synthesizer before I bought it) for a complete feedback loop. - [Interfacing Raspberry Pi With Lcd](https://cerkit.com/interfacing-raspberry-pi-with-lcd/) - I've spent the past few days exploring a project that allows me to display text on an LCD using a Raspberry Pi. We will be using Python in this post, so familiarity with Python will be useful. First, make sure you have I2C enabled. You can check this by running: sudo raspi-config Connect your LCD - [How to Select JV-2080 Banks and Patches From MPC](https://cerkit.com/how-to-select-jv-2080-banks-and-patches-from-mpc/) - I once owned a Roland JV-1010 sound module. I bought it in 1999 to go along with my FP-9 Stage Piano (which I still use in my home studio). I really loved the sounds on the JV-1010, so last year, I decided I wanted to start using those sounds again. However, the price of the - [How to Fix Paused Printer on Mac](https://cerkit.com/how-to-fix-paused-printer-on-mac/) - I've been having difficulty getting my Mac connected to a wireless printer. No matter how I configured it, it would always enter paused mode whenever I printed a document. It turns out that all I had to do was connect to it via IP address on the Add Printer dialog. To get the IP address, - [FPGA for Fun #1 (Part 2) - Driving the MAX 7219 LED Display Module](https://cerkit.com/fpga-for-fun-1-part-2-driving-the-max-7219-led-display-module/) - In a previous post, I covered the wiring diagrams, finite state machines, and LED segment encoding for the MAX7219 display module wired up to the Mojo FPGA. In this post, I will cover the Lucid HDL code used to implement the state machines. All of this Lucid HDL (and the resulting Verilog) can be found - [FPGA for Fun #1 (Part 1) - Driving the MAX 7219 LED Display Module](https://cerkit.com/fpga-for-fun-1-part-1-driving-the-max-7219-led-display-module/) - I recently ordered a few LED display modules based on the MAX7219 chip. When they arrived, I immediately began putting together projects to use them. The first project was to wire one up to my Raspberry Pi and use C to bitbang some numbers to display. I wrote about this in a [previous post](https://cerkit.com/2017/11/25/driving-the-max-7219-7-segment-display- module-from-asp-net-core-on-the-raspberry-pi/). - [Four day weekend without the Internet](https://cerkit.com/four-day-weekend-without-the-internet/) - I just spent four days disconnected from the Internet. It was strange. I also forgot and left my power brick for my laptop at home. So all I had was a Raspberry Pi 400 single board computer. It has a 2.8" TFT screen on it. I was able to write some C programs and a - [Easy and inexpensive bases for paper and cardboard RPG miniatures](https://cerkit.com/easy-and-inexpensive-bases-for-paper-and-cardboard-rpg-miniatures/) - I print my own miniatures for use with Pathfinder. I buy the PDF version of the Pathfinder pawns and print out the pages that I need to use, cutting and gluing the pieces as necessary. However, I was having trouble finding decent bases for them. The bases that are for sale on the Internet either - [Driving Lcd Display From Node Red](https://cerkit.com/driving-lcd-display-from-node-red/) - In a previous post, I covered the steps of how to connect an LCD display to the Raspberry Pi. This post will demonstrate how to use it in a Node-Red flow. Install Node-Red You can follow these directions to install Node-Red on your Raspberry Pi. I took the extra step to install Node-Red as a - [Custom ROM WBW](https://cerkit.com/custom-rom-wbw/) - I am a big fan of retro homebrew computers. I have a few kits that I ordered from Tindie.com based on the RC2014 model (SC126). To keep it completely retro, I bought a classic amber terminal so I could have that classic user experience. After a few hours of troubleshooting, I determined that the default - [Creating Music and Animation in VR](https://cerkit.com/creating-music-and-animation-in-vr/) - I've spent the past few weeks learning how to create animation and music using only my Virtual Reality headset. I've been using Quill and Virtuoso (dead link) (paired with my DAW) extensively. My first animation was the result of me trying to keep up with Goro Fujita's Patreon supporter class. He works fast, so I - [Converting a Haiku into Music using a Context Free Grammar](https://cerkit.com/converting-a-haiku-into-music-using-a-context-free-grammar/) - In this post, I will demonstrate how I converted a Haiku into algorithmic music using a context free grammar. In a previous post, I discussed how I created a song from a grammar based on a verse from the Christian Bible.In this post, I will demonstrate how I converted a Haiku into a song using - [Assembling a Morse Code Radio kit](https://cerkit.com/assembling-a-morse-code-radio-kit/) - I recently purchased an electronics kit for sending and receiving morse code. It has a port where you can plug in a telegraph key (I bought a red aluminum Iambic paddle), and a headphone jack. It comes as an unassembled group of parts and requires assembly and soldering to complete the kit. I also got - [Anatomy of a Song: Using Scripture as a Song Grammar](https://cerkit.com/anatomy-of-a-song-using-scripture-as-a-song-grammar/) - I have designed a simple context-free grammar using Psalm 71:22 to drive the creation of a song. I decided to use the Bible as my latest muse. I was looking for a good verse to use as the foundation for a Context Free Grammar for my Algorithmic Music Composition efforts and the one I was - [Managing Infinite Concepts with Finite Constraints](https://cerkit.com/managing-infinite-concepts-with-finite-constraints/) - There are infinite concepts, but when one applies finite constraints to those concepts, one can accomplish miracles. This is the foundation of life as I perceive it. The constraints of words challenge us to think about the world a specific way in order to communicate what we are thinking and perceiving in order for it ## Pages - [Home](https://cerkit.com/) - Code. Sound. Synthesis. Welcome to cerkit.com, the creative portfolio of Michael Earls. I’ve always viewed programming and music composition through the same lens—both require turning abstract logic into something you can experience. On the technical side, I specialize in complex system architecture, web development (.NET, C#, Blazor), and indie game design. On the audio side, - [cerkit Music](https://cerkit.com/cerkit-music/) - cerkit (Michael Earls) is a Montgomery-based electronic musician and creative technologist who explores the intersection of human emotion and machine-driven sound. Drawing on three decades of musical experience, his work specializes in ambient, Berlin School, and downtempo textures, creating cinematic backdrops for deep thought and focused listening. While his musical journey spans 30 years, his - [Music](https://cerkit.com/music/) - Choose Your Path cerkit The Laboratory. For 30 years, I have explored the chaotic edges of sound. Here lies the archive of experiments, generative synthesis, and abstract textures. Explore cerkit - [Web Utilities](https://cerkit.com/web-utilities/) - Fleet Builder Guide: Overview and instructions for building and managing fleets for the Battlefront Valkyrie 3D printed game from Fat Dragon Games Inventory Guide: Instructions and tips for managing your inventory for Battlefront Valkyrie. Game Fleet Manager - A utility for Battlefront Valkyrie that enables you to manage the fleet lists on Game Day. Intentional - [/inventory](https://cerkit.com/inventory/) ## My Templates - [Default Kit](https://cerkit.com/?elementor_library=default-kit) ## Artists - [cerkit](https://cerkit.com/js_artist/cerkit/) ## Categories - [Uncategorized](https://cerkit.com/category/uncategorized/) - [Tech](https://cerkit.com/category/tech/) - [Crafting](https://cerkit.com/category/crafting/) - [Music](https://cerkit.com/category/music/) - [Programming](https://cerkit.com/category/programming/) - [Gaming](https://cerkit.com/category/gaming/) - [Electronics](https://cerkit.com/category/electronics/) - [Blog](https://cerkit.com/category/blog/) - [3d Printing](https://cerkit.com/category/3d-printing/) - [Poetry](https://cerkit.com/category/poetry/) - [AI](https://cerkit.com/category/ai/) - [Hardware](https://cerkit.com/category/hardware/) - [Ham Radio](https://cerkit.com/category/ham-radio/) - [Art](https://cerkit.com/category/art/) - [FPGA](https://cerkit.com/category/fpga/) - [Philosophy](https://cerkit.com/category/philosophy/) ## Tags - [3D Printing](https://cerkit.com/tag/3d-printing/) - [diy](https://cerkit.com/tag/diy/) - [electronics](https://cerkit.com/tag/electronics/) - [Music](https://cerkit.com/tag/music/) - [Programming](https://cerkit.com/tag/programming/) - [FPGA](https://cerkit.com/tag/fpga/) - [ham](https://cerkit.com/tag/ham/) - [radio](https://cerkit.com/tag/radio/) - [ham-radio](https://cerkit.com/tag/ham-radio/) - [games](https://cerkit.com/tag/games/) - [starship](https://cerkit.com/tag/starship/) - [Pathfinder](https://cerkit.com/tag/pathfinder/) - [Art](https://cerkit.com/tag/art/) - [VR](https://cerkit.com/tag/vr/) - [hardware](https://cerkit.com/tag/hardware/) - [rom](https://cerkit.com/tag/rom/) - [retro](https://cerkit.com/tag/retro/) - [raspberry pi](https://cerkit.com/tag/raspberry-pi/) - [C#](https://cerkit.com/tag/c/) - [.NET Core](https://cerkit.com/tag/net-core/) - [Gaming](https://cerkit.com/tag/gaming/) - [Lunetta](https://cerkit.com/tag/lunetta/) - [development](https://cerkit.com/tag/development/) - [SystemVerilog](https://cerkit.com/tag/systemverilog/) - [Nexys A7](https://cerkit.com/tag/nexys-a7/) - [Digilent](https://cerkit.com/tag/digilent/) - [Hookpad](https://cerkit.com/tag/hookpad/) - [Audio](https://cerkit.com/tag/audio/) - [Mathematics](https://cerkit.com/tag/mathematics/) - [binary](https://cerkit.com/tag/binary/) - [blog](https://cerkit.com/tag/blog/) - [gear](https://cerkit.com/tag/gear/) - [tutorial](https://cerkit.com/tag/tutorial/) - [ambient](https://cerkit.com/tag/ambient/) - [generative](https://cerkit.com/tag/generative/) - [machine learning](https://cerkit.com/tag/machine-learning/) - [AI](https://cerkit.com/tag/ai/) - [Musings](https://cerkit.com/tag/musings/) - [oscilloscope](https://cerkit.com/tag/oscilloscope/) - [.NET](https://cerkit.com/tag/net/) - [death](https://cerkit.com/tag/death/) - [philosophy](https://cerkit.com/tag/philosophy/) - [CircuitPython](https://cerkit.com/tag/circuitpython/) - [PyPortal](https://cerkit.com/tag/pyportal/) - [Weather API](https://cerkit.com/tag/weather-api/) - [DIY Electronics](https://cerkit.com/tag/diy-electronics/) - [WebAPI](https://cerkit.com/tag/webapi/) - [cpu](https://cerkit.com/tag/cpu/) - [computer](https://cerkit.com/tag/computer/) - [Star Wars](https://cerkit.com/tag/star-wars/) - [Retro Projects](https://cerkit.com/tag/retro-projects/) - [godzilla](https://cerkit.com/tag/godzilla/) - [rodan](https://cerkit.com/tag/rodan/) - [toys](https://cerkit.com/tag/toys/) - [Christmas](https://cerkit.com/tag/christmas/) - [HTML](https://cerkit.com/tag/html/) - [CSS](https://cerkit.com/tag/css/) - [JavaScript](https://cerkit.com/tag/javascript/) - [Playlist](https://cerkit.com/tag/playlist/) - [Web Design](https://cerkit.com/tag/web-design/) - [usb](https://cerkit.com/tag/usb/) - [promotion](https://cerkit.com/tag/promotion/) - [how-to](https://cerkit.com/tag/how-to/) - [computers](https://cerkit.com/tag/computers/) - [SC131](https://cerkit.com/tag/sc131/) - [mac. printer](https://cerkit.com/tag/mac-printer/) - [Roland](https://cerkit.com/tag/roland/) - [JV-2080](https://cerkit.com/tag/jv-2080/) - [Oscillator](https://cerkit.com/tag/oscillator/) - [Arduino](https://cerkit.com/tag/arduino/) - [Speech Digitizer](https://cerkit.com/tag/speech-digitizer/) - [SP0256-AL2](https://cerkit.com/tag/sp0256-al2/) - [robot](https://cerkit.com/tag/robot/) - [voice](https://cerkit.com/tag/voice/) - [video](https://cerkit.com/tag/video/) - [engine](https://cerkit.com/tag/engine/) - [3d printer](https://cerkit.com/tag/3d-printer/) - [analog summing](https://cerkit.com/tag/analog-summing/) - [hardware-driven workflow](https://cerkit.com/tag/hardware-driven-workflow/) - [AKAI MPC Live II](https://cerkit.com/tag/akai-mpc-live-ii/) - [Dawless studio](https://cerkit.com/tag/dawless-studio/) - [music studio tour](https://cerkit.com/tag/music-studio-tour/) - [mental models](https://cerkit.com/tag/mental-models/) - [decision making](https://cerkit.com/tag/decision-making/) - [self improvement](https://cerkit.com/tag/self-improvement/) - [future self](https://cerkit.com/tag/future-self/) - [productivity hacks](https://cerkit.com/tag/productivity-hacks/) - [avoiding regret](https://cerkit.com/tag/avoiding-regret/) - [making good decisions](https://cerkit.com/tag/making-good-decisions/) - [personal growth](https://cerkit.com/tag/personal-growth/) - [life strategies](https://cerkit.com/tag/life-strategies/) - [problem solving](https://cerkit.com/tag/problem-solving/)