]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/midi.scm
Run `make grand-replace'.
[lilypond.git] / scm / midi.scm
index 0bf117a2f928a46a271f9dec7d32ba1e8772dd5b..9a7bcb5e68492f981dea1e01046ae77b178bd0e4 100644 (file)
@@ -1,8 +1,8 @@
-;;; midi.scm -- scm midi variables and functions
-;;;
-;;;  source file of the GNU LilyPond music typesetter
-;;; 
-;;; (c)  2000--2003 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;; midi.scm -- scm midi variables and functions
+;;;;
+;;;;  source file of the GNU LilyPond music typesetter
+;;;; 
+;;;; (c) 2000--2008 Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
       '(
        ("sf" . 1.00)
        ("fffff" . 0.95)
-       ("ffff" . 0.91)
-       ("fff" . 0.81)
-       ("ff" . 0.71)
-       ("f" . 0.61)
-       ("mf" . 0.50)
-       ("mp" . 0.40)
-       ("p" . 0.30)
-       ("pp" . 0.20)
-       ("ppp" . 0.10)
-       ("pppp" . 0.08)
-       ("ppppp" . 0.05)
+       ("ffff" . 0.92)
+       ("fff" . 0.85)
+       ("ff" . 0.80)
+       ("f" . 0.75)
+       ("mf" . 0.68)
+       ("mp" . 0.61)
+       ("p" . 0.55)
+       ("pp" . 0.49)
+       ("ppp" . 0.42)
+       ("pppp" . 0.34)
+       ("ppppp" . 0.25)
        )
       absolute-volume-alist))
 
@@ -42,7 +42,7 @@
 (set! instrument-equalizer-alist
       (append 
        '(
-        ("flute" . (0 . 0.07))
+        ("flute" . (0 . 0.7))
         ("oboe" . (0 . 0.7))
         ("clarinet" . (0 . 0.7))
         ("bassoon" . (0 . 0.6))
         )
        instrument-equalizer-alist))
 
-;; (name . program+32768*(channel10 ? 1 : 0) )
+(define-public (default-instrument-equalizer s)
+  (let ((entry (assoc s instrument-equalizer-alist)))
+    (if entry
+       (cdr entry))))
+
+;; (name . program+32768*(channel10 ? 1 : 0))
 (define instrument-names-alist '())
 (set! instrument-names-alist
       (append
          ("mt-32 drums" .      ,(+ 32768 127))
          ("cm-64 kit" .        ,(+ 32768 127))
          ("cm-64 drums" .      ,(+ 32768 127))
-       )
-        instrument-names-alist
-      )
-)
-
-
-(define-public (default-instrument-equalizer s)
-  (let ((entry (assoc s instrument-equalizer-alist)))
-    (if entry
-       (cdr entry))))
-
+         )
+       instrument-names-alist))
 
 (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)))
+  
+  (* (apply + (map cdr pitch-list)) 2))
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+
+(define-public (write-performances-midis performances basename . rest)
+  (let ((midi-ext (ly:get-option 'midi-extension)))
+    (let
+       loop
+      ((perfs performances)
+       (count (if (null? rest) 0 (car rest))))
+      (if (pair?  perfs)
+         (begin
+           (ly:performance-write
+            (car perfs)
+            (if (> count 0)
+                (format #f "~a-~a.~a" basename count midi-ext)
+                (format #f "~a.~a" basename midi-ext)))
+           (loop (cdr perfs) (1+ count)))))))