Mika,
I fixed quite a few things and updated CVS--I'd wait for one more CVS update as I make sure I didn't create any new problems :) . A few things I ran across in some of the tests (and some other odds and ends that occur to me):
I wouldn't put anything in the "partids" slot in a timesig object yet (I saw this in the Segovia and maybe one or two others)--that option is there for polymeters which aren't quite implemented yet (it's in the main code but not in the backends yet)--actually in the Segovia parts the partids indicate part 0 which isn't defined--so the time signatures weren't used at all and the default 4/4 was used
Specifying :div '(2) for a 2/4 meter tells fomus not to subdivide the measure at all, so it will try to cram everything in the measure into a tuplet (I think I should just make this an error--this isn't really intended and can only give strange results).
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--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.
The "min-tuplet-dur" setting will affect how nested tuplets are created--I set the default to a lower value to get one of the nested triplets tests to work correctly--there are at least a few more issues to look at involving tuplets (rules for finding them + beaming nested tuplets...)
The numbers that go with tremolos are in beat values, so when you specified 1/8 (I think you wanted eighth-notes) you got 32nd note tremolos (1/8 of a beat)--so to get the eighth-note tremolos (:tremolo 1/2) is needed (when a quarter note gets the beat). I apologize, the documentation wasn't really clear on this (among other things... :) ). By next update I'll modify the mark to optionally receive a written value--this should be more intuitive & flexible.
Forcing tied notes is a good idea (next update I think it'll be there--this should be easy to implement)
I've improved staff-distribution a little (actually a lot--the Segovia looks a little rough, but that's to be expected)--I should add a way to force staff decisions for individual notes and entire voices--at some point I plan to have presets for handling different types of material (for example presets for melodic lines, regular rhythms, complex rhythms, etc.), presets for ea. voice would be worthwhile. Staff and voice distribution might be awkward for a little while as I tweak them further...
I decided to make tuplet spelling (7 in time of 4 vs. 7 in time of 8, etc.) user controllable, so the default is now is the power-of-2 rule which can be overriden by the "default-tuplets" setting (ex. :default-tuplets '((7 8) (31 32)) specifies you want 7 in the time of 8 not 4, etc..)
I need to look at the Rite of Spring test some more--there's some strange issue (I think) w/ Lilypond shortening slurs... Probably my fault but I'm not sure yet.
-David
Hi David,
Sorry about my late response.
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?
The numbers that go with tremolos are in beat values, so when you specified 1/8 (I think you wanted eighth-notes) you got 32nd note tremolos (1/8 of a beat)--so to get the eighth-note tremolos (:tremolo 1/2) is needed (when a quarter note gets the beat). I apologize, the documentation wasn't really clear on this (among other things... :) ). By next update I'll modify the mark to optionally receive a written value--this should be more intuitive & flexible.
That sounds good.
I wouldn't put anything in the "partids" slot in a timesig object yet (I saw this in the Segovia and maybe one or two others)--that option is there for polymeters which aren't quite implemented yet (it's in the main code but not in the backends yet)--actually in the Segovia parts the partids indicate part 0 which isn't defined-- so the time signatures weren't used at all and the default 4/4 was used
I mistook :id for :partid, sorry about that. I have to read your documentation with my eyes open next time :-)
Specifying :div '(2) for a 2/4 meter tells fomus not to subdivide the measure at all, so it will try to cram everything in the measure into a tuplet (I think I should just make this an error-- this isn't really intended and can only give strange results).
Ok, although you have cases where this is absolute correct, a quarter note triplet in 2/4, for example. I am not sure if it is better to have strange results or an error, though :-)
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?
I look forward in bugging you some more with my FOMUS ignorace...
Best regards,
Mika
Mika Kuuskankare Researcher Department of Doctoral Studies in Musical Performance and Research Sibelius Academy
Henkilökohtainen postiosoite/Personal post address PL 342 - PO Box 342 FIN-00121 Helsinki, FINLAND Tel: +358 (0)40 5415 233 Skype: mkuuskan
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