SongKong Jaikoz

SongKong and Jaikoz Music Tagger Community Forum

Detection of opera works

Thanks, I wont have time to look at this until the end of next week.

Starting looking at this, now actually although we have MB Work information if it exists to any song, we only add Movement/Work/Overall Work for albums identified as Classical, so my initial concerns about non-classical multi level works doesn’t apply.

Looking at your examples your idea of not tracking up to parent work if parent does not have correct work type seems to work. Importantly I already have Work Type information in the Albunack database but not attributes such as Part of Collection so if I take your work type idea I can implement this within SongKong without requiring any changes to Albunack, which makes things easier.

Symphony No. 6 “Pastoral” would now stop at Symphony no. 6 in F major, op. 68 “Pastorale” because the parent Medley of Fantasia doesn’t have Work Type

Piano Sonatas: “Moonlight” / “Pathétique” / “Appassionata” would now stop at Sonata for Piano no. 14 in C‐sharp minor, op. 27 no. 2 “Moonlight” because its parent Two Piano Sonatas, op. 27
has no Work Type

Piano concerto tracks on Rhapsody in Blue / An American in Paris / Piano Concerto in F would stop at Concerto for Piano and Orchestra in F major because its parent Crazy for You (1992 musical) has work type of Musical, and this is not in your list of valid work types.

Carmina Burana would now stop at Carmina Burana: Cantiones profanæ cantoribus et choris cantandæ comitantibus instrumentis atque imaginibus magicis instead of going up to Trionfi because it has no Work Type.

Can you confirm your Work type list please, this is the full list of MusicBrainz work types, I was wondering if should also include things like Beijing opera or Operetta since whilst may be rarer but if the top level is of these work types would seem to be valid?

  • Aria
  • Audio Drama
  • Ballet
  • Beijing opera
  • Cantata
  • Concerto
  • Étude
  • Incidental music
  • Madrigal
  • Mass
  • Motet
  • Musical
  • Opera
  • Operetta
  • Oratorio
  • Overture
  • Partita
  • Play
  • Poem
  • Prose
  • Quartet
  • Sonata
  • Song
  • Song-cycle
  • Soundtrack
  • Suite
  • Symphonic poem
  • Symphony
  • Zarzuela

La Création (extraits) was not extracting Opera Work just because SongKong was having to get directly from MusicBrainz and this code was only getting Work for two levels (Movement and Work) rather than three (Opera), now working.

Already fixed the Overall Work issue, however whilst this one works okay, the other one is incorrectly setting Section/Grouping to Carmina Burama for all tracks

This is because it is trying to derive from title, for the other one SongKong notes there are multiple colons in its title and so use the MusicBrainz Works instead but this one does not.

I think solution is that if we decide it is a tracks with three levels or more (Movement, Work, Overall Work) that we never try to derive just from title as too dangerous, we were sort of using presence of multiple colons to determine this but that is unreliable.

ok now fixed plus this issue and this one for next release.

Just back from my hols, and it’s great to see all this promising development news.

I was wondering if should also include things like Beijing opera or Operetta since whilst may be rarer but if the top level is of these work types would seem to be valid?

I don’t know much about either Beijing Operas or Zarzuelas, but a superficial research seems to suggest that both can be divided into Acts. “Symphony” almost always has a two-level work/movement structure but there are rare exceptions such as Mahler no. 8 “Symphony of a Thousand” with has Part I and Part II, each subdivided into movements. But this is a very rare exception.

Thanks added those addtional types.

The Porgy and Bess release is interesting because there are four levels of valid works

e.g

Track 1
Porgy and Bess: Act I, Scene I. Introduction: Jasbo Brown Blues
Porgy and Bess: Act I, Scene I
Porgy and Bess: Act I
Porgy and Bess

Track 2
Porgy and Bess: Act I, Scene I. “Summertime” (Clara)
Porgy and Bess: Act I, Scene I
Porgy and Bess: Act I
Porgy and Bess

So scenes are further split as can be seen here rather than having a one-one correspsondance between track and scene which is more usual.

We store all four levels in the MusicBrainz hierachy as:

Mb Recording Work:Porgy and Bess: Act I, Scene I. Introduction: Jasbo Brown Blues
MB Work Level 1:Porgy and Bess: Act I, Scene I
MB Work Level 2:Porgy and Bess: Act I
MB Work:Porgy and Bess

However Roon/Lyrion/MinimServer only support three levels so it impossible to store all four levels in those fields, currently we do as follows:

Lyrion
Movement:Porgy and Bess: Act I, Scene I. Introduction: Jasbo Brown Blues
Grouping:Porgy and Bess: Act I, Scene I
Work:Porgy and Bess

Roon
Movement:Porgy and Bess: Act I, Scene I. Introduction: Jasbo Brown Blues
Section:Porgy and Bess: Act I, Scene I
Work:Porgy and Bess

MinimServer
Movement:Porgy and Bess: Act I, Scene I. Introduction: Jasbo Brown Blues
Work:Porgy and Bess: Act I, Scene I
Overall Work:Porgy and Bess

But I’m not sure this is optimal, any thoughts?

BTW have also implemented the fixes for next release of Jaikoz as well.

This is something new to me too. Obviously the top and bottom levels have to be the movement and the work, and either Level 1 or Level 2 has to be chosen as the intermediate heading… I have been thinking about this since you posted the question, and am so far unable to come up with a clear preference which is better to leave out.

Most of these have also been implemented in Jaikoz, and released in latest version today

Now added to SongKong

Songkong 12.4 is making quite a nice job of tagging Handel’s “Messiah” now. There’s one tweak which would be nice: SK is tagging with

WORK — Messiah, HWV 56
GROUPING — Messiah, HWV 56: Part I

It would be nice to strip the leading WORK name from the text of GROUPING as is done for TITLE and leave just “Part I”. Is there a switch for that too? (As it is, Lyrion presents this text twice, and I might guess that other servers behave similarly). This is a minor point of refinement of course!

The first track title is Messiah, HWV 56: I. Sinfony (Grave: Allegro Moderato), because it has multiple colons it is unreliable to derive from title so we use the MusicBrainz Works as available, and the MusicBrainz Works are:

  • Messiah, HWV 56: Part I
  • Messiah, HWV 56

And I think the situation is similar for many works ?

We take the Work title as is, trying to parse these further I think would just cause problems, but you could use AutoEdit task to Find and Replace as required.

You could also use Scripter, this seems to work

if(grouping.length>0 && (work.length>0) && grouping.contains(work + ':'))
{
    grouping = grouping.substring(grouping.indexOf(work)+work.length() + 1);
}

Once I have done Steps to allow multiple tasks to be run one after each other you could create a profile that automatically runs Scripter tasks after Fix Songs to make this smoother.

I was thinking the scripter too, but just using a regex replacement with a /^${grouping}/ match to the beginning of the line in ${work}. There’s no need to consider the presence of a colon separator.

If you only replace the matching Work then doesnt that mean afterwards you are left with a : at the start of the Grouping name?

e.g

: Part I

Oh, you are correct of course. In perl I would write something like

$grouping =~ s/^\Q$work\E[\s:]*//;

and check that JS supports the same or equivalent regex syntax of course.

Equivalent in Javascript

grouping = grouping.replaceFirst("^\\Q" + work + "\\E[\\s:]*", "")

image