Hello, all —
It has been a while since my last update here. About 18 months. Where do I begin..? Despite the quiet, a lot has happened in this time.
Most of the work involved in late-stage development is boring and tedious, with some highlights. I can't do justice to all of these without writing a very long post. I'd like to get in the habit of writing more often, though — and this project still has a lot of untold stories. Let me know in the comments if there's something you'd like to know more about!
● January 2017. Improved our error reporting, part of an effort to make imitone more reliable. Prepared for NAMM 2017, where I worked with Jim Crawford to design some of imitone's built-in instruments and to demonstrate a futuristic "perceptual" technique to MMA.
● February 2017. Added a sampler for imitone's more "realistic" instruments and made preparations for work on a mobile prototype. Worked on an imitone research tool. Participated in protocol design with MMA.
...Wondering what this "MMA" thing is about? No, I'm not wrestling anybody. The MIDI Manufacturers Association (MMA) is responsible for developing MIDI, the universal language of digital music. Because imitone uses MIDI to send notes to instruments and other music apps, it's a pretty big deal for us! There's also a MIDI Association (MA) which is open to creators of all kinds — you can join here.
I happened to join MMA at a very special time. Since 2017 there has been a fresh effort to design a "Next-Generation Protocol" to improve MIDI, and I have been an active contributor. Features under consideration include higher resolution, per-note effects, and (most importantly for imitone) the ability for the controller to learn about and adapt to the instruments, apps and projects it's connected to.
imitone is the smallest and newest company involved in these efforts. Participating has been a tough choice — it's a huge investment of time and it is undeniably stretching out imitone's schedule — but by chiming into these conversations I can ensure the Next Generation of MIDI will work for us, and make exciting new things possible for beginners and experienced musicians alike. Great things are coming...
● March 2017. Began developing a mobile imitone prototype. Designed a mobile UI, including pop-out menus which now appear in the PC/Mac version. Had a long conversation with imitone's designer Richard Hogg about how our design will evolve in the future as we strive to make it simpler and more accessible. Attended the Game Developers' Conference.
● April 2017. Completed imitone's first mobile prototype. Aided in some Next-Generation Protocol prototyping. Ported my other project, SoundSelf, to a game console.
...I know some of you have been eager to use a mobile version of imitone! Unfortunately a few hard problems need solving before our iOS prototype can turn into beta. Apple's requirements have changed in the time since our Kickstarter campaign, and we're exploring our options with the advice of fellow developers. (We're also excited about working with the new low-latency audio technology in Android Oreo!)
Around April I started keeping detailed train-of-thought journals for each day of my work — one of many habits I've built over the years to deal with the "tunnel vision" of working alone on these long projects. I notice I spent a few evenings in April on a math formula that creates huge, disorienting labyrinths...
● May 2017. Collaborating with music teachers, I designed a special synthesizer that enhances the singer's sense of deviations in their voice pitch — only to discover that this invention makes it feel absolutely awful to sing. Shelved it. Proposed some compatibility tricks for MMA's protocol. Improved SoundSelf's VR compatibility. Upgraded my development tools.
● June 2017. Streamlined my process for shipping updates to imitone and SoundSelf. Worked on SoundSelf's VR and console ports. Researched the "T-Product", a statistical technique I'm developing for the next generation of imitone technology. Developed some research tools for imitone. Continued to participate in MMA's protocol work.
...I spent several scattered weeks in the summer with a family member in declining health. In the past my busy schedule has sometimes led me to neglect family matters, but I've learned it's important not to let life pass you by...
● July 2017. Simplified imitone's setup menu with shorter device names and an illustration of the audio/MIDI flow. Improved the app's visual fidelity. Released imitone 0.9.1 and 0.9.2. Prototyped a feature for MMA that allows imitone to control digital organs' drawbars, allowing the singer to make the organ "speak".
● August 2017. Took imitone to the PixelPop Festival in St. Louis, where I tried a new type of installation with imitone operating alongside a DJ. This experiment was an educational failure. (It's hard to keep imitone in sync with key changes.) Watched the solar eclipse in Wyoming. Fixed several bugs in imitone (0.9.2a-0.9.2d), including an issue with international usernames.
...In late August I began planning imitone's plugins, at the insistence of some voices in the pro-audio community. I've noticed I can be eager to please my more vocal users, but this can lead to long detours in my work that take time away from "core" efforts. For example, I've logged a lot of time chasing down bugs that affect only a small handful of users or machines.
Plugins turned out to take far longer than expected, becoming another sub-project I need to juggle. While one of these moves forward, the others stand still, and I've been pushing crucial research down the road. While I won't say I regret my choice, this gives me more understanding for developers who choose the "quick and dirty" path toward a rougher, buggier or less-complete final product...
● September 2017. Began reworking imitone's code to lay a groundwork for developing plugins in multiple formats. Developed some initial proposals for standardizing the "perceptual" magic trick I had demonstrated to MMA in January.
● October 2017. Continued intensive work on plugin development. (I also spent a few weekends building a peculiar device: a special electrolarynx that turns the wearer's head into a powered speaker and lets them shape the music with their mouth. The user must hold their breath in order to "sing", making for an odd performance.)
● November 2017. Continued plugin work. Attended a convention in Austin where I did some more work on SoundSelf's console port. During this time I also consulted with accessibility expert Adriane Kuzminski, designing imitone's VST to be blind-accessible with screen reader extensions for Reaper or Pro Tools.
● December 2017.
...This month, my anxiety about imitone's schedule came to a head. Somehow a year had passed with only minor updates to the app, and after several months of intensive development the VST plugin wasn't ready yet. I was working myself into exhaustion with only a vague sense of where the project was heading.
I'm not sure how I can explain the feeling. This article makes a neat summary of what I did each month — but in a state of "tunnel vision" there is no such awareness. When something gets done, there's no need to think about it any further. Any short-lived sense of satisfaction vanishes, leaving only the expanding to-do list. Looking back, I could only think "no updates since July!" Looking forward, I could only think about how much work still remained.
All of this, I think, was a symptom of spending too much attention on work and too little on management. Even as a "solo" developer this is a surprisingly costly mistake. Contrary to the myths about how things like this are done, simply "working harder" can lead to catastrophically poor choices about time and strategy. While I know by now how to avoid burnout, I still have much to learn about production planning.
As the holidays approached I decided to take some time to improve my tools for keeping organized, reviewing my past work, and assessing my priorities with this project. Centrally, I revived my old habit of keeping a visual journal of how much work I'm doing and where it's going day-to-day and month-to-month. I customized the excellent note-taking app TiddlyWiki to integrate my daily journals with my work logs, painting a color-coded picture of my work over the prior year (pictured above).
This was hard work, but deeply rewarding. With this picture painting itself week by week, month by month, I could remember my place in these long and ongoing efforts. Stopping to improve now and then is important, and that requires looking back. Taking time to reflect on recent successes and failures so I can improve...
● January 2018: Used my new tool to catalogue and color-code my 2017 work logs. Continued plugin work. Discussed plugin-related concerns with MMA. Attended NAMM 2018 where I spoke with various engineers, educators and musicians. Attended MMA's annual meeting and some special events related to the "Next-Generation" initiative. Spent my free time improving a math extension I created for TiddlyWiki in December.
● February 2018: Developed imitone's VST3 plugin into an "alpha" plugin and quietly released this to our customers. Wrote some MMA proposals about MIDI compatibility. Met up with SoundSelf's creator for a coworking period focused on our console port and other development goals.
● March 2018: Further coworking on SoundSelf. Spent a few weekends writing a computer program to investigate a hard math problem related to the "T-Product" technique. Eventually solved it in an exciting breakthrough! Attended the Game Developer's Conference and participated in Train Jam where I collaborated on a small voice-controlled game.
● April 2018: Drafted a large proposal related to MMA's Next-Generation Protocol. Developed and released a VST version of the imitone plugin. Improved the way VST and VST3 plugins handle presets.
● May 2018: Spent the month on a new graphics system for SoundSelf, which is approaching completion. This technology will also help us add imitone's UI to the plugins, which are currently a bit hard to use.
● June 2018: Continued working on the new graphics system (which ran over-schedule). Began participating in an MMA prototyping initiative — as you might expect, I want imitone to support MIDI's Next-Generation Protocol from day one.
● July 2018.
This month I'm continuing to prototype with MMA, planning out the next few months of work and preparing for a new adventure: I'm moving out of Iowa and will be living (and working) on the road for a while.
There are still some difficult, demanding tasks involved in getting my other project SoundSelf across the finish line, but most of that (along with the tough parts of plugin development) are behind me. As I prepare to leave my home of six years, I am finally finding room to work on the most rewarding parts of imitone: Research and user interface.
"Phase 4" research has been pushed back for more than a year, but this is where imitone's most important improvements will be made. It will take two to three months, but I don't want to delay it much further. Phase 3, back in 2016, left me with a slew of promising leads, and clear direction for improving how imitone detects pitch and transcribes it into music. (The "T-Product" technique, first theorized in 2016 and finally solved this year, promises to be an essential tool, and might have applications in the broader field of signal processing.)
Aside from that I'm also interested to bring our plugins to Mac, add imitone's interface to them and make a small update to the imitone app, improving MIDI output, fixing some bugs and tweaking the UI. A Linux port is also overdue (my thanks for the friendly reminders). Lastly, I'd like to produce some tutorial videos to help new users get started with imitone, and add some instructions for using imitone in live performances.
Looking back, I can see that most of this project — and most of the really tedious work — is now behind me. More is done, substantially, than is left to do. Acknowledging that gives me a sense of relief and accomplishment. Not too far ahead, I think, lies the tool I've been looking to build all these years.
I'll continue my quiet work to make that tool a reality, for as long as it takes.