Open felixroos opened 3 years ago
Great summary! Thanks.
First of all, I don't understand clearly your distinction between voicing
and voice-leading
package. Why topNoteDiff
function can't be inside voicing package?
In a high overview, what I imagine from your list of functions is something more close to:
First of all, I don't understand clearly your distinction between voicing and voice-leading package. Why topNoteDiff function can't be inside voicing package?
Mainly, I separated them because you told me to. But it could also easily be a part of voicing. On the other hand, I imagine having a lot more voice-leading strategies later. I also would not underestimate the complexity that hides here. One example: Voice allocations. If we transition between chords with a different number of notes (e.g [C, E, G, B], [D, G, B]), how do we know which voice should be dropped? Questions like these are really worth knowing when creating tight voice leading. As a possible use case I see autogenerated arrangements for specific constellations. Generally I see voicing as the umbrella package that brings all the other voicing related packages together ☂️
VoiceDictionary: a dictionary of voices (get, all, add, remove)
I don't know if typo or not, but I think it should be called VoicingDictionary, because a Voice is just a single note inside a voicing. Agree with get instead of lookup. I guess add / remove is only temporary for the session?
VoiceChords or ChordVoices: given a chord, find chord voicings (including: search, get... although still don't get why we need two functions)
I think both functions have a valid use case:
VoiceAnalysis: analysis of single note voices in context (the ones you mentioned above)
Also typo here?! Nevertheless, I think Voicing.analyze sounds more catchy than VoiceAnalysis.analyze ..
VoiceLeadingAnalysis: analysis of transition of voices (same)
Just realized that we also could use VoiceLeading.analyze here.. Note so sure if we should create that many exports..
VoiceLeading: create transition of voices (leadTopNoteDiff)
Do we really need to use the word "lead" twice?
I don't want to be picky, just giving you my thoughts. In the end I am happy to have the functionality as part of this lib, no matter how it's called specifically. Nevertheless, I would be happy if we could agree on something
Sorry, busy week! A quick update:
Mainly, I separated them because you told me to. But it could also easily be a part of voicing.
Yes, now I don't see the point of creating a new package (sorry for the mess). I thing we can keep everything under voicing until it get's too big.
I don't know if typo or not ...
Not exactly a typo. I was trying to create an idiom. I think it would be useful to differentiate between the voicing shape (the intervals) and the actual chord voicing (the voice notes for a specific chord).
I think both functions have a valid use case
Yes, agree. I just want to find a good naming (and I think the above ☝️ would help)
I don't want to be picky, just giving you my thoughts.
Sure!, please keep them coming 👍
Yes, now I don't see the point of creating a new package (sorry for the mess). I thing we can keep everything under voicing until it get's too big.
Okay, I'll move voice-leading the voicing package.
I was trying to create an idiom. I think it would be useful to differentiate between the voicing shape (the intervals) and the actual chord voicing (the voice notes for a specific chord).
What about just calling it VoicingShape? We might even call it Shape, as a set of intervals can also represent the shape of a melody if played as a sequence. Btw, how are the interval sets of the chords called?
Let's use this issue to discuss the naming of the methods for https://github.com/tonaljs/tonal/pull/224
Voicing
VoicingDictionary
VoiceLeading
Eventually, a name for https://github.com/tonaljs/tonal/issues/228 is also needed:
=> name should be the same for each package that implements one.
I picked most of the above names by intuition, without really considering general naming conventions of tonal. I would need some feedback which names would need a change.