anchor.diff:        (#\A 6)
         ((#\B #\H) 7))))
   
  +(defun note-from-order (number &key (notation 'english))
  +  (ecase number
  +    (1 #\C)
  +    (2 #\D)
  +    (3 #\E)
  +    (4 #\F)
  +    (5 #\G)
  +    (6 #\A)
  +    (7 (ecase notation
  +         (english #\B)
  +         (german #\H)))))
  +
  +(defun notation (note octave &key flat-p sharp-p (notation 'english))
  +  (ecase notation
  +    (english (format NIL "~a~a~a"
  +                     note (cond (flat-p #\u266D) (sharp-p #\#) (T "")) octave))))
  +
   (defun ensure-piano-key (key)
     (cond
       ((typep key 'integer) key)
  
positive.code:   (coerce (+ (- (ensure-pitch tuning) 440.0d0)
               (* 440.0d0 (expt 2.0d0 (/ (- (ensure-piano-key key) 49.0d0) 12.0d0))))
            'single-float))
  
negative.code:      ;; where A-G is the note, # and s mean sharp, b and f mean flat, and 0-8 mean octave.
       ;; This is then converted into standard piano key number that is from 1 to 88.
       (multiple-value-bind (key-string groups)
           (cl-ppcre:scan-to-strings *english-notation-regex* (format NIL "~:@(~a~)" key))
         (unless key-string (invalid-key-notation-error key))
         (let ((note (char (aref groups 0) 0))
               (flat-p (when (and (aref groups 1) (or (string= "B" (aref groups 1))
  