Musink's Story

Lee Reid portrait by cakeburger.com

Hi. My name's Lee Reid. I am the creator of the free music notation software Musink, which was written under incredibly unusual circumstances. Here is how and why it happened.

Cakeburger.com have created a fantastic illustrated/cartoon version of this story. You can read it here.

After finishing my Masters in Medical Science at The University of Auckland, I took a year off - or what was meant to be a year off - and worked as a medical writer. After a few months of work I developed a pain disorder: first in one arm, then the other. It got to the point where I could no longer work. Then it got worse. I saw a series of doctors, physiotherapists, neurologists, and other specialists but no-one could diagnose or otherwise understand it.

Soon, I reached the point where I was too sick to work, drive, or play my instruments. At its peak I could not even leave the house, as the minute vibrations from walking or being a passenger in a car would cause intense pain. My arms withered. It was pretty awful.

Being unable to do almost everything is inexplicably frustrating, especially as a musician. I couldn't play instruments, but I still had ideas for music composition. Seeing as I couldn't even use a pen and paper at the time, this wasn't much use. I joked with my sister that if decent music notation software existed, I'd be able to write music with my feet.

I'd been frustrated with conventional music writing applications for over a decade. They are extremely clunky to write music in - if you haven't used one, it's akin to writing a word document by dragging and dropping letters, one by one, across the screen and onto the paper. Of course, you can always use a MIDI sequencer, but a giant grid of squares is really no substitute for sheet music.

Given my excessive spare time, I rethought the whole writing process. If you were to redesign it from scratch, how would you do it? How do you write music when you write it by hand? The idea I came up with seemed to be so incredibly simple and efficient that I decided to give writing it a go, if only for something to do.


How to code with just your voice and feet in just ten easy lessons

I had a basic understanding of programming and plenty of time on my hands. I bought two 800 page textbooks and read them in a week each. (Reading a book without holding it - no hands! - is a bit difficult.) Got writing.

I couldn't use my arms, so I learned how to use the mouse with my foot, and initially started programming by clicking the on-screen keyboard. It was gruelling to say the least. A couple of lines of code an hour at the best. But I had time. So. Much. Time.

After a few weeks my mouse movement was still jerky, but I had nailed the art of left-, right-, and double-clicking using my toes. My options were to sit and watch daytime TV, or hack away at my new project. I never really liked TV.

After a few months of this, I penny-pinched enough to purchase voice-recognition software. Of course, programming languages don't use real words, so I had to spell everything letter-by-letter.

“'f' 'o' 'r' 'open-bracket' 'i' 'n' 't' 'spacebar' 'i' 'equals-sign'...”

It was still gruelling, but possibly more gruelling for everyone else in the house, who had to listen to me 'semi colon' again and again... (In c-based languages, each line of code ends with a semicolon).

My illness wasn't going anywhere. At this point i was taking 13 pills a day, having my food cut up for me, and couldn't so much as pour a bottle of milk or tie shoelaces. Without using my limbs, my muscles also wasted away: I have a strong recollection of being trapped in my bedroom, one morning, for about an hour because I couldn't turn the door handle. As such, I was completely unemployable (I couldn't even get to work, let alone be productive). ACC (NZ's amazing but under-funded government health insurer) refused to help me, and the local disability/work group told me to get lost because I wasn't an amputee.

After around a year, a basic program had been written. My foot-mouse skills now rivaled most people's hand-mouse skills and I had progressed from several lines of code an hour to several lines of code a minute.

First Working Version

First Working Version

One thing about writing code letter-by-letter is that you don't make mistakes: even very simple functions can take quite a while to spell out, so you think things through thoroughly. A horrible side effect was that I kept dreaming about semicolons, “for” loops, and how to pronounce the letter 'r' so that the American-designed voice software didn't trip up on my Kiwi accent.

I was surprised to find that the simple notation editor I had written as a way to keep me sane was seriously impressing my musical friends. My illness still had no end in sight, and my employment opportunities were still zero. Thought: “If I could spruce this application up for public use, I could potentially make a living despite my disabled state.” So I kept writing... and writing...

letter...

First UI, still relying heavily on text-input, produces tuplets

First UI, still relying on text-input, produces tuplets

...by letter

World-first use of guide notes

World-first use of guide notes


Things get a bit better

After two years of illness, some risky treatment options began to pay off and I started to improve to the point I could use a keyboard again, initially for a few minutes at a time, eventually for a few hours at a time. By this point I had already written 35,000 lines of code, spelled out letter-by-letter, and the project was 90% complete.

I was desperate to go back to University and work on my PhD, but you don't spend two years creating the world's fastest way to write music, only to stop metres from the finish line. Getting into a PhD program is also not particularly easy when you have nothing official to show for the last 2 years.

I finished and tested the remainder of the notation editor during 2012 and released it, free, to the world.

First released version of Musink Lite

First released version of Musink Lite

I managed to restart my career in neuroscience in mid-2013, starting my PhD in Brisbane, Australia.

I still suffer from chronic pain, and I still struggle to use a mouse.

I still refuse to let it stop me.


Addendum

A lot of time has passed since this was published, and I get fairly frequent questions about where things are now.

The pain has never truly just gone away, and it probably never will, but my life has returned to relative normality. I'll not ever need medical attention for this again, but I do need to act purposefully with how I work and how I live.

While my desk set up does not look like yours, productivity is not my problem. I've built a lot of things since Musink Lite v1.0 now, including brain-surgery planning software and some artificial intelligence stuff. Basics of my academic CV are public.

If my story helped you see things differently I'm glad. Just always remember that everyone's life is complex, and virtually everyone has a struggle, it's just that most problems are not visible. The world has endless stories of people who overcame difficulty. What all such stories have in common is someone who defined what success meant for them and went for it single-mindedly. You can do that too.

How can I write programs like Musink?

I get asked this all the time. So, if this sounds like something that has crossed your mind after reading my story, my standard advice is this:

*A general purpose programming language is one that can make lots of different kinds of programs. MATLAB for example, is a language centred around doing scientific calculations easily - it's not general purpose. Java, C++, C#, etc are not optimised for anything in particular, which means they can make a wide range of apps without becoming awkward. General purpose languages often teach better habits that you can carry on to other projects.

**At the risk of starting a war, I don't recommend starting with Python unless your goal is only to play around or to make small script-like programs. Python is a common recommendation for newcomers but I feel it teaches bad habits, and its philosophy does not translate well to large projects or other languages you may want to learn later.