-;;; 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--2005 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-public absolute-volume-alist '())
(set! absolute-volume-alist
(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) )
+;; (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)))
+ (/ (apply + (map cdr pitch-list)) 2))