mpogue2 / SquareDesk

Fully-featured music player and sequence designer, designed for square dance callers
10 stars 4 forks source link

Feature: Improved default intro and outro points for singing calls #1187

Open Gero5 opened 1 month ago

Gero5 commented 1 month ago

for a singing call of 3:44 length and 130 bpm (Newtron Dance - own recording from vinyl) a) intro point is set to 0:11.235 - which is too late - should be 0:07 b) outro point is set to 3:23.671 - which is too early - should be 3:34

At v1.0.9 the segments shown are poor for some singers.

intro problem: I think this is more evident now because the cursor is a line in dark mode. the circle cursor is like 3 seconds big and covers a lot.

outro problem it happens to a lot of my singers. I guess it is about 50 % where the intro/outro points are not set manually. It is a bit irritating.
some examples for bad outro calculation: Titel (length/bpm)

The current default singing call intro and outro points are set to: intro = 5% into the song outro = intro + (as many 32-beat phrases that will fit in the rest of the song, given the current BPM)

If you want to do it that way, IMO the general logic for outro should be: intro + an even number of (as many 32-beat phrases that will fit in the rest of the song, given the current BPM) - in other words 64 beat phrases. e.g. 13 or 15 32 beat phrases do not make sense to me. However, I think intro+7*64 beats is much easier to calculate and a safer choice. if that does not fit use other choices as fall back.

at least this is not how it is done at v1.0.9 at least for these songs.

doing the math: 3:44 m (224 s) with 130 bpm intro at 11.235 - that is 5 % of the song - check! (even if it is not the best choice) outro at 3:23.671 at 130 bpm a 32 beat measure = 14,77 s 'as many 32-beat phrases that will fit' - that is 14 11.2 + 14*14.77 = 218 s = 3:38 m

so due to the given calculation outro should be 3:38 (14 phrases) but it is set to 3:23 (13 phrases) - it is the length of one 32 beat phrase less!

funny fact: for a singing call of 3:51 length and 130 bpm (sister golden hair) intro is at 11.545, outro at 3:38.360 taking the logic you mentioned there are 15 times of 32 beats length fitting into that.

it might be something like round / trunk problem in the calculation. but, however, you might want to consider taking 64 beat phrases instead of 32.

best improvement: Set into to 3.3 % or 16 beats and outro to + (7*64/bpm). See #1186

mpogue2 commented 6 days ago

OK, the reason why it was doing it this way was basically because the same code was being used for both patter and singers. Patter defaults do require looking at 32-beat phrases that will fit, while singers (as you pointed out) are almost always exactly 7 64-beat phrases.

Here's what I was able to implement (in 358936de7b8fdda0941a3013c136c425d82252ba):

NOTE: This will not help any previously-loaded songs, because once a song is loaded for the first time, the intro and outro points are set and remembered. There's probably a complicated way to STILL calculate the default the old way and ALSO calculate the new default way, and update the cache if and only if the current setting matches the old way, but this is getting too complicated at this point for my taste. So, this change will only affect any NEW singers that are loaded for the first time. For these, the new default should be somewhat better than the old default.