Sunday, March 15, 2020

Why the delay?

Yes, it's been a while.

No, I'm not suffering from lack of inspiration. Quite the contrary!

What I'm primarily lacking is time.

Beyond that I'm short on the sort of focus that would enable me to make good choices as to which concepts/features to include initially, which to leave for later while making design decisions that smooth the path for their inclusion, and which notions to abandon as unworkable.

I've lived so many digressions with this project, that I'm finding it difficult to even think about without my mind going off in a dozen directions at once.

To a lesser degree, this is also true of implementation choices. I would like to be able to use Swift for everything, but both my own intuition and the advice of others point to using C for the most performance-critical code, at least for the present. This is acceptable; I've written sound-generation code in C before.

In RatioKey, each new note interrupted the previous note. That was a choice I made to get the app out the door, but that choice is no longer good enough. In large part for this reason, the sound-gen code won't be a matter of cut-and-paste.

At the conceptual level, the key idea I keep coming back to, and which I expect to be the primary focus going forward, is that of a 'harmonic structure' — my term for a set of harmonic series which are related to each other by having (a chain of) members in common.

Almost as important, but perhaps too complex for a first pass, is the idea of defining voices in terms of 'secondary harmonics' — harmonics of the members of a harmonic structure — and the variation in their relative and collective intensity over time, similar to an ADSR envelope but on a per-harmonic basis.

Voice definition is a case where even if I were to decide to leave it out of a first effort I would definitely want the design to make allowance for its later inclusion. It opens too many creative doors to let it go.

As an aunt used to say about vacuuming, I'm sneaking up on getting this thing done.