[gsharp-cvs] CVS update: gsharp/buffer.lisp gsharp/drawing.lisp gsharp/gui.lisp gsharp/modes.lisp gsharp/packages.lisp

Robert Strandh rstrandh at common-lisp.net
Sat Jul 24 20:09:56 UTC 2004


Update of /project/gsharp/cvsroot/gsharp
In directory common-lisp.net:/tmp/cvs-serv7169

Modified Files:
	buffer.lisp drawing.lisp gui.lisp modes.lisp packages.lisp 
Log Message:
Gsharp definitely has lyrics.

When a lyrics layer is selected, the ordinary alphabetic keys append
characters to the preceding lyrics element.  use C-Space to insert a
new lyrics element.  Use C-h to erase the last character of a lyrics
element.  It's a bit clunky, but it works.  I seriously doubt the full
power of Goatee is needed to edit lyrics.  

I noticed that (probably unintentionally) McCLIM can handle Unicode
texts in the form of vectors of integers to draw-text.  It probably
just passes them on to the port-specific functions, and it happens to
work with clx.  It probably won't work on all backends, but it would
be nice if it did.  The default font on my machine can probably only
do character codes up to 255, but with a good font, it should be able
to do up to 65535.  But right now, I can get the German national
characters, which are needed for Bach. 

Check out the new file Scores/bach181-lyrics.gsh.

In it, you will also notice that there is one place in which words
overlap.  To fix that (which is not just a lyrics problem, but also
happens with clusters with many accidentals) Gsharp must learn to
compute how much extra room an element might need, and adjust spacing
accordingly,

Unfortunately McCLIM does not handle input from a US-international
keyboard, so I actually had to put in the ü's manually, but it should
work for others.  

With lyrics, MIDI file generation is most likely broken, but I haven't
checked that yet. It should just skip lyrics layers. 


Date: Sat Jul 24 13:09:55 2004
Author: rstrandh

Index: gsharp/buffer.lisp
diff -u gsharp/buffer.lisp:1.5 gsharp/buffer.lisp:1.6
--- gsharp/buffer.lisp:1.5	Fri Jul 23 09:51:16 2004
+++ gsharp/buffer.lisp	Sat Jul 24 13:09:55 2004
@@ -408,6 +408,14 @@
 	 :initform (make-array 5 :adjustable t :element-type 'fixnum :fill-pointer 0)
 	 :reader text)))
 
+(defmethod initialize-instance :after ((elem lyrics-element) &rest args)
+  (declare (ignore args))
+  (with-slots (text) elem
+     (unless (adjustable-array-p text)
+       (let ((length (length text)))
+	 (setf text (make-array length :adjustable t :element-type 'fixnum
+				:fill-pointer length :initial-contents text))))))
+
 (defun make-lyrics-element (rbeams lbeams dots notehead staff)
   (make-instance 'lyrics-element
      :rbeams rbeams :lbeams lbeams :dots dots
@@ -415,7 +423,7 @@
 
 (defmethod print-object ((elem lyrics-element) stream)
   (with-slots (notehead rbeams lbeams dots xoffset staff text) elem
-     (format stream "[A :notehead ~W :rbeams ~W :lbeams ~W :dots ~W :xoffset ~W :staff ~W :text ~W ] " text)))
+     (format stream "[A :notehead ~W :rbeams ~W :lbeams ~W :dots ~W :xoffset ~W :staff ~W :text ~W ] " notehead rbeams lbeams dots xoffset staff text)))
 
 (defun read-lyrics-element-v3 (stream char n)
   (declare (ignore char n))
@@ -424,6 +432,13 @@
 (set-dispatch-macro-character #\[ #\A
   #'read-lyrics-element-v3
   *gsharp-readtable-v3*)
+
+(defmethod append-char ((elem lyrics-element) char)
+  (vector-push-extend char (text elem)))
+
+(defmethod erase-char ((elem lyrics-element))
+  (unless (zerop (fill-pointer (text elem)))
+    (decf (fill-pointer (text elem)))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;


Index: gsharp/drawing.lisp
diff -u gsharp/drawing.lisp:1.7 gsharp/drawing.lisp:1.8
--- gsharp/drawing.lisp:1.7	Fri Jul 23 09:51:16 2004
+++ gsharp/drawing.lisp	Sat Jul 24 13:09:55 2004
@@ -642,5 +642,4 @@
 (defmethod draw-element (pane (element lyrics-element) x &optional (flags t))
   (declare (ignore flags))
   (score-pane:with-vertical-score-position (pane (staff-yoffset (staff element)))
-    (draw-text* pane (map 'string #'unicode-to-char (text element))
-		x 0 :align-x :center)))
+    (draw-text* pane (text element) x 0 :align-x :center)))


Index: gsharp/gui.lisp
diff -u gsharp/gui.lisp:1.15 gsharp/gui.lisp:1.16
--- gsharp/gui.lisp:1.15	Fri Jul 23 09:51:16 2004
+++ gsharp/gui.lisp	Sat Jul 24 13:09:55 2004
@@ -13,7 +13,7 @@
 (defparameter *kbd-macro-funs* '())
 
 (defparameter *accumulated-keys* '())
-(defparameter *modes* (list *global-mode-table*))
+(defparameter *modes* (list *melody-layer-mode-table* *global-mode-table*))
 (defparameter *last-character* nil)
 
 (defmethod dispatch-event :around ((pane score-pane:score-pane) (event key-press-event))
@@ -29,7 +29,8 @@
 						(dico-object x *accumulated-keys*)
 					      (declare (ignore value prefix-p))
 					      exists-p))))
