MobileSheets Forums

Full Version: Status of support for ChordPro meta data
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Most of the songs I have in MSPro are in ChordPro format. For obvious reasons, I would like to maintain as much of the song metadata in the ChordPro source file.

(Group A) When a song is imported into MSPro, currently the following meta data directives are recognized:
  • title
  • subtitle
  • artist
  • album
  • time
  • key
  • tempo
  • duration
  • time (corresponds to signature)
  • capo
(Note: Only single values can be set.)

(Group B) The following ChordPro meta data directives are not yet recognized:
  • composer
  • year

(Group C) The following ChordPro meta data directives have no MSPro counterpart:
  • lyricist
  • arranger

(Group D) The following MSPro meta data do not have a ChordPro directive:
  • sorttitle
  • collection
  • setlist
  • source
  • genre
  • difficulty
  • custom
  • custom2
  • (custom) group
  • keywords

Fortunately, ChordPro has a {meta} directive that can be used to set the known meta data, but also allows for new meta data to be defined. For example, to set the genre:

Code:
{meta: genre Irish}

So I humbly request:
  1. to add support for the directives of group B;
  2. to ignore the directives of group C;
  3. to add support for {meta} and the keywords of group D;
  4. for all groups: allow multiple values to be defined.

Notes:
  • These features can be implemented independently, not everything needs to be done at once.
  • I do not think it is necessary to be able to automatically (or on demand) update the source file on disk when meta data is modified although it would be nice if the source editor could update the source with actual meta data.
I can certainly work on that. When it comes to defining multiple values, do you mean a delimited list of values in the same directive, or combine all of the values from separate directives into one list? I'm assuming you mean the latter, so that you could do something like:

{artist: Artist 1}
{artist: Artist 2}

and they would both be added in MobileSheetsPro.  Also, your very last bullet about updating the source with actual meta data, can you elaborate a little bit about exactly what that would mean? Do you mean if you edit a chord pro file in MobileSheetsPro, at that moment in time I inject metadata values into the file to reflect the current metadata in MobileSheetsPro?

Thanks,
Mike
(04-07-2018, 02:10 AM)Zuberman Wrote: [ -> ]I can certainly work on that.

Super!

Quote:When it comes to defining multiple values, do you mean a delimited list of values in the same directive, or combine all of the values from separate directives into one list? I'm assuming you mean the latter, so that you could do something like:

{artist: Artist 1}
{artist: Artist 2}

and they would both be added in MobileSheetsPro.

Yes, that's the idea. The ChordPro standard says “Multiple [...] can be specified using multiple directives.”. There is no provision for multiple entries in a single directive, mostly by lack of a sufficiently acceptable delimeter.

Quote:Also, your very last bullet about updating the source with actual meta data, can you elaborate a little bit about exactly what that would mean? Do you mean if you edit a chord pro file in MobileSheetsPro, at that moment in time I inject metadata values into the file to reflect the current metadata in MobileSheetsPro?

Not automatically, and not by default. I would suggest a menu entry (alongside Transpose, Insert, ...) "Actualize Metadata" or something similar. This would basically remove all (supported) meta data directives from the source and insert a new set of directives at the beginning, immedeately following {title}.

There are some complications, though. Meta data directives time, tempo and key are (assumed to be) position dependent. The standard says “Multiple key specifications are possible, each specification is assumed to apply from where it was specified.”

For example:

Code:
{tempo 100}
...normal tempo...
{tempo: 120}
...faster tempo...
{tempo: 80}
..slower tempo...

I know of no tool that actually supports this at this moment, but it could be made to work some day.

Unless someone has some clear ideas how to handle this I would leave updating meta data for a future version.
I've added everything you asked for besides updating the metadata in the editor. It will be included with the next update which I'm in the process of preparing.

Mike
Great job!
I did some experimenting and in general it works as expected. Thanks for implementing this.

I noticed MSPro does not accept the form {meta genre: Irish} (colon after item name). I'll be the first to say I can live with this, but according to the V5 standard this form should be allowed.

Unrelated: I often exchange songs via the Telegram app. When opening the song in Telegram on Android, it offers MobileSheetsPro for import. If I confirm this, MSPro starts up and crashes almost immediately.
I can update the code to that format. I hadn't checked the V5 standard - I was just going off your post. I'll make sure to check against that next time.

As for the issue with Telegram, I'll see if I can reproduce that on my devices.

Thanks,
Mike
There's one meta datum we both forgot: rating.
I just added support for rating - thanks.

Mike
Johan,

Is MobileSheetsPro still crashing when you import from Telegram with version 2.1.8?

Thanks,
Mike
Just checked. It no longer crashes.
Thanks!
Excellent, thanks for checking.

Mike