A decade ago I wrote the attached header persian.ly which supports Persian music notation + microtuning. A hack with a downloaded font is necessary as the Persian microtonal symbols, the koron and sori are not available in Lilypond, Strange, as these have been standard for over a century and there is a substantial body of music written requiring it. I'm still getting occasional requests for the package and I've used it to transcribe and compose many hours of Persian traditional music.
At the time it was version 2.12.2 and I took a snapshot of that version with the additional fonts already installed and an "example" directory to illustrate usage of persian.ly. Available at https://persianney.com/misc/LilyPond.zip <http://persianney.com/misc/LilyPond.zip> It does not work anymore with current Lilypond version: when compiling provided example (after copying font files as documented in persian.ly) it trips over "(ly:parser-set-note-names parser pitchnames)" but that may not be all. I noticed there is no type1 directory anymore in the current Lilypond version. Anyone have an idea on how I can get it to work with current version? It works perfectly fine with the old version, but it is a bit annoying to be forced to use 2.12. Thanks, Kees
\version "2.12.2" %{ Author: Kees van den Doel kvand...@shaw.ca Init file for Persian music notation. To use download the PostScript Type 1 Microtonal Font from Andrián Pertout (http://www.pertout.com/PhD2007Introduction.htm) and copy the .pfb file into the directory LilyPond/usr/share/lilypond/current/fonts/type1. This header file defines Persian microtonal alterations, the approximate quartertone flat (koron) and the approximate quartertone sharp (sori). They can be obtained by appending 'k' (koron) and 'o' (sori) to the English note symbol. The standard symbols for this were introduced by Vaziri. Key signatures are defined for all the Persian modes, there are 5 distinct scales with microtones and the normal major scale. All the gushe's from all dastgahs can be notated with just these 6. The note immediately following a koron is sometimes (when the interval defined by the note before the koron and after the koron is a minor third, and the note below the finalis in esfahan according to some (but not all) Persian musicians)) lowered by about 20 cents. This is not notated, but considered part of the scale tuning. To accomodate this for getting better sounding MIDI I've introduced the "vlat" (append 'v' to the note) to indicate this. Actually this note should also get a strong vibrato, and the vibrato and low tuning are perceptually integrated (serialism!). This is just for MIDI and has no effect on the notation. In the tuning I've followed "Traditional Persian Art Music, by Dariush Tala'i". The tunings are also very close to those suggested in "The Dastgah Concept in Persian Music, by Hormoz Farhat". See also "Le repertoire-modele de la musique iranienne, by Jean During" which contains measurements of the intervals in actual practice, consistent with the tuning in this file. There are no other tuning issues in Persian music. Because the music is monophonic the difference between just intonation (for example) and equal temperament is merely academic, because are no chords where out of tune intervals are noticeable. Note name suffixes: ff for double-flat f for flat k for koron (about quarter-flat, -3/10 of whole tone, 60 cent) o for sori (about quarter-sharp, 2/10 of whole tone, 40 cent) s for sharp x for double-sharp v for 20 cent flat tuned note ("vlat", not notated) fv for flat tuned 20C down (notated as a normal flat) sv for sharp tuned 20C down (notated as a normal sharp: will never occur in traditional Persian music) 6 Persian key signatures are provided they are: shur? (shur gushe's with natural 5th degree) shurk? (shur gushe's with koron 5th degree) esfahan? mokhalefsegah? chahargah? mahur? where ? is the key (A-G) of the mode. Setting the key signatures requires two commmands, one to define the alterations, and one to set the key signature (append "Key" to the name). For example for chahargah in D: \include "persian.ly" \score { \relative c' { \set Staff.keySignature = \chahargahD \override Score.KeySignature #'text = #chahargahDKey bk'8 a gs fo r g ak g fs ek d c d ef16 d c4 } \midi { } \layout { } } } %} % Define tunings: #(define-public KORON -3/10) #(define-public SORI 1/5) #(define-public VLAT -1/10) #(define-public FVLAT -3/5) #(define-public SVLAT 2/5) pitchnamesEnglish = #`( (cflatflat . ,(ly:make-pitch -1 0 DOUBLE-FLAT)) (cflat . ,(ly:make-pitch -1 0 FLAT)) (c . ,(ly:make-pitch -1 0 NATURAL)) (csharp . ,(ly:make-pitch -1 0 SHARP)) (csharpsharp . ,(ly:make-pitch -1 0 DOUBLE-SHARP)) (dflatflat . ,(ly:make-pitch -1 1 DOUBLE-FLAT)) (dflat . ,(ly:make-pitch -1 1 FLAT)) (d . ,(ly:make-pitch -1 1 NATURAL)) (dsharp . ,(ly:make-pitch -1 1 SHARP)) (dsharpsharp . ,(ly:make-pitch -1 1 DOUBLE-SHARP)) (eflatflat . ,(ly:make-pitch -1 2 DOUBLE-FLAT)) (eflat . ,(ly:make-pitch -1 2 FLAT)) (e . ,(ly:make-pitch -1 2 NATURAL)) (esharp . ,(ly:make-pitch -1 2 SHARP)) (esharpsharp . ,(ly:make-pitch -1 2 DOUBLE-SHARP)) (fflatflat . ,(ly:make-pitch -1 3 DOUBLE-FLAT)) (fflat . ,(ly:make-pitch -1 3 FLAT)) (f . ,(ly:make-pitch -1 3 NATURAL)) (fsharp . ,(ly:make-pitch -1 3 SHARP)) (fsharpsharp . ,(ly:make-pitch -1 3 DOUBLE-SHARP)) (gflatflat . ,(ly:make-pitch -1 4 DOUBLE-FLAT)) (gflat . ,(ly:make-pitch -1 4 FLAT)) (g . ,(ly:make-pitch -1 4 NATURAL)) (gsharp . ,(ly:make-pitch -1 4 SHARP)) (gsharpsharp . ,(ly:make-pitch -1 4 DOUBLE-SHARP)) (aflatflat . ,(ly:make-pitch -1 5 DOUBLE-FLAT)) (aflat . ,(ly:make-pitch -1 5 FLAT)) (a . ,(ly:make-pitch -1 5 NATURAL)) (asharp . ,(ly:make-pitch -1 5 SHARP)) (asharpsharp . ,(ly:make-pitch -1 5 DOUBLE-SHARP)) (bflatflat . ,(ly:make-pitch -1 6 DOUBLE-FLAT)) (bflat . ,(ly:make-pitch -1 6 FLAT)) (b . ,(ly:make-pitch -1 6 NATURAL)) (bsharp . ,(ly:make-pitch -1 6 SHARP)) (bsharpsharp . ,(ly:make-pitch -1 6 DOUBLE-SHARP)) (cff . ,(ly:make-pitch -1 0 DOUBLE-FLAT)) (cf . ,(ly:make-pitch -1 0 FLAT)) (cv . ,(ly:make-pitch -1 0 VLAT)) (cfv . ,(ly:make-pitch -1 0 FVLAT)) (ck . ,(ly:make-pitch -1 0 KORON)) (c . ,(ly:make-pitch -1 0 NATURAL)) (co . ,(ly:make-pitch -1 0 SORI)) (cs . ,(ly:make-pitch -1 0 SHARP)) (csv . ,(ly:make-pitch -1 0 SVLAT)) (css . ,(ly:make-pitch -1 0 DOUBLE-SHARP)) (cx . ,(ly:make-pitch -1 0 DOUBLE-SHARP)) (dff . ,(ly:make-pitch -1 1 DOUBLE-FLAT)) (df . ,(ly:make-pitch -1 1 FLAT)) (dv . ,(ly:make-pitch -1 1 VLAT)) (dfv . ,(ly:make-pitch -1 1 FVLAT)) (dk . ,(ly:make-pitch -1 1 KORON)) (d . ,(ly:make-pitch -1 1 NATURAL)) (do . ,(ly:make-pitch -1 1 SORI)) (ds . ,(ly:make-pitch -1 1 SHARP)) (dsv . ,(ly:make-pitch -1 1 SVLAT)) (dss . ,(ly:make-pitch -1 1 DOUBLE-SHARP)) (dx . ,(ly:make-pitch -1 1 DOUBLE-SHARP)) (eff . ,(ly:make-pitch -1 2 DOUBLE-FLAT)) (ef . ,(ly:make-pitch -1 2 FLAT)) (ev . ,(ly:make-pitch -1 2 VLAT)) (efv . ,(ly:make-pitch -1 2 FVLAT)) (ek . ,(ly:make-pitch -1 2 KORON)) (e . ,(ly:make-pitch -1 2 NATURAL)) (eo . ,(ly:make-pitch -1 2 SORI)) (es . ,(ly:make-pitch -1 2 SHARP)) (esv . ,(ly:make-pitch -1 2 SVLAT)) (ess . ,(ly:make-pitch -1 2 DOUBLE-SHARP)) (ex . ,(ly:make-pitch -1 2 DOUBLE-SHARP)) (fff . ,(ly:make-pitch -1 3 DOUBLE-FLAT)) (ff . ,(ly:make-pitch -1 3 FLAT)) (fv . ,(ly:make-pitch -1 3 VLAT)) (ffv . ,(ly:make-pitch -1 3 FVLAT)) (fk . ,(ly:make-pitch -1 3 KORON)) (f . ,(ly:make-pitch -1 3 NATURAL)) (fo . ,(ly:make-pitch -1 3 SORI)) (fs . ,(ly:make-pitch -1 3 SHARP)) (fsv . ,(ly:make-pitch -1 3 SVLAT)) (fss . ,(ly:make-pitch -1 3 DOUBLE-SHARP)) (fx . ,(ly:make-pitch -1 3 DOUBLE-SHARP)) (gff . ,(ly:make-pitch -1 4 DOUBLE-FLAT)) (gf . ,(ly:make-pitch -1 4 FLAT)) (gv . ,(ly:make-pitch -1 4 VLAT)) (gfv . ,(ly:make-pitch -1 4 FVLAT)) (gk . ,(ly:make-pitch -1 4 KORON)) (g . ,(ly:make-pitch -1 4 NATURAL)) (go . ,(ly:make-pitch -1 4 SORI)) (gs . ,(ly:make-pitch -1 4 SHARP)) (gsv . ,(ly:make-pitch -1 4 SVLAT)) (gss . ,(ly:make-pitch -1 4 DOUBLE-SHARP)) (gx . ,(ly:make-pitch -1 4 DOUBLE-SHARP)) (aff . ,(ly:make-pitch -1 5 DOUBLE-FLAT)) (af . ,(ly:make-pitch -1 5 FLAT)) (av . ,(ly:make-pitch -1 5 VLAT)) (afv . ,(ly:make-pitch -1 5 FVLAT)) (ak . ,(ly:make-pitch -1 5 KORON)) (a . ,(ly:make-pitch -1 5 NATURAL)) (ao . ,(ly:make-pitch -1 5 SORI)) (as . ,(ly:make-pitch -1 5 SHARP)) (asv . ,(ly:make-pitch -1 5 SVLAT)) (ass . ,(ly:make-pitch -1 5 DOUBLE-SHARP)) (ax . ,(ly:make-pitch -1 5 DOUBLE-SHARP)) (bff . ,(ly:make-pitch -1 6 DOUBLE-FLAT)) (bf . ,(ly:make-pitch -1 6 FLAT)) (bv . ,(ly:make-pitch -1 6 VLAT)) (bfv . ,(ly:make-pitch -1 6 FVLAT)) (bk . ,(ly:make-pitch -1 6 KORON)) (b . ,(ly:make-pitch -1 6 NATURAL)) (bo . ,(ly:make-pitch -1 6 SORI)) (bs . ,(ly:make-pitch -1 6 SHARP)) (bsv . ,(ly:make-pitch -1 6 SVLAT)) (bss . ,(ly:make-pitch -1 6 DOUBLE-SHARP)) (bx . ,(ly:make-pitch -1 6 DOUBLE-SHARP)) ) % Define accidental symbols. % Really need to have accidentals.koron and accidentals.sori persianGlyphs = #`((-3/10 . "accidentals.mirroredflat") (1/5 . "accidentals.sharp.slashslash.stem") (0 . "accidentals.natural") (1/2 . "accidentals.sharp") (2/5 . "accidentals.sharp") (-1/2 . "accidentals.flat") (-3/5 . "accidentals.flat") (-1/10 . "") (-3/5 . "") (-1 . "accidentals.flatflat") ( 1 . "accidentals.doublesharp") ) % For now use an external font as a workaround FONTNAME = "Microtonal Notation Text" %FONTNAME = "PersianMusicSymbols" %FONTNAME = "Vaziri" % emacs: to enter UTF-8 set coding system utf-8, the use M-x ucs-insert for Hex unicode % symbols from font "PersianMusicSymbols 001.000" NATURALSYMBOL = "'" KORONSYMBOL = "" SORISYMBOL = "" FLATSYMBOL = "\"" SHARPSYMBOL = "!" DFLATSYMBOL = "$" DSHARPSYMBOL = "#" % symbols from font "Vaziri" NATURALSYMBOL = "" KORONSYMBOL = "" SORISYMBOL = "" FLATSYMBOL = "" SHARPSYMBOL = "" DFLATSYMBOL = "" DSHARPSYMBOL = "" % symbols from font "Microtonal Notation Text" NATURALSYMBOL = "'" KORONSYMBOL = "ù" SORISYMBOL = "ø" FLATSYMBOL = "\"" SHARPSYMBOL = "!" DFLATSYMBOL = "$" DSHARPSYMBOL = "#" persianStrings = #`( (-3/10 . ,KORONSYMBOL) (1/5 . ,SORISYMBOL) (0 . ,NATURALSYMBOL) (1/2 . ,SHARPSYMBOL) (2/5 . ,SHARPSYMBOL) (-1/2 . ,FLATSYMBOL) (-3/5 . ,FLATSYMBOL) (-1/10 . "") (-1 . ,DFLATSYMBOL) ( 1 . ,DSHARPSYMBOL) ) persianStringsOffsets = #`( (-3/10 . (-.2 . -1.7) ) (1/5 . (0 . -1)) (0 . (0 . -1)) (1/2 . (0 . -1)) (2/5 . (0 . -1)) (-1/2 . (0 . -.5)) (-3/5 . (0 . -.5)) (-1/10 . (0 . 0)) (-1 . (0 . -.5)) ( 1 . (0 . -1)) ) persianStringsXExtents = #`( (-3/10 . (0 . 1) ) (1/5 . (0 . 1.8)) (0 . (0 . 1)) (1/2 . (0 . 1)) (2/5 . (0 . 1)) (-1/2 . (0 . 1)) (-3/5 . (0 . 1)) (-1/10 . (0 . 1)) (-1 . (0 . 1.8)) ( 1 . (0 . 1.3)) ) persianStringsYExtents = #`( (-3/10 . (-1 . 1) ) (1/5 . (-1 . 1)) (0 . (-1 . 1)) (1/2 . (-1 . 1)) (2/5 . (-1 . 1)) (-1/2 . (-1 . 1)) (-3/5 . (-1 . 1)) (-1/10 . (-1 . 1)) (-1 . (-1 . 1)) ( 1 . (-1 . 1)) ) \layout { \context { \Score % \override KeySignature #'glyph-name-alist = \persianGlyphs % \override Accidental #'glyph-name-alist = \persianGlyphs \override AccidentalCautionary #'glyph-name-alist = \persianGlyphs \override TrillPitchAccidental #'glyph-name-alist = \persianGlyphs \override AmbitusAccidental #'glyph-name-alist = \persianGlyphs \override KeySignature #'stencil = #ly:text-interface::print \override KeySignature #'font-name = #FONTNAME \override KeySignature #'font-size = #2 \override Accidental #'stencil = #ly:text-interface::print \override Accidental #'font-name = #FONTNAME \override Accidental #'font-size = #2 \override Accidental #'text = #(lambda (grob) (cdr (assoc (ly:grob-property grob 'alteration) persianStrings))) \override Accidental #'extra-offset = #(lambda (grob) (cdr (assoc (ly:grob-property grob 'alteration) persianStringsOffsets))) \override Accidental #'X-extent = #(lambda (grob) (cdr (assoc (ly:grob-property grob 'alteration) persianStringsXExtents ))) \override Accidental #'Y-extent = #(lambda (grob) (cdr (assoc (ly:grob-property grob 'alteration) persianStringsYExtents ))) } } pitchnames = \pitchnamesEnglish #(ly:parser-set-note-names parser pitchnames) %{ Define key signatures for Persian modes There are fewer scales than dastgah's in Persian music, and each dastgah can have many scales. So I provide here key signatures for scales (modes) named after representative dastgahs featuring this scale. Dastgah shur can have the 5th degree natural or koron, so two versions are provided (shur, shurk). Secondary dastgahs dashti, abuata, bayat-e-tork have the same signature as shur, and derived dastgah afshari has signature shurk. Nava on G is like shur on D (4th apart). Scale of segah is shurk. Other scales are esfahan (homayoun on C is like esfahan on G, a 5th apart), chahargah, and mokhalef-segah. For dastgahs mahur and rast-panjgah we just use the same scale mahur. Each key signature symbol is appended by a capitalized "key" (or "finalis"). If you want to use the \transpose command you'll have to manually adjust the key signature of the scale. All the various modulatory gushes in all dastgah's can be notated with these key signatures with the exception of delkash in mahur, but traditionally the peculiar accidentals there are notated explicitly. %} shurC = #`( (1 . ,KORON) (2 . ,FLAT) (5 . ,FLAT) (6 . ,FLAT) ) shurCKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . 1) \FLATSYMBOL \translate #'(-.7 . -1) \FLATSYMBOL \translate #'(-.5 . -.6) \KORONSYMBOL } shurD = #`( (2 . ,KORON) (6 . ,FLAT) ) shurDKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL } shurE = #`( (3 . ,SORI) ) shurEKey = \markup{ \translate #'(-1 . 1) \SORISYMBOL } shurF = #`( (1 . ,FLAT) (2 . ,FLAT) (4 . ,KORON) (5 . ,FLAT) (6 . ,FLAT) ) shurFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-1 . -1) \FLATSYMBOL \translate #'(-1 . .5) \FLATSYMBOL \translate #'(-1 . -2.6) \KORONSYMBOL } shurG = #`( (2 . ,FLAT) (5 . ,KORON) (6 . ,FLAT) ) % alternative if you want to us shur on G with Bb vlat (bfv) instead of normal Bb (bf) shurGvlat = #`( (2 . ,FLAT) (5 . ,KORON) (6 . ,FVLAT) ) shurGKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-1 . -2.1) \KORONSYMBOL } shurA = #`( (6 . ,KORON) ) shurAKey = \markup{ \translate #'(-1 . -1.6) \KORONSYMBOL } shurB = #`( (0 . ,SORI) (3 . ,SHARP) ) shurBKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.5 . -.5) \SORISYMBOL } shurkC = #`( (1 . ,KORON) (2 . ,FLAT) (4 . ,KORON) (5 . ,FLAT) (6 . ,FLAT) ) shurkCKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . 1) \FLATSYMBOL \translate #'(-.7 . -1) \FLATSYMBOL \translate #'(-.5 . -.6) \KORONSYMBOL \translate #'(-1 . -2.6) \KORONSYMBOL } shurkD = #`( (2 . ,KORON) (5 . ,KORON) (6 . ,FLAT) ) shurkDKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL \translate #'(-1 . -2.1) \KORONSYMBOL } shurkE = #`( (3 . ,SORI) (6 . ,KORON) ) shurkEKey = \markup{ \translate #'(-1 . -1.6) \KORONSYMBOL \translate #'(-1 . 1) \SORISYMBOL } shurkF = #`( (0 . ,KORON) (1 . ,FLAT) (2 . ,FLAT) (4 . ,KORON) (5 . ,FLAT) (6 . ,FLAT) ) shurkFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-1 . -1) \FLATSYMBOL \translate #'(-1 . .5) \FLATSYMBOL \translate #'(-1 . -2.6) \KORONSYMBOL \translate #'(-.8 . -1.1) \KORONSYMBOL } shurkG = #`( (1 . ,KORON) (2 . ,FLAT) (5 . ,KORON) (6 . ,FLAT) ) shurkGKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-1 . -2.1) \KORONSYMBOL \translate #'(-.8 . -.6) \KORONSYMBOL } shurkA = #`( (2 . ,KORON) (6 . ,KORON) ) shurkAKey = \markup{ \translate #'(-1 . -1.6) \KORONSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL } shurkB = #`( (0 . ,SORI) (3 . ,SORI) ) shurkBKey = \markup{ \translate #'(-1 . 1) \SORISYMBOL \translate #'(-1 . -.5) \SORISYMBOL } esfahanC = #`( (2 . ,FLAT) (5 . ,KORON) ) esfahanCKey = \markup{ \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-1 . -2.1) \KORONSYMBOL } esfahanD = #`( (0 . ,SHARP) (6 . ,KORON) ) esfahanDKey = \markup{ \translate #'(-1 . -.5) \SHARPSYMBOL \translate #'(-.5 . -1.6) \KORONSYMBOL } esfahanE = #`( (0 . ,SORI) (1 . ,SHARP) (3 . ,SHARP) ) esfahanEKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.5 . -.5) \SORISYMBOL \translate #'(-.5 . 0) \SHARPSYMBOL } esfahanF = #`( (1 . ,KORON) (5 . ,FLAT) (6 . ,FLAT) ) esfahanFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . -1) \FLATSYMBOL \translate #'(-.5 . -.6) \KORONSYMBOL } esfahanG = #`( (2 . ,KORON) (3 . ,SHARP) (6 . ,FLAT) ) esfahanGKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.7 . 1) \SHARPSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL } esfahanA = #`( (3 . ,SORI) (4 . ,SHARP) ) esfahanAKey = \markup{ \translate #'(-1 . 1.5) \SHARPSYMBOL \translate #'(-.5 . 1) \SORISYMBOL } esfahanB = #`( (0 . ,SHARP) (3 . ,SHARP) (4 . ,SORI) (5 . ,SHARP) ) esfahanBKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.7 . -.5) \SHARPSYMBOL \translate #'(-.7 . -1.5) \SHARPSYMBOL \translate #'(-1.5 . 1.5) \SORISYMBOL } mokhalefsegahC = #`( (2 . ,FLAT) (5 . ,KORON) (6 . ,KORON) ) mokhalefsegahCKey = \markup{ \translate #'(-.5 . -1.6) \KORONSYMBOL \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-1 . -2.1) \KORONSYMBOL } mokhalefsegahD = #`( (0 . ,SORI) (6 . ,KORON) ) mokhalefsegahDKey = \markup{ \translate #'(-.5 . -1.6) \KORONSYMBOL \translate #'(-.5 . -.5) \SORISYMBOL } mokhalefsegahE = #`( (0 . ,SORI) (1 . ,SORI) (3 . ,SHARP) ) mokhalefsegahEKey = \markup{ \translate #'(-1 . -.5) \SORISYMBOL \translate #'(-.5 . 1) \SHARPSYMBOL \translate #'(-.5 . 0) \SORISYMBOL } mokhalefsegahF = #`( (1 . ,KORON) (2 . ,KORON) (5 . ,FLAT) (6 . ,FLAT) ) mokhalefsegahFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL \translate #'(-1 . -1) \FLATSYMBOL \translate #'(-.5 . -.6) \KORONSYMBOL } mokhalefsegahG = #`( (2 . ,KORON) (3 . ,SORI) (6 . ,FLAT) ) mokhalefsegahGKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL \translate #'(-.5 . 1) \SORISYMBOL } mokhalefsegahA = #`( (3 . ,SORI) (4 . ,SORI) ) mokhalefsegahAKey = \markup{ \translate #'(-1 . 1) \SORISYMBOL \translate #'(-.5 . 1.5) \SORISYMBOL } mokhalefsegahB = #`( (0 . ,SHARP) (3 . ,SHARP) (4 . ,SORI) (5 . ,SORI) ) mokhalefsegahBKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.5 . -.5) \SHARPSYMBOL \translate #'(-.5 . -1.5) \SORISYMBOL \translate #'(-2 . 1.5) \SORISYMBOL } chahargahC = #`( (1 . ,KORON) (5 . ,KORON) ) chahargahCKey = \markup{ \translate #'(-.5 . -.6) \KORONSYMBOL \translate #'(-1 . -2.1) \KORONSYMBOL } chahargahD = #`( (0 . ,SHARP) (2 . ,KORON) (3 . ,SHARP) (6 . ,KORON) ) chahargahDKey = \markup{ \translate #'(0 . 1) \SHARPSYMBOL \translate #'(-.5 . -.5) \SHARPSYMBOL \translate #'(-.5 . -1.6) \KORONSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL } chahargahE = #`( (0 . ,SORI) (1 . ,SHARP) (3 . ,SORI) (4 . ,SHARP) ) chahargahEKey = \markup{ \translate #'(-1 . 1) \SORISYMBOL \translate #'(-1 . -.5) \SORISYMBOL \translate #'(-1 . 1.5) \SHARPSYMBOL \translate #'(-.5 . -0) \SHARPSYMBOL } chahargahF = #`( (1 . ,KORON) (4 . ,KORON) (6 . ,FLAT) ) chahargahFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.5 . -.6) \KORONSYMBOL \translate #'(-1.2 . -2.6) \KORONSYMBOL } chahargahG = #`( (2 . ,KORON) (3 . ,SHARP) (5 . ,KORON) ) chahargahGKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.7 . -2.1) \KORONSYMBOL \translate #'(-.5 . -.1) \KORONSYMBOL } chahargahA = #`( (0 . ,SHARP) (3 . ,SORI) (4 . ,SHARP) (6 . ,KORON) ) chahargahAKey = \markup{ \translate #'(-1 . 1.5) \SHARPSYMBOL \translate #'(-.5 . -.5) \SHARPSYMBOL \translate #'(-.5 . 1) \SORISYMBOL \translate #'(-1 . -1.6) \KORONSYMBOL } chahargahB = #`( (0 . ,SORI) (1 . ,SHARP) (3 . ,SHARP) (4 . ,SORI) (5 . ,SHARP) ) chahargahBKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.5 . -1.5) \SHARPSYMBOL \translate #'(-.5 . 0) \SHARPSYMBOL \translate #'(-.5 . 1.5) \SORISYMBOL \translate #'(-1 . -.5) \SORISYMBOL } mahurF = #`( (6 . ,FLAT) ) mahurFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL } mahurG = #`( (3 . ,SHARP) ) mahurGKey = \markup{ \translate #'(-.5 . -1.5) \SHARPSYMBOL } delkashMahurF = #`( (1 . ,KORON) (2 . ,FLAT) (6 . ,FLAT) ) delkashMahurFKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-1 . 1) \FLATSYMBOL \translate #'(-.8 . -.6) \KORONSYMBOL } hicazG = #`( (3 . ,SHARP) (2 . ,FLAT) (6 . ,FLAT) ) hicazGKey = \markup{ \translate #'(-1 . 1) \SHARPSYMBOL \translate #'(-.6 . 1) \FLATSYMBOL \translate #'(-.6 . -.5) \FLATSYMBOL } hicazA = #`( (4 . ,SHARP) ) hicazAKey = \markup{ \translate #'(-.1 . 1.5) \SHARPSYMBOL } esfahanETF = #`( (1 . ,FLAT) (5 . ,FLAT) (6 . ,FLAT) ) esfahanETFKey = \markup{ \translate #'(0 . .5) \FLATSYMBOL \translate #'(-.5 . -1) \FLATSYMBOL \translate #'(-.5 . -.6) \FLATSYMBOL } esfahanETG = #`( (2 . ,FLAT) (3 . ,SHARP) (6 . ,FLAT) ) esfahanETGKey = \markup{ \translate #'(-1 . -.5) \FLATSYMBOL \translate #'(-.7 . 1) \SHARPSYMBOL \translate #'(-.5 . .8) \FLATSYMBOL }