last night i ran into a bug - when an additional set of measure are added (in opposition to my setting of not doing that ) and i remove them, i sometimes get “undefined” (recognizing this is due to the javascript object missing) applied to some melody notes. and in the lyrics section, nothing. no section, no lyrics. but pressing the clear lyrics, clears the undefined and adds the section back into the list. note: there are no lyrics in the song.
maybe related to the way the objects are handled like in the loop delete issue, when the section-measure objects are updated by the addition, then removed, the references to the deleted object still there and the events raised cause the lyrics methods to literally take the “undefined” error text and apply it to the last set of notes in the melody…
following up - it seems to append the “undefined” text to the last notes of which ever section i’m editing and then deleted the extraneous measures auto-added at the end measures. so today - editing a section in the middle, the extraneous auto-added measures appeared in the last section (called “end”) then returning to the section (called “break”), the “un-de-fined” lyrics appeared, and in the lyrics box, the “break” section was there - no lyrics (as expected), and the “end” section was missing. pressing the clear lyrics removed the “undefined” and reset the sections so the “end” section was now visible.
Thank you very much for the report. Yes, sometimes the last section got out of sync, leeding to “undefined” lyrics. I think I managed to fix it, it should be available with the the next update.
one thing to note: the section marked “break” was copied and renamed “end” – so there may be an identifier which thinks they’re both the same object which may be why the “undefined” is appearing in both.
if so, one thing to also put on the radar is to make sure that renaming the section creates a unique identifier for it which also likely means some undo operation lifespan…
but – it might also mean if i have a section which is linked, that maybe an option to only edit one instance updates all… probably an option selectable to avoid cases where people don’t want all, example “verses” updated. future thinking…
Actually there isn’t any link between copied sections. Sections themselves are just stored as an array of objects with sectionNames and beatNumbers. The lyrics have their own array of objects which is synced to the Section array. So renaming a section just changes the sectionName at the same index in the lyrics array.
However, copy/pasting a complete section now also copy/pastes the lyrics. So if your copied section had “un-de-fined” as lyrics, the pasted one would have that as well.
I have an idea about linking sections to make changes in for example all Choruses at once, but it’s a very complex topic and I didn’t tackle it yet.
thanks. no the break copy to end was done long before this started. so maybe they’re stacked next to each other then? just trying to figure out why they would both get the undefined unless proximity in the array? i’ll try to create a project to demo it fully and see if its repeatable on copied sections or not.
yeah, figured that having each section being a clone and / or unique imho is really about the user experience in easily selecting/de-selecting the option. or separating the melody from the harmonies etc. so i might tweak the harmonies (e.g. adding a 7th) but want the melody to stay as-is (or worse, only a specific melody like strings to stay and the flute to be adjusted…) yeah definitely complex set of options (later)
No, the arrays have the same order as the sections in the song. There are multiple processes involved from the missing of a value until you actually would see the “undefined” in the lyrics. It’s hard to say where exactly it went wrong. But a simple if check for undefined will prevent those things from happening soon.
Yes, and the there will be things like band instruments to consider, too. And any combination of linking notes in separate voices, chords, lyrics, band settings etc. should be possible… This will need some time to develop.