The following
examples contain
three score-level settings, title
, author
and quartertones
, which affect the entire score.
All settings in FOMUS can be set at the score level.
(fms:with-score (:filename *filename* :sets '((:title "Random") (:author "David Psenicka") (:quartertones t))) (loop for o from 0 below 20 by 1/2 do (fms:note :time o :dur 1/2 :pitch (+ 65 (random 15.0))))) |
|
Figure 7.9: Score-Level Settings
(fms:setting :filename *filename*) (fms:setting :title "Random") (fms:setting :author "David Psenicka") (fms:setting :quartertones t) (loop for o from 0 below 20 by 1/2 do (fms:note :time o :dur 1/2 :pitch (+ 65 (random 15.0)))) (fms:run) |
|
Figure 7.10: Score-Level Settings without with-score
Each list of keyword/argument pairs following the percinsts
, insts
and parts
keywords is the definition for a percussion instrument, instrument or part.
See Objects for a better explanation of these objects—the purpose here is only to point out settings.
perc-note
and perc-name
are typical settings for percussion instruments (they specify the note and the text for a percussion change mark).
Because they are set in a percussion instrument definition, they affect only that object and any woodblock percussion note events.
The settings name
and abbr
usually belong in an instrument definition (they are the name and abbreviated name of the instrument).
When they are defined in a part as they are here, they override the definitions that are in the instrument that they are based on.
transpose-part
(whether or not to transpose all of the notes in a part)
should probably be defined at the score level, but can also exist in instruments or parts (as they are here).
id
, template
, percinsts
(inside the instrument definition) and insts
(inside the part definitions)
aren't really settings—they are special assignments that only affect the instrument or part that they are defined in
(see Objects for complete lists and descriptions of these special parameters).
(defun notes (maxtim parts perc pnotes) (loop for tim = 0 then (+ tim (if (< (random 1.0) 0.5) 1/2 1)) while (< tim maxtim) if (< (random 1.0) 0.666) do (fms:note :part (nth (random (length parts)) parts) ; woodwind note :time tim :dur 1/2 :pitch (+ 72 (random 7))) else do (fms:note :part perc ; percussion note :time tim :dur 1/2 :pitch (nth (random (length pnotes)) pnotes)))) (fms:with-score (:filename *filename* :sets '(:layout "orchestra") :percinsts '((:id "wb1" :template "low-woodblock" :perc-note 57 :perc-name "woodblocks") (:id "wb2" :template "high-woodblock" :perc-note 64 :perc-name "woodblocks")) :insts '((:id "prcdef" :template "percussion" :percinsts ("wb1" "wb2"))) :parts '((:id "cl1" :name "Bf Clarinet 1" :abbr "cl 1" :inst "bflat-clarinet" :transpose-part nil) (:id "cl2" :name "Bf Clarinet 2" :abbr "cl 2" :inst "bflat-clarinet" :transpose-part nil) (:id "ob" :name "Oboe" :abbr "ob" :inst "oboe") (:id "prc" :name "Percussion" :abbr "perc" :inst "prcdef"))) (notes 16 '("cl1" "cl2" "ob") "prc" '("wb1" "wb2"))) |
|
Figure 7.11: Object Settings
(defun notes (maxtim parts perc pnotes) (loop for tim = 0 then (+ tim (if (< (random 1.0) 0.5) 1/2 1)) while (< tim maxtim) if (< (random 1.0) 0.666) do (fms:note :part (nth (random (length parts)) parts) ; woodwind note :time tim :dur 1/2 :pitch (+ 72 (random 7))) else do (fms:note :part perc ; percussion note :time tim :dur 1/2 :pitch (nth (random (length pnotes)) pnotes)))) (fms:setting :filename *filename*) (fms:setting :layout "orchestra") (fms:percinst :id "wb1" :template "low-woodblock" :perc-note 57 :perc-name "woodblocks") (fms:percinst :id "wb2" :template "high-woodblock" :perc-note 64 :perc-name "woodblocks") (fms:inst :id "prcdef" :template "percussion" :percinsts '("wb1" "wb2")) (fms:part :id "cl1" :name "Bf Clarinet 1" :abbr "cl 1" :inst "bflat-clarinet" :transpose-part nil) (fms:part :id "cl2" :name "Bf Clarinet 2" :abbr "cl 2" :inst "bflat-clarinet" :transpose-part nil) (fms:part :id "ob" :name "Oboe" :abbr "ob" :inst "oboe") (fms:part :id "prc" :name "Percussion" :abbr "perc" :inst "prcdef") (notes 16 '("cl1" "cl2" "ob") "prc" '("wb1" "wb2")) (fms:run) |
|
Figure 7.12: Object Settings without with-score
This
pair of examples
shows a few settings being defined in measure and note events.
The two settings in the measure definition are comp
(compound meter) and keysig
(key signature), both of which
could be set at the score level or in a part definition instead.
The settings in the note events are staff
(staff number) and acc
(accidental choices), which override any decision FOMUS makes regarding
staff and accidental choices.
All other keyword/value pairs (e.g., time
, dur
, pitch
, etc.) are not settings, they are special parameters that belong only to that particular event.
(fms:with-score (:filename *filename*) (fms:meas :time 0 :dur 2 :comp t :keysig "gmaj") (loop for n from 0 below 20 for tim from 0 by 1/3 do (fms:note :time tim :dur 1/3 :pitch (+ 55 (* 11 (sin tim))) :staff (if (< n 10) 2 1) :acc (if (< n 10) '(n f) '(n s))))) |
|
Figure 7.13: Measure/Note Settings
(fms:setting :filename *filename*) (fms:meas :time 0 :dur 2 :comp t :keysig "gmaj") (loop for n from 0 below 20 for tim from 0 by 1/3 do (fms:note :time tim :dur 1/3 :pitch (+ 55 (* 11 (sin tim))) :staff (if (< n 10) 2 1) :acc (if (< n 10) '(n f) '(n s)))) (fms:run) |
|
Figure 7.14: Measure/Note Settings without with-score