From dpsenick at uiuc.edu Mon Apr 3 07:29:00 2006 From: dpsenick at uiuc.edu (David Psenicka) Date: Mon, 03 Apr 2006 02:29:00 -0500 Subject: [fomus-devel] LispWorks In-Reply-To: References: <72417390-233A-4BFC-8E56-ECC9B4CBE83E@uiuc.edu> <440359FA.2080503@uiuc.edu> Message-ID: <4430CEBC.3040903@uiuc.edu> FOMUS should run in LispWorks now (I tested on Max OS X and will try Windows & Linux soon). I'm also putting examples in the documentation (this should make it much easier to figure out how to use it) and will post more over time. Also, quite a few bugs are being cleared up plus a test suite is underway thanks to Kilian Sprotte--once this is in place and everything is tested and verified I'll give the project a beta status instead of its current alpha status (and finally bump the version up to 0.2). -David From dpsenick at uiuc.edu Thu Apr 6 15:22:25 2006 From: dpsenick at uiuc.edu (David Psenicka) Date: Thu, 06 Apr 2006 10:22:25 -0500 Subject: [fomus-devel] Re: LispWorks In-Reply-To: <02C07E5A-7434-4888-9593-B82D898BB992@siba.fi> References: <02C07E5A-7434-4888-9593-B82D898BB992@siba.fi> Message-ID: <44353231.1030007@uiuc.edu> Thank you for your attachments. I'll have some time to look at the tuplet bug in the next few days... There's a slot in the timesig class called "div" where you can specify possible measure subdivisions (as number of beats in each subdivision). For example: (make-timesig :off 0 :time '(5 8) :div '(1 3/2)) or (make-timesig :off 0 :time '(5 4) :div '(3 2)) or (make-timesig :off 0 :time '(5 8) :div '((3/2 1) (1 3/2))). Looking at the '(5 4) example just now I see that I need to fix the beaming algorithm so that it shows the 3 + 2 division properly (another addition to the bug list). There are also two settings, :default-meas-divs and :default-tuplet-divs which are lookup tables containing default divisions (you can override fomus's defaults with these), but they don't give you direct control. Let me know if you have any additional ideas for controlling subdivisions/tuplets--I'm open to anything that will make the program more flexible. I'm looking forward to seeing it work with PWGL/ENP--thank you so much for your help. -David Mika Kuuskankare wrote: > David, > >> FOMUS should run in LispWorks now (I tested on Max OS X and will try >> Windows & Linux soon). > > > Thanks for your work on LispWorks. It looks promising! > > I already did an exporter that converts ENP -> FOMUS -> LILYPOND. I > enclosed some test runs showing the output of the exporter . > .eps files show the original ENP score > .pdf shows the lilypond output > .dbg is fomus dbg file, and > .err is a possible error message generated by FOMUS > > BTW, I set :AUTO-QUANTIZE to NIL, because I wanted to use exact > ratios but this produced some difficulties with nested tuplets (see > for example fomus152). > > Is there a possibility to help the quantizer/rhythm interpreter in > case of tuplets and beat divisions, e.g., to indicate beat/subbeat > boundaries? > > > Anyway, I am quite excited about FOMUS. > > > 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 > > From dpsenick at uiuc.edu Tue Apr 11 18:12:43 2006 From: dpsenick at uiuc.edu (David Psenicka) Date: Tue, 11 Apr 2006 13:12:43 -0500 Subject: [fomus-devel] ongoing improvements.... Message-ID: <443BF19B.3010900@uiuc.edu> 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 From dpsenick at uiuc.edu Tue Apr 11 18:22:09 2006 From: dpsenick at uiuc.edu (David Psenicka) Date: Tue, 11 Apr 2006 13:22:09 -0500 Subject: [fomus-devel] Re: fomus-test :) In-Reply-To: References: <39AF5033-B0A4-4A1C-A5C9-E5363C008DB7@onlinehome.de> <43FD7D0C.80703@uiuc.edu> <24489BED-B1F6-4062-82C1-1A96D51926C4@onlinehome.de> <44077ABC.5040903@uiuc.edu> <318CA730-7F2D-496A-9D37-F2D935D9709D@onlinehome.de> <440B3559.4010205@uiuc.edu> <3C404A0A-F1EC-4BC2-B7A5-909F0AFE8ED8@onlinehome.de> <4411EB55.4040004@uiuc.edu> <441F79BF.8090201@uiuc.edu> Message-ID: <443BF3D1.5020702@uiuc.edu> Kilian, The test suite is working really well. I added a few more backend methods and tweaked a function that parses the code (separating fomus lines from test lines...) -David From mkuuskan at siba.fi Sat Apr 15 10:38:26 2006 From: mkuuskan at siba.fi (Mika Kuuskankare) Date: Sat, 15 Apr 2006 13:38:26 +0300 Subject: [fomus-devel] ongoing improvements.... In-Reply-To: <443BF19B.3010900@uiuc.edu> References: <443BF19B.3010900@uiuc.edu> Message-ID: <65811E10-1D5B-4C32-ABDD-32DED90CC6D2@siba.fi> 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 From dpsenick at uiuc.edu Mon Apr 17 16:51:51 2006 From: dpsenick at uiuc.edu (David Psenicka) Date: Mon, 17 Apr 2006 11:51:51 -0500 Subject: [fomus-devel] ongoing improvements.... In-Reply-To: <65811E10-1D5B-4C32-ABDD-32DED90CC6D2@siba.fi> References: <443BF19B.3010900@uiuc.edu> <65811E10-1D5B-4C32-ABDD-32DED90CC6D2@siba.fi> Message-ID: <4443C7A7.2@uiuc.edu> 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