Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
;; (find-planner "2004.04.14")

(defvar music-G-clef "
<s>
----/\\-------
   | /
----/--------
   / |
-------------
  | /|\\
-----|-------
   \\ |/
-------------
   \\/
</s>
")

(defun forward-line-keep-column (arg)
  (interactive "p")
  (let ((column (current-column))
	(indent-tabs-mode nil))
    (forward-line arg)
    (move-to-column column t)))

(defmacro with-music-vars (&rest body)
  `(let* (s-tag
	  (s (save-excursion
	       (search-backward "\n<s>")
	       (setq s-tag (+ (point) 1))
	       (forward-line 2)
	       (beginning-of-line) (point)))
	  after-e-tag
	  (e (save-excursion
	       (search-forward "\n</s>")
	       (setq after-e-tag (save-excursion
				   (forward-line 1)
				   (beginning-of-line) (point)))
	       (beginning-of-line) (point)))
	  (nlines (count-lines s e))
	  (bol (save-excursion (beginning-of-line) (point)))
	  (thisline (count-lines s bol))
	  (column (current-column))
	  (indent-tabs-mode nil))
     . ,body))

(defun music-background-char ()
  (let ((char (save-excursion (beginning-of-line) (char-after))))
    (if (eq char ?\n)
	32
      char)))

(defun music-insert (char)
  (interactive "c")
  (with-music-vars
   (save-excursion
     (dotimes (i nlines)
       (save-excursion
	 (forward-line-keep-column (- i thisline))
	 (insert-and-inherit (if (= i thisline)
				 char
			       (music-background-char))))))
   (forward-char 1)))

(defun music-self-insert-command (n)
  (interactive "p")
  (if overwrite-mode
      (self-insert-command n)
    (dotimes (i n)
      (music-insert last-command-char))))

;; (defun music-delete-char ...)

(defvar music-keymap (make-keymap))
(defun music-keymap-build ()
  (let ((i 32))
    (while (<= i 126)
      (define-key music-keymap (format "%c" i) 'music-self-insert-command)
      (setq i (+ i 1)))))

(music-keymap-build)

(defun music-mode-local (arg)
  (interactive "p")
  (if (> arg 0)
      (with-music-vars
       (set-text-properties s-tag s `(face bold))
       (set-text-properties s e `(keymap ,music-keymap))
       (set-text-properties e after-e-tag `(face bold))
       (untabify s e))
    (with-music-vars
     (set-text-properties s-tag after-e-tag nil))))