[JW Lua] Tables getting reset?
Harald Schollmeyer
hschollm at gmx.net
Wed Sep 16 14:14:02 CEST 2020
Hello Emile,
I wrote a similar script, maybe it‘s of some use:
https://forum.makemusic.com/default.aspx?f=11&m=474054
Best,
Harald
--
___________________________________
Harald Schollmeyer
Wesmarstr. 3a, 45659 Recklinghausen
Telefon: +4923614879188 und +491773125084
E-Mail: hschollm at gmx.net
> Am 16.09.2020 um 13:49 schrieb Emile Meuffels <e.meuffels at gmail.com>:
>
>
> Hi all,
>
> I am trying to write a program which calculates the slide positions for a trombone and calculates the total slide length for the selected notes. As there are some notes with alternative positions, I want to create a table where each row has a possible combination of positions. In column 0 there will be the total slide length per row, so I can find the combination with the smallest total slide length.
> If there is an alternative position possible for a note, it creates new rows and copies the previous values. But for some reason, when I try to copy a cell in the next for-loop, that value is always nil, although it was filled in the previous loop...
>
> I am a total newbie to Lua and to some degree to programming in general, so I might not be doing this the most elegant way, but if I insert some print lines, the program does everything I want. So ugly as it might be, it works, it just doesn't seem to remember the values...
>
> I have added the relevant code under this message. Any suggestions are appreciated!
>
> All the best,
>
> Emile
>
> column = 1
> totallength = 0
> i = 1
> c = 1
> imax = 1
> k = 1
> for entry in eachentrysaved(finenv.Region()) do
> local highestnote = entry:CalcHighestNote(nil)
> if highestnote then
> midi = highestnote:CalcMIDIKey()
> -- the slide position is calculated, deleted here for clarity
> for i= 1, imax do
> table[i]={}
> table[i][c] = position
> -- the slide length is calculated, deleted here for clarity
> table[i][0] = totallength
> end
>
> if Alternation(midi) then -- determines if there is an alternative position
> for k = imax+1, imax*2 do -- new rows are being created
> table[k]={}
> for d = 1, c-1 do -- and the input of the last rows is copied
> table[k][d] = table[k-imax][d] -- this should copy the value of the previous rows to the new rows, but it always give a nil value...
> end
> -- the alternative position is calculated, deleted for clarity
> table[k][c]= position -- here the new value is added
> -- and the new length is calculated, deleted for clarity
> table[trumpet][k][0] = totallength
> end
> imax = imax*2
> end
> end
> c = c + 1 -- end
> end
> _______________________________________________
> JWLua mailing list
> JWLua at jwmusic.nu
> http://jwmusic.nu/mailman/listinfo/jwlua_jwmusic.nu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20200916/04b366c7/attachment.htm>
More information about the JWLua
mailing list