JosephEoff / MuseScore_UltraStar_Exporter

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

bpm and tickvalue correction #4

Closed jeetee closed 8 years ago

jeetee commented 8 years ago

Changes made after testing on MuseScore 2.0.2 on Windows with playback on Performous 1.0 Didn't quite understood where the old calculateMidiTicks logic came from. Also I don't have UltraStar installed, so I can't verify the correct working on that one

JosephEoff commented 8 years ago

Just tested with the MuseScore version I developed the plugin on (it calls itself 2.1.0.)
BPM is calculated incorrectly, and all the timestamps are wrong. This seems to be because the global variable "divisions" delivers a bad value in this version of MuseScore. I will try again with a newer version of MuseScore, but it will take a day or two for me to get to it. If it works with 2.0.1 or 2.0.2 the version number check in the plugin will have to changed.

jeetee commented 8 years ago

Small clarification; the old BPM was numerically correct (so a score with crotchet = 60, would give BPM = 60), but this doesn't allow for the midi-tick-accuracy of the smallest notes.

Note MuseScore Tick Length 'BPM-correct' Ticks Minimal Integer Ticks
whole note (semibreve) 1920 240 384
double-dotted half note 1680 210 336
dotted half note 1440 180 288
triplet whole note (1/3 of breve) 1280 160 256
half note (minim) 960 120 192
double-dotted crochet 840 105 168
dotted crochet 720 90 144
triplet half note (1/3 of semibreve) 640 80 128
1/4 note (crochet) 480 60 96
double-dotted quaver 420 52,5 84
dotted quaver 360 45 72
triplet crochet (1/3 of minim) 320 40 64
1/8 note (quaver) 240 30 48
double-dotted semiquaver 210 26,25 42
dotted semiquaver 180 22,5 36
triplet quaver (1/3 of crochet) 160 20 32
1/16 note (semiquaver) 120 15 24
double-dotted demi-semiquaver 105 13,125 21
dotted demi-semiquaver 90 11,25 18
triplet semiquaver (1/3 of quaver) 80 10 16
1/32 note (demi-semiquaver) 60 7,5 12
dotted hemi-demi-semiquaver 45 5,625 9
triplet demi-semiquaver (1/3 of semiquaver) 40 5 8
1/64 note (hemi-demi-semiquaver) 30 3,75 6

What I did to allow representing the smaller notes accurately is scale up the BPM-value to match the tickvalues in the last column (= smallest integer values that still work for all MuseScore supported note-lengths). A score with a BPM of 60 in MuseScore, will now show a BPM of 1440 in the UltraStar/Performous file.

jeetee commented 8 years ago

Ah bullocks.. that 2nd commit should've become a different pull request :( Still trying to get the hang of this whole Git thing.. sorry

jeetee commented 8 years ago

If you don't mind, I'll close this one and re-open another later on with some of these changes as a 'high accuracy export mode' or something along those lines. Now that I'm getting a better understanding of commit/push/branch relationships on git, I'll make sure each feature/bugfix gets its own branch on my fork.