(load "~/cmn/cmn-all.lisp")

;;; To: tomroyall@lineone.net
;;; Cc: cmdist@ccrma.stanford.edu
;;; Subject: Re: (CM) tab
;;; From: Anders Vinjar <anders.vinjar@notam.uio.no>
;;; Date: 02 Oct 2001 10:56:16 +0200
;;; 
;;; >>> "t" == tomroyall  <tomroyall@lineone.net> writes:
;;; 
;;;     t> Can anyone tell me how to get numbers as note-heads in CMN
;;;     t> (for guitar tablature)?
;;; 
;;; The following could possibly get you going somewhere.  

(in-package :cmn)

(defun nh-number (num &rest args) 
  (apply #'text
	 (format nil "~A" num)
	 (font-name "Courier-Bold")
	 (font-scaler 0.35)
	 (y #'(lambda (mark note score &optional justifying)
                (- (y0 note) 0.08)))
	 (x #'(lambda (mark note score &optional justifying)
                (+ (x0 note) 0.04)))
	 args))

(defmacro fret-chord (&rest frets)
  `(chord ,@frets))

(defmacro fret (num string &rest args)
  (let ((note (case string
                (5 'e4)
                (4 'g4)
                (3 'b4)
                (2 'd5)
                (1 'f5)
                (t string))))
    `(,note (note-head :none)
            (leger-line-width 0.0)
            (nh-number ,num) ,@args)))

(cmn
 (free-expansion-factor 1.8) (size 34) (title "Bill Mason") (title-separation 2)
 staff (staff-lines 5)
 
 (fret 0 1)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 bar

 (fret 2 1 e) (fret 0 1 e)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 1)
 (fret 0 2)
 bar 

 (fret 2 3 e) (fret 0 3 e)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 3)
 (fret 0 2)
 bar 

 (fret 3 3 e begin-slur)
 (fret 4 3 e end-slur)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 3)
 (fret 2 4)
 bar 

 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 4)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3))
 bar

 (fret 2 3 e) (fret 0 3 e)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 3)
 (fret 2 3)
 bar 

 (fret 0 2)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3))
 bar

 (fret 2 3)
 (fret-chord (fret 2 1) (fret 2 2) (fret 2 3) (fret 2 4) e) (fret-chord (fret 0 5) e) ; A
 (fret 0 2)
 (fret 2 2)
 bar

 (fret 0 1)
 (fret-chord (fret 0 1) (fret 1 2) (fret 2 3) e) (fret-chord (fret 0 5) e) ; D7
 (fret 0 1)
 (fret-chord (fret 0 1) (fret 1 2) (fret 2 3)); D7
 bar

 (fret 2 1 e) (fret 0 1 e)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 1)
 (fret 0 2)
 bar 

 (fret 2 3 e) (fret 0 3 e)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3))
 bar 

 (fret 2 3)
 (fret-chord (fret 0 1) (fret 1 2) (fret 2 3) e) (fret-chord (fret 0 5) e) ; D7
 (fret 0 2 e)
 (fret 0 3 e)
 (fret 2 4)
 bar

 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e) ; G
 (fret 0 4)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3))
 bar

 (fret 2 3 e) (fret 0 3 e)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e)
 (fret 0 3)
 (fret 2 3)
 bar 

 (fret 0 2)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e) ; G
 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3))
 bar
 
 (fret 2 3)
 (fret-chord (fret 0 1) (fret 1 2) (fret 2 3) e) (fret-chord (fret 0 5) e) ; D7
 (fret 0 2)
 (fret 2 3)
 bar

 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e) ; G
 (fret 0 4 e begin-slur)
 (fret 2 4 e end-slur)
 (fret-chord (fret 2 1) (fret 0 2) (fret 0 3) (fret 2 4))
 bar

 (fret 0 3)
 (fret-chord (fret 0 1) (fret 0 2) (fret 0 3) e) (fret-chord (fret 0 5) e) ; G
)

