Hi Peter,
Firstly, Stage Traxx 4 is awesome!!!!! Best in class…… I’ve been using it 8 hours a day for the last 6 weeks and have had several rehearsals and gigs with it now that I have 45 multitracks loaded in. Most of the issues I’ve had are related to my gear except for the odd crash and lyrics out of sync occasionally which I am sure you are working on when you can get repeatable data.
Anyway, my experience with chord chart apps is vast and (to the best of my knowledge) nobody has really cracked the way accidentals are handled. In saying that Stage Traxx may be right at the bottom of the list in this area as the ‘Accidental Preferences’ setting is a very blunt tool. I think there is an opportunity improve the way accidentals are handled which would make a huge difference to how the app feels to musicians. Any musician that ‘reads’ music regularly gets confused quickly when accidentals are wrong, and there is a most definite right and wrong in music theory 99% of the time. I’ve got three points to make regarding the use of accidentals:
Firstly, it is rare that whether a note is a flat or a sharp is a ‘preference’, rather, the decision whether notation uses sharps or flats is a function of the key the song is in, nothing else, see attached chart of The Circle of Fifths. The only time a preference should ever enter into things is the four keys that have dual names: C#/Db, or F#/Gb. Even this is not really a preference, if the key of a song is listed as C#, all accidentals will be sharps and if the Key is listed as Db all accidentals will be flats. The only preference really is whether you call the key C# or Db….. All of this is established music theory and hasn’t changed in hundreds of years. This should be relatively straightforward to code, if a song is set in one of the flat keys all accidentals are flats, if the song is set in a sharp key all accidentals are sharps. It’s that simple.
Secondly, The only use for a preference is in the key of C (or it’s relative minor Am) which technically has no sharps or flats in the key signature, therefore if a note falls outside of the key then an accidental needs to be used and at this point it is user preference whether to use sharps or flats. However, even in this instance once set if sharps are used, all accidentals should be sharps and vice versa.
Lastly, where things can get interesting is that the key of a song isn’t necessarily static. The key can ‘modulate’ (change) within the song, often the key changes multiple times within a song or occasionally between vs/chorus and back again etc. The Key is not set in the meta-data of a song to never change, rather it is a dynamic thing that can change multiple times within the song, so much so that the Chordpro syntax has the directive ‘Newkey’ for exactly this purpose. There are two places where these changes need to be represented: both in the Lyrics section, and in the Song Details section. The Song Details should list the range of keys that the song is in, if a song modulates from Eb - E as in the case of Kenny Roger’s ‘The Gambler’ this should be shown in the key listing in the Song Details section and the Queue etc (I realise the Queue is short of real-estate for more info). This is important for singers who know what keys they like to sing songs in etc. It should be straightforward to extract this data from the Chorpro directives in the Lyrics section to populate these fields. How the lyrics section handles these modulations is a little more complicated. Back to our example of the Gambler for an overly simplistic look at this, the song starts in the key of Eb, any accidentals should be flats. However, half way through, the song modulates to the key of E. Any accidentals after this point will be sharps. None of this is rocket science, it just needs careful forethought in the way it is implemented in an app.
Anyway, to sum things up, the way accidentals are handled in most charting apps (including Stage Traxx) is extremely primitive and technically incorrect. Additionally because music theory in this matter follows very logical rules there is no reason a really simple easy to use solution couldn’t be coded into the app. I would love to discuss this further with you if it needs further explanation. Also, I am in Germany regularly and would be happy to work through the details with you.
