Capo's Curious Chords Conundrum
• Chris Liscio
When you place an A# chord in Capo, you probably don’t want it to get replaced with a Bb. That kind of strange behavior is what I set out to fix in 4.3.1.
Unfortunately, during the QA cycle I learned that my fix is incomplete: When your project is transposed, you may still experience the strange behavior described above. But only sometimes…
You can see this for yourself in Capo 4.3.1 by setting the Key slider to -4. Enter an A# chord, and Capo will replace it with a Bb. If you instead set the slider to -3 or -5, your A# is left alone. Again, it’s only broken sometimes.
If you don’t use the Key slider, and don’t specify a capo for your instrument, everything should work as expected. The vast majority of our users will be unaffected by this.
(Skip ahead if you don’t care for technical details.)
Capo stores your chord entries un-transposed—the chords you see on the screen are all calculated on the fly. The root (and bass) notes of each chord get transposed using a combination of values: the interval you set using the Key slider, and the fret of the capo you set in the chord display settings.
Every note in Capo is represented by its MIDI value, which does not distinguish between sharps and flats–Capo uses a separate flag to specify which accidental to use.
When transposed, a note keeps its accidental. For example, an Eb and D# have the same MIDI note value, but when Capo raises them by 3 semitones you’ll get Gb and F#, respectively.
If you instead start with a D and lower it 4 semitones, you always end up with a Bb. D has no accidental, so Capo is left to make its own choice–there is no way to override this decision right now.
This loose end really bugs me, but what bugs me more is that each of my attempts to design a workaround have–so far–led me towards risky changes in the code. I decided to let this slide for now, because I did not want to delay the 4.3.1 update any further–it’s already been a tough one to get across the finish line!
If this issue creates trouble for you, there’s a (terribly inconvenient) workaround: You can export the transposed song audio, and import it into a new project. If you need to fix a project that you put a lot of work into, email it to support, and I can attempt some minor surgery to get you up and running again.
If this problem gets in your way, please let us know so we can measure its impact. This helps us to prioritize the fix, because we can’t afford to spend time working on something that very few people actually care about!