X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdrums.scm;h=66f3cf85936db0f6783ddad01d30474470214750;hb=75a8703aa16cee634e7c817036e3112584f332f5;hp=50e40d4095a219001658933dc3bfc489262bafe1;hpb=788625d2a716299799b71f95f8a8ea1774f26134;p=lilypond.git diff --git a/scm/drums.scm b/scm/drums.scm index 50e40d4095..66f3cf8593 100644 --- a/scm/drums.scm +++ b/scm/drums.scm @@ -3,163 +3,193 @@ ;;;; changed eval to primitive-eval for guile 1.4/1.4.1 compatibility --jcn +;; TODO: the design of this hack should be rethought. + ;; ugh. Should make separate module? (define-public drum-pitch-names `( - (acousticbassdrum bda ,(ly:make-pitch -3 6 0 )) - (bassdrum bd ,(ly:make-pitch -2 0 0 )) - (hisidestick ssh ,(ly:make-pitch -3 6 2)) - (sidestick ss ,(ly:make-pitch -2 0 1)) - (losidestick ssl ,(ly:make-pitch -2 1 -1)) - (acousticsnare sna ,(ly:make-pitch -2 1 0)) - (snare sn ,(ly:make-pitch -2 2 -2)) - (handclap hc ,(ly:make-pitch -2 1 1)) - (electricsnare sne ,(ly:make-pitch -2 2 0)) - (lowfloortom tomfl ,(ly:make-pitch -2 3 0)) - (closedhihat hhc ,(ly:make-pitch -2 3 1)) - (hihat hh ,(ly:make-pitch -2 4 -1)) - (highfloortom tomfh ,(ly:make-pitch -2 4 0)) - (pedalhihat hhp ,(ly:make-pitch -2 4 1)) - (lowtom toml ,(ly:make-pitch -2 5 0)) - (openhihat hho ,(ly:make-pitch -2 5 1)) - (halfopenhihat hhho ,(ly:make-pitch -2 5 1)) - (lowmidtom tomml ,(ly:make-pitch -2 6 0)) - (himidtom tommh ,(ly:make-pitch -1 0 0)) - (crashcymbala cymca ,(ly:make-pitch -1 0 1)) - (crashcymbal cymc ,(ly:make-pitch -1 1 -1)) - (hightom tomh ,(ly:make-pitch -1 1 0)) - (ridecymbala cymra ,(ly:make-pitch -1 1 1)) - (ridecymbal cymr ,(ly:make-pitch -1 2 -1)) - (chinesecymbal cymch ,(ly:make-pitch -1 2 0)) - (ridebell rb ,(ly:make-pitch -1 3 0)) - (tambourine tamb ,(ly:make-pitch -1 3 1)) - (splashcymbal cyms ,(ly:make-pitch -1 4 0)) - (cowbell cb ,(ly:make-pitch -1 4 1)) - (crashcymbalb cymcb ,(ly:make-pitch -1 5 0)) - (vibraslap vibs ,(ly:make-pitch -1 5 1)) - (ridecymbalb cymrb ,(ly:make-pitch -1 6 0)) - (mutehibongo bohm ,(ly:make-pitch -1 6 1)) - (hibongo boh ,(ly:make-pitch 0 0 0)) - (openhibongo boho ,(ly:make-pitch 0 1 -2)) - (mutelobongo bolm ,(ly:make-pitch -1 6 2)) - (lobongo bol ,(ly:make-pitch 0 0 1)) - (openlobongo bolo ,(ly:make-pitch 0 1 -1)) - (mutehiconga cghm ,(ly:make-pitch 0 1 0)) - (muteloconga cglm ,(ly:make-pitch 0 2 -2)) - (openhiconga cgho ,(ly:make-pitch 0 1 1)) - (hiconga cgh ,(ly:make-pitch 0 2 -1)) - (openloconga cglo ,(ly:make-pitch 0 1 2)) - (loconga cgl ,(ly:make-pitch 0 2 0)) - (hitimbale timh ,(ly:make-pitch 0 3 0)) - (lotimbale timl ,(ly:make-pitch 0 3 1)) - (hiagogo agh ,(ly:make-pitch 0 4 0)) - (loagogo agl ,(ly:make-pitch 0 4 1)) - (cabasa cab ,(ly:make-pitch 0 5 0)) - (maracas mar ,(ly:make-pitch 0 5 1)) - (shortwhistle whs ,(ly:make-pitch 0 6 0)) - (longwhistle whl ,(ly:make-pitch 1 0 0)) - (shortguiro guis ,(ly:make-pitch 1 0 1)) - (longguiro guil ,(ly:make-pitch 1 1 0)) - (guiro gui ,(ly:make-pitch 1 0 2)) - (claves cl ,(ly:make-pitch 1 1 1)) - (hiwoodblock wbh ,(ly:make-pitch 1 2 0)) - (lowoodblock wbl ,(ly:make-pitch 1 3 0)) - (mutecuica cuim ,(ly:make-pitch 1 3 1)) - (opencuica cuio ,(ly:make-pitch 1 4 0)) - (mutetriangle trim ,(ly:make-pitch 1 4 1)) - (triangle tri ,(ly:make-pitch 1 4 2)) - (opentriangle trio ,(ly:make-pitch 1 5 0)) + (acousticbassdrum bda ,(ly:make-pitch -3 6 NATURAL)) + (bassdrum bd ,(ly:make-pitch -2 0 NATURAL)) + (hisidestick ssh ,(ly:make-pitch -3 6 DOUBLE-SHARP)) + (sidestick ss ,(ly:make-pitch -2 0 SHARP)) + (losidestick ssl ,(ly:make-pitch -2 1 FLAT)) + (acousticsnare sna ,(ly:make-pitch -2 1 NATURAL)) + (snare sn ,(ly:make-pitch -2 2 DOUBLE-FLAT)) + (handclap hc ,(ly:make-pitch -2 1 SHARP)) + (electricsnare sne ,(ly:make-pitch -2 2 NATURAL)) + (lowfloortom tomfl ,(ly:make-pitch -2 3 NATURAL)) + (closedhihat hhc ,(ly:make-pitch -2 3 SHARP)) + (hihat hh ,(ly:make-pitch -2 4 FLAT)) + (highfloortom tomfh ,(ly:make-pitch -2 4 NATURAL)) + (pedalhihat hhp ,(ly:make-pitch -2 4 SHARP)) + (lowtom toml ,(ly:make-pitch -2 5 NATURAL)) + (openhihat hho ,(ly:make-pitch -2 5 SHARP)) + (halfopenhihat hhho ,(ly:make-pitch -2 5 SHARP)) + (lowmidtom tomml ,(ly:make-pitch -2 6 NATURAL)) + (himidtom tommh ,(ly:make-pitch -1 0 NATURAL)) + (crashcymbala cymca ,(ly:make-pitch -1 0 SHARP)) + (crashcymbal cymc ,(ly:make-pitch -1 1 FLAT)) + (hightom tomh ,(ly:make-pitch -1 1 NATURAL)) + (ridecymbala cymra ,(ly:make-pitch -1 1 SHARP)) + (ridecymbal cymr ,(ly:make-pitch -1 2 FLAT)) + (chinesecymbal cymch ,(ly:make-pitch -1 2 NATURAL)) + (ridebell rb ,(ly:make-pitch -1 3 NATURAL)) + (tambourine tamb ,(ly:make-pitch -1 3 SHARP)) + (splashcymbal cyms ,(ly:make-pitch -1 4 NATURAL)) + (cowbell cb ,(ly:make-pitch -1 4 SHARP)) + (crashcymbalb cymcb ,(ly:make-pitch -1 5 NATURAL)) + (vibraslap vibs ,(ly:make-pitch -1 5 SHARP)) + (ridecymbalb cymrb ,(ly:make-pitch -1 6 NATURAL)) + (mutehibongo bohm ,(ly:make-pitch -1 6 SHARP)) + (hibongo boh ,(ly:make-pitch 0 0 NATURAL)) + (openhibongo boho ,(ly:make-pitch 0 1 DOUBLE-FLAT)) + (mutelobongo bolm ,(ly:make-pitch -1 6 DOUBLE-SHARP)) + (lobongo bol ,(ly:make-pitch 0 0 SHARP)) + (openlobongo bolo ,(ly:make-pitch 0 1 FLAT)) + (mutehiconga cghm ,(ly:make-pitch 0 1 NATURAL)) + (muteloconga cglm ,(ly:make-pitch 0 2 DOUBLE-FLAT)) + (openhiconga cgho ,(ly:make-pitch 0 1 SHARP)) + (hiconga cgh ,(ly:make-pitch 0 2 FLAT)) + (openloconga cglo ,(ly:make-pitch 0 1 DOUBLE-SHARP)) + (loconga cgl ,(ly:make-pitch 0 2 NATURAL)) + (hitimbale timh ,(ly:make-pitch 0 3 NATURAL)) + (lotimbale timl ,(ly:make-pitch 0 3 SHARP)) + (hiagogo agh ,(ly:make-pitch 0 4 NATURAL)) + (loagogo agl ,(ly:make-pitch 0 4 SHARP)) + (cabasa cab ,(ly:make-pitch 0 5 NATURAL)) + (maracas mar ,(ly:make-pitch 0 5 SHARP)) + (shortwhistle whs ,(ly:make-pitch 0 6 NATURAL)) + (longwhistle whl ,(ly:make-pitch 1 0 NATURAL)) + (shortguiro guis ,(ly:make-pitch 1 0 SHARP)) + (longguiro guil ,(ly:make-pitch 1 1 NATURAL)) + (guiro gui ,(ly:make-pitch 1 0 DOUBLE-SHARP)) + (claves cl ,(ly:make-pitch 1 1 SHARP)) + (hiwoodblock wbh ,(ly:make-pitch 1 2 NATURAL)) + (lowoodblock wbl ,(ly:make-pitch 1 3 NATURAL)) + (mutecuica cuim ,(ly:make-pitch 1 3 SHARP)) + (opencuica cuio ,(ly:make-pitch 1 4 NATURAL)) + (mutetriangle trim ,(ly:make-pitch 1 4 SHARP)) + (triangle tri ,(ly:make-pitch 1 4 DOUBLE-SHARP)) + (opentriangle trio ,(ly:make-pitch 1 5 NATURAL)) ;; "transposing" pitches: - (oneup ua ,(ly:make-pitch 0 1 0)) - (twoup ub ,(ly:make-pitch 0 2 0)) - (threeup uc ,(ly:make-pitch 0 3 0)) - (fourup ud ,(ly:make-pitch 0 4 0)) - (fiveup ue ,(ly:make-pitch 0 5 0)) - (onedown da ,(ly:make-pitch -1 6 0)) - (twodown db ,(ly:make-pitch -1 5 0)) - (threedown dc ,(ly:make-pitch -1 4 0)) - (fourdown dd ,(ly:make-pitch -1 3 0)) - (fivedown de ,(ly:make-pitch -1 2 0)) + (oneup ua ,(ly:make-pitch 0 1 NATURAL)) + (twoup ub ,(ly:make-pitch 0 2 NATURAL)) + (threeup uc ,(ly:make-pitch 0 3 NATURAL)) + (fourup ud ,(ly:make-pitch 0 4 NATURAL)) + (fiveup ue ,(ly:make-pitch 0 5 NATURAL)) + (onedown da ,(ly:make-pitch -1 6 NATURAL)) + (twodown db ,(ly:make-pitch -1 5 NATURAL)) + (threedown dc ,(ly:make-pitch -1 4 NATURAL)) + (fourdown dd ,(ly:make-pitch -1 3 NATURAL)) + (fivedown de ,(ly:make-pitch -1 2 NATURAL)) )) -(define-public drums `( - (acousticbassdrum default #f ,(ly:make-pitch -1 4 0)) - (bassdrum default #f ,(ly:make-pitch -1 4 0)) - (sidestick cross #f ,(ly:make-pitch 0 1 0)) - (acousticsnare default #f ,(ly:make-pitch 0 1 0)) - (snare default #f ,(ly:make-pitch 0 1 0)) - (handclap triangle #f ,(ly:make-pitch 0 1 0)) - (electricsnare default #f ,(ly:make-pitch 0 1 0)) - (lowfloortom default #f ,(ly:make-pitch -1 3 0)) - (closedhihat cross "stopped" ,(ly:make-pitch 0 3 0)) - (hihat cross #f ,(ly:make-pitch 0 3 0)) - (highfloortom default #f ,(ly:make-pitch -1 5 0)) - (pedalhihat cross #f ,(ly:make-pitch -1 2 0)) - (lowtom default #f ,(ly:make-pitch -1 6 0)) - (openhihat cross "open" ,(ly:make-pitch 0 3 0)) - (halfopenhihat xcircle #f ,(ly:make-pitch 0 3 0)) - (lowmidtom default #f ,(ly:make-pitch 0 0 0)) - (himidtom default #f ,(ly:make-pitch 0 2 0)) - (crashcymbala xcircle #f ,(ly:make-pitch 0 5 0)) - (crashcymbal xcircle #f ,(ly:make-pitch 0 5 0)) - (hightom default #f ,(ly:make-pitch 0 4 0)) - (ridecymbala cross #f ,(ly:make-pitch 0 5 0)) - (ridecymbal cross #f ,(ly:make-pitch 0 5 0)) - (chinesecymbal mensural #f ,(ly:make-pitch 0 5 0)) - (ridebell default #f ,(ly:make-pitch 0 5 0)) - (splashcymbal diamond #f ,(ly:make-pitch 0 5 0)) - (cowbell triangle #f ,(ly:make-pitch 0 5 0)) - (crashcymbalb cross #f ,(ly:make-pitch 0 5 0)) - (vibraslap diamond #f ,(ly:make-pitch 0 4 0)) - (ridecymbalb cross #f ,(ly:make-pitch 0 5 0)) - )) - -(define-public timbales `( - (losidestick cross #f ,(ly:make-pitch -1 6 0)) - (lotimbale default #f ,(ly:make-pitch -1 6 0)) - (cowbell triangle #f ,(ly:make-pitch 0 2 0)) - (hisidestick cross #f ,(ly:make-pitch 0 1 0)) - (hitimbale default #f ,(ly:make-pitch 0 1 0)) - )) - -(define-public congas `( - (losidestick cross #f ,(ly:make-pitch -1 6 0)) - (loconga default #f ,(ly:make-pitch -1 6 0)) - (openloconga default "open" ,(ly:make-pitch -1 6 0)) - (muteloconga default "stopped" ,(ly:make-pitch -1 6 0)) - (hisidestick cross #f ,(ly:make-pitch 0 1 0)) - (hiconga default #f ,(ly:make-pitch 0 1 0)) - (openhiconga default "open" ,(ly:make-pitch 0 1 0)) - (mutehiconga default "stopped" ,(ly:make-pitch 0 1 0)) - - )) - -(define-public bongos `( - (losidestick cross #f ,(ly:make-pitch -1 6 0)) - (lobongo default #f ,(ly:make-pitch -1 6 0)) - (openlobongo default "open" ,(ly:make-pitch -1 6 0)) - (mutelobongo default "stopped" ,(ly:make-pitch -1 6 0)) - (hisidestick cross #f ,(ly:make-pitch 0 1 0)) - (hibongo default #f ,(ly:make-pitch 0 1 0)) - (openhibongo default "open" ,(ly:make-pitch 0 1 0)) - (mutehibongo default "stopped" ,(ly:make-pitch 0 1 0)) - )) - - -(define-public percussion `( - (opentriangle cross "open" ,(ly:make-pitch 0 0 0)) - (mutetriangle cross "stopped" ,(ly:make-pitch 0 0 0)) - (triangle cross #f ,(ly:make-pitch 0 0 0)) - (shortguiro default "staccato",(ly:make-pitch 0 0 0)) - (longguiro default "tenuto" ,(ly:make-pitch 0 0 0)) - (guiro default #f ,(ly:make-pitch 0 0 0)) - (cowbell triangle #f ,(ly:make-pitch 0 0 0)) - (claves default #f ,(ly:make-pitch 0 0 0)) - (tambourine default #f ,(ly:make-pitch 0 0 0)) - (cabasa cross #f ,(ly:make-pitch 0 0 0)) - (maracas default #f ,(ly:make-pitch 0 0 0)) - (handclap default #f ,(ly:make-pitch 0 0 0)) - )) +;; +;; all settings for percussive instruments. +;; public so people can add their own stuff. +;; + +(define-public + percussive-instrument-init-settings + `((drums + . ( + (acousticbassdrum default #f ,(ly:make-pitch -1 4 NATURAL)) + (bassdrum default #f ,(ly:make-pitch -1 4 NATURAL)) + (sidestick cross #f ,(ly:make-pitch 0 1 NATURAL)) + (acousticsnare default #f ,(ly:make-pitch 0 1 NATURAL)) + (snare default #f ,(ly:make-pitch 0 1 NATURAL)) + (handclap triangle #f ,(ly:make-pitch 0 1 NATURAL)) + (electricsnare default #f ,(ly:make-pitch 0 1 NATURAL)) + (lowfloortom default #f ,(ly:make-pitch -1 3 NATURAL)) + (closedhihat cross "stopped" ,(ly:make-pitch 0 3 NATURAL)) + (hihat cross #f ,(ly:make-pitch 0 3 NATURAL)) + (highfloortom default #f ,(ly:make-pitch -1 5 NATURAL)) + (pedalhihat cross #f ,(ly:make-pitch -1 2 NATURAL)) + (lowtom default #f ,(ly:make-pitch -1 6 NATURAL)) + (openhihat cross "open" ,(ly:make-pitch 0 3 NATURAL)) + (halfopenhihat xcircle #f ,(ly:make-pitch 0 3 NATURAL)) + (lowmidtom default #f ,(ly:make-pitch 0 0 NATURAL)) + (himidtom default #f ,(ly:make-pitch 0 2 NATURAL)) + (crashcymbala xcircle #f ,(ly:make-pitch 0 5 NATURAL)) + (crashcymbal xcircle #f ,(ly:make-pitch 0 5 NATURAL)) + (hightom default #f ,(ly:make-pitch 0 4 NATURAL)) + (ridecymbala cross #f ,(ly:make-pitch 0 5 NATURAL)) + (ridecymbal cross #f ,(ly:make-pitch 0 5 NATURAL)) + (chinesecymbal mensural #f ,(ly:make-pitch 0 5 NATURAL)) + (ridebell default #f ,(ly:make-pitch 0 5 NATURAL)) + (splashcymbal diamond #f ,(ly:make-pitch 0 5 NATURAL)) + (cowbell triangle #f ,(ly:make-pitch 0 5 NATURAL)) + (crashcymbalb cross #f ,(ly:make-pitch 0 5 NATURAL)) + (vibraslap diamond #f ,(ly:make-pitch 0 4 NATURAL)) + (ridecymbalb cross #f ,(ly:make-pitch 0 5 NATURAL)) + )) + + (timbales + . ( + (losidestick cross #f ,(ly:make-pitch -1 6 NATURAL)) + (lotimbale default #f ,(ly:make-pitch -1 6 NATURAL)) + (cowbell triangle #f ,(ly:make-pitch 0 2 NATURAL)) + (hisidestick cross #f ,(ly:make-pitch 0 1 NATURAL)) + (hitimbale default #f ,(ly:make-pitch 0 1 NATURAL)) + )) + + (congas + . ( + (losidestick cross #f ,(ly:make-pitch -1 6 NATURAL)) + (loconga default #f ,(ly:make-pitch -1 6 NATURAL)) + (openloconga default "open" ,(ly:make-pitch -1 6 NATURAL)) + (muteloconga default "stopped" ,(ly:make-pitch -1 6 NATURAL)) + (hisidestick cross #f ,(ly:make-pitch 0 1 NATURAL)) + (hiconga default #f ,(ly:make-pitch 0 1 NATURAL)) + (openhiconga default "open" ,(ly:make-pitch 0 1 NATURAL)) + (mutehiconga default "stopped" ,(ly:make-pitch 0 1 NATURAL)) + )) + + (bongos + . ( + (losidestick cross #f ,(ly:make-pitch -1 6 NATURAL)) + (lobongo default #f ,(ly:make-pitch -1 6 NATURAL)) + (openlobongo default "open" ,(ly:make-pitch -1 6 NATURAL)) + (mutelobongo default "stopped" ,(ly:make-pitch -1 6 NATURAL)) + (hisidestick cross #f ,(ly:make-pitch 0 1 NATURAL)) + (hibongo default #f ,(ly:make-pitch 0 1 NATURAL)) + (openhibongo default "open" ,(ly:make-pitch 0 1 NATURAL)) + (mutehibongo default "stopped" ,(ly:make-pitch 0 1 NATURAL)) + )) + + + (percussion + . ( + (opentriangle cross "open" ,(ly:make-pitch 0 0 NATURAL)) + (mutetriangle cross "stopped" ,(ly:make-pitch 0 0 NATURAL)) + (triangle cross #f ,(ly:make-pitch 0 0 NATURAL)) + (shortguiro default "staccato",(ly:make-pitch 0 0 NATURAL)) + (longguiro default "tenuto" ,(ly:make-pitch 0 0 NATURAL)) + (guiro default #f ,(ly:make-pitch 0 0 NATURAL)) + (cowbell triangle #f ,(ly:make-pitch 0 0 NATURAL)) + (claves default #f ,(ly:make-pitch 0 0 NATURAL)) + (tambourine default #f ,(ly:make-pitch 0 0 NATURAL)) + (cabasa cross #f ,(ly:make-pitch 0 0 NATURAL)) + (maracas default #f ,(ly:make-pitch 0 0 NATURAL)) + (handclap default #f ,(ly:make-pitch 0 0 NATURAL)) + )) + )) + + +(define percussive-instrument-settings percussive-instrument-init-settings) + +;; don't use assoc-set!, since this will overwrite Scheme defaults, and leak +;; into other files. +(define-public (set-drum-kit kit value) + (set! percussive-instrument-settings + (acons kit value percussive-instrument-settings))) + +(define-public (reset-drum-kit) + (set! percussive-instrument-settings percussive-instrument-init-settings)) + +(define-public (get-drum-kit kit) + (assoc-get-default kit percussive-instrument-settings '())) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; @@ -201,10 +231,10 @@ ) (define (make-head-type t) - (context-spec-music (make-head-type-elem t) "Thread")) + (context-spec-music (make-head-type-elem t) 'Thread)) (define (make-thread-context thread-name element) - (context-spec-music element "Thread" thread-name)) + (context-spec-music element 'Thread thread-name)) ;; makes a sequential-music of thread-context, head-change and note (define (make-drum-head kit req-ch ) @@ -225,7 +255,7 @@ ) (add-articulation-script req-ch script) (ly:set-mus-property! fe 'pitch pitch) - (set! req-ch (make-thread-context style seq)) + (set! req-ch (make-thread-context (symbol->string style) seq)) req-ch ) ) @@ -241,7 +271,7 @@ (begin (display p) ;; UGH. FIXME. pitch->string ??? (ly:warn " unknown drumpitch.") - (cdar (primitive-eval kit)) + (cdar (get-drum-kit kit)) )) ((eq? p (caddr (car pitches))) ((name->paper kit) (caar pitches)) ) (else (p2p (cdr pitches) ) ) @@ -250,12 +280,12 @@ ) (define ((name->paper kit) n) - (let n2p ((pitches (primitive-eval kit))) + (let n2p ((pitches (get-drum-kit kit))) (cond ((eq? pitches '()) (begin (ly:warn (string-append "Kit `" (symbol->string kit) "' doesn't contain drum `" n "'\nSee ly/drumpitch-init.ly for supported drums.")) - (cdar (primitive-eval kit)) + (cdar (get-drum-kit kit)) )) ((eq? n (caar pitches)) (cdar pitches) ) (else (n2p (cdr pitches) ) ) @@ -263,8 +293,9 @@ ) ) - +;; ;; converts a midi-pitched (ly/drumpitch.ly) file to paper output. +;; (define-public ((drums->paper kit) music) (begin (if (equal? (ly:get-mus-property music 'name) 'EventChord) @@ -294,10 +325,8 @@ (ly:set-mus-property! music 'element ((drums->paper kit) e)) - ) - ) - ) - ) + )))) music - ) - ) + )) + +