]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/midi.scm
*** empty log message ***
[lilypond.git] / scm / midi.scm
index 0f85275124583d08a11f37ec725eb334b0c378a8..ed82a5a525c2e56aef6db4f71c9b5f6f07742978 100644 (file)
@@ -1,12 +1,18 @@
-;;; midi.scm -- scm midi variables and functions
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c) 2000--2001 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; midi.scm -- scm midi variables and functions
+;;;;
+;;;;  source file of the GNU LilyPond music typesetter
+;;;; 
+;;;; (c)  2000--2004 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
+
+;;;;;;;;;;;;;;;;;;
+;;; TODO:
+
+;; this is broken: we should not ever export variables from Scheme.
+
 ;; define factor of total volume per dynamic marking
-(define absolute-volume-alist '())
+(define-public absolute-volume-alist '())
 (set! absolute-volume-alist
       (append 
       '(
@@ -32,7 +38,7 @@
        (cdr entry))))
 
 ;; define factors of total volume of minimum and maximum volume
-(define instrument-equalizer-alist '())
+(define-public instrument-equalizer-alist '())
 (set! instrument-equalizer-alist
       (append 
        '(
@@ -50,7 +56,7 @@
         )
        instrument-equalizer-alist))
 
-;; (name . program+32768*(channel10 ? 1 : 0) )
+;; (name . program+32768*(channel10 ? 1 : 0))
 (define instrument-names-alist '())
 (set! instrument-names-alist
       (append
          ("recorder" . ,(- 75 1))
          ("pan flute" . ,(- 76 1))
          ("blown bottle" . ,(- 77 1))
-         ("skakuhachi" . ,(- 78 1))
+         ("shakuhachi" . ,(- 78 1))
          ("whistle" . ,(- 79 1))
          ("ocarina" . ,(- 80 1))
 
          ("mt-32 drums" .      ,(+ 32768 127))
          ("cm-64 kit" .        ,(+ 32768 127))
          ("cm-64 drums" .      ,(+ 32768 127))
-       )
-        instrument-names-alist
-      )
-)
-
+         )
+       instrument-names-alist))
 
 (define-public (default-instrument-equalizer s)
   (let ((entry (assoc s instrument-equalizer-alist)))
     (if entry
        (cdr entry))))
 
-
 (define-public (percussion? instrument)
   "
 returns whether the instrument should use midi channel 9
 "
   (let* ((inst  (symbol->string instrument))
-         (entry (assoc inst instrument-names-alist))
-       )
-     (and entry (>= (cdr entry) 32768))
-  )
-)
+         (entry (assoc inst instrument-names-alist)))
+     (and entry (>= (cdr entry) 32768))))
+
 (define-public (midi-program instrument)
 "
 returns the program of the instrument
 "
   (let* ((inst  (symbol->string instrument))
-         (entry (assoc inst instrument-names-alist))
-       )
-    (if entry (modulo (cdr entry) 32768) #f )
-  )
-)
+         (entry (assoc inst instrument-names-alist)))
+    (if entry (modulo (cdr entry) 32768) #f)))
 
 ;; 90 == 90/127 == 0.71 is supposed to be the default value
 ;; urg: we should set this at start of track
 (define-public dynamic-default-volume 0.71)
 
-(define-public (accidentals-in-key pitch-list)
+(define-public (alterations-in-key pitch-list)
   "Count number of sharps minus number of flats"
-  (apply + (map cdr pitch-list)))
-
-(define-public (major-key pitch-list)
-  "Characterise the key as major if the alteration of the 
-third scale note is the same as that of the main note.
-Note: MIDI cannot handle other tonalities than major/minor.
-"
-  ;; This charactersition is only true for a scale that starts at `c'.
-  (if (not (equal? (car pitch-list) '(0 . 0)))
-      (begin
-       (ly-warn "Attempt to determine tonality of transposed scale")
-       #t)
-  (eq? (cdr (list-ref pitch-list 4)) (cdr (list-ref pitch-list 6)))))
+  (/ (apply + (map cdr pitch-list)) 2))