From d.lewis at gold.ac.uk Mon Nov 17 13:06:55 2008 From: d.lewis at gold.ac.uk (David Lewis) Date: Mon, 17 Nov 2008 13:06:55 +0000 Subject: [gsharp-devel] selections, copy, paste, etc. Message-ID: <8CAA30B8-6001-4C15-830A-BDAE6F01AC41@gold.ac.uk> Hi, I'm working on a project that may allow me the opportunity to work on gsharp as a (small) part of my job. I'm not really sure how much and when to commit or submit diffs to the list---I'm maintaining my own repository locally---but some of what I'm doing may be useful to others (and Christophe is nagging me to be more visible on this list...) In particular: 1) I've just started looking at selections, with the aim of adding copy, paste and search facilities. I'm beginning with simple region selects and a kill-ring-like approach, without an immediate implementation of anything to actually do with the results. Paste/yank will come later. Although much of the code is likely to change substantially as I go, some of it may be useful elsewhere, and if anyone else is working on anything related, they may be interested in its progress. How cautious should I be about submitting patches to this list or committing them to cvs? One side-effect of working on this has been a version of select- layer that moves the cursor to the right time (rather than the end of the bar), and I've attached a diff for that to the bottom of this e- mail. 2) I've also got the beginnings of code for adding time signatures to pieces. One thing that held me back from doing anything further with this when I was working on this was the lack of any way of rendering them. I notice from recent updates that the necessary glyphs are being added. Does that mean that someone is also working on time signatures? Should I be picking up my work on this again now that the glyphs are appearing, or is a working version going to materialise soon anyway? ;-) I also have a few questions about naming conventions for staves and layers - currently gsharp accepts empty strings as names (although these don't appear on M-/ lists on my machine). Is this a useful feature or is it worth avoiding? also, uniqueness is enforced on data entry, but not on file loading, and the sample files seem to have all their staves and layers named with the class default: should there be an extra step to test for this on load? Should the sample scores be updated to avoid this? Thanks, David Lewis --------------------------------- diff -rN old-gsharp/cursor.lisp new-gsharp/cursor.lisp 337,342c344,350 < (oldbarno (number oldbar)) < (oldslice (slice oldbar)) < (oldsliceno (number oldslice)) < (newslice (sliceno new-layer oldsliceno)) < (newbarno (min (1- (nb-bars newslice)) oldbarno)) < (newbar (barno newslice newbarno))) --- > (oldbarno (number oldbar)) > (oldslice (slice oldbar)) > (oldsliceno (number oldslice)) > (oldtime (cursor-time cursor)) > (newslice (sliceno new-layer oldsliceno)) > (newbarno (min (1- (nb-bars newslice)) oldbarno)) > (newbar (barno newslice newbarno))) 344c352 < (set-cursor cursor newbar (nb-elements newbar)))) --- > (set-cursor cursor newbar (get-position oldtime newbar)))) 499a513,524 > > (defun cursor-time (cursor) > (loop for n from 0 to (1- (pos cursor)) > sum (duration (elt (elements (cursor-bar cursor)) n)))) > > (defun get-position (time bar) > (let ((sum 0) (pos 0)) > (dolist (element (elements bar) pos) > (when (>= sum time) > (return-from get-position pos)) > (incf sum (duration element)) > (incf pos))))