Sorry I've been out of touch...had other things to do.

At any rate, I've made some requested fixes to what-beat.el. Here is
a patch to my last what-beat.el. This patch fixes two problems:

-> what-beat barfed on \clef "treble_8". (specifically on the quotes)
Fixed.

-> What-beat got confused by a | inside a \bar command. It now ignores |
inside \bar commands. (It also ignores \bar commands, BTW...you have
to delimit measures with | for what-beat to work.)

I finished building the music score I was working on...about 30 rock songs.
Tonight I get $ for the effort :) Thanks, Lilypond!



On Tuesday 13 July 2004 04:09 am, Heikki Johannes Junes wrote:
        > On Mon, 12 Jul 2004 22:24:46 +0200 Han-Wen Nienhuys <[EMAIL PROTECTED]> 
wrote:
> > [EMAIL PROTECTED] writes:
> > > | and point), I get a useless 'end of buffer' message instead of a
> > >
> > > beat count.
> > >
> > > I'll fix \bar if you want, but offhand I'm inclined not to. It's easy
> > > to add | before or after \bar "|", for when you want measures counted
> > > before/after \bar. In other words, yes its a bug, but there's an easy
> > > workaround, and fixing the bug would be for the sake of completeness,
> > > rather than adding functionality.
> >
> > It's also a strange request, the \bar "|" does not affect measure
> > timing, and | does not take it into account.
>
> When looking at a score, \bar "|" is typically from which I start to count
> notes. If I understood the point properly, it is possible that the measure
> timing and the places of bar lines need not to be syncronized. Maybe that
> is the case in modern metric music, but isn't it more due to the laziness
> of a composer (which often is the source of a true inspiration! ;) that not
> all
> time-signatures are being written out.
>
> IMHO, \bar "anystring", or simply, "anystring" should just be skipped
> properly. In other words, one would attach which-bar to the | marks only:
>
>   { | c4 d e f |\bar ":|:" g a b c' |\bar "|." }
>
> Then, if you put dotted \bar ":" in the middle of a cycle, or an empty \bar
> "" in case of a forced line break, the counter would not be confused.

-- 
David Svoboda                    [EMAIL PROTECTED]
Senior Research Programmer       http://www.cs.cmu.edu/~svoboda
Language Technologies Institute  Practice Kind Randomness and
Carnegie Mellon University       Beautiful Acts of Nonsense
--- elisp/lilypond-what-beat.el	Fri Jul  9 10:54:24 2004
+++ ../elisp/lilypond-what-beat.el	Wed Jul 28 14:20:45 2004
@@ -36,6 +36,8 @@
 ;
 ; -> Does not handle repeats.
 ;
+; -> Ignores \bar commands (and does not get confused by a | inside a \bar)
+;
 
 ; Recognizes pitch & octave
 (setq pitch-regex "\\([a-z]+[,']*\\|<[^>]*>\\)\\(=[,']*\\)?")
@@ -175,17 +177,26 @@
 	(goto-char (match-end 0))
 	(if (member (match-string 1) Parm-Keywords)
 	    (progn
-	      (if (looking-at "[ \t\n]*\\([a-z0-9_]+\\|{[^}]*}\\)")
+	      (if (looking-at "[ \t\n]*?\\([a-z0-9_]+\\|{[^}]*}\\|\"[^\"]*\"\\)")
 		  (goto-char (match-end 0))
 		(error "Improper regex match:")
 		(error "Unknown text: %s")
 ))))))
 
+(defun find-measure-start ()
+  (let ((start (re-search-backward "\|" 0 t)))
+    (if (null start)
+	-1
+      (if (looking-at "[^ \n\t]*\"")
+	  (find-measure-start)
+	(point)
+))))
+
 (defun get-beat ()
   (save-excursion
     (save-restriction
       (let* ((end (point))
-	     (measure-start (or (re-search-backward "\|" 0 t) -1))
+	     (measure-start (find-measure-start))
 	     (last-dur (or (re-search-backward duration-regex 0 t) -1))
 	     (duration (if (= -1 last-dur) 0 (parse-duration (match-string 0))))
 	     (result '(0 1)))		; 0 in fraction form
_______________________________________________
lilypond-devel mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to