-		    (fboundp (dico-object dico *accumulated-keys*)))
+		    (or (functionp (dico-object dico *accumulated-keys*))
+			(fboundp (dico-object dico *accumulated-keys*))))
 	       (let ((command (dico-object dico *accumulated-keys*)))
 		 (when *kbd-macro-recording-p* (push command *kbd-macro-funs*))
 		 (handler-case (funcall command)
@@ -394,6 +395,11 @@
     (declare (ignore string))
     (if success layer (error 'no-such-layer))))
 
+(defmethod select-layer :after (cursor (layer layer))
+  (setf *modes* (list (cond ((typep layer 'melody-layer) *melody-layer-mode-table*)
+			    ((typep layer 'lyrics-layer) *lyrics-layer-mode-table*))
+		      *global-mode-table*)))
+
 (define-gsharp-command (com-select-layer :name t) ()
   (let ((selected-layer (accept 'layer :prompt "Select layer")))
     (select-layer (cursor *gsharp-frame*) selected-layer)))
@@ -1155,3 +1161,20 @@
 (define-gsharp-command com-call-last-kbd-macro ()
   (handler-case (mapc #'funcall *kbd-macro-funs*)
     (gsharp-condition (condition) (format *error-output* "~a~%" condition))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;
+;;; Lyrics
+
+(defun insert-lyrics-element ()
+  (let* ((state (input-state *gsharp-frame*))
+	 (cursor (cursor *gsharp-frame*))
+	 (element (make-lyrics-element
+		   (if (eq (notehead state) :filled) (rbeams state) 0)
+		   (if (eq (notehead state) :filled) (lbeams state) 0)
+		   (dots state)
+		   (notehead state)
+		   (car (staves (layer (cursor *gsharp-frame*)))))))
+    (insert-element element cursor)
+    (forward-element cursor)
+    element))


Index: gsharp/modes.lisp
diff -u gsharp/modes.lisp:1.1 gsharp/modes.lisp:1.2
--- gsharp/modes.lisp:1.1	Fri Jul 23 09:51:16 2004
+++ gsharp/modes.lisp	Sat Jul 24 13:09:55 2004
@@ -11,70 +11,156 @@
 ;;; global mode table
 (defparameter *global-mode-table* (make-sequence-dico :test #'equal))
 
-(add-keyseq '((#\L :shift)) 'com-lower *global-mode-table*)
-(add-keyseq '((#\H :shift)) 'com-higher *global-mode-table*)
 (add-keyseq '((#\f :control)) 'com-forward-element *global-mode-table*)
 (add-keyseq '((#\b :control)) 'com-backward-element *global-mode-table*)
 (add-keyseq '((#\d :control)) 'com-delete-element *global-mode-table*)
-(add-keyseq '((#\h :control)) 'com-erase-element *global-mode-table*)
-(add-keyseq '((#\c)) 'com-insert-note-c *global-mode-table*)
-(add-keyseq '((#\d)) 'com-insert-note-d *global-mode-table*)
-(add-keyseq '((#\e)) 'com-insert-note-e *global-mode-table*)
-(add-keyseq '((#\f)) 'com-insert-note-f *global-mode-table*)
-(add-keyseq '((#\g)) 'com-insert-note-g *global-mode-table*)
-(add-keyseq '((#\a)) 'com-insert-note-a *global-mode-table*)
-(add-keyseq '((#\b)) 'com-insert-note-b *global-mode-table*)
-(add-keyseq '((#\,)) 'com-insert-rest *global-mode-table*)
-(add-keyseq '((#\Space)) 'com-insert-empty-cluster *global-mode-table*)
-(add-keyseq '((#\C :shift)) 'com-add-note-c *global-mode-table*)
-(add-keyseq '((#\D :shift)) 'com-add-note-d *global-mode-table*)
-(add-keyseq '((#\E :shift)) 'com-add-note-e *global-mode-table*)
-(add-keyseq '((#\F :shift)) 'com-add-note-f *global-mode-table*)
-(add-keyseq '((#\G :shift)) 'com-add-note-g *global-mode-table*)
-(add-keyseq '((#\A :shift)) 'com-add-note-a *global-mode-table*)
-(add-keyseq '((#\B :shift)) 'com-add-note-b *global-mode-table*)
-(add-keyseq '((#\h :meta)) 'com-rotate-notehead *global-mode-table*)
-(add-keyseq '((#\s :meta)) 'com-rotate-stem-direction *global-mode-table*)
-(add-keyseq '((#\p)) 'com-current-increment *global-mode-table*)
-(add-keyseq '((#\n)) 'com-current-decrement *Global-mode-table*)
 (add-keyseq '((#\| :shift)) 'com-insert-measure-bar *global-mode-table*)
 (add-keyseq '((#\.)) 'com-more-dots *global-mode-table*)
 (add-keyseq '((#\[)) 'com-more-lbeams *global-mode-table*)
 (add-keyseq '((#\])) 'com-more-rbeams *global-mode-table*)
-(add-keyseq '((#\#)) 'com-sharper *global-mode-table*)
-(add-keyseq '((#\# :shift)) 'com-sharper *global-mode-table*)
-(add-keyseq '((#\@ :shift)) 'com-flatter *global-mode-table*)
-(add-keyseq '((#\# :meta)) 'com-more-sharps *global-mode-table*)
-(add-keyseq '((#\# :meta :shift)) 'com-more-sharps *global-mode-table*)
-(add-keyseq '((#\@ :meta :shift)) 'com-more-flats *global-mode-table*)
-(add-keyseq '((#\u :meta)) 'com-up *global-mode-table*)
-(add-keyseq '((#\d :meta)) 'com-down *global-mode-table*)
 (add-keyseq '((#\l :meta)) 'com-left *global-mode-table*)
 (add-keyseq '((#\r :meta)) 'com-right *global-mode-table*)
-(add-keyseq '((#\p :meta)) 'com-previous-layer *global-mode-table*)
-(add-keyseq '((#\n :meta)) 'com-next-layer *global-mode-table*)
-(add-keyseq '((#\i) (#\.)) 'com-istate-more-dots *global-mode-table*)
-(add-keyseq '((#\i) (#\[)) 'com-istate-more-lbeams *global-mode-table*)
-(add-keyseq '((#\i) (#\])) 'com-istate-more-rbeams *global-mode-table*)
-(add-keyseq '((#\i) (#\h)) 'com-istate-rotate-notehead *global-mode-table*)
-(add-keyseq '((#\i) (#\s)) 'com-istate-rotate-stem-direction *global-mode-table*)
-(add-keyseq '((#\i) (#\x) (#\.)) 'com-istate-fewer-dots *global-mode-table*)
-(add-keyseq '((#\i) (#\x) (#\[)) 'com-istate-fewer-lbeams *global-mode-table*)
-(add-keyseq '((#\i) (#\x) (#\])) 'com-istate-fewer-rbeams *global-mode-table*)
-(add-keyseq '((#\x) (#\.)) 'com-fewer-dots *global-mode-table*)
-(add-keyseq '((#\x) (#\[)) 'com-fewer-lbeams *global-mode-table*)
-(add-keyseq '((#\x) (#\])) 'com-fewer-rbeams *global-mode-table*)
 (add-keyseq '((#\x :control) (#\( :shift)) 'com-start-kbd-macro *global-mode-table*)
 (add-keyseq '((#\x :control) (#\()) 'com-start-kbd-macro *global-mode-table*)
 (add-keyseq '((#\x :control) (#\) :shift)) 'com-end-kbd-macro *global-mode-table*)
 (add-keyseq '((#\x :control) (#\))) 'com-end-kbd-macro *global-mode-table*)
 (add-keyseq '((#\x :control) (#\e)) 'com-call-last-kbd-macro *global-mode-table*)
+(add-keyseq '((#\r :control)) 'com-rotate-notehead *global-mode-table*)
+
+;;; melody mode table
+(defparameter *melody-layer-mode-table* (make-sequence-dico :test #'equal))
+
+(add-keyseq '((#\L :shift)) 'com-lower *melody-layer-mode-table*)
+(add-keyseq '((#\H :shift)) 'com-higher *melody-layer-mode-table*)
+(add-keyseq '((#\c)) 'com-insert-note-c *melody-layer-mode-table*)
+(add-keyseq '((#\d)) 'com-insert-note-d *melody-layer-mode-table*)
+(add-keyseq '((#\e)) 'com-insert-note-e *melody-layer-mode-table*)
+(add-keyseq '((#\f)) 'com-insert-note-f *melody-layer-mode-table*)
+(add-keyseq '((#\g)) 'com-insert-note-g *melody-layer-mode-table*)
+(add-keyseq '((#\a)) 'com-insert-note-a *melody-layer-mode-table*)
+(add-keyseq '((#\b)) 'com-insert-note-b *melody-layer-mode-table*)
+(add-keyseq '((#\,)) 'com-insert-rest *melody-layer-mode-table*)
+(add-keyseq '((#\Space)) 'com-insert-empty-cluster *melody-layer-mode-table*)
+(add-keyseq '((#\C :shift)) 'com-add-note-c *melody-layer-mode-table*)
+(add-keyseq '((#\D :shift)) 'com-add-note-d *melody-layer-mode-table*)
+(add-keyseq '((#\E :shift)) 'com-add-note-e *melody-layer-mode-table*)
+(add-keyseq '((#\F :shift)) 'com-add-note-f *melody-layer-mode-table*)
+(add-keyseq '((#\G :shift)) 'com-add-note-g *melody-layer-mode-table*)
+(add-keyseq '((#\A :shift)) 'com-add-note-a *melody-layer-mode-table*)
+(add-keyseq '((#\B :shift)) 'com-add-note-b *melody-layer-mode-table*)
+(add-keyseq '((#\p)) 'com-current-increment *melody-layer-mode-table*)
+(add-keyseq '((#\n)) 'com-current-decrement *Melody-Layer-mode-table*)
+(add-keyseq '((#\i) (#\.)) 'com-istate-more-dots *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\[)) 'com-istate-more-lbeams *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\])) 'com-istate-more-rbeams *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\h)) 'com-istate-rotate-notehead *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\s)) 'com-istate-rotate-stem-direction *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\x) (#\.)) 'com-istate-fewer-dots *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\x) (#\[)) 'com-istate-fewer-lbeams *melody-layer-mode-table*)
+(add-keyseq '((#\i) (#\x) (#\])) 'com-istate-fewer-rbeams *melody-layer-mode-table*)
+(add-keyseq '((#\x) (#\.)) 'com-fewer-dots *melody-layer-mode-table*)
+(add-keyseq '((#\x) (#\[)) 'com-fewer-lbeams *melody-layer-mode-table*)
+(add-keyseq '((#\x) (#\])) 'com-fewer-rbeams *melody-layer-mode-table*)
+(add-keyseq '((#\h :control)) 'com-erase-element *melody-layer-mode-table*)
+(add-keyseq '((#\h :meta)) 'com-rotate-notehead *melody-layer-mode-table*)
+(add-keyseq '((#\s :meta)) 'com-rotate-stem-direction *melody-layer-mode-table*)
+(add-keyseq '((#\#)) 'com-sharper *melody-layer-mode-table*)
+(add-keyseq '((#\# :shift)) 'com-sharper *melody-layer-mode-table*)
+(add-keyseq '((#\@ :shift)) 'com-flatter *melody-layer-mode-table*)
+(add-keyseq '((#\# :meta)) 'com-more-sharps *melody-layer-mode-table*)
+(add-keyseq '((#\# :meta :shift)) 'com-more-sharps *melody-layer-mode-table*)
+(add-keyseq '((#\@ :meta :shift)) 'com-more-flats *melody-layer-mode-table*)
+(add-keyseq '((#\u :meta)) 'com-up *melody-layer-mode-table*)
+(add-keyseq '((#\d :meta)) 'com-down *melody-layer-mode-table*)
 
 ;;; lyrics mode table
 
 (defparameter *lyrics-layer-mode-table* (make-sequence-dico :test #'equal))
 
+(add-keyseq '((#\h :control)) (lambda () (erase-char (cur-element)))
+	    *lyrics-layer-mode-table*)
+(add-keyseq '((#\h :meta)) 'com-erase-element *lyrics-layer-mode-table*)
+(add-keyseq '((#\Space :control)) 'insert-lyrics-element *lyrics-layer-mode-table*)
 
 
-;;; melody mode table
-(defparameter *melody-layer-mode-table* (make-sequence-dico :test #'equal))
+(defun make-insert-fun (code)
+  (lambda () (append-char (cur-element) code)))
+
+(loop for c in '(#\A #\B #\C #\D #\E #\F #\G #\H #\I #\J #\K #\L #\M 
+		 #\N #\O #\P #\Q #\R #\S #\T #\U #\V #\W #\X #\Y #\Z)
+      for i from 65
+      do (add-keyseq `((,c :shift)) (make-insert-fun i) *lyrics-layer-mode-table*))
+
+(loop for c in '(#\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m 
+		 #\n #\o #\p #\q #\r #\s #\t #\u #\v #\w #\x #\y #\z)
+      for i from 97
+      do (add-keyseq `((,c)) (make-insert-fun i) *lyrics-layer-mode-table*))
+
+;;; try some latin prefix mode for national characters 
+(add-keyseq '((#\`) (#\A :shift)) (make-insert-fun 192) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\A :shift)) (make-insert-fun 193) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\A :shift)) (make-insert-fun 194) *lyrics-layer-mode-table*)
+(add-keyseq '((#\~) (#\A :shift)) (make-insert-fun 195) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\A :shift)) (make-insert-fun 196) *lyrics-layer-mode-table*)
+(add-keyseq '((#\/) (#\A :shift)) (make-insert-fun 197) *lyrics-layer-mode-table*)
+(add-keyseq '((#\/) (#\E :shift)) (make-insert-fun 198) *lyrics-layer-mode-table*)
+(add-keyseq '((#\/) (#\C :shift)) (make-insert-fun 199) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\E :shift)) (make-insert-fun 200) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\E :shift)) (make-insert-fun 201) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\E :shift)) (make-insert-fun 202) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\E :shift)) (make-insert-fun 203) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\I :shift)) (make-insert-fun 204) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\I :shift)) (make-insert-fun 205) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\I :shift)) (make-insert-fun 206) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\I :shift)) (make-insert-fun 207) *lyrics-layer-mode-table*)
+(add-keyseq '((#\/) (#\D :shift)) (make-insert-fun 208) *lyrics-layer-mode-table*)
+(add-keyseq '((#\~) (#\N :shift)) (make-insert-fun 209) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\O :shift)) (make-insert-fun 210) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\O :shift)) (make-insert-fun 211) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\O :shift)) (make-insert-fun 212) *lyrics-layer-mode-table*)
+(add-keyseq '((#\~) (#\O :shift)) (make-insert-fun 213) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\O :shift)) (make-insert-fun 214) *lyrics-layer-mode-table*)
+
+(add-keyseq '((#\/) (#\O :shift)) (make-insert-fun 216) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\U :shift)) (make-insert-fun 217) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\U :shift)) (make-insert-fun 218) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\U :shift)) (make-insert-fun 219) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\U :shift)) (make-insert-fun 220) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\Y :shift)) (make-insert-fun 221) *lyrics-layer-mode-table*)
+
+
+(add-keyseq '((#\`) (#\a)) (make-insert-fun 224) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\a)) (make-insert-fun 225) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\a)) (make-insert-fun 226) *lyrics-layer-mode-table*)
+(add-keyseq '((#\~) (#\a)) (make-insert-fun 227) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\a)) (make-insert-fun 228) *lyrics-layer-mode-table*)
+(add-keyseq '((#\/) (#\a)) (make-insert-fun 229) *lyrics-layer-mode-table*)
+(add-keyseq '((#\/) (#\e)) (make-insert-fun 230) *lyrics-layer-mode-table*)
+(add-keyseq '((#\~) (#\c)) (make-insert-fun 231) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\e)) (make-insert-fun 232) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\e)) (make-insert-fun 233) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\e)) (make-insert-fun 234) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\e)) (make-insert-fun 235) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\i)) (make-insert-fun 236) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\i)) (make-insert-fun 237) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\i)) (make-insert-fun 238) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\i)) (make-insert-fun 239) *lyrics-layer-mode-table*)
+
+
+(add-keyseq '((#\`) (#\o)) (make-insert-fun 242) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\o)) (make-insert-fun 243) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\o)) (make-insert-fun 244) *lyrics-layer-mode-table*)
+(add-keyseq '((#\~) (#\o)) (make-insert-fun 245) *lyrics-layer-mode-table*)
+(add-keyseq `((#\") (#\o)) (make-insert-fun 246) *lyrics-layer-mode-table*)
+
+(add-keyseq '((#\/) (#\o)) (make-insert-fun 248) *lyrics-layer-mode-table*)
+(add-keyseq '((#\`) (#\u)) (make-insert-fun 249) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\u)) (make-insert-fun 250) *lyrics-layer-mode-table*)
+(add-keyseq '((#\^) (#\u)) (make-insert-fun 251) *lyrics-layer-mode-table*)
+(add-keyseq '((#\") (#\u)) (make-insert-fun 252) *lyrics-layer-mode-table*)
+(add-keyseq '((#\') (#\y)) (make-insert-fun 253) *lyrics-layer-mode-table*)
+
+(add-keyseq '((#\") (#\y)) (make-insert-fun 255) *lyrics-layer-mode-table*)
+
+
+	     	     
\ No newline at end of file


Index: gsharp/packages.lisp
diff -u gsharp/packages.lisp:1.7 gsharp/packages.lisp:1.8
--- gsharp/packages.lisp:1.7	Fri Jul 23 09:51:16 2004
+++ gsharp/packages.lisp	Sat Jul 24 13:09:55 2004
@@ -50,12 +50,12 @@
 	   #:notehead #:rbeams #:lbeams #:dots #:element
 	   #:melody-element #:notes
 	   #:add-note #:find-note #:remove-note #:cluster #:make-cluster
-	   #:rest #:make-rest #:lyrics-element
+	   #:rest #:make-rest #:lyrics-element #:make-lyrics-element
 	   #:slice #:elements
 	   #:nb-elements #:elementno #:add-element
 	   #:remove-element #:bar #:make-bar
 	   #:melody-bar #:lyrics-bar
-	   #:layer
+	   #:layer #:lyrics-layer #:melody-layer
 	   #:bars #:nb-bars #:barno #:add-bar #:remove-bar
 	   #:slice
 	   #:segment #:slices #:sliceno
@@ -74,7 +74,7 @@
 	   #:stem-direction #:stem-length #:notehead-duration #:element-duration
 	   #:clef #:keysig #:staff-pos #:xoffset #:read-everything #:save-buffer-to-stream
 	   #:line-width #:min-width #:spacing-style #:right-edge #:left-offset
-	   #:left-margin #:text
+	   #:left-margin #:text #:append-char #:erase-char
 	   ))
 
 (defpackage :gsharp-numbering





More information about the Gsharp-cvs mailing list