MobileSheets Forums

Full Version: Finding annotations and transpositions
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Most of my songs are ChordPro and I maintain these files on my PC. During gigs and rehearsals I use annotations to make remarks and corrections. Later, at home, I apply the remarks to the ChordPro files on the PC and transfer the (modified) files to the tablet. So my goal is to have all files with as few annotations as needed (preferrable, none). BTW I'm not using the Companion to transfer files, but rsync on Linux.

To do my homework I would be interested in having an easy way to ask MSPro to select only songs with annotations, for example in the 'recent songs' view. Currently I use an SQLite query on the PC on a downloaded copy of the database but it is still a bit of a hassle to find the corresponding songs on the tablet. Not a big deal but maybe this request fits nicely into some of Mike's plans...

A second issue is a bit more complex. Assume I have a ChordPro song in the key of C. During the gig or rehearsal we decide to play it in, say, G. So I use MSPro's transpose feature to transpose the song. Later, at home, I transpose the ChordPro file and upload it to MSPro again. You probably feel it coming: Next time I open the song in MSPro it shows the key of D...

A similar thing happens with the capo setting. I the ChordPro file has {capo: 2} and I import it into MSPro, it will show capo 2. When I change the ChordPro file to {capo: 3} and re-import it, MSPro will still show capo 2.
I haven't tried but I assume the same will happen with a {transpose} setting.

I'm not sure what would be the best solution. Maybe a configuration setting that causes all song properties that derive from directives to be updated when a song file is changed?

Note that I'm aware that I have a slightly non-conventional workflow and I have no real problems with the current situation. But one can always dream...
I also know the issue with transposing and it can be even more complex: I have chordpro songs in my library that I play in different  keys with different fellow musicians. Several "songs" in different collections that share the same chordpro file. Only one song uses the original key of the chordpro file, other song(s) already transposed.
The typical sitation: in a jam (I enjoy meeting other musicians in a pub) a different key is requested. Great that transposing is possible with just a few clicks. But usually there's not the time to revert everything afterwards and the changed transposition is forgotten.
My current work-around is a (visible) note in the shared chordpro file in the subtitle or in a comment like "if I sing C, with band A in G, with band B in A" or the like. Not an elegant solution, just a work-around and a useful reminder.
I kept thinking about temporary transposing. The task would be "find songs where the displayed chords do not match the value of the 'keys' field in the MSP database"
So basically you would like a filter for songs that has annotations (shouldn't be a problem), as well as some way to force the file to be read and the initial settings repopulated, correct? If I just include an option to reload the file and refresh the song fields, would that be sufficient? It would basically reset things back to the defaults, such as transposition, capo, etc, and just use whatever is in the file. I could also make this a setting that is automatically applied any time a file change is detected if you prefer that.

For the annotations: Yes.

For the refresh: There is a setting "Use text fields during song creation". When this setting is on, I'd say that updating metadata when refreshing a file is also desired. I see no use for filling metadata on first import only. If you have files with metadata I assume you want to use it. But unfortunately this would be a change in behaviour that may surprise some users so an additional setting would be wise.

Or a dialog during the refresh similar to: "Song file has changed, update metadata from file? Song key has changed, reset transpose?" For my workflow the answers would always be Yes and Yes but others may think different.
A filter for songs with annotations would be great.

The transposing topic is a little more difficult, just resetting chords to what is in the file would not help.
Let me show a detailed example:
I use collections for bands / line ups and set Keys: in the database correctly.
A for Song_X contains chords in G is used by Song_X1 in Collection1 with the original chords in G, Transpose 0, with Keys:G in the MSP datatbase
Song_X2 in Collection2 also uses but transposed to A. So transpose is +2 semitones, the database entry for Song_X2 is Keys:A.
Now, in a session or rehearsal context, someone asks for Song_X in F. I just open either Song_X1 or Song_X2, transpose to F (-2 semitones) with a few clicks and play. That was easy. The session goes on and later I don't remember what I transposed to what.

The task now is "find all songs where Keys: in the database doesn't match what is displayed".

To fulfill the task it would need:

Go through the database and investigate every ChordPro song.
For every ChordPro song do
1.) Look into the file and detect the key as MSP does it when a chordpro file is imported:
"Detect Key By: First Chord / Last Chord / Chord Progression" in MSP settings and the ChordPro tag {key: or {meta: key have to be considered.
2.) Probably also {capo: should be taken into account, but I'm not using a capo so don't know much about it.
3.) Apply the current transpose setting from the database.
4.) Compare the resulting key with the Keys: entry in the database.
If it's different, add the song to a "list of songs with incorrect Keys:"

Show the list.

Automatic correction is not possible imho in a helpful way.
I would like to handle it manually song by song after choosing one of the following:
- revert the changed transposition
- add another copy of the song in another (differently transposed) key
- change the chords in the file
- correct the Keys: database entry
- leave it as it is
- ...
MSP might help with an option to create a setlist with all the songs from the list. A unique name for that setlist could be created automatically.
A filter for transposed ChordPro songs (transpose != 0) might also be helpful in some cases.
Funny: me and Sciurius wrote our posts at the same time.