;;;
;;; The name of this program is music49.cl
;;;
(load "c:\\program files\\acl62\\music48.cl")

(defun get-UST-2 (chordname)
  (let ((lst (get-UST chordname)))
    (do ((l lst (cdr l))
       (w))
       ((null l) (remove-duplicate (squash w)))
      (push (cdr (second (car l))) w))))

(defun translate-doremi (note)
  (prog ()
    (cond ((equal note "ド") (return 'do))
        ((equal note "#ド") (return '+do))
        ((equal note "♭レ") (return '+do))
        ((equal note "レ") (return 're))
        ((equal note "#レ") (return '+re))
        ((equal note "♭ミ") (return '+re))
        ((equal note "ミ") (return 'mi))
        ((equal note "ファ") (return 'fa))
        ((equal note "#ファ") (return '+fa))
        ((equal note "♭ソ") (return '+fa))
        ((equal note "ソ") (return 'so))
        ((equal note "#ソ") (return '+so))
        ((equal note "♭ラ") (return '+so))
        ((equal note "ラ") (return 'la))
        ((equal note "#ラ") (return '+la))
        ((equal note "♭シ") (return '+la))
        ((equal note "シ") (return 'si)))))

(defun translate-doremi-in-a-chord (chordname)
  (mapcar #'(lambda (x) (translate-doremi x)) (get-chord-tone chordname)))

(defun note-in-a-chord? (note chordname)
  (member note (translate-doremi-in-a-chord chordname)))

;;;
;;; (note-in-UST? 're "CM7")
;;;
(defun note-in-UST? (note chordname)
  (let ((lst (get-UST-2 chordname)))
    (do ((l lst (cdr l))
       (w))
       ((null l) (reverse w))
      (cond ((note-in-a-chord? note (car l))
           (push (car l) w))))))