Mika Kuuskankare wrote:
On 11.4.2006, at 21.12, David Psenicka wrote:
I found a few large numbers in some of the slur/text spanner marks (they look more like addresses or indexes)--I'm not sure if that's what you want in there. Originally fomus was supposed to accept any "level" numbers and sort it all out (so the numbers that go into these marks could actually be treated like IDs for each mark), but I think that creates problems and confusion--
I actually thought these *were* IDs, which I considered to be a good idea. I use a similar idea in ENP and when converting to FOMUS I simply used the (unique) address of the slur instances (in my program), for example, to distinguish between different simultaneous slurs. I, for one, think that this id approach should fit the spirit of your program rather nicely. After all, FOMUS seems to sort out much more difficult things for the user (such as voice distribution) as it is. I guess the main idea is to distinguish between "instances". BTW, I tried the v0.1.65 and got no errors but instead different results with my bignums and the "small" numbers.
so now I've changed it so slurs (and any other spanner mark that gets a "level" number) should only use one of several unique numbers (such as 1 & 2 for two levels of slurs). Within each "level" fomus tries to complete missing start and end marks and other problems it finds, so I think this will be less confusing.
Does the "level" then (being "1" or "2", etc) affect the output of the backend, i.e., does it make a given slur with some "level" number to be above another with a smaller "level" number? Does this mean that you have to start with "1" and do some book keeping on your own?
Actually, I'll have fomus accommodate both approaches (so the user can treat the numbers as either levels or ids)--it almost works this way now... So if you use the numbers like IDs you'll have to supply all :starts and :ends for every slur but if you only use "1" and "2" you can be lazy and omit the :starts or :ends within each "level". In all cases when there are overlapping slurs, the lower numbered slurs or marks will end up being closest to the staff. I think I've rewritten this algorithm more than any other in the program (I've gone through several slightly different ways of handling this), though this seems like the right way to do it now--so once I implement these changes I think it will finally be set.
BTW, have you ever considered :div being an attribute to voice instead of part? For example, in case of 5/8, where the first voice is beamed 3 + 2 and the second voice is beamed 2 + 3?
Actually, this might already be possible :) ... If you create two timesig objects that are identical but with different :div slot values and assign these to the appropriate parts, fomus should give you different groupings in different parts. I have to test this--I've been saving this feature (multiple simultaneous timesigs) to finish later but as long as polymeters aren't involved it should work.
-David