JosephEoff / MuseScore_UltraStar_Exporter

MuseScore plugin to create UltraStar files
GNU General Public License v2.0
0 stars 3 forks source link

Processing tied notes as if they are a single duration entry #15

Closed jeetee closed 8 years ago

jeetee commented 8 years ago

Resulting note is the first note of the tie, with a prolonged duration as long as the note is tied. Tested with the following note entry: ultrastar_tie_processing

JosephEoff commented 8 years ago

This patch ignores the annotations (line break, golden note, free style) when the annotation falls on the last note of a tie.

jeetee commented 8 years ago

Indeed. Would there be a use case for a tied note (which is technically just a different notation method for the same note) to ever not have it's annotation at the first note? Or have multiple lyrics for that matter? I can understand that being the case for slurred notes, but they shouldn't be affected here and still be treated separately.

Alternatively I could change it to work as it is now if no other markers/tempo changes occur within the tied note. If the annotation or tempo changes, then split the tied note up to that point?

JosephEoff commented 8 years ago

I had to think about it for a while - I had never even thought about the tied notes. I noticed that it ignored the line breaks on tied notes because I happened to test it on a song that had line breaks on the last note of a tie. I can imagine one use case for it. Mark a tied note as golden at the beginning, then mark a line break on the final tied note.

The thing is, though, that people will do things that aren't reasonable. Since a plugin can't enforce reasonable data is entered, it has to deal with anything that can be entered. An unreasonable person could mark a tied note golden and freestyle and put a line break in the middle along with a tempo change. A reasonable way to deal with all the potential messes would look like this:

  1. If there's a golden note marker and a freestyle marker then the note is golden and the freestyle is ignored.
  2. If there's a line break or a tempo change then break the tied note on that spot and handle the rest using the new tempo.
  3. If the tied note gets broken, then the part after the break continues the golden or freestyle as it was before the break.
  4. If the tied note isn't special (no golden or freestyle) but changes after the break then only the part of the note after the break changes.

Since I'm making all these rules, I think it fair that I implement them. It'll take me a couple of days to get to it because I've got some other things I was working on.

jeetee commented 8 years ago

Line break is a very good example! Whilst on the subject of unexpected user-input that should break the tie-interpretation: having another syllable during the tied note.

Implementation wise it might be better then to ignore the changes made here with respect to internal looping, but use the tied property more like the linebreak is handled now.

JosephEoff commented 8 years ago

Hi. I finally found time to work on this again. Could you please check out the branch I created and double check the function? Branch is named "TiedNotes" I intended to make tied notes work like this:

  1. Tied notes are rolled into one entry in the .txt file
  2. Any change within the tied notes causes a syllable break - changes are : golden, freestyle, tempo or line break.
  3. Golden or Freestyle is NOT carried over a syllable break within a tied note.
  4. A line break symbol causes the line break AFTER the note it is on.
jeetee commented 8 years ago

For a first version I think you're almost there. Two bugs I detected:

  1. Putting a new syllable in a tied note doesn't split the note: While this should not occur in normal vocal lines of music, I'd rather have the new syllable trigger a new syllable in the karaoke file as well.
  2. Last syllable is missing.

I've been testing using the attached score: De_Testende_Titel.zip

Which currently produces the following output: De_Testende_Titel_Piano.txt

Which ideally should result in De_Testende_Titel_Piano - Desired.txt (although I've already applied the standard behavior for melismas on changing pitch as well)

JosephEoff commented 8 years ago

Hi jeetee. Could you test the latest update in the TiedNotes branch?

jeetee commented 8 years ago

Tested against the file attached in this thread and definitely usable now. Still not what I was aiming for originally, but both bugs are handled now.

jeetee commented 8 years ago

Closing as per your own improvements