Regardless of the environment, clear requirements are absolutely necessary. To illustrate: When my day’s official work is done, I turn to my own personal pursuits. Among those pursuits these days is using Python to generate MIDI files. Ultimately, I want to develop a platform through which I can apply my grandfather’s panacoustic system.

Today, I was successful in using Python to create a MIDI file that arppegiates three chords. Then, I took the MIDI files and imported them into Ableton Live Lite version 11. What’s interesting about this exercise wasn’t the actual notes (they’re pretty basic). The most important and interesting outcome of this exercise was that I reminded myself of the importance of clear objectives and requirements.

I usually use Python to sift through large amounts of data. However, I’ve been delving into Python’s abilities within music. However, there’s so much that without a clear problem statement and a measurable outcome, I would atrophy. Therefore, before I even opened my Python editor (I use Sublime Text), I wrote out my goal: Develop Python code that would generate a MIDI file and then import that file into Ableton. The test would be that I could hear the file, regardless of its aesthetic value.

My exercise was successful and I was able to hear the MIDI file “play.” While the file itself isn’t all that musical, I proved that I met the requirement of the exercise.

Too often, in software development projects, development teams start coding without fully understanding what the requirement means. I’ve led several projects for which requirements were not defined with enough measurable outcomes to know whether or not they were clear. Those projects tended towards failure.

I’m learning about Python’s musical capabilities. It’s a fun distraction from my normal work. However, if I don’t clearly define objectives and their measures, I’m wasting my time. It’s nice to actually remind myself of the importance of clear requirements…