Recently in my quest to find a good GUI framework for building Csound instruments I've been exploring Python and PyQt5. Before this I was exploring Node.js and Electron, but I ran into frustrating problems displaying Csound data in that framework. So when I switched to PyQt5 the first thing I focused on was displaying data. I'm happy to report that the results thus far have been great. Here's the way I've found to display amplitude and frequency data quickly and smoothly.
I've spent the last few weeks trying to build a Csound GUI with Node.js and Electron. My immediate goal has been to revive my Mell Fark project, but my longer-term goal is to find a framework to build other Csound GUIs with going forward. Alas, I suspect Node.js and Electron won't be that framework. As much as I enjoy working with HTML, CSS, and JavaScript for rendering GUIs, I've grown frustrated with the Node.js environment.
It's official. This is now a web development blog. Well, not really.
After spinning up my new website a couple weeks ago I started to work on my Csound/Node.js project. That's what I wanted to post about, but I ran into frustrating performance issues with the Electron framework. By last weekend I was despairing that I'd never figure out how to build a performant Csound GUI in Node.js. That's probably not true, but the coding process can be discouraging like that.
I decided I "needed a win", so I set aside the Csound project and turned my attention to incorporating comments into my website using Staticman. Even with this project I nearly hit a wall and couldn't do it, but in the end I got it all set up in a few days.
You might not realize it, but my website has been completely rebuilt. Like most things, I stumbled into this project while working on a different project. This time, in my quest to control Csound with web technologies I fell down the Node.js rabbit hole, which led down the static site generator rabbit hole, which led down the GitHub Pages rabbit hole, and so on. Less than two weeks later I have this shiny new static site built with an ultra-minimalist custom script. So long Joomla! Here's how it all happened.
As I mentioned in a recent post, earlier this year my right ear began to get severely fatigued after band practices. The symptoms included ear pressure, hearing diminishment, and headaches. Wearing ear protection didn't help. It became disorienting and stressful for me, which led me to the Mayo Clinic's Ear, Nose, and Throat department in Rochester, Minnesota. But there's a bigger picture.
And just when I wrote, after a year’s absence from the blog, that I’m not doing computer music, I’ve suddenly been swept back into computer music in the past week. It’s Gábor Lázár’s fault. His new album Boundary Object on Planet Mu immediately gripped me and told me to get back to work.
And just like that a year has passed. In my last post back in April of 2021, I described a major coding project involving p5.js and Web Csound which culminated in a live performance. As I mentioned at the end of the post, I hit a coding wall immediately after this frenzy of activity. Then, just as I was beginning to take on my next music coding project, I met someone who derailed everything and sent me on a radically different musical path.
It's been a while! A lot has happened since my last post three months ago. After finding an accurate time source in Python I turned my attention to building a graphical user interface (GUI) for my Python music generator. That was moving along nicely, but then I discovered p5.js and my focus shifted entirely. This led me to develop a new web-based program that loops audio files, and I was able to perform a live set with the program on YouTube. Read on for more details!
For the past couple weeks I've been wrestling with how to handle timing in Python. This was the main challenge I'd have to solve before converting my Python music generator into a real-time system. After experimenting with several possible solutions I finally found a promising one.
After five weeks of intensive coding I was able to release an album of tracks generated by my music system. This was a month ago. In the aftermath of this frenzy of creative activity a mild hopelessness set in. Even though I could see a thousand paths forward, I wasn't sure I was up to the task of continuing on. I wasn't sure where to direct my attention next. I think this is pretty normal after a bout of creative activity. Here were the paths forward I couldn't decide on.
I ended up doing a little bit of all three over the past month. Here's what I've learned.