-;;; 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--2009 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))
)
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)))))))